diff --git a/asset-manifest.json b/asset-manifest.json index e6aa8f9..1150cf7 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,34 +1,34 @@ { "files": { - "main.css": "https://weisser-dev.github.io/my-digital-card/static/css/main.b52cbed6.css", - "main.js": "https://weisser-dev.github.io/my-digital-card/static/js/main.93fe4510.js", - "static/js/449.45173e9e.chunk.js": "https://weisser-dev.github.io/my-digital-card/static/js/449.45173e9e.chunk.js", - "static/css/628.672c354f.chunk.css": "https://weisser-dev.github.io/my-digital-card/static/css/628.672c354f.chunk.css", - "static/js/628.ef8e3c43.chunk.js": "https://weisser-dev.github.io/my-digital-card/static/js/628.ef8e3c43.chunk.js", - "static/css/397.57b3426d.chunk.css": "https://weisser-dev.github.io/my-digital-card/static/css/397.57b3426d.chunk.css", - "static/js/397.ba95b3f0.chunk.js": "https://weisser-dev.github.io/my-digital-card/static/js/397.ba95b3f0.chunk.js", - "static/css/286.ead04c20.chunk.css": "https://weisser-dev.github.io/my-digital-card/static/css/286.ead04c20.chunk.css", - "static/js/286.3f5f4987.chunk.js": "https://weisser-dev.github.io/my-digital-card/static/js/286.3f5f4987.chunk.js", - "static/media/fa-solid-900.ttf": "https://weisser-dev.github.io/my-digital-card/static/media/fa-solid-900.45a265d0f07b31cde85f.ttf", - "static/media/fa-brands-400.ttf": "https://weisser-dev.github.io/my-digital-card/static/media/fa-brands-400.6205fd00fb1b573e9f0f.ttf", - "static/media/fa-solid-900.woff2": "https://weisser-dev.github.io/my-digital-card/static/media/fa-solid-900.fb8184add5a3101ad0a3.woff2", - "static/media/fa-brands-400.woff2": "https://weisser-dev.github.io/my-digital-card/static/media/fa-brands-400.8d3cabfc66809162fb4d.woff2", - "static/media/fa-regular-400.ttf": "https://weisser-dev.github.io/my-digital-card/static/media/fa-regular-400.adc51aab4d771ab65f81.ttf", - "static/media/fa-regular-400.woff2": "https://weisser-dev.github.io/my-digital-card/static/media/fa-regular-400.e931bc0d14f5bbb1da22.woff2", - "static/media/fa-v4compatibility.ttf": "https://weisser-dev.github.io/my-digital-card/static/media/fa-v4compatibility.2eb7b3ef25042305f3ff.ttf", - "static/media/fa-v4compatibility.woff2": "https://weisser-dev.github.io/my-digital-card/static/media/fa-v4compatibility.b3049b13a93f07e026fc.woff2", - "index.html": "https://weisser-dev.github.io/my-digital-card/index.html", - "main.b52cbed6.css.map": "https://weisser-dev.github.io/my-digital-card/static/css/main.b52cbed6.css.map", - "main.93fe4510.js.map": "https://weisser-dev.github.io/my-digital-card/static/js/main.93fe4510.js.map", - "628.672c354f.chunk.css.map": "https://weisser-dev.github.io/my-digital-card/static/css/628.672c354f.chunk.css.map", - "628.ef8e3c43.chunk.js.map": "https://weisser-dev.github.io/my-digital-card/static/js/628.ef8e3c43.chunk.js.map", - "397.57b3426d.chunk.css.map": "https://weisser-dev.github.io/my-digital-card/static/css/397.57b3426d.chunk.css.map", - "397.ba95b3f0.chunk.js.map": "https://weisser-dev.github.io/my-digital-card/static/js/397.ba95b3f0.chunk.js.map", - "286.ead04c20.chunk.css.map": "https://weisser-dev.github.io/my-digital-card/static/css/286.ead04c20.chunk.css.map", - "286.3f5f4987.chunk.js.map": "https://weisser-dev.github.io/my-digital-card/static/js/286.3f5f4987.chunk.js.map" + "main.css": "/static/css/main.adba2dab.css", + "main.js": "/static/js/main.45b9face.js", + "static/js/449.45173e9e.chunk.js": "/static/js/449.45173e9e.chunk.js", + "static/css/628.672c354f.chunk.css": "/static/css/628.672c354f.chunk.css", + "static/js/628.ef8e3c43.chunk.js": "/static/js/628.ef8e3c43.chunk.js", + "static/css/397.57b3426d.chunk.css": "/static/css/397.57b3426d.chunk.css", + "static/js/397.ba95b3f0.chunk.js": "/static/js/397.ba95b3f0.chunk.js", + "static/css/286.ead04c20.chunk.css": "/static/css/286.ead04c20.chunk.css", + "static/js/286.3f5f4987.chunk.js": "/static/js/286.3f5f4987.chunk.js", + "static/media/fa-solid-900.ttf": "/static/media/fa-solid-900.45a265d0f07b31cde85f.ttf", + "static/media/fa-brands-400.ttf": "/static/media/fa-brands-400.6205fd00fb1b573e9f0f.ttf", + "static/media/fa-solid-900.woff2": "/static/media/fa-solid-900.fb8184add5a3101ad0a3.woff2", + "static/media/fa-brands-400.woff2": "/static/media/fa-brands-400.8d3cabfc66809162fb4d.woff2", + "static/media/fa-regular-400.ttf": "/static/media/fa-regular-400.adc51aab4d771ab65f81.ttf", + "static/media/fa-regular-400.woff2": "/static/media/fa-regular-400.e931bc0d14f5bbb1da22.woff2", + "static/media/fa-v4compatibility.ttf": "/static/media/fa-v4compatibility.2eb7b3ef25042305f3ff.ttf", + "static/media/fa-v4compatibility.woff2": "/static/media/fa-v4compatibility.b3049b13a93f07e026fc.woff2", + "index.html": "/index.html", + "main.adba2dab.css.map": "/static/css/main.adba2dab.css.map", + "main.45b9face.js.map": "/static/js/main.45b9face.js.map", + "628.672c354f.chunk.css.map": "/static/css/628.672c354f.chunk.css.map", + "628.ef8e3c43.chunk.js.map": "/static/js/628.ef8e3c43.chunk.js.map", + "397.57b3426d.chunk.css.map": "/static/css/397.57b3426d.chunk.css.map", + "397.ba95b3f0.chunk.js.map": "/static/js/397.ba95b3f0.chunk.js.map", + "286.ead04c20.chunk.css.map": "/static/css/286.ead04c20.chunk.css.map", + "286.3f5f4987.chunk.js.map": "/static/js/286.3f5f4987.chunk.js.map" }, "entrypoints": [ - "static/css/main.b52cbed6.css", - "static/js/main.93fe4510.js" + "static/css/main.adba2dab.css", + "static/js/main.45b9face.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index 82aeb5f..9362939 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -My Digital Card
\ No newline at end of file +My Digital Card
\ No newline at end of file diff --git a/static/css/main.b52cbed6.css b/static/css/main.adba2dab.css similarity index 91% rename from static/css/main.b52cbed6.css rename to static/css/main.adba2dab.css index 6ac17e2..0b2beaf 100644 --- a/static/css/main.b52cbed6.css +++ b/static/css/main.adba2dab.css @@ -8,5 +8,5 @@ * Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2023 Fonticons, Inc. - */.fa{font-family:Font Awesome\ 6 Free;font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:900;font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-classic,.fa-regular,.fa-sharp,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-feature-settings:normal;display:inline-block;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:Font Awesome\ 6 Free}.fa-brands,.fab{font-family:Font Awesome\ 6 Brands}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;left:calc(var(--fa-li-width, 2em)*-1);line-height:inherit;position:absolute;text-align:center;width:2em;width:var(--fa-li-width,2em)}.fa-border{border:.08em solid #eee;border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);border-radius:.1em;border-radius:var(--fa-border-radius,.1em);padding:.2em .25em .15em;padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:.3em;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:.3em;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{animation-delay:0s;animation-delay:var(--fa-animation-delay,0s);animation-direction:normal;animation-direction:var(--fa-animation-direction,normal);animation-duration:1s;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:infinite;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-beat;animation-timing-function:ease-in-out;animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-delay:0s;animation-delay:var(--fa-animation-delay,0s);animation-direction:normal;animation-direction:var(--fa-animation-direction,normal);animation-duration:1s;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:infinite;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-bounce;animation-timing-function:cubic-bezier(.28,.84,.42,1);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{animation-iteration-count:infinite;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-fade;animation-timing-function:cubic-bezier(.4,0,.6,1);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{animation-delay:0s;animation-delay:var(--fa-animation-delay,0s);animation-direction:normal;animation-direction:var(--fa-animation-direction,normal);animation-duration:1s;animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{animation-iteration-count:infinite;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-beat-fade;animation-timing-function:cubic-bezier(.4,0,.6,1);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{animation-delay:0s;animation-delay:var(--fa-animation-delay,0s);animation-direction:normal;animation-direction:var(--fa-animation-direction,normal);animation-duration:1s;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:infinite;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-flip;animation-timing-function:ease-in-out;animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-duration:1s;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:infinite;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-shake;animation-timing-function:linear;animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{animation-delay:0s;animation-delay:var(--fa-animation-delay,0s);animation-direction:normal;animation-direction:var(--fa-animation-direction,normal)}.fa-spin{animation-duration:2s;animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:infinite;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-spin;animation-timing-function:linear;animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-direction:normal;animation-direction:var(--fa-animation-direction,normal);animation-duration:1s;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:infinite;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-spin;animation-timing-function:steps(8);animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(1.25);transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(1.1,.9) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(.9,1.1) translateY(-.5em);transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(1.05,.95) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1) translateY(-.125em);transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:.4;opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-beat-fade{0%,to{opacity:.4;opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(1.125);transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotateY(-180deg);transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}24%,8%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(none);transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:auto;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff;color:var(--fa-inverse,#fff)}.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-fill-drip:before{content:"\f576"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-at:before{content:"\40"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-text-height:before{content:"\f034"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-stethoscope:before{content:"\f0f1"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-info:before{content:"\f129"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-explosion:before{content:"\e4e9"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-wave-square:before{content:"\f83e"}.fa-ring:before{content:"\f70b"}.fa-building-un:before{content:"\e4d9"}.fa-dice-three:before{content:"\f527"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-door-open:before{content:"\f52b"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-atom:before{content:"\f5d2"}.fa-soap:before{content:"\e06e"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-pump-medical:before{content:"\e06a"}.fa-fingerprint:before{content:"\f577"}.fa-hand-point-right:before{content:"\f0a4"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-flag-checkered:before{content:"\f11e"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-crop:before{content:"\f125"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-users-rectangle:before{content:"\e594"}.fa-people-roof:before{content:"\e537"}.fa-people-line:before{content:"\e534"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-diagram-predecessor:before{content:"\e477"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-laptop:before{content:"\f109"}.fa-file-csv:before{content:"\f6dd"}.fa-menorah:before{content:"\f676"}.fa-truck-plane:before{content:"\e58f"}.fa-record-vinyl:before{content:"\f8d9"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-bong:before{content:"\f55c"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-jar-wheat:before{content:"\e517"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-pager:before{content:"\f815"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-strikethrough:before{content:"\f0cc"}.fa-k:before{content:"\4b"}.fa-landmark-flag:before{content:"\e51c"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-backward:before{content:"\f04a"}.fa-caret-right:before{content:"\f0da"}.fa-comments:before{content:"\f086"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-code-pull-request:before{content:"\e13c"}.fa-clipboard-list:before{content:"\f46d"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-user-check:before{content:"\f4fc"}.fa-vial-virus:before{content:"\e597"}.fa-sheet-plastic:before{content:"\e571"}.fa-blog:before{content:"\f781"}.fa-user-ninja:before{content:"\f504"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-toggle-off:before{content:"\f204"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-person-drowning:before{content:"\e545"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-spray-can:before{content:"\f5bd"}.fa-truck-monster:before{content:"\f63b"}.fa-w:before{content:"\57"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-rainbow:before{content:"\f75b"}.fa-circle-notch:before{content:"\f1ce"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-paw:before{content:"\f1b0"}.fa-cloud:before{content:"\f0c2"}.fa-trowel-bricks:before{content:"\e58a"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-hospital-user:before{content:"\f80d"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-binoculars:before{content:"\f1e5"}.fa-microphone-slash:before{content:"\f131"}.fa-box-tissue:before{content:"\e05b"}.fa-motorcycle:before{content:"\f21c"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-toilets-portable:before{content:"\e584"}.fa-hockey-puck:before{content:"\f453"}.fa-table:before{content:"\f0ce"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-users-slash:before{content:"\e073"}.fa-clover:before{content:"\e139"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-star-and-crescent:before{content:"\f699"}.fa-house-fire:before{content:"\e50c"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-helicopter:before{content:"\f533"}.fa-compass:before{content:"\f14e"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-file-circle-question:before{content:"\e4ef"}.fa-laptop-code:before{content:"\f5fc"}.fa-swatchbook:before{content:"\f5c3"}.fa-prescription-bottle:before{content:"\f485"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-people-group:before{content:"\e533"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-film:before{content:"\f008"}.fa-ruler-horizontal:before{content:"\f547"}.fa-people-robbery:before{content:"\e536"}.fa-lightbulb:before{content:"\f0eb"}.fa-caret-left:before{content:"\f0d9"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-sitemap:before{content:"\f0e8"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-memory:before{content:"\f538"}.fa-road-spikes:before{content:"\e568"}.fa-fire-burner:before{content:"\e4f1"}.fa-flag:before{content:"\f024"}.fa-hanukiah:before{content:"\f6e6"}.fa-feather:before{content:"\f52d"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-comment-slash:before{content:"\f4b3"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-compress:before{content:"\f066"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-ankh:before{content:"\f644"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-asterisk:before{content:"\2a"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-peseta-sign:before{content:"\e221"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-ghost:before{content:"\f6e2"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-cart-plus:before{content:"\f217"}.fa-gamepad:before{content:"\f11b"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-egg:before{content:"\f7fb"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-campground:before{content:"\f6bb"}.fa-folder-plus:before{content:"\f65e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-lock:before{content:"\f023"}.fa-gas-pump:before{content:"\f52f"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-house-flood-water:before{content:"\e50e"}.fa-tree:before{content:"\f1bb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-sack-dollar:before{content:"\f81d"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-car-side:before{content:"\f5e4"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-microscope:before{content:"\f610"}.fa-sink:before{content:"\e06d"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-mitten:before{content:"\f7b5"}.fa-person-rays:before{content:"\e54d"}.fa-users:before{content:"\f0c0"}.fa-eye-slash:before{content:"\f070"}.fa-flask-vial:before{content:"\e4f3"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-om:before{content:"\f679"}.fa-worm:before{content:"\e599"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-plug:before{content:"\f1e6"}.fa-chevron-up:before{content:"\f077"}.fa-hand-spock:before{content:"\f259"}.fa-stopwatch:before{content:"\f2f2"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-chess-bishop:before{content:"\f43a"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-road-circle-check:before{content:"\e564"}.fa-dice-five:before{content:"\f523"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-land-mine-on:before{content:"\e51b"}.fa-i-cursor:before{content:"\f246"}.fa-stamp:before{content:"\f5bf"}.fa-stairs:before{content:"\e289"}.fa-i:before{content:"\49"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-pills:before{content:"\f484"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-tooth:before{content:"\f5c9"}.fa-v:before{content:"\56"}.fa-bangladeshi-taka-sign:before{content:"\e2e6"}.fa-bicycle:before{content:"\f206"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-snowman:before{content:"\f7d0"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-road-barrier:before{content:"\e562"}.fa-school:before{content:"\f549"}.fa-igloo:before{content:"\f7ae"}.fa-joint:before{content:"\f595"}.fa-angle-right:before{content:"\f105"}.fa-horse:before{content:"\f6f0"}.fa-q:before{content:"\51"}.fa-g:before{content:"\47"}.fa-notes-medical:before{content:"\f481"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-dong-sign:before{content:"\e169"}.fa-capsules:before{content:"\f46b"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-hand-point-up:before{content:"\f0a6"}.fa-money-bill:before{content:"\f0d6"}.fa-bookmark:before{content:"\f02e"}.fa-align-justify:before{content:"\f039"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-helmet-un:before{content:"\e503"}.fa-bullseye:before{content:"\f140"}.fa-bacon:before{content:"\f7e5"}.fa-hand-point-down:before{content:"\f0a7"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-radiation:before{content:"\f7b9"}.fa-chart-simple:before{content:"\e473"}.fa-mars-stroke:before{content:"\f229"}.fa-vial:before{content:"\f492"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-e:before{content:"\45"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-user:before{content:"\f007"}.fa-school-circle-check:before{content:"\e56b"}.fa-dumpster:before{content:"\f793"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-building-user:before{content:"\e4da"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-highlighter:before{content:"\f591"}.fa-key:before{content:"\f084"}.fa-bullhorn:before{content:"\f0a1"}.fa-globe:before{content:"\f0ac"}.fa-synagogue:before{content:"\f69b"}.fa-person-half-dress:before{content:"\e548"}.fa-road-bridge:before{content:"\e563"}.fa-location-arrow:before{content:"\f124"}.fa-c:before{content:"\43"}.fa-tablet-button:before{content:"\f10a"}.fa-building-lock:before{content:"\e4d6"}.fa-pizza-slice:before{content:"\f818"}.fa-money-bill-wave:before{content:"\f53a"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-house-flag:before{content:"\e50d"}.fa-person-circle-minus:before{content:"\e540"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-camera-rotate:before{content:"\e0d8"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-star:before{content:"\f005"}.fa-repeat:before{content:"\f363"}.fa-cross:before{content:"\f654"}.fa-box:before{content:"\f466"}.fa-venus-mars:before{content:"\f228"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-charging-station:before{content:"\f5e7"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-mobile-retro:before{content:"\e527"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-spider:before{content:"\f717"}.fa-hands-bound:before{content:"\e4f9"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-x-ray:before{content:"\f497"}.fa-spell-check:before{content:"\f891"}.fa-slash:before{content:"\f715"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-server:before{content:"\f233"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-shop-lock:before{content:"\e4a5"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-blender-phone:before{content:"\f6b6"}.fa-building-wheat:before{content:"\e4db"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-venus:before{content:"\f221"}.fa-passport:before{content:"\f5ab"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-temperature-high:before{content:"\f769"}.fa-microchip:before{content:"\f2db"}.fa-crown:before{content:"\f521"}.fa-weight-hanging:before{content:"\f5cd"}.fa-xmarks-lines:before{content:"\e59a"}.fa-file-prescription:before{content:"\f572"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-chess-knight:before{content:"\f441"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-wheelchair:before{content:"\f193"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-toggle-on:before{content:"\f205"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-l:before{content:"\4c"}.fa-fire:before{content:"\f06d"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-folder-open:before{content:"\f07c"}.fa-heart-circle-plus:before{content:"\e500"}.fa-code-fork:before{content:"\e13b"}.fa-city:before{content:"\f64f"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-pepper-hot:before{content:"\f816"}.fa-unlock:before{content:"\f09c"}.fa-colon-sign:before{content:"\e140"}.fa-headset:before{content:"\f590"}.fa-store-slash:before{content:"\e071"}.fa-road-circle-xmark:before{content:"\e566"}.fa-user-minus:before{content:"\f503"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-clipboard:before{content:"\f328"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-underline:before{content:"\f0cd"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-signature:before{content:"\f5b7"}.fa-stroopwafel:before{content:"\f551"}.fa-bold:before{content:"\f032"}.fa-anchor-lock:before{content:"\e4ad"}.fa-building-ngo:before{content:"\e4d7"}.fa-manat-sign:before{content:"\e1d5"}.fa-not-equal:before{content:"\f53e"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-jedi:before{content:"\f669"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-mug-hot:before{content:"\f7b6"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-gift:before{content:"\f06b"}.fa-dice-two:before{content:"\f528"}.fa-chess-queen:before{content:"\f445"}.fa-glasses:before{content:"\f530"}.fa-chess-board:before{content:"\f43c"}.fa-building-circle-check:before{content:"\e4d2"}.fa-person-chalkboard:before{content:"\e53d"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-less-than-equal:before{content:"\f537"}.fa-train:before{content:"\f238"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-crow:before{content:"\f520"}.fa-sailboat:before{content:"\e445"}.fa-window-restore:before{content:"\f2d2"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-torii-gate:before{content:"\f6a1"}.fa-frog:before{content:"\f52e"}.fa-bucket:before{content:"\e4cf"}.fa-image:before{content:"\f03e"}.fa-microphone:before{content:"\f130"}.fa-cow:before{content:"\f6c8"}.fa-caret-up:before{content:"\f0d8"}.fa-screwdriver:before{content:"\f54a"}.fa-folder-closed:before{content:"\e185"}.fa-house-tsunami:before{content:"\e515"}.fa-square-nfi:before{content:"\e576"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-lemon:before{content:"\f094"}.fa-head-side-mask:before{content:"\e063"}.fa-handshake:before{content:"\f2b5"}.fa-gem:before{content:"\f3a5"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-smoking:before{content:"\f48d"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-monument:before{content:"\f5a6"}.fa-snowplow:before{content:"\f7d2"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-cannabis:before{content:"\f55f"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-tablets:before{content:"\f490"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-chair:before{content:"\f6c0"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-plate-wheat:before{content:"\e55a"}.fa-icicles:before{content:"\f7ad"}.fa-person-shelter:before{content:"\e54f"}.fa-neuter:before{content:"\f22c"}.fa-id-badge:before{content:"\f2c1"}.fa-marker:before{content:"\f5a1"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-helicopter-symbol:before{content:"\e502"}.fa-universal-access:before{content:"\f29a"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-lari-sign:before{content:"\e1c8"}.fa-volcano:before{content:"\f770"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-viruses:before{content:"\e076"}.fa-square-person-confined:before{content:"\e577"}.fa-user-tie:before{content:"\f508"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-certificate:before{content:"\f0a3"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-suitcase:before{content:"\f0f2"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-camera-retro:before{content:"\f083"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-box-open:before{content:"\f49e"}.fa-scroll:before{content:"\f70e"}.fa-spa:before{content:"\f5bb"}.fa-location-pin-lock:before{content:"\e51f"}.fa-pause:before{content:"\f04c"}.fa-hill-avalanche:before{content:"\e507"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-bomb:before{content:"\f1e2"}.fa-registered:before{content:"\f25d"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-subscript:before{content:"\f12c"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-burst:before{content:"\e4dc"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-money-bills:before{content:"\e1f3"}.fa-smog:before{content:"\f75f"}.fa-crutch:before{content:"\f7f7"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-palette:before{content:"\f53f"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-vest:before{content:"\e085"}.fa-ferry:before{content:"\e4ea"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-boxes-packing:before{content:"\e4c7"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-bowl-food:before{content:"\e4c6"}.fa-candy-cane:before{content:"\f786"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-file-word:before{content:"\f1c2"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-house-lock:before{content:"\e510"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-children:before{content:"\e4e1"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-envelope-open:before{content:"\f2b6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-mattress-pillow:before{content:"\e525"}.fa-guarani-sign:before{content:"\e19a"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-fire-extinguisher:before{content:"\f134"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-greater-than-equal:before{content:"\f532"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-virus:before{content:"\e074"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-layer-group:before{content:"\f5fd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-archway:before{content:"\f557"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-square:before{content:"\f0c8"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-couch:before{content:"\f4b8"}.fa-cedi-sign:before{content:"\e0df"}.fa-italic:before{content:"\f033"}.fa-church:before{content:"\f51d"}.fa-comments-dollar:before{content:"\f653"}.fa-democrat:before{content:"\f747"}.fa-z:before{content:"\5a"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-road-lock:before{content:"\e567"}.fa-a:before{content:"\41"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-p:before{content:"\50"}.fa-snowflake:before{content:"\f2dc"}.fa-newspaper:before{content:"\f1ea"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-locust:before{content:"\e520"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-person-dress-burst:before{content:"\e544"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-vector-square:before{content:"\f5cb"}.fa-bread-slice:before{content:"\f7ec"}.fa-language:before{content:"\f1ab"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-filter:before{content:"\f0b0"}.fa-question:before{content:"\3f"}.fa-file-signature:before{content:"\f573"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-house-chimney-user:before{content:"\e065"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-puzzle-piece:before{content:"\f12e"}.fa-money-check:before{content:"\f53c"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-code:before{content:"\f121"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-virus-covid:before{content:"\e4a8"}.fa-austral-sign:before{content:"\e0a9"}.fa-f:before{content:"\46"}.fa-leaf:before{content:"\f06c"}.fa-road:before{content:"\f018"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-person-circle-plus:before{content:"\e541"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-sack-xmark:before{content:"\e56a"}.fa-file-excel:before{content:"\f1c3"}.fa-file-contract:before{content:"\f56c"}.fa-fish-fins:before{content:"\e4f2"}.fa-building-flag:before{content:"\e4d5"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-object-ungroup:before{content:"\f248"}.fa-poop:before{content:"\f619"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-kaaba:before{content:"\f66b"}.fa-toilet-paper:before{content:"\f71e"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-eject:before{content:"\f052"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-plane-circle-check:before{content:"\e555"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-object-group:before{content:"\f247"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-mask-ventilator:before{content:"\e524"}.fa-arrow-right:before{content:"\f061"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-cash-register:before{content:"\f788"}.fa-person-circle-question:before{content:"\e542"}.fa-h:before{content:"\48"}.fa-tarp:before{content:"\e57b"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-heart:before{content:"\f004"}.fa-mars-and-venus:before{content:"\f224"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-dumpster-fire:before{content:"\f794"}.fa-house-crack:before{content:"\e3b1"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-bottle-water:before{content:"\e4c5"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-kitchen-set:before{content:"\e51a"}.fa-r:before{content:"\52"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-cube:before{content:"\f1b2"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-shield-dog:before{content:"\e573"}.fa-solar-panel:before{content:"\f5ba"}.fa-lock-open:before{content:"\f3c1"}.fa-elevator:before{content:"\e16d"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-circle:before{content:"\f111"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-recycle:before{content:"\f1b8"}.fa-user-astronaut:before{content:"\f4fb"}.fa-plane-slash:before{content:"\e069"}.fa-trademark:before{content:"\f25c"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-satellite-dish:before{content:"\f7c0"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-users-rays:before{content:"\e593"}.fa-wallet:before{content:"\f555"}.fa-clipboard-check:before{content:"\f46c"}.fa-file-audio:before{content:"\f1c7"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-wrench:before{content:"\f0ad"}.fa-bugs:before{content:"\e4d0"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-file-image:before{content:"\f1c5"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-plane-departure:before{content:"\f5b0"}.fa-handshake-slash:before{content:"\e060"}.fa-book-bookmark:before{content:"\e0bb"}.fa-code-branch:before{content:"\f126"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-bridge:before{content:"\e4c8"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-truck-front:before{content:"\e2b7"}.fa-cat:before{content:"\f6be"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-truck-field:before{content:"\e58d"}.fa-route:before{content:"\f4d7"}.fa-clipboard-question:before{content:"\e4e3"}.fa-panorama:before{content:"\e209"}.fa-comment-medical:before{content:"\f7f5"}.fa-teeth-open:before{content:"\f62f"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-tags:before{content:"\f02c"}.fa-wine-glass:before{content:"\f4e3"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-house-signal:before{content:"\e012"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-faucet-drip:before{content:"\e006"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-terminal:before{content:"\f120"}.fa-mobile-button:before{content:"\f10b"}.fa-house-medical-flag:before{content:"\e514"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-tape:before{content:"\f4db"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-eye:before{content:"\f06e"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-audio-description:before{content:"\f29e"}.fa-person-military-to-person:before{content:"\e54c"}.fa-file-shield:before{content:"\e4f0"}.fa-user-slash:before{content:"\f506"}.fa-pen:before{content:"\f304"}.fa-tower-observation:before{content:"\e586"}.fa-file-code:before{content:"\f1c9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-bus:before{content:"\f207"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-window-maximize:before{content:"\f2d0"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-prescription:before{content:"\f5b1"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-vihara:before{content:"\f6a7"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-plant-wilt:before{content:"\e5aa"}.fa-diamond:before{content:"\f219"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-bacterium:before{content:"\e05a"}.fa-hand-pointer:before{content:"\f25a"}.fa-drum-steelpan:before{content:"\f56a"}.fa-hand-scissors:before{content:"\f257"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-biohazard:before{content:"\f780"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-mars-double:before{content:"\f227"}.fa-child-dress:before{content:"\e59c"}.fa-users-between-lines:before{content:"\e591"}.fa-lungs-virus:before{content:"\e067"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-phone:before{content:"\f095"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-child-reaching:before{content:"\e59d"}.fa-head-side-virus:before{content:"\e064"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-door-closed:before{content:"\f52a"}.fa-shield-virus:before{content:"\e06c"}.fa-dice-six:before{content:"\f526"}.fa-mosquito-net:before{content:"\e52c"}.fa-bridge-water:before{content:"\e4ce"}.fa-person-booth:before{content:"\f756"}.fa-text-width:before{content:"\f035"}.fa-hat-wizard:before{content:"\f6e8"}.fa-pen-fancy:before{content:"\f5ac"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-trash:before{content:"\f1f8"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-book-medical:before{content:"\f7e6"}.fa-poo:before{content:"\f2fe"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-cubes:before{content:"\f1b3"}.fa-divide:before{content:"\f529"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-headphones:before{content:"\f025"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-clapping:before{content:"\e1a8"}.fa-republican:before{content:"\f75e"}.fa-arrow-left:before{content:"\f060"}.fa-person-circle-xmark:before{content:"\e543"}.fa-ruler:before{content:"\f545"}.fa-align-left:before{content:"\f036"}.fa-dice-d6:before{content:"\f6d1"}.fa-restroom:before{content:"\f7bd"}.fa-j:before{content:"\4a"}.fa-users-viewfinder:before{content:"\e595"}.fa-file-video:before{content:"\f1c8"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-file-pdf:before{content:"\f1c1"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-o:before{content:"\4f"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-user-secret:before{content:"\f21b"}.fa-otter:before{content:"\f700"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-comment-dollar:before{content:"\f651"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-clipboard-user:before{content:"\f7f3"}.fa-child:before{content:"\f1ae"}.fa-lira-sign:before{content:"\f195"}.fa-satellite:before{content:"\f7bf"}.fa-plane-lock:before{content:"\e558"}.fa-tag:before{content:"\f02b"}.fa-comment:before{content:"\f075"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-envelope:before{content:"\f0e0"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-paperclip:before{content:"\f0c6"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-ribbon:before{content:"\f4d6"}.fa-lungs:before{content:"\f604"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-border-none:before{content:"\f850"}.fa-circle-nodes:before{content:"\e4e2"}.fa-parachute-box:before{content:"\f4cd"}.fa-indent:before{content:"\f03c"}.fa-truck-field-un:before{content:"\e58e"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-mountain:before{content:"\f6fc"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-cloud-meatball:before{content:"\f73b"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-square-virus:before{content:"\e578"}.fa-meteor:before{content:"\f753"}.fa-car-on:before{content:"\e4dd"}.fa-sleigh:before{content:"\f7cc"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-water:before{content:"\f773"}.fa-calendar-check:before{content:"\f274"}.fa-braille:before{content:"\f2a1"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-landmark:before{content:"\f66f"}.fa-truck:before{content:"\f0d1"}.fa-crosshairs:before{content:"\f05b"}.fa-person-cane:before{content:"\e53c"}.fa-tent:before{content:"\e57d"}.fa-vest-patches:before{content:"\e086"}.fa-check-double:before{content:"\f560"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-cookie:before{content:"\f563"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-dumbbell:before{content:"\f44b"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-tarp-droplet:before{content:"\e57c"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-calendar-plus:before{content:"\f271"}.fa-plane-arrival:before{content:"\f5af"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-chart-gantt:before{content:"\e0e4"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-dna:before{content:"\f471"}.fa-virus-slash:before{content:"\e075"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-chess:before{content:"\f439"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-plug-circle-check:before{content:"\e55c"}.fa-street-view:before{content:"\f21d"}.fa-franc-sign:before{content:"\e18f"}.fa-volume-off:before{content:"\f026"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-star-of-david:before{content:"\f69a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-vials:before{content:"\f493"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-place-of-worship:before{content:"\f67f"}.fa-grip-vertical:before{content:"\f58e"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-u:before{content:"\55"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-pallet:before{content:"\f482"}.fa-faucet:before{content:"\e005"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-s:before{content:"\53"}.fa-timeline:before{content:"\e29c"}.fa-keyboard:before{content:"\f11c"}.fa-caret-down:before{content:"\f0d7"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-plane-up:before{content:"\e22d"}.fa-piggy-bank:before{content:"\f4d3"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-mountain-city:before{content:"\e52e"}.fa-coins:before{content:"\f51e"}.fa-khanda:before{content:"\f66d"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-folder-tree:before{content:"\f802"}.fa-network-wired:before{content:"\f6ff"}.fa-map-pin:before{content:"\f276"}.fa-hamsa:before{content:"\f665"}.fa-cent-sign:before{content:"\e3f5"}.fa-flask:before{content:"\f0c3"}.fa-person-pregnant:before{content:"\e31e"}.fa-wand-sparkles:before{content:"\f72b"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-ticket:before{content:"\f145"}.fa-power-off:before{content:"\f011"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-flag-usa:before{content:"\f74d"}.fa-laptop-file:before{content:"\e51d"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-diagram-next:before{content:"\e476"}.fa-person-rifle:before{content:"\e54e"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-closed-captioning:before{content:"\f20a"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-venus-double:before{content:"\f226"}.fa-images:before{content:"\f302"}.fa-calculator:before{content:"\f1ec"}.fa-people-pulling:before{content:"\e535"}.fa-n:before{content:"\4e"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-cloud-rain:before{content:"\f73d"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-ship:before{content:"\f21a"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-download:before{content:"\f019"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-file-circle-check:before{content:"\e5a0"}.fa-forward:before{content:"\f04e"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-align-center:before{content:"\f037"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-calendar-week:before{content:"\f784"}.fa-laptop-medical:before{content:"\f812"}.fa-b:before{content:"\42"}.fa-file-medical:before{content:"\f477"}.fa-dice-one:before{content:"\f525"}.fa-kiwi-bird:before{content:"\f535"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-mill-sign:before{content:"\e1ed"}.fa-bowl-rice:before{content:"\e2eb"}.fa-skull:before{content:"\f54c"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-truck-pickup:before{content:"\f63c"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-stop:before{content:"\f04d"}.fa-code-merge:before{content:"\f387"}.fa-upload:before{content:"\f093"}.fa-hurricane:before{content:"\f751"}.fa-mound:before{content:"\e52d"}.fa-toilet-portable:before{content:"\e583"}.fa-compact-disc:before{content:"\f51f"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-caravan:before{content:"\f8ff"}.fa-shield-cat:before{content:"\e572"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-glass-water:before{content:"\e4f4"}.fa-oil-well:before{content:"\e532"}.fa-vault:before{content:"\e2c5"}.fa-mars:before{content:"\f222"}.fa-toilet:before{content:"\f7d8"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-sun:before{content:"\f185"}.fa-guitar:before{content:"\f7a6"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-horse-head:before{content:"\f7ab"}.fa-bore-hole:before{content:"\e4c3"}.fa-industry:before{content:"\f275"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-florin-sign:before{content:"\e184"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-less-than:before{content:"\3c"}.fa-angle-down:before{content:"\f107"}.fa-car-tunnel:before{content:"\e4de"}.fa-head-side-cough:before{content:"\e061"}.fa-grip-lines:before{content:"\f7a4"}.fa-thumbs-down:before{content:"\f165"}.fa-user-lock:before{content:"\f502"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-chess-pawn:before{content:"\f443"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-person-through-window:before{content:"\e5a9"}.fa-toolbox:before{content:"\f552"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-bug:before{content:"\f188"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-mountain-sun:before{content:"\e52f"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-dice-d20:before{content:"\f6cf"}.fa-truck-droplet:before{content:"\e58c"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-medal:before{content:"\f5a2"}.fa-bed:before{content:"\f236"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-podcast:before{content:"\f2ce"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-bell:before{content:"\f0f3"}.fa-superscript:before{content:"\f12b"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-star-of-life:before{content:"\f621"}.fa-phone-slash:before{content:"\f3dd"}.fa-paint-roller:before{content:"\f5aa"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-file:before{content:"\f15b"}.fa-greater-than:before{content:"\3e"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-arrow-down:before{content:"\f063"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-eraser:before{content:"\f12d"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-person-burst:before{content:"\e53b"}.fa-dove:before{content:"\f4ba"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-socks:before{content:"\f696"}.fa-inbox:before{content:"\f01c"}.fa-section:before{content:"\e447"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-envelope-open-text:before{content:"\f658"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-wine-bottle:before{content:"\f72f"}.fa-chess-rook:before{content:"\f447"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-dharmachakra:before{content:"\f655"}.fa-hotdog:before{content:"\f80f"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-drum:before{content:"\f569"}.fa-ice-cream:before{content:"\f810"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-fax:before{content:"\f1ac"}.fa-paragraph:before{content:"\f1dd"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-star-half:before{content:"\f089"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-tree-city:before{content:"\e587"}.fa-play:before{content:"\f04b"}.fa-font:before{content:"\f031"}.fa-rupiah-sign:before{content:"\e23d"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-naira-sign:before{content:"\e1f6"}.fa-cart-arrow-down:before{content:"\f218"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-receipt:before{content:"\f543"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-chevron-down:before{content:"\f078"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-skull-crossbones:before{content:"\f714"}.fa-code-compare:before{content:"\e13a"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-school-lock:before{content:"\e56f"}.fa-tower-cell:before{content:"\e585"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-ranking-star:before{content:"\e561"}.fa-chess-king:before{content:"\f43f"}.fa-person-harassing:before{content:"\e549"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-arrow-up:before{content:"\f062"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-shrimp:before{content:"\e448"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-jug-detergent:before{content:"\e519"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-user-shield:before{content:"\f505"}.fa-wind:before{content:"\f72e"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-y:before{content:"\59"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-fish:before{content:"\f578"}.fa-user-graduate:before{content:"\f501"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-clapperboard:before{content:"\e131"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-jet-fighter-up:before{content:"\e518"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-copy:before{content:"\f0c5"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-hand-sparkles:before{content:"\e05d"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-child-combatant:before,.fa-child-rifle:before{content:"\e4e0"}.fa-gun:before{content:"\e19b"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-expand:before{content:"\f065"}.fa-computer:before{content:"\e4e5"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-peso-sign:before{content:"\e222"}.fa-building-shield:before{content:"\e4d8"}.fa-baby:before{content:"\f77c"}.fa-users-line:before{content:"\e592"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-tractor:before{content:"\f722"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-lines-leaning:before{content:"\e51e"}.fa-ruler-combined:before{content:"\f546"}.fa-copyright:before{content:"\f1f9"}.fa-equals:before{content:"\3d"}.fa-blender:before{content:"\f517"}.fa-teeth:before{content:"\f62e"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-map:before{content:"\f279"}.fa-rocket:before{content:"\f135"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-folder-minus:before{content:"\f65d"}.fa-store:before{content:"\f54e"}.fa-arrow-trend-up:before{content:"\e098"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-bezier-curve:before{content:"\f55b"}.fa-bell-slash:before{content:"\f1f6"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-school-flag:before{content:"\e56e"}.fa-fill:before{content:"\f575"}.fa-angle-up:before{content:"\f106"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-holly-berry:before{content:"\f7aa"}.fa-chevron-left:before{content:"\f053"}.fa-bacteria:before{content:"\e059"}.fa-hand-lizard:before{content:"\f258"}.fa-notdef:before{content:"\e1fe"}.fa-disease:before{content:"\f7fa"}.fa-briefcase-medical:before{content:"\f469"}.fa-genderless:before{content:"\f22d"}.fa-chevron-right:before{content:"\f054"}.fa-retweet:before{content:"\f079"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-pump-soap:before{content:"\e06b"}.fa-video-slash:before{content:"\f4e2"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-radio:before{content:"\f8d7"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-traffic-light:before{content:"\f637"}.fa-thermometer:before{content:"\f491"}.fa-vr-cardboard:before{content:"\f729"}.fa-hand-middle-finger:before{content:"\f806"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-truck-moving:before{content:"\f4df"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-display:before{content:"\e163"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-trophy:before{content:"\f091"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-hammer:before{content:"\f6e3"}.fa-hand-peace:before{content:"\f25b"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-spinner:before{content:"\f110"}.fa-robot:before{content:"\f544"}.fa-peace:before{content:"\f67c"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-warehouse:before{content:"\f494"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-splotch:before{content:"\f5bc"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-dice-four:before{content:"\f524"}.fa-sim-card:before{content:"\f7c4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-mercury:before{content:"\f223"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-person-falling-burst:before{content:"\e547"}.fa-award:before{content:"\f559"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-building:before{content:"\f1ad"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-qrcode:before{content:"\f029"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-house-medical:before{content:"\e3b2"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-house-chimney-window:before{content:"\e00d"}.fa-pen-nib:before{content:"\f5ad"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tents:before{content:"\e582"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-dog:before{content:"\f6d3"}.fa-carrot:before{content:"\f787"}.fa-moon:before{content:"\f186"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-cheese:before{content:"\f7ef"}.fa-yin-yang:before{content:"\f6ad"}.fa-music:before{content:"\f001"}.fa-code-commit:before{content:"\f386"}.fa-temperature-low:before{content:"\f76b"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-broom:before{content:"\f51a"}.fa-shield-heart:before{content:"\e574"}.fa-gopuram:before{content:"\f664"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-hashtag:before{content:"\23"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-oil-can:before{content:"\f613"}.fa-t:before{content:"\54"}.fa-hippo:before{content:"\f6ed"}.fa-chart-column:before{content:"\e0e3"}.fa-infinity:before{content:"\f534"}.fa-vial-circle-check:before{content:"\e596"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-voicemail:before{content:"\f897"}.fa-fan:before{content:"\f863"}.fa-person-walking-luggage:before{content:"\e554"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-calendar:before{content:"\f133"}.fa-trailer:before{content:"\e041"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-sd-card:before{content:"\f7c2"}.fa-dragon:before{content:"\f6d5"}.fa-shoe-prints:before{content:"\f54b"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-hand-holding:before{content:"\f4bd"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-clone:before{content:"\f24d"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-tornado:before{content:"\f76f"}.fa-file-circle-plus:before{content:"\e494"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-anchor:before{content:"\f13d"}.fa-border-all:before{content:"\f84c"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-cookie-bite:before{content:"\f564"}.fa-arrow-trend-down:before{content:"\e097"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-draw-polygon:before{content:"\f5ee"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-shower:before{content:"\f2cc"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-m:before{content:"\4d"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-book:before{content:"\f02d"}.fa-user-plus:before{content:"\f234"}.fa-check:before{content:"\f00c"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-house-circle-check:before{content:"\e509"}.fa-angle-left:before{content:"\f104"}.fa-diagram-successor:before{content:"\e47a"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-cloud-moon:before{content:"\f6c3"}.fa-briefcase:before{content:"\f0b1"}.fa-person-falling:before{content:"\e546"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-user-tag:before{content:"\f507"}.fa-rug:before{content:"\e569"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-baht-sign:before{content:"\e0ac"}.fa-book-open:before{content:"\f518"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-handcuffs:before{content:"\e4f8"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-database:before{content:"\f1c0"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-mask-face:before{content:"\e1d7"}.fa-hill-rockslide:before{content:"\e508"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-paper-plane:before{content:"\f1d8"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-dungeon:before{content:"\f6d9"}.fa-align-right:before{content:"\f038"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-life-ring:before{content:"\f1cd"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-calendar-day:before{content:"\f783"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-dice:before{content:"\f522"}.fa-bowling-ball:before{content:"\f436"}.fa-brain:before{content:"\f5dc"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-calendar-minus:before{content:"\f272"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-gifts:before{content:"\f79c"}.fa-hotel:before{content:"\f594"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-thumbs-up:before{content:"\f164"}.fa-user-clock:before{content:"\f4fd"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-file-invoice:before{content:"\f570"}.fa-window-minimize:before{content:"\f2d1"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-brush:before{content:"\f55d"}.fa-mask:before{content:"\f6fa"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-ruler-vertical:before{content:"\f548"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-train-tram:before{content:"\e5b4"}.fa-user-nurse:before{content:"\f82f"}.fa-syringe:before{content:"\f48e"}.fa-cloud-sun:before{content:"\f6c4"}.fa-stopwatch-20:before{content:"\e06f"}.fa-square-full:before{content:"\f45c"}.fa-magnet:before{content:"\f076"}.fa-jar:before{content:"\e516"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-bug-slash:before{content:"\e490"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-bone:before{content:"\f5d7"}.fa-user-injured:before{content:"\f728"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-plane:before{content:"\f072"}.fa-tent-arrows-down:before{content:"\e581"}.fa-exclamation:before{content:"\21"}.fa-arrows-spin:before{content:"\e4bb"}.fa-print:before{content:"\f02f"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-x:before{content:"\58"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-person-military-pointing:before{content:"\e54a"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-umbrella:before{content:"\f0e9"}.fa-trowel:before{content:"\e589"}.fa-d:before{content:"\44"}.fa-stapler:before{content:"\e5af"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-kip-sign:before{content:"\e1c4"}.fa-hand-point-left:before{content:"\f0a5"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-barcode:before{content:"\f02a"}.fa-plus-minus:before{content:"\e43c"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-person-circle-check:before{content:"\e53e"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-display:block;font-family:Font Awesome\ 6 Brands;font-style:normal;font-weight:400;src:url(https://weisser-dev.github.io/my-digital-card/static/media/fa-brands-400.8d3cabfc66809162fb4d.woff2) format("woff2"),url(https://weisser-dev.github.io/my-digital-card/static/media/fa-brands-400.6205fd00fb1b573e9f0f.ttf) format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero:before{content:"\f3d0"}.fa-hooli:before{content:"\f427"}.fa-yelp:before{content:"\f1e9"}.fa-cc-visa:before{content:"\f1f0"}.fa-lastfm:before{content:"\f202"}.fa-shopware:before{content:"\f5b5"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-aws:before{content:"\f375"}.fa-redhat:before{content:"\f7bc"}.fa-yoast:before{content:"\f2b1"}.fa-cloudflare:before{content:"\e07d"}.fa-ups:before{content:"\f7e0"}.fa-pixiv:before{content:"\e640"}.fa-wpexplorer:before{content:"\f2de"}.fa-dyalog:before{content:"\f399"}.fa-bity:before{content:"\f37a"}.fa-stackpath:before{content:"\f842"}.fa-buysellads:before{content:"\f20d"}.fa-first-order:before{content:"\f2b0"}.fa-modx:before{content:"\f285"}.fa-guilded:before{content:"\e07e"}.fa-vnv:before{content:"\f40b"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-microsoft:before{content:"\f3ca"}.fa-qq:before{content:"\f1d6"}.fa-orcid:before{content:"\f8d2"}.fa-java:before{content:"\f4e4"}.fa-invision:before{content:"\f7b0"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-centercode:before{content:"\f380"}.fa-glide-g:before{content:"\f2a6"}.fa-drupal:before{content:"\f1a9"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-unity:before{content:"\e049"}.fa-whmcs:before{content:"\f40d"}.fa-rocketchat:before{content:"\f3e8"}.fa-vk:before{content:"\f189"}.fa-untappd:before{content:"\f405"}.fa-mailchimp:before{content:"\f59e"}.fa-css3-alt:before{content:"\f38b"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-vimeo-v:before{content:"\f27d"}.fa-contao:before{content:"\f26d"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-deskpro:before{content:"\f38f"}.fa-brave:before{content:"\e63c"}.fa-sistrix:before{content:"\f3ee"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-battle-net:before{content:"\f835"}.fa-the-red-yeti:before{content:"\f69d"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-edge:before{content:"\f282"}.fa-threads:before{content:"\e618"}.fa-napster:before{content:"\f3d2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-google-plus-g:before{content:"\f0d5"}.fa-artstation:before{content:"\f77a"}.fa-markdown:before{content:"\f60f"}.fa-sourcetree:before{content:"\f7d3"}.fa-google-plus:before{content:"\f2b3"}.fa-diaspora:before{content:"\f791"}.fa-foursquare:before{content:"\f180"}.fa-stack-overflow:before{content:"\f16c"}.fa-github-alt:before{content:"\f113"}.fa-phoenix-squadron:before{content:"\f511"}.fa-pagelines:before{content:"\f18c"}.fa-algolia:before{content:"\f36c"}.fa-red-river:before{content:"\f3e3"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-safari:before{content:"\f267"}.fa-google:before{content:"\f1a0"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-atlassian:before{content:"\f77b"}.fa-linkedin-in:before{content:"\f0e1"}.fa-digital-ocean:before{content:"\f391"}.fa-nimblr:before{content:"\f5a8"}.fa-chromecast:before{content:"\f838"}.fa-evernote:before{content:"\f839"}.fa-hacker-news:before{content:"\f1d4"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-adversal:before{content:"\f36a"}.fa-creative-commons:before{content:"\f25e"}.fa-watchman-monitoring:before{content:"\e087"}.fa-fonticons:before{content:"\f280"}.fa-weixin:before{content:"\f1d7"}.fa-shirtsinbulk:before{content:"\f214"}.fa-codepen:before{content:"\f1cb"}.fa-git-alt:before{content:"\f841"}.fa-lyft:before{content:"\f3c3"}.fa-rev:before{content:"\f5b2"}.fa-windows:before{content:"\f17a"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-meetup:before{content:"\f2e0"}.fa-centos:before{content:"\f789"}.fa-adn:before{content:"\f170"}.fa-cloudsmith:before{content:"\f384"}.fa-opensuse:before{content:"\e62b"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-codiepie:before{content:"\f284"}.fa-node:before{content:"\f419"}.fa-mix:before{content:"\f3cb"}.fa-steam:before{content:"\f1b6"}.fa-cc-apple-pay:before{content:"\f416"}.fa-scribd:before{content:"\f28a"}.fa-debian:before{content:"\e60b"}.fa-openid:before{content:"\f19b"}.fa-instalod:before{content:"\e081"}.fa-expeditedssl:before{content:"\f23e"}.fa-sellcast:before{content:"\f2da"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-r-project:before{content:"\f4f7"}.fa-delicious:before{content:"\f1a5"}.fa-freebsd:before{content:"\f3a4"}.fa-vuejs:before{content:"\f41f"}.fa-accusoft:before{content:"\f369"}.fa-ioxhost:before{content:"\f208"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-app-store:before{content:"\f36f"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-itunes-note:before{content:"\f3b5"}.fa-golang:before{content:"\e40f"}.fa-kickstarter:before{content:"\f3bb"}.fa-grav:before{content:"\f2d6"}.fa-weibo:before{content:"\f18a"}.fa-uncharted:before{content:"\e084"}.fa-firstdraft:before{content:"\f3a1"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-wikipedia-w:before{content:"\f266"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-angellist:before{content:"\f209"}.fa-galactic-republic:before{content:"\f50c"}.fa-nfc-directional:before{content:"\e530"}.fa-skype:before{content:"\f17e"}.fa-joget:before{content:"\f3b7"}.fa-fedora:before{content:"\f798"}.fa-stripe-s:before{content:"\f42a"}.fa-meta:before{content:"\e49b"}.fa-laravel:before{content:"\f3bd"}.fa-hotjar:before{content:"\f3b1"}.fa-bluetooth-b:before{content:"\f294"}.fa-square-letterboxd:before{content:"\e62e"}.fa-sticker-mule:before{content:"\f3f7"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-hips:before{content:"\f452"}.fa-behance:before{content:"\f1b4"}.fa-reddit:before{content:"\f1a1"}.fa-discord:before{content:"\f392"}.fa-chrome:before{content:"\f268"}.fa-app-store-ios:before{content:"\f370"}.fa-cc-discover:before{content:"\f1f2"}.fa-wpbeginner:before{content:"\f297"}.fa-confluence:before{content:"\f78d"}.fa-shoelace:before{content:"\e60c"}.fa-mdb:before{content:"\f8ca"}.fa-dochub:before{content:"\f394"}.fa-accessible-icon:before{content:"\f368"}.fa-ebay:before{content:"\f4f4"}.fa-amazon:before{content:"\f270"}.fa-unsplash:before{content:"\e07c"}.fa-yarn:before{content:"\f7e3"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-500px:before{content:"\f26e"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-asymmetrik:before{content:"\f372"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-gratipay:before{content:"\f184"}.fa-apple:before{content:"\f179"}.fa-hive:before{content:"\e07f"}.fa-gitkraken:before{content:"\f3a6"}.fa-keybase:before{content:"\f4f5"}.fa-apple-pay:before{content:"\f415"}.fa-padlet:before{content:"\e4a0"}.fa-amazon-pay:before{content:"\f42c"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-stumbleupon:before{content:"\f1a4"}.fa-fedex:before{content:"\f797"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-shopify:before{content:"\e057"}.fa-neos:before{content:"\f612"}.fa-square-threads:before{content:"\e619"}.fa-hackerrank:before{content:"\f5f7"}.fa-researchgate:before{content:"\f4f8"}.fa-swift:before{content:"\f8e1"}.fa-angular:before{content:"\f420"}.fa-speakap:before{content:"\f3f3"}.fa-angrycreative:before{content:"\f36e"}.fa-y-combinator:before{content:"\f23b"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-google-scholar:before{content:"\e63b"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-studiovinari:before{content:"\f3f8"}.fa-pied-piper:before{content:"\f2ae"}.fa-wordpress:before{content:"\f19a"}.fa-product-hunt:before{content:"\f288"}.fa-firefox:before{content:"\f269"}.fa-linode:before{content:"\f2b8"}.fa-goodreads:before{content:"\f3a8"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-jsfiddle:before{content:"\f1cc"}.fa-sith:before{content:"\f512"}.fa-themeisle:before{content:"\f2b2"}.fa-page4:before{content:"\f3d7"}.fa-hashnode:before{content:"\e499"}.fa-react:before{content:"\f41b"}.fa-cc-paypal:before{content:"\f1f4"}.fa-squarespace:before{content:"\f5be"}.fa-cc-stripe:before{content:"\f1f5"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-bitcoin:before{content:"\f379"}.fa-keycdn:before{content:"\f3ba"}.fa-opera:before{content:"\f26a"}.fa-itch-io:before{content:"\f83a"}.fa-umbraco:before{content:"\f8e8"}.fa-galactic-senate:before{content:"\f50d"}.fa-ubuntu:before{content:"\f7df"}.fa-draft2digital:before{content:"\f396"}.fa-stripe:before{content:"\f429"}.fa-houzz:before{content:"\f27c"}.fa-gg:before{content:"\f260"}.fa-dhl:before{content:"\f790"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-xing:before{content:"\f168"}.fa-blackberry:before{content:"\f37b"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-playstation:before{content:"\f3df"}.fa-quinscape:before{content:"\f459"}.fa-less:before{content:"\f41d"}.fa-blogger-b:before{content:"\f37d"}.fa-opencart:before{content:"\f23d"}.fa-vine:before{content:"\f1ca"}.fa-signal-messenger:before{content:"\e663"}.fa-paypal:before{content:"\f1ed"}.fa-gitlab:before{content:"\f296"}.fa-typo3:before{content:"\f42b"}.fa-reddit-alien:before{content:"\f281"}.fa-yahoo:before{content:"\f19e"}.fa-dailymotion:before{content:"\e052"}.fa-affiliatetheme:before{content:"\f36b"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-bootstrap:before{content:"\f836"}.fa-odnoklassniki:before{content:"\f263"}.fa-nfc-symbol:before{content:"\e531"}.fa-mintbit:before{content:"\e62f"}.fa-ethereum:before{content:"\f42e"}.fa-speaker-deck:before{content:"\f83c"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-patreon:before{content:"\f3d9"}.fa-avianex:before{content:"\f374"}.fa-ello:before{content:"\f5f1"}.fa-gofore:before{content:"\f3a7"}.fa-bimobject:before{content:"\f378"}.fa-brave-reverse:before{content:"\e63d"}.fa-facebook-f:before{content:"\f39e"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-mandalorian:before{content:"\f50f"}.fa-first-order-alt:before{content:"\f50a"}.fa-osi:before{content:"\f41a"}.fa-google-wallet:before{content:"\f1ee"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-periscope:before{content:"\f3da"}.fa-fulcrum:before{content:"\f50b"}.fa-cloudscale:before{content:"\f383"}.fa-forumbee:before{content:"\f211"}.fa-mizuni:before{content:"\f3cc"}.fa-schlix:before{content:"\f3ea"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-bandcamp:before{content:"\f2d5"}.fa-wpforms:before{content:"\f298"}.fa-cloudversify:before{content:"\f385"}.fa-usps:before{content:"\f7e1"}.fa-megaport:before{content:"\f5a3"}.fa-magento:before{content:"\f3c4"}.fa-spotify:before{content:"\f1bc"}.fa-optin-monster:before{content:"\f23c"}.fa-fly:before{content:"\f417"}.fa-aviato:before{content:"\f421"}.fa-itunes:before{content:"\f3b4"}.fa-cuttlefish:before{content:"\f38c"}.fa-blogger:before{content:"\f37c"}.fa-flickr:before{content:"\f16e"}.fa-viber:before{content:"\f409"}.fa-soundcloud:before{content:"\f1be"}.fa-digg:before{content:"\f1a6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-letterboxd:before{content:"\e62d"}.fa-symfony:before{content:"\f83d"}.fa-maxcdn:before{content:"\f136"}.fa-etsy:before{content:"\f2d7"}.fa-facebook-messenger:before{content:"\f39f"}.fa-audible:before{content:"\f373"}.fa-think-peaks:before{content:"\f731"}.fa-bilibili:before{content:"\e3d9"}.fa-erlang:before{content:"\f39d"}.fa-x-twitter:before{content:"\e61b"}.fa-cotton-bureau:before{content:"\f89e"}.fa-dashcube:before{content:"\f210"}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-stack-exchange:before{content:"\f18d"}.fa-elementor:before{content:"\f430"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-palfed:before{content:"\f3d8"}.fa-superpowers:before{content:"\f2dd"}.fa-resolving:before{content:"\f3e7"}.fa-xbox:before{content:"\f412"}.fa-searchengin:before{content:"\f3eb"}.fa-tiktok:before{content:"\e07b"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-renren:before{content:"\f18b"}.fa-linux:before{content:"\f17c"}.fa-glide:before{content:"\f2a5"}.fa-linkedin:before{content:"\f08c"}.fa-hubspot:before{content:"\f3b2"}.fa-deploydog:before{content:"\f38e"}.fa-twitch:before{content:"\f1e8"}.fa-ravelry:before{content:"\f2d9"}.fa-mixer:before{content:"\e056"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-vimeo:before{content:"\f40a"}.fa-mendeley:before{content:"\f7b3"}.fa-uniregistry:before{content:"\f404"}.fa-figma:before{content:"\f799"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-dropbox:before{content:"\f16b"}.fa-instagram:before{content:"\f16d"}.fa-cmplid:before{content:"\e360"}.fa-upwork:before{content:"\e641"}.fa-facebook:before{content:"\f09a"}.fa-gripfire:before{content:"\f3ac"}.fa-jedi-order:before{content:"\f50e"}.fa-uikit:before{content:"\f403"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-phabricator:before{content:"\f3db"}.fa-ussunnah:before{content:"\f407"}.fa-earlybirds:before{content:"\f39a"}.fa-trade-federation:before{content:"\f513"}.fa-autoprefixer:before{content:"\f41c"}.fa-whatsapp:before{content:"\f232"}.fa-slideshare:before{content:"\f1e7"}.fa-google-play:before{content:"\f3ab"}.fa-viadeo:before{content:"\f2a9"}.fa-line:before{content:"\f3c0"}.fa-google-drive:before{content:"\f3aa"}.fa-servicestack:before{content:"\f3ec"}.fa-simplybuilt:before{content:"\f215"}.fa-bitbucket:before{content:"\f171"}.fa-imdb:before{content:"\f2d8"}.fa-deezer:before{content:"\e077"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-jira:before{content:"\f7b1"}.fa-docker:before{content:"\f395"}.fa-screenpal:before{content:"\e570"}.fa-bluetooth:before{content:"\f293"}.fa-gitter:before{content:"\f426"}.fa-d-and-d:before{content:"\f38d"}.fa-microblog:before{content:"\e01a"}.fa-cc-diners-club:before{content:"\f24c"}.fa-gg-circle:before{content:"\f261"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-yandex:before{content:"\f413"}.fa-readme:before{content:"\f4d5"}.fa-html5:before{content:"\f13b"}.fa-sellsy:before{content:"\f213"}.fa-sass:before{content:"\f41e"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-buromobelexperte:before{content:"\f37f"}.fa-salesforce:before{content:"\f83b"}.fa-octopus-deploy:before{content:"\e082"}.fa-medapps:before{content:"\f3c6"}.fa-ns8:before{content:"\f3d5"}.fa-pinterest-p:before{content:"\f231"}.fa-apper:before{content:"\f371"}.fa-fort-awesome:before{content:"\f286"}.fa-waze:before{content:"\f83f"}.fa-cc-jcb:before{content:"\f24b"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-rust:before{content:"\e07a"}.fa-wix:before{content:"\f5cf"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-supple:before{content:"\f3f9"}.fa-webflow:before{content:"\e65c"}.fa-rebel:before{content:"\f1d0"}.fa-css3:before{content:"\f13c"}.fa-staylinked:before{content:"\f3f5"}.fa-kaggle:before{content:"\f5fa"}.fa-space-awesome:before{content:"\e5ac"}.fa-deviantart:before{content:"\f1bd"}.fa-cpanel:before{content:"\f388"}.fa-goodreads-g:before{content:"\f3a9"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-trello:before{content:"\f181"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-get-pocket:before{content:"\f265"}.fa-perbyte:before{content:"\e083"}.fa-grunt:before{content:"\f3ad"}.fa-weebly:before{content:"\f5cc"}.fa-connectdevelop:before{content:"\f20e"}.fa-leanpub:before{content:"\f212"}.fa-black-tie:before{content:"\f27e"}.fa-themeco:before{content:"\f5c6"}.fa-python:before{content:"\f3e2"}.fa-android:before{content:"\f17b"}.fa-bots:before{content:"\e340"}.fa-free-code-camp:before{content:"\f2c5"}.fa-hornbill:before{content:"\f592"}.fa-js:before{content:"\f3b8"}.fa-ideal:before{content:"\e013"}.fa-git:before{content:"\f1d3"}.fa-dev:before{content:"\f6cc"}.fa-sketch:before{content:"\f7c6"}.fa-yandex-international:before{content:"\f414"}.fa-cc-amex:before{content:"\f1f3"}.fa-uber:before{content:"\f402"}.fa-github:before{content:"\f09b"}.fa-php:before{content:"\f457"}.fa-alipay:before{content:"\f642"}.fa-youtube:before{content:"\f167"}.fa-skyatlas:before{content:"\f216"}.fa-firefox-browser:before{content:"\e007"}.fa-replyd:before{content:"\f3e6"}.fa-suse:before{content:"\f7d6"}.fa-jenkins:before{content:"\f3b6"}.fa-twitter:before{content:"\f099"}.fa-rockrms:before{content:"\f3e9"}.fa-pinterest:before{content:"\f0d2"}.fa-buffer:before{content:"\f837"}.fa-npm:before{content:"\f3d4"}.fa-yammer:before{content:"\f840"}.fa-btc:before{content:"\f15a"}.fa-dribbble:before{content:"\f17d"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-internet-explorer:before{content:"\f26b"}.fa-stubber:before{content:"\e5c7"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-old-republic:before{content:"\f510"}.fa-odysee:before{content:"\e5c6"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-node-js:before{content:"\f3d3"}.fa-edge-legacy:before{content:"\e078"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-medrt:before{content:"\f3c8"}.fa-usb:before{content:"\f287"}.fa-tumblr:before{content:"\f173"}.fa-vaadin:before{content:"\f408"}.fa-quora:before{content:"\f2c4"}.fa-square-x-twitter:before{content:"\e61a"}.fa-reacteurope:before{content:"\f75d"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-amilia:before{content:"\f36d"}.fa-mixcloud:before{content:"\f289"}.fa-flipboard:before{content:"\f44d"}.fa-viacoin:before{content:"\f237"}.fa-critical-role:before{content:"\f6c9"}.fa-sitrox:before{content:"\e44a"}.fa-discourse:before{content:"\f393"}.fa-joomla:before{content:"\f1aa"}.fa-mastodon:before{content:"\f4f6"}.fa-airbnb:before{content:"\f834"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-buy-n-large:before{content:"\f8a6"}.fa-gulp:before{content:"\f3ae"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-strava:before{content:"\f428"}.fa-ember:before{content:"\f423"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-teamspeak:before{content:"\f4f9"}.fa-pushed:before{content:"\f3e1"}.fa-wordpress-simple:before{content:"\f411"}.fa-nutritionix:before{content:"\f3d6"}.fa-wodu:before{content:"\e088"}.fa-google-pay:before{content:"\e079"}.fa-intercom:before{content:"\f7af"}.fa-zhihu:before{content:"\f63f"}.fa-korvue:before{content:"\f42f"}.fa-pix:before{content:"\e43a"}.fa-steam-symbol:before{content:"\f3f6"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-display:block;font-family:Font Awesome\ 6 Free;font-style:normal;font-weight:400;src:url(https://weisser-dev.github.io/my-digital-card/static/media/fa-regular-400.e931bc0d14f5bbb1da22.woff2) format("woff2"),url(https://weisser-dev.github.io/my-digital-card/static/media/fa-regular-400.adc51aab4d771ab65f81.ttf) format("truetype")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-display:block;font-family:Font Awesome\ 6 Free;font-style:normal;font-weight:900;src:url(https://weisser-dev.github.io/my-digital-card/static/media/fa-solid-900.fb8184add5a3101ad0a3.woff2) format("woff2"),url(https://weisser-dev.github.io/my-digital-card/static/media/fa-solid-900.45a265d0f07b31cde85f.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}@font-face{font-display:block;font-family:Font Awesome\ 5 Brands;font-weight:400;src:url(https://weisser-dev.github.io/my-digital-card/static/media/fa-brands-400.8d3cabfc66809162fb4d.woff2) format("woff2"),url(https://weisser-dev.github.io/my-digital-card/static/media/fa-brands-400.6205fd00fb1b573e9f0f.ttf) format("truetype")}@font-face{font-display:block;font-family:Font Awesome\ 5 Free;font-weight:900;src:url(https://weisser-dev.github.io/my-digital-card/static/media/fa-solid-900.fb8184add5a3101ad0a3.woff2) format("woff2"),url(https://weisser-dev.github.io/my-digital-card/static/media/fa-solid-900.45a265d0f07b31cde85f.ttf) format("truetype")}@font-face{font-display:block;font-family:Font Awesome\ 5 Free;font-weight:400;src:url(https://weisser-dev.github.io/my-digital-card/static/media/fa-regular-400.e931bc0d14f5bbb1da22.woff2) format("woff2"),url(https://weisser-dev.github.io/my-digital-card/static/media/fa-regular-400.adc51aab4d771ab65f81.ttf) format("truetype")}@font-face{font-display:block;font-family:FontAwesome;src:url(https://weisser-dev.github.io/my-digital-card/static/media/fa-solid-900.fb8184add5a3101ad0a3.woff2) format("woff2"),url(https://weisser-dev.github.io/my-digital-card/static/media/fa-solid-900.45a265d0f07b31cde85f.ttf) format("truetype")}@font-face{font-display:block;font-family:FontAwesome;src:url(https://weisser-dev.github.io/my-digital-card/static/media/fa-brands-400.8d3cabfc66809162fb4d.woff2) format("woff2"),url(https://weisser-dev.github.io/my-digital-card/static/media/fa-brands-400.6205fd00fb1b573e9f0f.ttf) format("truetype")}@font-face{font-display:block;font-family:FontAwesome;src:url(https://weisser-dev.github.io/my-digital-card/static/media/fa-regular-400.e931bc0d14f5bbb1da22.woff2) format("woff2"),url(https://weisser-dev.github.io/my-digital-card/static/media/fa-regular-400.adc51aab4d771ab65f81.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-display:block;font-family:FontAwesome;src:url(https://weisser-dev.github.io/my-digital-card/static/media/fa-v4compatibility.b3049b13a93f07e026fc.woff2) format("woff2"),url(https://weisser-dev.github.io/my-digital-card/static/media/fa-v4compatibility.2eb7b3ef25042305f3ff.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}:root{--primary-color:#0056b3;--secondary-color:#e0e0e0;--text-color:#444;--background-color:#fff;--border-color:#ccc;--accent-color-1:#333;--accent-color-2:#999;--footer-text-color:#fff;--footer-hover-color:#999;--footer-line-color:#444;--footer-background-color:#000}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--background-color);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--profile-border-color:var(--background-color)}.ProfileSection_backgroundImage__uiwCq{height:180px;object-fit:cover;position:relative;top:0;width:100%}.ProfileSection_profileContainer__VaeFZ{background-color:var(--background-color);background-color:var(--profile-border-color);border:5px solid var(--profile-border-color);border-radius:50%;height:150px;margin:-65px auto 0;overflow:hidden;position:relative;width:150px;z-index:1}.ProfileSection_profileImage__pbcto{height:100%;object-fit:cover;width:100%}.ProfileSection_profileName__LOhHx{font-size:24px;font-weight:700;margin-top:10px;text-align:center}p{font-size:18px;margin-top:10px}@media (max-width:600px){p{margin:0 10px;padding:0 10px;text-align:center}}:root{--background-color:var(--background-color);--text-color:var(--text-color);--border-color:var(--secondary-color);--icon-color:var(--text-color);--hover-color:var(--primary-color)}.CardElement_cardElement__sIFMY{align-items:center;background-color:var(--background-color);border:1px solid var(--border-color);border-radius:10px;box-shadow:0 2px 5px #0000000d;color:var(--text-color);display:flex;justify-content:start;margin-bottom:15px;padding:20px;transition:box-shadow .3s ease}.CardElement_cardElement__sIFMY:hover{box-shadow:0 4px 8px #0000001a}.CardElement_cardElement__sIFMY a{align-items:center;color:inherit;display:flex;text-decoration:none;width:100%}.CardElement_cardElement__sIFMY p{text-align:left}.CardElement_cardElementIcon__1QJCy{align-items:center;color:var(--text-color);color:var(--icon-color);display:flex;font-size:24px;justify-content:center;margin-right:15px;width:60px}.CardElement_cardElementIcon__1QJCy i{font-size:1.5em;height:36px}.CardElement_cardElementIcon__1QJCy img{height:36px;max-width:100%}.CardElement_cardText__cf5lA,.CardElement_cardTitle__\+mcs7{margin:0}.CardElement_cardElement__sIFMY:hover .CardElement_cardElementIcon__1QJCy i,.CardElement_cardElement__sIFMY:hover .CardElement_cardText__cf5lA,.CardElement_cardElement__sIFMY:hover .CardElement_cardTitle__\+mcs7{color:var(--primary-color);color:var(--hover-color);transition:color .3s ease}@media (max-width:600px){.CardElement_cardElement__sIFMY{border-radius:0;margin-bottom:-1px}}.SocialMediaSection_socialMediaSection__mZqph{display:flex;justify-content:center;margin-right:10px;padding:20px 0}.SocialMediaElement_socialMediaLink__uSxDZ{align-items:center;border-radius:50%;display:inline-block;height:40px;justify-content:center;margin:0 10px 20px;text-align:center;transition:transform .3s ease;width:40px}.SocialMediaElement_socialMediaLink__uSxDZ:hover{transform:scale(1.1)}.SocialMediaElement_socialMediaIcon__4aKmc{align-items:center;border-radius:5px;color:#fff;color:#fffc;font-size:1.8em;height:50px;justify-content:center;line-height:50px;text-align:center;transition:all .3s ease-in-out;width:50px}.fa-adn{background-color:#504e54}.fa-apple{background-color:#aeb5c5}.fa-android{background-color:#a5c63b}.fa-bitbucket,.fa-bitbucket-square{background-color:#036}.fa-bitcoin,.fa-btc{background-color:#f7931a}.fa-css3{background-color:#1572b7}.fa-dribbble{background-color:#f46899}.fa-dropbox{background-color:#018bd3}.fa-facebook,.fa-facebook-square{background-color:#3c599f}.fa-flickr{background-color:#ff0084}.fa-foursquare{background-color:#0086be}.fa-github,.fa-github-alt,.fa-github-square{background-color:#070709}.fa-google-plus,.fa-google-plus-square{background-color:#cf3d2e}.fa-html5{background-color:#e54d26}.fa-instagram{background-color:#a1755c}.fa-linkedin,.fa-linkedin-square{background-color:#0077b5}.fa-linux{background-color:#fbc002;color:#333}.fa-maxcdn{background-color:#f6ae1c}.fa-pagelines{background-color:#241e20;color:#3984ea}.fa-pinterest,.fa-pinterest-square{background-color:#cc2127}.fa-renren{background-color:#025dac}.fa-skype{background-color:#01aef2}.fa-stack-exchange{background-color:#245590}.fa-stack-overflow{background-color:#ff7300}.fa-trello{background-color:#265a7f}.fa-tumblr,.fa-tumblr-square{background-color:#314e6c}.fa-twitter,.fa-twitter-square{background-color:#32ccfe}.fa-vimeo-square{background-color:#229acc}.fa-vk{background-color:#375474}.fa-weibo{background-color:#d72b2b}.fa-windows{background-color:#12b6f3}.fa-whatsapp{background-color:#25d366}.fa-xing,.fa-xing-square{background-color:#00555c}.fa-youtube,.fa-youtube-play,.fa-youtube-square{background-color:#c52f30}:root{--modal-background-color:var(--background-color);--modal-border-color:var(--secondary-color);--overlay-background-color:#000000bf}.ModalComponent_overlay__Jc2NM{background-color:#000000bf;background-color:var(--overlay-background-color);bottom:0;left:0;position:fixed;right:0;top:0;z-index:1000}.ModalComponent_modal__yZ3fx{background:var(--background-color);background:var(--modal-background-color);border:1px solid var(--modal-border-color);border-radius:4px;left:50%;max-height:600px;max-width:900px;outline:none;overflow-y:auto;padding:20px;position:fixed;top:50%;transform:translate(-50%,-50%);width:90%;z-index:1001}.ModalComponent_closeButton__X32Qb{background:#0000;border:none;cursor:pointer;font-size:24px;position:absolute;right:10px;top:10px;transition:transform .3s ease}.ModalComponent_closeButton__X32Qb:hover{transform:rotate(90deg)}@media (max-width:600px){.ModalComponent_modal__yZ3fx{border-radius:0;box-sizing:border-box;height:100vh;left:0;padding:10px;top:0;transform:none;width:100vw}.ModalComponent_modal__yZ3fx p{margin:10px 0 20px;padding:0;text-align:left}.ModalComponent_closeButton__X32Qb{font-size:30px}.ModalComponent_modal__yZ3fx{border-radius:0;box-sizing:border-box;height:100vh;left:0;max-height:100%;max-width:100%;padding:30px 10px 10px;top:0;transform:none;width:100vw}.ModalComponent_closeButton__X32Qb{font-size:30px}}:root{--footer-background-color:var(--background-color);--footer-text-color:var(--text-color);--footer-hover-color:var(--accent-color-1);--footer-line-color:var(--secondary-color)}.Footer_footer__kXlYa{align-items:center;background-color:var(--background-color);background-color:var(--footer-background-color);color:var(--text-color);color:var(--footer-text-color);display:flex;justify-content:space-between;padding:20px 50px}.Footer_footerCopyright__iqeSK{flex:1 1;position:relative;text-align:left}.Footer_footerLinks__3aiFY{display:flex;flex:1 1;gap:20px;justify-content:flex-end}.Footer_footerElement__M7jMA{color:var(--text-color);color:var(--footer-text-color);transition:color .3s}.Footer_footerElement__M7jMA a{color:inherit;text-decoration:none}.Footer_footerElement__M7jMA:hover{color:var(--accent-color-1);color:var(--footer-hover-color)}@media (max-width:600px){.Footer_footer__kXlYa{flex-direction:column;text-align:center}.Footer_footerLinks__3aiFY{justify-content:center;margin-top:10px}.Footer_footerCopyright__iqeSK{margin-bottom:10px;text-align:center;width:100%}.Footer_footerCopyright__iqeSK:after{background:linear-gradient(to left,#0000,var(--secondary-color),#0000);background:linear-gradient(to left,#0000,var(--footer-line-color),#0000);content:"";display:block;height:1px;margin:10px auto -10px;width:100%}}.ContentWrapper{box-sizing:border-box;margin:0 auto;max-width:600px}.icon-element{text-align:center} -/*# sourceMappingURL=main.b52cbed6.css.map*/ \ No newline at end of file + */.fa{font-family:Font Awesome\ 6 Free;font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:900;font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-classic,.fa-regular,.fa-sharp,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-feature-settings:normal;display:inline-block;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:Font Awesome\ 6 Free}.fa-brands,.fab{font-family:Font Awesome\ 6 Brands}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;left:calc(var(--fa-li-width, 2em)*-1);line-height:inherit;position:absolute;text-align:center;width:2em;width:var(--fa-li-width,2em)}.fa-border{border:.08em solid #eee;border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);border-radius:.1em;border-radius:var(--fa-border-radius,.1em);padding:.2em .25em .15em;padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:.3em;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:.3em;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{animation-delay:0s;animation-delay:var(--fa-animation-delay,0s);animation-direction:normal;animation-direction:var(--fa-animation-direction,normal);animation-duration:1s;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:infinite;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-beat;animation-timing-function:ease-in-out;animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-delay:0s;animation-delay:var(--fa-animation-delay,0s);animation-direction:normal;animation-direction:var(--fa-animation-direction,normal);animation-duration:1s;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:infinite;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-bounce;animation-timing-function:cubic-bezier(.28,.84,.42,1);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{animation-iteration-count:infinite;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-fade;animation-timing-function:cubic-bezier(.4,0,.6,1);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{animation-delay:0s;animation-delay:var(--fa-animation-delay,0s);animation-direction:normal;animation-direction:var(--fa-animation-direction,normal);animation-duration:1s;animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{animation-iteration-count:infinite;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-beat-fade;animation-timing-function:cubic-bezier(.4,0,.6,1);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{animation-delay:0s;animation-delay:var(--fa-animation-delay,0s);animation-direction:normal;animation-direction:var(--fa-animation-direction,normal);animation-duration:1s;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:infinite;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-flip;animation-timing-function:ease-in-out;animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-duration:1s;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:infinite;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-shake;animation-timing-function:linear;animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{animation-delay:0s;animation-delay:var(--fa-animation-delay,0s);animation-direction:normal;animation-direction:var(--fa-animation-direction,normal)}.fa-spin{animation-duration:2s;animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:infinite;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-spin;animation-timing-function:linear;animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-direction:normal;animation-direction:var(--fa-animation-direction,normal);animation-duration:1s;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:infinite;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-spin;animation-timing-function:steps(8);animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(1.25);transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(1.1,.9) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(.9,1.1) translateY(-.5em);transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(1.05,.95) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1) translateY(-.125em);transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:.4;opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-beat-fade{0%,to{opacity:.4;opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(1.125);transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotateY(-180deg);transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}24%,8%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(none);transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:auto;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff;color:var(--fa-inverse,#fff)}.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-fill-drip:before{content:"\f576"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-at:before{content:"\40"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-text-height:before{content:"\f034"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-stethoscope:before{content:"\f0f1"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-info:before{content:"\f129"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-explosion:before{content:"\e4e9"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-wave-square:before{content:"\f83e"}.fa-ring:before{content:"\f70b"}.fa-building-un:before{content:"\e4d9"}.fa-dice-three:before{content:"\f527"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-door-open:before{content:"\f52b"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-atom:before{content:"\f5d2"}.fa-soap:before{content:"\e06e"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-pump-medical:before{content:"\e06a"}.fa-fingerprint:before{content:"\f577"}.fa-hand-point-right:before{content:"\f0a4"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-flag-checkered:before{content:"\f11e"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-crop:before{content:"\f125"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-users-rectangle:before{content:"\e594"}.fa-people-roof:before{content:"\e537"}.fa-people-line:before{content:"\e534"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-diagram-predecessor:before{content:"\e477"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-laptop:before{content:"\f109"}.fa-file-csv:before{content:"\f6dd"}.fa-menorah:before{content:"\f676"}.fa-truck-plane:before{content:"\e58f"}.fa-record-vinyl:before{content:"\f8d9"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-bong:before{content:"\f55c"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-jar-wheat:before{content:"\e517"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-pager:before{content:"\f815"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-strikethrough:before{content:"\f0cc"}.fa-k:before{content:"\4b"}.fa-landmark-flag:before{content:"\e51c"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-backward:before{content:"\f04a"}.fa-caret-right:before{content:"\f0da"}.fa-comments:before{content:"\f086"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-code-pull-request:before{content:"\e13c"}.fa-clipboard-list:before{content:"\f46d"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-user-check:before{content:"\f4fc"}.fa-vial-virus:before{content:"\e597"}.fa-sheet-plastic:before{content:"\e571"}.fa-blog:before{content:"\f781"}.fa-user-ninja:before{content:"\f504"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-toggle-off:before{content:"\f204"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-person-drowning:before{content:"\e545"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-spray-can:before{content:"\f5bd"}.fa-truck-monster:before{content:"\f63b"}.fa-w:before{content:"\57"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-rainbow:before{content:"\f75b"}.fa-circle-notch:before{content:"\f1ce"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-paw:before{content:"\f1b0"}.fa-cloud:before{content:"\f0c2"}.fa-trowel-bricks:before{content:"\e58a"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-hospital-user:before{content:"\f80d"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-binoculars:before{content:"\f1e5"}.fa-microphone-slash:before{content:"\f131"}.fa-box-tissue:before{content:"\e05b"}.fa-motorcycle:before{content:"\f21c"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-toilets-portable:before{content:"\e584"}.fa-hockey-puck:before{content:"\f453"}.fa-table:before{content:"\f0ce"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-users-slash:before{content:"\e073"}.fa-clover:before{content:"\e139"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-star-and-crescent:before{content:"\f699"}.fa-house-fire:before{content:"\e50c"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-helicopter:before{content:"\f533"}.fa-compass:before{content:"\f14e"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-file-circle-question:before{content:"\e4ef"}.fa-laptop-code:before{content:"\f5fc"}.fa-swatchbook:before{content:"\f5c3"}.fa-prescription-bottle:before{content:"\f485"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-people-group:before{content:"\e533"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-film:before{content:"\f008"}.fa-ruler-horizontal:before{content:"\f547"}.fa-people-robbery:before{content:"\e536"}.fa-lightbulb:before{content:"\f0eb"}.fa-caret-left:before{content:"\f0d9"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-sitemap:before{content:"\f0e8"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-memory:before{content:"\f538"}.fa-road-spikes:before{content:"\e568"}.fa-fire-burner:before{content:"\e4f1"}.fa-flag:before{content:"\f024"}.fa-hanukiah:before{content:"\f6e6"}.fa-feather:before{content:"\f52d"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-comment-slash:before{content:"\f4b3"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-compress:before{content:"\f066"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-ankh:before{content:"\f644"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-asterisk:before{content:"\2a"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-peseta-sign:before{content:"\e221"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-ghost:before{content:"\f6e2"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-cart-plus:before{content:"\f217"}.fa-gamepad:before{content:"\f11b"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-egg:before{content:"\f7fb"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-campground:before{content:"\f6bb"}.fa-folder-plus:before{content:"\f65e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-lock:before{content:"\f023"}.fa-gas-pump:before{content:"\f52f"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-house-flood-water:before{content:"\e50e"}.fa-tree:before{content:"\f1bb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-sack-dollar:before{content:"\f81d"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-car-side:before{content:"\f5e4"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-microscope:before{content:"\f610"}.fa-sink:before{content:"\e06d"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-mitten:before{content:"\f7b5"}.fa-person-rays:before{content:"\e54d"}.fa-users:before{content:"\f0c0"}.fa-eye-slash:before{content:"\f070"}.fa-flask-vial:before{content:"\e4f3"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-om:before{content:"\f679"}.fa-worm:before{content:"\e599"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-plug:before{content:"\f1e6"}.fa-chevron-up:before{content:"\f077"}.fa-hand-spock:before{content:"\f259"}.fa-stopwatch:before{content:"\f2f2"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-chess-bishop:before{content:"\f43a"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-road-circle-check:before{content:"\e564"}.fa-dice-five:before{content:"\f523"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-land-mine-on:before{content:"\e51b"}.fa-i-cursor:before{content:"\f246"}.fa-stamp:before{content:"\f5bf"}.fa-stairs:before{content:"\e289"}.fa-i:before{content:"\49"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-pills:before{content:"\f484"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-tooth:before{content:"\f5c9"}.fa-v:before{content:"\56"}.fa-bangladeshi-taka-sign:before{content:"\e2e6"}.fa-bicycle:before{content:"\f206"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-snowman:before{content:"\f7d0"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-road-barrier:before{content:"\e562"}.fa-school:before{content:"\f549"}.fa-igloo:before{content:"\f7ae"}.fa-joint:before{content:"\f595"}.fa-angle-right:before{content:"\f105"}.fa-horse:before{content:"\f6f0"}.fa-q:before{content:"\51"}.fa-g:before{content:"\47"}.fa-notes-medical:before{content:"\f481"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-dong-sign:before{content:"\e169"}.fa-capsules:before{content:"\f46b"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-hand-point-up:before{content:"\f0a6"}.fa-money-bill:before{content:"\f0d6"}.fa-bookmark:before{content:"\f02e"}.fa-align-justify:before{content:"\f039"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-helmet-un:before{content:"\e503"}.fa-bullseye:before{content:"\f140"}.fa-bacon:before{content:"\f7e5"}.fa-hand-point-down:before{content:"\f0a7"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-radiation:before{content:"\f7b9"}.fa-chart-simple:before{content:"\e473"}.fa-mars-stroke:before{content:"\f229"}.fa-vial:before{content:"\f492"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-e:before{content:"\45"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-user:before{content:"\f007"}.fa-school-circle-check:before{content:"\e56b"}.fa-dumpster:before{content:"\f793"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-building-user:before{content:"\e4da"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-highlighter:before{content:"\f591"}.fa-key:before{content:"\f084"}.fa-bullhorn:before{content:"\f0a1"}.fa-globe:before{content:"\f0ac"}.fa-synagogue:before{content:"\f69b"}.fa-person-half-dress:before{content:"\e548"}.fa-road-bridge:before{content:"\e563"}.fa-location-arrow:before{content:"\f124"}.fa-c:before{content:"\43"}.fa-tablet-button:before{content:"\f10a"}.fa-building-lock:before{content:"\e4d6"}.fa-pizza-slice:before{content:"\f818"}.fa-money-bill-wave:before{content:"\f53a"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-house-flag:before{content:"\e50d"}.fa-person-circle-minus:before{content:"\e540"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-camera-rotate:before{content:"\e0d8"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-star:before{content:"\f005"}.fa-repeat:before{content:"\f363"}.fa-cross:before{content:"\f654"}.fa-box:before{content:"\f466"}.fa-venus-mars:before{content:"\f228"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-charging-station:before{content:"\f5e7"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-mobile-retro:before{content:"\e527"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-spider:before{content:"\f717"}.fa-hands-bound:before{content:"\e4f9"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-x-ray:before{content:"\f497"}.fa-spell-check:before{content:"\f891"}.fa-slash:before{content:"\f715"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-server:before{content:"\f233"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-shop-lock:before{content:"\e4a5"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-blender-phone:before{content:"\f6b6"}.fa-building-wheat:before{content:"\e4db"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-venus:before{content:"\f221"}.fa-passport:before{content:"\f5ab"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-temperature-high:before{content:"\f769"}.fa-microchip:before{content:"\f2db"}.fa-crown:before{content:"\f521"}.fa-weight-hanging:before{content:"\f5cd"}.fa-xmarks-lines:before{content:"\e59a"}.fa-file-prescription:before{content:"\f572"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-chess-knight:before{content:"\f441"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-wheelchair:before{content:"\f193"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-toggle-on:before{content:"\f205"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-l:before{content:"\4c"}.fa-fire:before{content:"\f06d"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-folder-open:before{content:"\f07c"}.fa-heart-circle-plus:before{content:"\e500"}.fa-code-fork:before{content:"\e13b"}.fa-city:before{content:"\f64f"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-pepper-hot:before{content:"\f816"}.fa-unlock:before{content:"\f09c"}.fa-colon-sign:before{content:"\e140"}.fa-headset:before{content:"\f590"}.fa-store-slash:before{content:"\e071"}.fa-road-circle-xmark:before{content:"\e566"}.fa-user-minus:before{content:"\f503"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-clipboard:before{content:"\f328"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-underline:before{content:"\f0cd"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-signature:before{content:"\f5b7"}.fa-stroopwafel:before{content:"\f551"}.fa-bold:before{content:"\f032"}.fa-anchor-lock:before{content:"\e4ad"}.fa-building-ngo:before{content:"\e4d7"}.fa-manat-sign:before{content:"\e1d5"}.fa-not-equal:before{content:"\f53e"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-jedi:before{content:"\f669"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-mug-hot:before{content:"\f7b6"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-gift:before{content:"\f06b"}.fa-dice-two:before{content:"\f528"}.fa-chess-queen:before{content:"\f445"}.fa-glasses:before{content:"\f530"}.fa-chess-board:before{content:"\f43c"}.fa-building-circle-check:before{content:"\e4d2"}.fa-person-chalkboard:before{content:"\e53d"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-less-than-equal:before{content:"\f537"}.fa-train:before{content:"\f238"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-crow:before{content:"\f520"}.fa-sailboat:before{content:"\e445"}.fa-window-restore:before{content:"\f2d2"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-torii-gate:before{content:"\f6a1"}.fa-frog:before{content:"\f52e"}.fa-bucket:before{content:"\e4cf"}.fa-image:before{content:"\f03e"}.fa-microphone:before{content:"\f130"}.fa-cow:before{content:"\f6c8"}.fa-caret-up:before{content:"\f0d8"}.fa-screwdriver:before{content:"\f54a"}.fa-folder-closed:before{content:"\e185"}.fa-house-tsunami:before{content:"\e515"}.fa-square-nfi:before{content:"\e576"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-lemon:before{content:"\f094"}.fa-head-side-mask:before{content:"\e063"}.fa-handshake:before{content:"\f2b5"}.fa-gem:before{content:"\f3a5"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-smoking:before{content:"\f48d"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-monument:before{content:"\f5a6"}.fa-snowplow:before{content:"\f7d2"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-cannabis:before{content:"\f55f"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-tablets:before{content:"\f490"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-chair:before{content:"\f6c0"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-plate-wheat:before{content:"\e55a"}.fa-icicles:before{content:"\f7ad"}.fa-person-shelter:before{content:"\e54f"}.fa-neuter:before{content:"\f22c"}.fa-id-badge:before{content:"\f2c1"}.fa-marker:before{content:"\f5a1"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-helicopter-symbol:before{content:"\e502"}.fa-universal-access:before{content:"\f29a"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-lari-sign:before{content:"\e1c8"}.fa-volcano:before{content:"\f770"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-viruses:before{content:"\e076"}.fa-square-person-confined:before{content:"\e577"}.fa-user-tie:before{content:"\f508"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-certificate:before{content:"\f0a3"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-suitcase:before{content:"\f0f2"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-camera-retro:before{content:"\f083"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-box-open:before{content:"\f49e"}.fa-scroll:before{content:"\f70e"}.fa-spa:before{content:"\f5bb"}.fa-location-pin-lock:before{content:"\e51f"}.fa-pause:before{content:"\f04c"}.fa-hill-avalanche:before{content:"\e507"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-bomb:before{content:"\f1e2"}.fa-registered:before{content:"\f25d"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-subscript:before{content:"\f12c"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-burst:before{content:"\e4dc"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-money-bills:before{content:"\e1f3"}.fa-smog:before{content:"\f75f"}.fa-crutch:before{content:"\f7f7"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-palette:before{content:"\f53f"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-vest:before{content:"\e085"}.fa-ferry:before{content:"\e4ea"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-boxes-packing:before{content:"\e4c7"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-bowl-food:before{content:"\e4c6"}.fa-candy-cane:before{content:"\f786"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-file-word:before{content:"\f1c2"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-house-lock:before{content:"\e510"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-children:before{content:"\e4e1"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-envelope-open:before{content:"\f2b6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-mattress-pillow:before{content:"\e525"}.fa-guarani-sign:before{content:"\e19a"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-fire-extinguisher:before{content:"\f134"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-greater-than-equal:before{content:"\f532"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-virus:before{content:"\e074"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-layer-group:before{content:"\f5fd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-archway:before{content:"\f557"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-square:before{content:"\f0c8"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-couch:before{content:"\f4b8"}.fa-cedi-sign:before{content:"\e0df"}.fa-italic:before{content:"\f033"}.fa-church:before{content:"\f51d"}.fa-comments-dollar:before{content:"\f653"}.fa-democrat:before{content:"\f747"}.fa-z:before{content:"\5a"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-road-lock:before{content:"\e567"}.fa-a:before{content:"\41"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-p:before{content:"\50"}.fa-snowflake:before{content:"\f2dc"}.fa-newspaper:before{content:"\f1ea"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-locust:before{content:"\e520"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-person-dress-burst:before{content:"\e544"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-vector-square:before{content:"\f5cb"}.fa-bread-slice:before{content:"\f7ec"}.fa-language:before{content:"\f1ab"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-filter:before{content:"\f0b0"}.fa-question:before{content:"\3f"}.fa-file-signature:before{content:"\f573"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-house-chimney-user:before{content:"\e065"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-puzzle-piece:before{content:"\f12e"}.fa-money-check:before{content:"\f53c"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-code:before{content:"\f121"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-virus-covid:before{content:"\e4a8"}.fa-austral-sign:before{content:"\e0a9"}.fa-f:before{content:"\46"}.fa-leaf:before{content:"\f06c"}.fa-road:before{content:"\f018"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-person-circle-plus:before{content:"\e541"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-sack-xmark:before{content:"\e56a"}.fa-file-excel:before{content:"\f1c3"}.fa-file-contract:before{content:"\f56c"}.fa-fish-fins:before{content:"\e4f2"}.fa-building-flag:before{content:"\e4d5"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-object-ungroup:before{content:"\f248"}.fa-poop:before{content:"\f619"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-kaaba:before{content:"\f66b"}.fa-toilet-paper:before{content:"\f71e"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-eject:before{content:"\f052"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-plane-circle-check:before{content:"\e555"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-object-group:before{content:"\f247"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-mask-ventilator:before{content:"\e524"}.fa-arrow-right:before{content:"\f061"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-cash-register:before{content:"\f788"}.fa-person-circle-question:before{content:"\e542"}.fa-h:before{content:"\48"}.fa-tarp:before{content:"\e57b"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-heart:before{content:"\f004"}.fa-mars-and-venus:before{content:"\f224"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-dumpster-fire:before{content:"\f794"}.fa-house-crack:before{content:"\e3b1"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-bottle-water:before{content:"\e4c5"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-kitchen-set:before{content:"\e51a"}.fa-r:before{content:"\52"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-cube:before{content:"\f1b2"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-shield-dog:before{content:"\e573"}.fa-solar-panel:before{content:"\f5ba"}.fa-lock-open:before{content:"\f3c1"}.fa-elevator:before{content:"\e16d"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-circle:before{content:"\f111"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-recycle:before{content:"\f1b8"}.fa-user-astronaut:before{content:"\f4fb"}.fa-plane-slash:before{content:"\e069"}.fa-trademark:before{content:"\f25c"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-satellite-dish:before{content:"\f7c0"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-users-rays:before{content:"\e593"}.fa-wallet:before{content:"\f555"}.fa-clipboard-check:before{content:"\f46c"}.fa-file-audio:before{content:"\f1c7"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-wrench:before{content:"\f0ad"}.fa-bugs:before{content:"\e4d0"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-file-image:before{content:"\f1c5"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-plane-departure:before{content:"\f5b0"}.fa-handshake-slash:before{content:"\e060"}.fa-book-bookmark:before{content:"\e0bb"}.fa-code-branch:before{content:"\f126"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-bridge:before{content:"\e4c8"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-truck-front:before{content:"\e2b7"}.fa-cat:before{content:"\f6be"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-truck-field:before{content:"\e58d"}.fa-route:before{content:"\f4d7"}.fa-clipboard-question:before{content:"\e4e3"}.fa-panorama:before{content:"\e209"}.fa-comment-medical:before{content:"\f7f5"}.fa-teeth-open:before{content:"\f62f"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-tags:before{content:"\f02c"}.fa-wine-glass:before{content:"\f4e3"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-house-signal:before{content:"\e012"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-faucet-drip:before{content:"\e006"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-terminal:before{content:"\f120"}.fa-mobile-button:before{content:"\f10b"}.fa-house-medical-flag:before{content:"\e514"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-tape:before{content:"\f4db"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-eye:before{content:"\f06e"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-audio-description:before{content:"\f29e"}.fa-person-military-to-person:before{content:"\e54c"}.fa-file-shield:before{content:"\e4f0"}.fa-user-slash:before{content:"\f506"}.fa-pen:before{content:"\f304"}.fa-tower-observation:before{content:"\e586"}.fa-file-code:before{content:"\f1c9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-bus:before{content:"\f207"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-window-maximize:before{content:"\f2d0"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-prescription:before{content:"\f5b1"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-vihara:before{content:"\f6a7"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-plant-wilt:before{content:"\e5aa"}.fa-diamond:before{content:"\f219"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-bacterium:before{content:"\e05a"}.fa-hand-pointer:before{content:"\f25a"}.fa-drum-steelpan:before{content:"\f56a"}.fa-hand-scissors:before{content:"\f257"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-biohazard:before{content:"\f780"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-mars-double:before{content:"\f227"}.fa-child-dress:before{content:"\e59c"}.fa-users-between-lines:before{content:"\e591"}.fa-lungs-virus:before{content:"\e067"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-phone:before{content:"\f095"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-child-reaching:before{content:"\e59d"}.fa-head-side-virus:before{content:"\e064"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-door-closed:before{content:"\f52a"}.fa-shield-virus:before{content:"\e06c"}.fa-dice-six:before{content:"\f526"}.fa-mosquito-net:before{content:"\e52c"}.fa-bridge-water:before{content:"\e4ce"}.fa-person-booth:before{content:"\f756"}.fa-text-width:before{content:"\f035"}.fa-hat-wizard:before{content:"\f6e8"}.fa-pen-fancy:before{content:"\f5ac"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-trash:before{content:"\f1f8"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-book-medical:before{content:"\f7e6"}.fa-poo:before{content:"\f2fe"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-cubes:before{content:"\f1b3"}.fa-divide:before{content:"\f529"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-headphones:before{content:"\f025"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-clapping:before{content:"\e1a8"}.fa-republican:before{content:"\f75e"}.fa-arrow-left:before{content:"\f060"}.fa-person-circle-xmark:before{content:"\e543"}.fa-ruler:before{content:"\f545"}.fa-align-left:before{content:"\f036"}.fa-dice-d6:before{content:"\f6d1"}.fa-restroom:before{content:"\f7bd"}.fa-j:before{content:"\4a"}.fa-users-viewfinder:before{content:"\e595"}.fa-file-video:before{content:"\f1c8"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-file-pdf:before{content:"\f1c1"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-o:before{content:"\4f"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-user-secret:before{content:"\f21b"}.fa-otter:before{content:"\f700"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-comment-dollar:before{content:"\f651"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-clipboard-user:before{content:"\f7f3"}.fa-child:before{content:"\f1ae"}.fa-lira-sign:before{content:"\f195"}.fa-satellite:before{content:"\f7bf"}.fa-plane-lock:before{content:"\e558"}.fa-tag:before{content:"\f02b"}.fa-comment:before{content:"\f075"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-envelope:before{content:"\f0e0"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-paperclip:before{content:"\f0c6"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-ribbon:before{content:"\f4d6"}.fa-lungs:before{content:"\f604"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-border-none:before{content:"\f850"}.fa-circle-nodes:before{content:"\e4e2"}.fa-parachute-box:before{content:"\f4cd"}.fa-indent:before{content:"\f03c"}.fa-truck-field-un:before{content:"\e58e"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-mountain:before{content:"\f6fc"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-cloud-meatball:before{content:"\f73b"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-square-virus:before{content:"\e578"}.fa-meteor:before{content:"\f753"}.fa-car-on:before{content:"\e4dd"}.fa-sleigh:before{content:"\f7cc"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-water:before{content:"\f773"}.fa-calendar-check:before{content:"\f274"}.fa-braille:before{content:"\f2a1"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-landmark:before{content:"\f66f"}.fa-truck:before{content:"\f0d1"}.fa-crosshairs:before{content:"\f05b"}.fa-person-cane:before{content:"\e53c"}.fa-tent:before{content:"\e57d"}.fa-vest-patches:before{content:"\e086"}.fa-check-double:before{content:"\f560"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-cookie:before{content:"\f563"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-dumbbell:before{content:"\f44b"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-tarp-droplet:before{content:"\e57c"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-calendar-plus:before{content:"\f271"}.fa-plane-arrival:before{content:"\f5af"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-chart-gantt:before{content:"\e0e4"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-dna:before{content:"\f471"}.fa-virus-slash:before{content:"\e075"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-chess:before{content:"\f439"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-plug-circle-check:before{content:"\e55c"}.fa-street-view:before{content:"\f21d"}.fa-franc-sign:before{content:"\e18f"}.fa-volume-off:before{content:"\f026"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-star-of-david:before{content:"\f69a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-vials:before{content:"\f493"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-place-of-worship:before{content:"\f67f"}.fa-grip-vertical:before{content:"\f58e"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-u:before{content:"\55"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-pallet:before{content:"\f482"}.fa-faucet:before{content:"\e005"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-s:before{content:"\53"}.fa-timeline:before{content:"\e29c"}.fa-keyboard:before{content:"\f11c"}.fa-caret-down:before{content:"\f0d7"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-plane-up:before{content:"\e22d"}.fa-piggy-bank:before{content:"\f4d3"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-mountain-city:before{content:"\e52e"}.fa-coins:before{content:"\f51e"}.fa-khanda:before{content:"\f66d"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-folder-tree:before{content:"\f802"}.fa-network-wired:before{content:"\f6ff"}.fa-map-pin:before{content:"\f276"}.fa-hamsa:before{content:"\f665"}.fa-cent-sign:before{content:"\e3f5"}.fa-flask:before{content:"\f0c3"}.fa-person-pregnant:before{content:"\e31e"}.fa-wand-sparkles:before{content:"\f72b"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-ticket:before{content:"\f145"}.fa-power-off:before{content:"\f011"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-flag-usa:before{content:"\f74d"}.fa-laptop-file:before{content:"\e51d"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-diagram-next:before{content:"\e476"}.fa-person-rifle:before{content:"\e54e"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-closed-captioning:before{content:"\f20a"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-venus-double:before{content:"\f226"}.fa-images:before{content:"\f302"}.fa-calculator:before{content:"\f1ec"}.fa-people-pulling:before{content:"\e535"}.fa-n:before{content:"\4e"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-cloud-rain:before{content:"\f73d"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-ship:before{content:"\f21a"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-download:before{content:"\f019"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-file-circle-check:before{content:"\e5a0"}.fa-forward:before{content:"\f04e"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-align-center:before{content:"\f037"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-calendar-week:before{content:"\f784"}.fa-laptop-medical:before{content:"\f812"}.fa-b:before{content:"\42"}.fa-file-medical:before{content:"\f477"}.fa-dice-one:before{content:"\f525"}.fa-kiwi-bird:before{content:"\f535"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-mill-sign:before{content:"\e1ed"}.fa-bowl-rice:before{content:"\e2eb"}.fa-skull:before{content:"\f54c"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-truck-pickup:before{content:"\f63c"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-stop:before{content:"\f04d"}.fa-code-merge:before{content:"\f387"}.fa-upload:before{content:"\f093"}.fa-hurricane:before{content:"\f751"}.fa-mound:before{content:"\e52d"}.fa-toilet-portable:before{content:"\e583"}.fa-compact-disc:before{content:"\f51f"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-caravan:before{content:"\f8ff"}.fa-shield-cat:before{content:"\e572"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-glass-water:before{content:"\e4f4"}.fa-oil-well:before{content:"\e532"}.fa-vault:before{content:"\e2c5"}.fa-mars:before{content:"\f222"}.fa-toilet:before{content:"\f7d8"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-sun:before{content:"\f185"}.fa-guitar:before{content:"\f7a6"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-horse-head:before{content:"\f7ab"}.fa-bore-hole:before{content:"\e4c3"}.fa-industry:before{content:"\f275"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-florin-sign:before{content:"\e184"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-less-than:before{content:"\3c"}.fa-angle-down:before{content:"\f107"}.fa-car-tunnel:before{content:"\e4de"}.fa-head-side-cough:before{content:"\e061"}.fa-grip-lines:before{content:"\f7a4"}.fa-thumbs-down:before{content:"\f165"}.fa-user-lock:before{content:"\f502"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-chess-pawn:before{content:"\f443"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-person-through-window:before{content:"\e5a9"}.fa-toolbox:before{content:"\f552"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-bug:before{content:"\f188"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-mountain-sun:before{content:"\e52f"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-dice-d20:before{content:"\f6cf"}.fa-truck-droplet:before{content:"\e58c"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-medal:before{content:"\f5a2"}.fa-bed:before{content:"\f236"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-podcast:before{content:"\f2ce"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-bell:before{content:"\f0f3"}.fa-superscript:before{content:"\f12b"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-star-of-life:before{content:"\f621"}.fa-phone-slash:before{content:"\f3dd"}.fa-paint-roller:before{content:"\f5aa"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-file:before{content:"\f15b"}.fa-greater-than:before{content:"\3e"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-arrow-down:before{content:"\f063"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-eraser:before{content:"\f12d"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-person-burst:before{content:"\e53b"}.fa-dove:before{content:"\f4ba"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-socks:before{content:"\f696"}.fa-inbox:before{content:"\f01c"}.fa-section:before{content:"\e447"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-envelope-open-text:before{content:"\f658"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-wine-bottle:before{content:"\f72f"}.fa-chess-rook:before{content:"\f447"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-dharmachakra:before{content:"\f655"}.fa-hotdog:before{content:"\f80f"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-drum:before{content:"\f569"}.fa-ice-cream:before{content:"\f810"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-fax:before{content:"\f1ac"}.fa-paragraph:before{content:"\f1dd"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-star-half:before{content:"\f089"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-tree-city:before{content:"\e587"}.fa-play:before{content:"\f04b"}.fa-font:before{content:"\f031"}.fa-rupiah-sign:before{content:"\e23d"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-naira-sign:before{content:"\e1f6"}.fa-cart-arrow-down:before{content:"\f218"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-receipt:before{content:"\f543"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-chevron-down:before{content:"\f078"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-skull-crossbones:before{content:"\f714"}.fa-code-compare:before{content:"\e13a"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-school-lock:before{content:"\e56f"}.fa-tower-cell:before{content:"\e585"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-ranking-star:before{content:"\e561"}.fa-chess-king:before{content:"\f43f"}.fa-person-harassing:before{content:"\e549"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-arrow-up:before{content:"\f062"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-shrimp:before{content:"\e448"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-jug-detergent:before{content:"\e519"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-user-shield:before{content:"\f505"}.fa-wind:before{content:"\f72e"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-y:before{content:"\59"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-fish:before{content:"\f578"}.fa-user-graduate:before{content:"\f501"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-clapperboard:before{content:"\e131"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-jet-fighter-up:before{content:"\e518"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-copy:before{content:"\f0c5"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-hand-sparkles:before{content:"\e05d"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-child-combatant:before,.fa-child-rifle:before{content:"\e4e0"}.fa-gun:before{content:"\e19b"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-expand:before{content:"\f065"}.fa-computer:before{content:"\e4e5"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-peso-sign:before{content:"\e222"}.fa-building-shield:before{content:"\e4d8"}.fa-baby:before{content:"\f77c"}.fa-users-line:before{content:"\e592"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-tractor:before{content:"\f722"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-lines-leaning:before{content:"\e51e"}.fa-ruler-combined:before{content:"\f546"}.fa-copyright:before{content:"\f1f9"}.fa-equals:before{content:"\3d"}.fa-blender:before{content:"\f517"}.fa-teeth:before{content:"\f62e"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-map:before{content:"\f279"}.fa-rocket:before{content:"\f135"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-folder-minus:before{content:"\f65d"}.fa-store:before{content:"\f54e"}.fa-arrow-trend-up:before{content:"\e098"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-bezier-curve:before{content:"\f55b"}.fa-bell-slash:before{content:"\f1f6"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-school-flag:before{content:"\e56e"}.fa-fill:before{content:"\f575"}.fa-angle-up:before{content:"\f106"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-holly-berry:before{content:"\f7aa"}.fa-chevron-left:before{content:"\f053"}.fa-bacteria:before{content:"\e059"}.fa-hand-lizard:before{content:"\f258"}.fa-notdef:before{content:"\e1fe"}.fa-disease:before{content:"\f7fa"}.fa-briefcase-medical:before{content:"\f469"}.fa-genderless:before{content:"\f22d"}.fa-chevron-right:before{content:"\f054"}.fa-retweet:before{content:"\f079"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-pump-soap:before{content:"\e06b"}.fa-video-slash:before{content:"\f4e2"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-radio:before{content:"\f8d7"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-traffic-light:before{content:"\f637"}.fa-thermometer:before{content:"\f491"}.fa-vr-cardboard:before{content:"\f729"}.fa-hand-middle-finger:before{content:"\f806"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-truck-moving:before{content:"\f4df"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-display:before{content:"\e163"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-trophy:before{content:"\f091"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-hammer:before{content:"\f6e3"}.fa-hand-peace:before{content:"\f25b"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-spinner:before{content:"\f110"}.fa-robot:before{content:"\f544"}.fa-peace:before{content:"\f67c"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-warehouse:before{content:"\f494"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-splotch:before{content:"\f5bc"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-dice-four:before{content:"\f524"}.fa-sim-card:before{content:"\f7c4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-mercury:before{content:"\f223"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-person-falling-burst:before{content:"\e547"}.fa-award:before{content:"\f559"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-building:before{content:"\f1ad"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-qrcode:before{content:"\f029"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-house-medical:before{content:"\e3b2"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-house-chimney-window:before{content:"\e00d"}.fa-pen-nib:before{content:"\f5ad"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tents:before{content:"\e582"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-dog:before{content:"\f6d3"}.fa-carrot:before{content:"\f787"}.fa-moon:before{content:"\f186"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-cheese:before{content:"\f7ef"}.fa-yin-yang:before{content:"\f6ad"}.fa-music:before{content:"\f001"}.fa-code-commit:before{content:"\f386"}.fa-temperature-low:before{content:"\f76b"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-broom:before{content:"\f51a"}.fa-shield-heart:before{content:"\e574"}.fa-gopuram:before{content:"\f664"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-hashtag:before{content:"\23"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-oil-can:before{content:"\f613"}.fa-t:before{content:"\54"}.fa-hippo:before{content:"\f6ed"}.fa-chart-column:before{content:"\e0e3"}.fa-infinity:before{content:"\f534"}.fa-vial-circle-check:before{content:"\e596"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-voicemail:before{content:"\f897"}.fa-fan:before{content:"\f863"}.fa-person-walking-luggage:before{content:"\e554"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-calendar:before{content:"\f133"}.fa-trailer:before{content:"\e041"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-sd-card:before{content:"\f7c2"}.fa-dragon:before{content:"\f6d5"}.fa-shoe-prints:before{content:"\f54b"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-hand-holding:before{content:"\f4bd"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-clone:before{content:"\f24d"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-tornado:before{content:"\f76f"}.fa-file-circle-plus:before{content:"\e494"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-anchor:before{content:"\f13d"}.fa-border-all:before{content:"\f84c"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-cookie-bite:before{content:"\f564"}.fa-arrow-trend-down:before{content:"\e097"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-draw-polygon:before{content:"\f5ee"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-shower:before{content:"\f2cc"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-m:before{content:"\4d"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-book:before{content:"\f02d"}.fa-user-plus:before{content:"\f234"}.fa-check:before{content:"\f00c"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-house-circle-check:before{content:"\e509"}.fa-angle-left:before{content:"\f104"}.fa-diagram-successor:before{content:"\e47a"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-cloud-moon:before{content:"\f6c3"}.fa-briefcase:before{content:"\f0b1"}.fa-person-falling:before{content:"\e546"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-user-tag:before{content:"\f507"}.fa-rug:before{content:"\e569"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-baht-sign:before{content:"\e0ac"}.fa-book-open:before{content:"\f518"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-handcuffs:before{content:"\e4f8"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-database:before{content:"\f1c0"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-mask-face:before{content:"\e1d7"}.fa-hill-rockslide:before{content:"\e508"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-paper-plane:before{content:"\f1d8"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-dungeon:before{content:"\f6d9"}.fa-align-right:before{content:"\f038"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-life-ring:before{content:"\f1cd"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-calendar-day:before{content:"\f783"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-dice:before{content:"\f522"}.fa-bowling-ball:before{content:"\f436"}.fa-brain:before{content:"\f5dc"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-calendar-minus:before{content:"\f272"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-gifts:before{content:"\f79c"}.fa-hotel:before{content:"\f594"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-thumbs-up:before{content:"\f164"}.fa-user-clock:before{content:"\f4fd"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-file-invoice:before{content:"\f570"}.fa-window-minimize:before{content:"\f2d1"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-brush:before{content:"\f55d"}.fa-mask:before{content:"\f6fa"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-ruler-vertical:before{content:"\f548"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-train-tram:before{content:"\e5b4"}.fa-user-nurse:before{content:"\f82f"}.fa-syringe:before{content:"\f48e"}.fa-cloud-sun:before{content:"\f6c4"}.fa-stopwatch-20:before{content:"\e06f"}.fa-square-full:before{content:"\f45c"}.fa-magnet:before{content:"\f076"}.fa-jar:before{content:"\e516"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-bug-slash:before{content:"\e490"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-bone:before{content:"\f5d7"}.fa-user-injured:before{content:"\f728"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-plane:before{content:"\f072"}.fa-tent-arrows-down:before{content:"\e581"}.fa-exclamation:before{content:"\21"}.fa-arrows-spin:before{content:"\e4bb"}.fa-print:before{content:"\f02f"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-x:before{content:"\58"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-person-military-pointing:before{content:"\e54a"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-umbrella:before{content:"\f0e9"}.fa-trowel:before{content:"\e589"}.fa-d:before{content:"\44"}.fa-stapler:before{content:"\e5af"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-kip-sign:before{content:"\e1c4"}.fa-hand-point-left:before{content:"\f0a5"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-barcode:before{content:"\f02a"}.fa-plus-minus:before{content:"\e43c"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-person-circle-check:before{content:"\e53e"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-display:block;font-family:Font Awesome\ 6 Brands;font-style:normal;font-weight:400;src:url(/static/media/fa-brands-400.8d3cabfc66809162fb4d.woff2) format("woff2"),url(/static/media/fa-brands-400.6205fd00fb1b573e9f0f.ttf) format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero:before{content:"\f3d0"}.fa-hooli:before{content:"\f427"}.fa-yelp:before{content:"\f1e9"}.fa-cc-visa:before{content:"\f1f0"}.fa-lastfm:before{content:"\f202"}.fa-shopware:before{content:"\f5b5"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-aws:before{content:"\f375"}.fa-redhat:before{content:"\f7bc"}.fa-yoast:before{content:"\f2b1"}.fa-cloudflare:before{content:"\e07d"}.fa-ups:before{content:"\f7e0"}.fa-pixiv:before{content:"\e640"}.fa-wpexplorer:before{content:"\f2de"}.fa-dyalog:before{content:"\f399"}.fa-bity:before{content:"\f37a"}.fa-stackpath:before{content:"\f842"}.fa-buysellads:before{content:"\f20d"}.fa-first-order:before{content:"\f2b0"}.fa-modx:before{content:"\f285"}.fa-guilded:before{content:"\e07e"}.fa-vnv:before{content:"\f40b"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-microsoft:before{content:"\f3ca"}.fa-qq:before{content:"\f1d6"}.fa-orcid:before{content:"\f8d2"}.fa-java:before{content:"\f4e4"}.fa-invision:before{content:"\f7b0"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-centercode:before{content:"\f380"}.fa-glide-g:before{content:"\f2a6"}.fa-drupal:before{content:"\f1a9"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-unity:before{content:"\e049"}.fa-whmcs:before{content:"\f40d"}.fa-rocketchat:before{content:"\f3e8"}.fa-vk:before{content:"\f189"}.fa-untappd:before{content:"\f405"}.fa-mailchimp:before{content:"\f59e"}.fa-css3-alt:before{content:"\f38b"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-vimeo-v:before{content:"\f27d"}.fa-contao:before{content:"\f26d"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-deskpro:before{content:"\f38f"}.fa-brave:before{content:"\e63c"}.fa-sistrix:before{content:"\f3ee"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-battle-net:before{content:"\f835"}.fa-the-red-yeti:before{content:"\f69d"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-edge:before{content:"\f282"}.fa-threads:before{content:"\e618"}.fa-napster:before{content:"\f3d2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-google-plus-g:before{content:"\f0d5"}.fa-artstation:before{content:"\f77a"}.fa-markdown:before{content:"\f60f"}.fa-sourcetree:before{content:"\f7d3"}.fa-google-plus:before{content:"\f2b3"}.fa-diaspora:before{content:"\f791"}.fa-foursquare:before{content:"\f180"}.fa-stack-overflow:before{content:"\f16c"}.fa-github-alt:before{content:"\f113"}.fa-phoenix-squadron:before{content:"\f511"}.fa-pagelines:before{content:"\f18c"}.fa-algolia:before{content:"\f36c"}.fa-red-river:before{content:"\f3e3"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-safari:before{content:"\f267"}.fa-google:before{content:"\f1a0"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-atlassian:before{content:"\f77b"}.fa-linkedin-in:before{content:"\f0e1"}.fa-digital-ocean:before{content:"\f391"}.fa-nimblr:before{content:"\f5a8"}.fa-chromecast:before{content:"\f838"}.fa-evernote:before{content:"\f839"}.fa-hacker-news:before{content:"\f1d4"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-adversal:before{content:"\f36a"}.fa-creative-commons:before{content:"\f25e"}.fa-watchman-monitoring:before{content:"\e087"}.fa-fonticons:before{content:"\f280"}.fa-weixin:before{content:"\f1d7"}.fa-shirtsinbulk:before{content:"\f214"}.fa-codepen:before{content:"\f1cb"}.fa-git-alt:before{content:"\f841"}.fa-lyft:before{content:"\f3c3"}.fa-rev:before{content:"\f5b2"}.fa-windows:before{content:"\f17a"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-meetup:before{content:"\f2e0"}.fa-centos:before{content:"\f789"}.fa-adn:before{content:"\f170"}.fa-cloudsmith:before{content:"\f384"}.fa-opensuse:before{content:"\e62b"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-codiepie:before{content:"\f284"}.fa-node:before{content:"\f419"}.fa-mix:before{content:"\f3cb"}.fa-steam:before{content:"\f1b6"}.fa-cc-apple-pay:before{content:"\f416"}.fa-scribd:before{content:"\f28a"}.fa-debian:before{content:"\e60b"}.fa-openid:before{content:"\f19b"}.fa-instalod:before{content:"\e081"}.fa-expeditedssl:before{content:"\f23e"}.fa-sellcast:before{content:"\f2da"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-r-project:before{content:"\f4f7"}.fa-delicious:before{content:"\f1a5"}.fa-freebsd:before{content:"\f3a4"}.fa-vuejs:before{content:"\f41f"}.fa-accusoft:before{content:"\f369"}.fa-ioxhost:before{content:"\f208"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-app-store:before{content:"\f36f"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-itunes-note:before{content:"\f3b5"}.fa-golang:before{content:"\e40f"}.fa-kickstarter:before{content:"\f3bb"}.fa-grav:before{content:"\f2d6"}.fa-weibo:before{content:"\f18a"}.fa-uncharted:before{content:"\e084"}.fa-firstdraft:before{content:"\f3a1"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-wikipedia-w:before{content:"\f266"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-angellist:before{content:"\f209"}.fa-galactic-republic:before{content:"\f50c"}.fa-nfc-directional:before{content:"\e530"}.fa-skype:before{content:"\f17e"}.fa-joget:before{content:"\f3b7"}.fa-fedora:before{content:"\f798"}.fa-stripe-s:before{content:"\f42a"}.fa-meta:before{content:"\e49b"}.fa-laravel:before{content:"\f3bd"}.fa-hotjar:before{content:"\f3b1"}.fa-bluetooth-b:before{content:"\f294"}.fa-square-letterboxd:before{content:"\e62e"}.fa-sticker-mule:before{content:"\f3f7"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-hips:before{content:"\f452"}.fa-behance:before{content:"\f1b4"}.fa-reddit:before{content:"\f1a1"}.fa-discord:before{content:"\f392"}.fa-chrome:before{content:"\f268"}.fa-app-store-ios:before{content:"\f370"}.fa-cc-discover:before{content:"\f1f2"}.fa-wpbeginner:before{content:"\f297"}.fa-confluence:before{content:"\f78d"}.fa-shoelace:before{content:"\e60c"}.fa-mdb:before{content:"\f8ca"}.fa-dochub:before{content:"\f394"}.fa-accessible-icon:before{content:"\f368"}.fa-ebay:before{content:"\f4f4"}.fa-amazon:before{content:"\f270"}.fa-unsplash:before{content:"\e07c"}.fa-yarn:before{content:"\f7e3"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-500px:before{content:"\f26e"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-asymmetrik:before{content:"\f372"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-gratipay:before{content:"\f184"}.fa-apple:before{content:"\f179"}.fa-hive:before{content:"\e07f"}.fa-gitkraken:before{content:"\f3a6"}.fa-keybase:before{content:"\f4f5"}.fa-apple-pay:before{content:"\f415"}.fa-padlet:before{content:"\e4a0"}.fa-amazon-pay:before{content:"\f42c"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-stumbleupon:before{content:"\f1a4"}.fa-fedex:before{content:"\f797"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-shopify:before{content:"\e057"}.fa-neos:before{content:"\f612"}.fa-square-threads:before{content:"\e619"}.fa-hackerrank:before{content:"\f5f7"}.fa-researchgate:before{content:"\f4f8"}.fa-swift:before{content:"\f8e1"}.fa-angular:before{content:"\f420"}.fa-speakap:before{content:"\f3f3"}.fa-angrycreative:before{content:"\f36e"}.fa-y-combinator:before{content:"\f23b"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-google-scholar:before{content:"\e63b"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-studiovinari:before{content:"\f3f8"}.fa-pied-piper:before{content:"\f2ae"}.fa-wordpress:before{content:"\f19a"}.fa-product-hunt:before{content:"\f288"}.fa-firefox:before{content:"\f269"}.fa-linode:before{content:"\f2b8"}.fa-goodreads:before{content:"\f3a8"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-jsfiddle:before{content:"\f1cc"}.fa-sith:before{content:"\f512"}.fa-themeisle:before{content:"\f2b2"}.fa-page4:before{content:"\f3d7"}.fa-hashnode:before{content:"\e499"}.fa-react:before{content:"\f41b"}.fa-cc-paypal:before{content:"\f1f4"}.fa-squarespace:before{content:"\f5be"}.fa-cc-stripe:before{content:"\f1f5"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-bitcoin:before{content:"\f379"}.fa-keycdn:before{content:"\f3ba"}.fa-opera:before{content:"\f26a"}.fa-itch-io:before{content:"\f83a"}.fa-umbraco:before{content:"\f8e8"}.fa-galactic-senate:before{content:"\f50d"}.fa-ubuntu:before{content:"\f7df"}.fa-draft2digital:before{content:"\f396"}.fa-stripe:before{content:"\f429"}.fa-houzz:before{content:"\f27c"}.fa-gg:before{content:"\f260"}.fa-dhl:before{content:"\f790"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-xing:before{content:"\f168"}.fa-blackberry:before{content:"\f37b"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-playstation:before{content:"\f3df"}.fa-quinscape:before{content:"\f459"}.fa-less:before{content:"\f41d"}.fa-blogger-b:before{content:"\f37d"}.fa-opencart:before{content:"\f23d"}.fa-vine:before{content:"\f1ca"}.fa-signal-messenger:before{content:"\e663"}.fa-paypal:before{content:"\f1ed"}.fa-gitlab:before{content:"\f296"}.fa-typo3:before{content:"\f42b"}.fa-reddit-alien:before{content:"\f281"}.fa-yahoo:before{content:"\f19e"}.fa-dailymotion:before{content:"\e052"}.fa-affiliatetheme:before{content:"\f36b"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-bootstrap:before{content:"\f836"}.fa-odnoklassniki:before{content:"\f263"}.fa-nfc-symbol:before{content:"\e531"}.fa-mintbit:before{content:"\e62f"}.fa-ethereum:before{content:"\f42e"}.fa-speaker-deck:before{content:"\f83c"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-patreon:before{content:"\f3d9"}.fa-avianex:before{content:"\f374"}.fa-ello:before{content:"\f5f1"}.fa-gofore:before{content:"\f3a7"}.fa-bimobject:before{content:"\f378"}.fa-brave-reverse:before{content:"\e63d"}.fa-facebook-f:before{content:"\f39e"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-mandalorian:before{content:"\f50f"}.fa-first-order-alt:before{content:"\f50a"}.fa-osi:before{content:"\f41a"}.fa-google-wallet:before{content:"\f1ee"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-periscope:before{content:"\f3da"}.fa-fulcrum:before{content:"\f50b"}.fa-cloudscale:before{content:"\f383"}.fa-forumbee:before{content:"\f211"}.fa-mizuni:before{content:"\f3cc"}.fa-schlix:before{content:"\f3ea"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-bandcamp:before{content:"\f2d5"}.fa-wpforms:before{content:"\f298"}.fa-cloudversify:before{content:"\f385"}.fa-usps:before{content:"\f7e1"}.fa-megaport:before{content:"\f5a3"}.fa-magento:before{content:"\f3c4"}.fa-spotify:before{content:"\f1bc"}.fa-optin-monster:before{content:"\f23c"}.fa-fly:before{content:"\f417"}.fa-aviato:before{content:"\f421"}.fa-itunes:before{content:"\f3b4"}.fa-cuttlefish:before{content:"\f38c"}.fa-blogger:before{content:"\f37c"}.fa-flickr:before{content:"\f16e"}.fa-viber:before{content:"\f409"}.fa-soundcloud:before{content:"\f1be"}.fa-digg:before{content:"\f1a6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-letterboxd:before{content:"\e62d"}.fa-symfony:before{content:"\f83d"}.fa-maxcdn:before{content:"\f136"}.fa-etsy:before{content:"\f2d7"}.fa-facebook-messenger:before{content:"\f39f"}.fa-audible:before{content:"\f373"}.fa-think-peaks:before{content:"\f731"}.fa-bilibili:before{content:"\e3d9"}.fa-erlang:before{content:"\f39d"}.fa-x-twitter:before{content:"\e61b"}.fa-cotton-bureau:before{content:"\f89e"}.fa-dashcube:before{content:"\f210"}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-stack-exchange:before{content:"\f18d"}.fa-elementor:before{content:"\f430"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-palfed:before{content:"\f3d8"}.fa-superpowers:before{content:"\f2dd"}.fa-resolving:before{content:"\f3e7"}.fa-xbox:before{content:"\f412"}.fa-searchengin:before{content:"\f3eb"}.fa-tiktok:before{content:"\e07b"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-renren:before{content:"\f18b"}.fa-linux:before{content:"\f17c"}.fa-glide:before{content:"\f2a5"}.fa-linkedin:before{content:"\f08c"}.fa-hubspot:before{content:"\f3b2"}.fa-deploydog:before{content:"\f38e"}.fa-twitch:before{content:"\f1e8"}.fa-ravelry:before{content:"\f2d9"}.fa-mixer:before{content:"\e056"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-vimeo:before{content:"\f40a"}.fa-mendeley:before{content:"\f7b3"}.fa-uniregistry:before{content:"\f404"}.fa-figma:before{content:"\f799"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-dropbox:before{content:"\f16b"}.fa-instagram:before{content:"\f16d"}.fa-cmplid:before{content:"\e360"}.fa-upwork:before{content:"\e641"}.fa-facebook:before{content:"\f09a"}.fa-gripfire:before{content:"\f3ac"}.fa-jedi-order:before{content:"\f50e"}.fa-uikit:before{content:"\f403"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-phabricator:before{content:"\f3db"}.fa-ussunnah:before{content:"\f407"}.fa-earlybirds:before{content:"\f39a"}.fa-trade-federation:before{content:"\f513"}.fa-autoprefixer:before{content:"\f41c"}.fa-whatsapp:before{content:"\f232"}.fa-slideshare:before{content:"\f1e7"}.fa-google-play:before{content:"\f3ab"}.fa-viadeo:before{content:"\f2a9"}.fa-line:before{content:"\f3c0"}.fa-google-drive:before{content:"\f3aa"}.fa-servicestack:before{content:"\f3ec"}.fa-simplybuilt:before{content:"\f215"}.fa-bitbucket:before{content:"\f171"}.fa-imdb:before{content:"\f2d8"}.fa-deezer:before{content:"\e077"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-jira:before{content:"\f7b1"}.fa-docker:before{content:"\f395"}.fa-screenpal:before{content:"\e570"}.fa-bluetooth:before{content:"\f293"}.fa-gitter:before{content:"\f426"}.fa-d-and-d:before{content:"\f38d"}.fa-microblog:before{content:"\e01a"}.fa-cc-diners-club:before{content:"\f24c"}.fa-gg-circle:before{content:"\f261"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-yandex:before{content:"\f413"}.fa-readme:before{content:"\f4d5"}.fa-html5:before{content:"\f13b"}.fa-sellsy:before{content:"\f213"}.fa-sass:before{content:"\f41e"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-buromobelexperte:before{content:"\f37f"}.fa-salesforce:before{content:"\f83b"}.fa-octopus-deploy:before{content:"\e082"}.fa-medapps:before{content:"\f3c6"}.fa-ns8:before{content:"\f3d5"}.fa-pinterest-p:before{content:"\f231"}.fa-apper:before{content:"\f371"}.fa-fort-awesome:before{content:"\f286"}.fa-waze:before{content:"\f83f"}.fa-cc-jcb:before{content:"\f24b"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-rust:before{content:"\e07a"}.fa-wix:before{content:"\f5cf"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-supple:before{content:"\f3f9"}.fa-webflow:before{content:"\e65c"}.fa-rebel:before{content:"\f1d0"}.fa-css3:before{content:"\f13c"}.fa-staylinked:before{content:"\f3f5"}.fa-kaggle:before{content:"\f5fa"}.fa-space-awesome:before{content:"\e5ac"}.fa-deviantart:before{content:"\f1bd"}.fa-cpanel:before{content:"\f388"}.fa-goodreads-g:before{content:"\f3a9"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-trello:before{content:"\f181"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-get-pocket:before{content:"\f265"}.fa-perbyte:before{content:"\e083"}.fa-grunt:before{content:"\f3ad"}.fa-weebly:before{content:"\f5cc"}.fa-connectdevelop:before{content:"\f20e"}.fa-leanpub:before{content:"\f212"}.fa-black-tie:before{content:"\f27e"}.fa-themeco:before{content:"\f5c6"}.fa-python:before{content:"\f3e2"}.fa-android:before{content:"\f17b"}.fa-bots:before{content:"\e340"}.fa-free-code-camp:before{content:"\f2c5"}.fa-hornbill:before{content:"\f592"}.fa-js:before{content:"\f3b8"}.fa-ideal:before{content:"\e013"}.fa-git:before{content:"\f1d3"}.fa-dev:before{content:"\f6cc"}.fa-sketch:before{content:"\f7c6"}.fa-yandex-international:before{content:"\f414"}.fa-cc-amex:before{content:"\f1f3"}.fa-uber:before{content:"\f402"}.fa-github:before{content:"\f09b"}.fa-php:before{content:"\f457"}.fa-alipay:before{content:"\f642"}.fa-youtube:before{content:"\f167"}.fa-skyatlas:before{content:"\f216"}.fa-firefox-browser:before{content:"\e007"}.fa-replyd:before{content:"\f3e6"}.fa-suse:before{content:"\f7d6"}.fa-jenkins:before{content:"\f3b6"}.fa-twitter:before{content:"\f099"}.fa-rockrms:before{content:"\f3e9"}.fa-pinterest:before{content:"\f0d2"}.fa-buffer:before{content:"\f837"}.fa-npm:before{content:"\f3d4"}.fa-yammer:before{content:"\f840"}.fa-btc:before{content:"\f15a"}.fa-dribbble:before{content:"\f17d"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-internet-explorer:before{content:"\f26b"}.fa-stubber:before{content:"\e5c7"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-old-republic:before{content:"\f510"}.fa-odysee:before{content:"\e5c6"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-node-js:before{content:"\f3d3"}.fa-edge-legacy:before{content:"\e078"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-medrt:before{content:"\f3c8"}.fa-usb:before{content:"\f287"}.fa-tumblr:before{content:"\f173"}.fa-vaadin:before{content:"\f408"}.fa-quora:before{content:"\f2c4"}.fa-square-x-twitter:before{content:"\e61a"}.fa-reacteurope:before{content:"\f75d"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-amilia:before{content:"\f36d"}.fa-mixcloud:before{content:"\f289"}.fa-flipboard:before{content:"\f44d"}.fa-viacoin:before{content:"\f237"}.fa-critical-role:before{content:"\f6c9"}.fa-sitrox:before{content:"\e44a"}.fa-discourse:before{content:"\f393"}.fa-joomla:before{content:"\f1aa"}.fa-mastodon:before{content:"\f4f6"}.fa-airbnb:before{content:"\f834"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-buy-n-large:before{content:"\f8a6"}.fa-gulp:before{content:"\f3ae"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-strava:before{content:"\f428"}.fa-ember:before{content:"\f423"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-teamspeak:before{content:"\f4f9"}.fa-pushed:before{content:"\f3e1"}.fa-wordpress-simple:before{content:"\f411"}.fa-nutritionix:before{content:"\f3d6"}.fa-wodu:before{content:"\e088"}.fa-google-pay:before{content:"\e079"}.fa-intercom:before{content:"\f7af"}.fa-zhihu:before{content:"\f63f"}.fa-korvue:before{content:"\f42f"}.fa-pix:before{content:"\e43a"}.fa-steam-symbol:before{content:"\f3f6"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-display:block;font-family:Font Awesome\ 6 Free;font-style:normal;font-weight:400;src:url(/static/media/fa-regular-400.e931bc0d14f5bbb1da22.woff2) format("woff2"),url(/static/media/fa-regular-400.adc51aab4d771ab65f81.ttf) format("truetype")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-display:block;font-family:Font Awesome\ 6 Free;font-style:normal;font-weight:900;src:url(/static/media/fa-solid-900.fb8184add5a3101ad0a3.woff2) format("woff2"),url(/static/media/fa-solid-900.45a265d0f07b31cde85f.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}@font-face{font-display:block;font-family:Font Awesome\ 5 Brands;font-weight:400;src:url(/static/media/fa-brands-400.8d3cabfc66809162fb4d.woff2) format("woff2"),url(/static/media/fa-brands-400.6205fd00fb1b573e9f0f.ttf) format("truetype")}@font-face{font-display:block;font-family:Font Awesome\ 5 Free;font-weight:900;src:url(/static/media/fa-solid-900.fb8184add5a3101ad0a3.woff2) format("woff2"),url(/static/media/fa-solid-900.45a265d0f07b31cde85f.ttf) format("truetype")}@font-face{font-display:block;font-family:Font Awesome\ 5 Free;font-weight:400;src:url(/static/media/fa-regular-400.e931bc0d14f5bbb1da22.woff2) format("woff2"),url(/static/media/fa-regular-400.adc51aab4d771ab65f81.ttf) format("truetype")}@font-face{font-display:block;font-family:FontAwesome;src:url(/static/media/fa-solid-900.fb8184add5a3101ad0a3.woff2) format("woff2"),url(/static/media/fa-solid-900.45a265d0f07b31cde85f.ttf) format("truetype")}@font-face{font-display:block;font-family:FontAwesome;src:url(/static/media/fa-brands-400.8d3cabfc66809162fb4d.woff2) format("woff2"),url(/static/media/fa-brands-400.6205fd00fb1b573e9f0f.ttf) format("truetype")}@font-face{font-display:block;font-family:FontAwesome;src:url(/static/media/fa-regular-400.e931bc0d14f5bbb1da22.woff2) format("woff2"),url(/static/media/fa-regular-400.adc51aab4d771ab65f81.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-display:block;font-family:FontAwesome;src:url(/static/media/fa-v4compatibility.b3049b13a93f07e026fc.woff2) format("woff2"),url(/static/media/fa-v4compatibility.2eb7b3ef25042305f3ff.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}:root{--primary-color:#0056b3;--secondary-color:#e0e0e0;--text-color:#444;--background-color:#fff;--border-color:#ccc;--accent-color-1:#333;--accent-color-2:#999;--footer-text-color:#fff;--footer-hover-color:#999;--footer-line-color:#444;--footer-background-color:#000}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--background-color);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--profile-border-color:var(--background-color)}.ProfileSection_backgroundImage__uiwCq{height:180px;object-fit:cover;position:relative;top:0;width:100%}.ProfileSection_profileContainer__VaeFZ{background-color:var(--background-color);background-color:var(--profile-border-color);border:5px solid var(--profile-border-color);border-radius:50%;height:150px;margin:-65px auto 0;overflow:hidden;position:relative;width:150px;z-index:1}.ProfileSection_profileImage__pbcto{height:100%;object-fit:cover;width:100%}.ProfileSection_profileName__LOhHx{font-size:24px;font-weight:700;margin-top:10px;text-align:center}p{font-size:18px;margin-top:10px}@media (max-width:600px){p{margin:0 10px;padding:0 10px;text-align:center}}:root{--background-color:var(--background-color);--text-color:var(--text-color);--border-color:var(--secondary-color);--icon-color:var(--text-color);--hover-color:var(--primary-color)}.CardElement_cardElement__sIFMY{align-items:center;background-color:var(--background-color);border:1px solid var(--border-color);border-radius:10px;box-shadow:0 2px 5px #0000000d;color:var(--text-color);display:flex;justify-content:start;margin-bottom:15px;padding:20px;transition:box-shadow .3s ease}.CardElement_cardElement__sIFMY:hover{box-shadow:0 4px 8px #0000001a}.CardElement_cardElement__sIFMY a{align-items:center;color:inherit;display:flex;text-decoration:none;width:100%}.CardElement_cardElement__sIFMY p{text-align:left}.CardElement_cardElementIcon__1QJCy{align-items:center;color:var(--text-color);color:var(--icon-color);display:flex;font-size:24px;justify-content:center;margin-right:15px;width:60px}.CardElement_cardElementIcon__1QJCy i{font-size:1.5em;height:36px}.CardElement_cardElementIcon__1QJCy img{height:36px;max-width:100%}.CardElement_cardText__cf5lA,.CardElement_cardTitle__\+mcs7{margin:0}.CardElement_cardElement__sIFMY:hover .CardElement_cardElementIcon__1QJCy i,.CardElement_cardElement__sIFMY:hover .CardElement_cardText__cf5lA,.CardElement_cardElement__sIFMY:hover .CardElement_cardTitle__\+mcs7{color:var(--primary-color);color:var(--hover-color);transition:color .3s ease}@media (max-width:600px){.CardElement_cardElement__sIFMY{border-radius:0;margin-bottom:-1px}}.SocialMediaSection_socialMediaSection__mZqph{display:flex;justify-content:center;margin-right:10px;padding:20px 0}.SocialMediaElement_socialMediaLink__uSxDZ{align-items:center;border-radius:50%;display:inline-block;height:40px;justify-content:center;margin:0 10px 20px;text-align:center;transition:transform .3s ease;width:40px}.SocialMediaElement_socialMediaLink__uSxDZ:hover{transform:scale(1.1)}.SocialMediaElement_socialMediaIcon__4aKmc{align-items:center;border-radius:5px;color:#fff;color:#fffc;font-size:1.8em;height:50px;justify-content:center;line-height:50px;text-align:center;transition:all .3s ease-in-out;width:50px}.fa-adn{background-color:#504e54}.fa-apple{background-color:#aeb5c5}.fa-android{background-color:#a5c63b}.fa-bitbucket,.fa-bitbucket-square{background-color:#036}.fa-bitcoin,.fa-btc{background-color:#f7931a}.fa-css3{background-color:#1572b7}.fa-dribbble{background-color:#f46899}.fa-dropbox{background-color:#018bd3}.fa-facebook,.fa-facebook-square{background-color:#3c599f}.fa-flickr{background-color:#ff0084}.fa-foursquare{background-color:#0086be}.fa-github,.fa-github-alt,.fa-github-square{background-color:#070709}.fa-google-plus,.fa-google-plus-square{background-color:#cf3d2e}.fa-html5{background-color:#e54d26}.fa-instagram{background-color:#a1755c}.fa-linkedin,.fa-linkedin-square{background-color:#0077b5}.fa-linux{background-color:#fbc002;color:#333}.fa-maxcdn{background-color:#f6ae1c}.fa-pagelines{background-color:#241e20;color:#3984ea}.fa-pinterest,.fa-pinterest-square{background-color:#cc2127}.fa-renren{background-color:#025dac}.fa-skype{background-color:#01aef2}.fa-stack-exchange{background-color:#245590}.fa-stack-overflow{background-color:#ff7300}.fa-trello{background-color:#265a7f}.fa-tumblr,.fa-tumblr-square{background-color:#314e6c}.fa-twitter,.fa-twitter-square{background-color:#32ccfe}.fa-vimeo-square{background-color:#229acc}.fa-vk{background-color:#375474}.fa-weibo{background-color:#d72b2b}.fa-windows{background-color:#12b6f3}.fa-whatsapp{background-color:#25d366}.fa-xing,.fa-xing-square{background-color:#00555c}.fa-youtube,.fa-youtube-play,.fa-youtube-square{background-color:#c52f30}:root{--modal-background-color:var(--background-color);--modal-border-color:var(--secondary-color);--overlay-background-color:#000000bf}.ModalComponent_overlay__Jc2NM{background-color:#000000bf;background-color:var(--overlay-background-color);bottom:0;left:0;position:fixed;right:0;top:0;z-index:1000}.ModalComponent_modal__yZ3fx{background:var(--background-color);background:var(--modal-background-color);border:1px solid var(--modal-border-color);border-radius:4px;left:50%;max-height:600px;max-width:900px;outline:none;overflow-y:auto;padding:20px;position:fixed;top:50%;transform:translate(-50%,-50%);width:90%;z-index:1001}.ModalComponent_closeButton__X32Qb{background:#0000;border:none;cursor:pointer;font-size:24px;position:absolute;right:10px;top:10px;transition:transform .3s ease}.ModalComponent_closeButton__X32Qb:hover{transform:rotate(90deg)}@media (max-width:600px){.ModalComponent_modal__yZ3fx{border-radius:0;box-sizing:border-box;height:100vh;left:0;padding:10px;top:0;transform:none;width:100vw}.ModalComponent_modal__yZ3fx p{margin:10px 0 20px;padding:0;text-align:left}.ModalComponent_closeButton__X32Qb{font-size:30px}.ModalComponent_modal__yZ3fx{border-radius:0;box-sizing:border-box;height:100vh;left:0;max-height:100%;max-width:100%;padding:30px 10px 10px;top:0;transform:none;width:100vw}.ModalComponent_closeButton__X32Qb{font-size:30px}}:root{--footer-background-color:var(--background-color);--footer-text-color:var(--text-color);--footer-hover-color:var(--accent-color-1);--footer-line-color:var(--secondary-color)}.Footer_footer__kXlYa{align-items:center;background-color:var(--background-color);background-color:var(--footer-background-color);color:var(--text-color);color:var(--footer-text-color);display:flex;justify-content:space-between;padding:20px 50px}.Footer_footerCopyright__iqeSK{flex:1 1;position:relative;text-align:left}.Footer_footerLinks__3aiFY{display:flex;flex:1 1;gap:20px;justify-content:flex-end}.Footer_footerElement__M7jMA{color:var(--text-color);color:var(--footer-text-color);transition:color .3s}.Footer_footerElement__M7jMA a{color:inherit;text-decoration:none}.Footer_footerElement__M7jMA:hover{color:var(--accent-color-1);color:var(--footer-hover-color)}@media (max-width:600px){.Footer_footer__kXlYa{flex-direction:column;text-align:center}.Footer_footerLinks__3aiFY{justify-content:center;margin-top:10px}.Footer_footerCopyright__iqeSK{margin-bottom:10px;text-align:center;width:100%}.Footer_footerCopyright__iqeSK:after{background:linear-gradient(to left,#0000,var(--secondary-color),#0000);background:linear-gradient(to left,#0000,var(--footer-line-color),#0000);content:"";display:block;height:1px;margin:10px auto -10px;width:100%}}.ContentWrapper{box-sizing:border-box;margin:0 auto;max-width:600px}.icon-element{text-align:center} +/*# sourceMappingURL=main.adba2dab.css.map*/ \ No newline at end of file diff --git a/static/css/main.adba2dab.css.map b/static/css/main.adba2dab.css.map new file mode 100644 index 0000000..1636766 --- /dev/null +++ b/static/css/main.adba2dab.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/main.adba2dab.css","mappings":"AAsGE,gBC/FF,CCNE;;;;ECDF,6BASI,oQAIA,sMAIA,iKAIA,sNAIA,iRAIA,iPAIA,iRAGF,2BACA,qBAMA,yMACA,mGACA,sDAOA,gDC2OI,yBDzOJ,0BACA,0BAKA,wBACA,6BACA,kBACA,6BAEA,yBACA,8BAEA,+BACA,kCACA,0BACA,kCAEA,8BACA,iCACA,yBACA,iCAGA,2BAEA,wBACA,+BACA,+BAEA,8BACA,oCAMA,wBACA,6BACA,0BAGA,sBACA,wBACA,0BACA,+CAEA,4BACA,8BACA,6BACA,2BACA,4BACA,mDACA,8BAGA,wCACA,uDACA,gDACA,uDAIA,8BACA,6BACA,gCAIA,8BACA,qCACA,gCACA,uCEhHE,sBFyHA,uBACA,gCACA,qBACA,0BAEA,yBACA,oCAEA,+BACA,qCACA,0BACA,+BAEA,8BACA,oCACA,yBACA,8BAGE,iRAIA,iPAIA,iRAGF,2BAEA,wBACA,8BACA,gCACA,sCAEA,wBACA,6BACA,0BAEA,0BACA,wCAEA,8BACA,qCACA,gCACA,wCAlDA,iBGoDJ,kBCvKE,qBAeE,+CANJ,MAOM,sBAcN,OASE,6BACA,yCAFA,qBACA,CADA,kCACA,CAHA,aACA,CADA,0BACA,CALA,+KH6OI,CG7OJ,sCH6OI,eG3OJ,CH2OI,kCG3OJ,gBACA,CADA,sCACA,gBACA,CADA,sCACA,CACA,oCAYF,CACE,GAEA,QACA,qBACA,CADA,uCACA,CAHA,aACA,CAFA,aACA,CAGA,WAUF,2CAOE,aAGF,CAHE,8BAFA,eACA,gBACA,CALA,mBAGA,CAJA,YASF,QHuMQ,gCA5JJ,2BG3CJ,OH8MQ,gBGzMR,SHkMQ,+BA5JJ,2BGtCJ,OHyMQ,cGpMR,SH6LQ,6BA5JJ,2BGjCJ,OHoMQ,iBG/LR,SHwLQ,+BA5JJ,2BG5BJ,OH+LQ,gBG1LR,SH+KM,iBG1KN,QH0KM,cG9JJ,GACA,mBADA,YAWF,aAEE,WACA,CAFA,yEACA,CACA,mEAMF,SAEE,iBACA,qBAFA,kBAQF,CDkIA,MChIE,iBDsIF,CCnIA,SAIE,mBADA,YAIF,yBAIE,eAGF,CACE,kBAKF,CACE,sBACA,cAMF,YACE,eDgIF,UCtHE,kBAQF,cH6EM,gBGtEN,YAGE,wBASF,CATE,wCADA,aACA,CADA,+BACA,CAFA,eAWF,SH0DM,eGtDJ,cACA,CAHA,iBHwDI,CGrDJ,sBAGF,KAAM,aACN,KAAM,SAMJ,gBACA,CADA,6DACA,0BAEA,SACE,kDAWF,6DAEE,aACA,qBDsGJ,mBC3FE,sFHcI,CGdJ,oCHcI,cGNN,KACE,aACA,CHII,iBGHJ,kBACA,CAFA,YACA,CACA,aAKA,UAEE,aACA,CHNE,iBGKF,CACA,iBAIJ,MAGE,qBADA,aACA,CADA,0BACA,CHbI,gBGgBJ,QACE,aAIJ,KAIE,wBCrSE,CDqSF,qCCrSE,sBDoSF,UACA,CADA,uBACA,CHzBI,gBGwBJ,CAFA,wBAMA,SH5BI,cG6BF,SAWJ,QACE,eAMF,SAEE,qBAQF,OAEE,yBADA,mBAIF,SAGE,eACA,CADA,+BACA,CAFA,oBACA,CAFA,iBACA,CAEA,eAOF,CAEE,qBACA,gCDqEF,4BC1DE,eAFA,oBAUF,OACE,oBAMF,QAEE,eAQF,kCACE,SDuDF,uCC5CE,mBH5HI,kBG8HJ,qBAHA,QAOF,eAEE,mBAKF,eACE,cAGF,QAGE,gBAGA,iBACE,SAOJ,2IACE,sBD2CF,iDC/BE,yBDqCF,6GCjCM,cAON,oBAEE,kBADA,SAMF,UACE,eAUF,UAIE,SADA,QACA,CAHA,WACA,UAUF,QACE,UACA,CH/MM,+BGoNN,qBAHA,mBHjNM,CGgNN,SACA,CAFA,UH3WE,2BGyWJ,OHtMQ,gBG+MN,WACE,UD6BJ,gPCfE,SAGF,6BACE,WASF,eACE,4BACA,oBAmBF,6BACE,uBAKF,gCACE,SAOF,8BAEE,0BADA,YADF,wBAEE,0BADA,YAMF,QACE,oBAKF,QACE,QAOF,SAEE,eADA,iBASF,UACE,sBAQF,UACE,sBPrkBF,OImQM,iBJjQJ,gBAKA,YIgQM,gCJ5PJ,gBACA,gBI+FA,2BJpGF,WIuQM,cJvQN,aIgQM,gCJ5PJ,gBACA,gBI+FA,2BJpGF,WIuQM,gBJvQN,aIgQM,gCJ5PJ,gBACA,gBI+FA,2BJpGF,WIuQM,cJvQN,aIgQM,gCJ5PJ,gBACA,gBI+FA,2BJpGF,WIuQM,gBJvQN,aIgQM,gCJ5PJ,gBACA,gBI+FA,2BJpGF,WIuQM,cJvQN,aIgQM,gCJ5PJ,gBACA,gBI+FA,2BJpGF,WIuQM,gBJ/OR,EAKA,4BS3DE,gBADA,cT+DF,mBACE,oBAEA,oCACE,kBAUJ,aI8MM,gBJ5MJ,yBAIF,aIwMM,kBJvMJ,kBAGA,yBACE,eAIJ,oBAIE,cI2LI,gBJ3LJ,CAFA,kBI6LI,CJ9LJ,gBAKA,2BACE,YChGJ,CAMA,0BSCE,YAHA,cTiBF,CAfA,eAEE,qBACA,CADA,kCACA,yBOGE,CPHF,0DOGE,sBERF,CFQE,qCERF,CTGA,cAcF,SAEE,oBAGF,aAEE,cADA,mBAIF,iBAEE,eUlCA,CVkCA,gCGuPI,gBOzRJ,oGCHA,oBACA,gBACA,CAIA,iBADA,iBACA,CAFA,wCACA,CAFA,yCACA,CAFA,UC0DE,0BF5CE,yBACE,eE2CJ,2BF5CE,uCACE,eE2CJ,2BF5CE,qDACE,eE2CJ,4BF5CE,mEACE,gBE2CJ,4BF5CE,kFACE,gBGhBR,QAEI,oJAKF,MCNA,oBACA,gBACA,aACA,eAEA,CAEA,yCADA,yCACA,CAFA,sCDIE,QCOF,aACA,CAIA,8BAHA,cACA,CACA,wCACA,CAFA,yCACA,CAHA,UAmDI,MACE,QAGF,kBApCJ,aACA,WAcA,eACE,aACA,WAFF,eACE,aACA,UAFF,eACE,aACA,mBAFF,eACE,aACA,UAFF,eACE,aACA,UAFF,eACE,aACA,mBA+BE,WAhDJ,aACA,WAqDQ,QAhEN,aACA,kBA+DM,QAhEN,aACA,mBA+DM,QAhEN,aACA,UA+DM,QAhEN,aACA,mBA+DM,QAhEN,aACA,mBA+DM,QAhEN,aACA,UA+DM,QAhEN,aACA,mBA+DM,QAhEN,aACA,mBA+DM,QAhEN,aACA,UA+DM,SAhEN,aACA,mBA+DM,SAhEN,aACA,mBA+DM,SAhEN,aACA,WAuEQ,WAxDV,uBAwDU,WAxDV,wBAwDU,WAxDV,eAwDU,WAxDV,wBAwDU,WAxDV,wBAwDU,WAxDV,eAwDU,WAxDV,wBAwDU,WAxDV,wBAwDU,WAxDV,eAwDU,YAxDV,wBAwDU,YAxDV,wBAmEM,YAEE,eAGF,YAEE,eAPF,YAEE,qBAGF,YAEE,qBAPF,YAEE,oBAGF,YAEE,oBAPF,YAEE,kBAGF,YAEE,kBAPF,YAEE,oBAGF,YAEE,oBAPF,YAEE,kBAGF,YAEE,kBF1DN,0BEUE,QACE,QAGF,qBApCJ,aACA,WAcA,kBACE,aACA,WAFF,kBACE,aACA,UAFF,kBACE,aACA,mBAFF,kBACE,aACA,UAFF,kBACE,aACA,UAFF,kBACE,aACA,mBA+BE,cAhDJ,aACA,WAqDQ,WAhEN,aACA,kBA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,UA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,UA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,UA+DM,YAhEN,aACA,mBA+DM,YAhEN,aACA,mBA+DM,YAhEN,aACA,WAuEQ,cAxDV,aAwDU,cAxDV,uBAwDU,cAxDV,wBAwDU,cAxDV,eAwDU,cAxDV,wBAwDU,cAxDV,wBAwDU,cAxDV,eAwDU,cAxDV,wBAwDU,cAxDV,wBAwDU,cAxDV,eAwDU,eAxDV,wBAwDU,eAxDV,wBAmEM,kBAEE,eAGF,kBAEE,eAPF,kBAEE,qBAGF,kBAEE,qBAPF,kBAEE,oBAGF,kBAEE,oBAPF,kBAEE,kBAGF,kBAEE,kBAPF,kBAEE,oBAGF,kBAEE,oBAPF,kBAEE,kBAGF,kBAEE,kBF1DN,2BEUE,QACE,QAGF,qBApCJ,aACA,WAcA,kBACE,aACA,WAFF,kBACE,aACA,UAFF,kBACE,aACA,mBAFF,kBACE,aACA,UAFF,kBACE,aACA,UAFF,kBACE,aACA,mBA+BE,cAhDJ,aACA,WAqDQ,WAhEN,aACA,kBA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,UA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,UA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,UA+DM,YAhEN,aACA,mBA+DM,YAhEN,aACA,mBA+DM,YAhEN,aACA,WAuEQ,cAxDV,aAwDU,cAxDV,uBAwDU,cAxDV,wBAwDU,cAxDV,eAwDU,cAxDV,wBAwDU,cAxDV,wBAwDU,cAxDV,eAwDU,cAxDV,wBAwDU,cAxDV,wBAwDU,cAxDV,eAwDU,eAxDV,wBAwDU,eAxDV,wBAmEM,kBAEE,eAGF,kBAEE,eAPF,kBAEE,qBAGF,kBAEE,qBAPF,kBAEE,oBAGF,kBAEE,oBAPF,kBAEE,kBAGF,kBAEE,kBAPF,kBAEE,oBAGF,kBAEE,oBAPF,kBAEE,kBAGF,kBAEE,kBF1DN,2BEUE,QACE,QAGF,qBApCJ,aACA,WAcA,kBACE,aACA,WAFF,kBACE,aACA,UAFF,kBACE,aACA,mBAFF,kBACE,aACA,UAFF,kBACE,aACA,UAFF,kBACE,aACA,mBA+BE,cAhDJ,aACA,WAqDQ,WAhEN,aACA,kBA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,UA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,UA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,UA+DM,YAhEN,aACA,mBA+DM,YAhEN,aACA,mBA+DM,YAhEN,aACA,WAuEQ,cAxDV,aAwDU,cAxDV,uBAwDU,cAxDV,wBAwDU,cAxDV,eAwDU,cAxDV,wBAwDU,cAxDV,wBAwDU,cAxDV,eAwDU,cAxDV,wBAwDU,cAxDV,wBAwDU,cAxDV,eAwDU,eAxDV,wBAwDU,eAxDV,wBAmEM,kBAEE,eAGF,kBAEE,eAPF,kBAEE,qBAGF,kBAEE,qBAPF,kBAEE,oBAGF,kBAEE,oBAPF,kBAEE,kBAGF,kBAEE,kBAPF,kBAEE,oBAGF,kBAEE,oBAPF,kBAEE,kBAGF,kBAEE,kBF1DN,4BEUE,QACE,QAGF,qBApCJ,aACA,WAcA,kBACE,aACA,WAFF,kBACE,aACA,UAFF,kBACE,aACA,mBAFF,kBACE,aACA,UAFF,kBACE,aACA,UAFF,kBACE,aACA,mBA+BE,cAhDJ,aACA,WAqDQ,WAhEN,aACA,kBA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,UA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,UA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,mBA+DM,WAhEN,aACA,UA+DM,YAhEN,aACA,mBA+DM,YAhEN,aACA,mBA+DM,YAhEN,aACA,WAuEQ,cAxDV,aAwDU,cAxDV,uBAwDU,cAxDV,wBAwDU,cAxDV,eAwDU,cAxDV,wBAwDU,cAxDV,wBAwDU,cAxDV,eAwDU,cAxDV,wBAwDU,cAxDV,wBAwDU,cAxDV,eAwDU,eAxDV,wBAwDU,eAxDV,wBAmEM,kBAEE,eAGF,kBAEE,eAPF,kBAEE,qBAGF,kBAEE,qBAPF,kBAEE,oBAGF,kBAEE,oBAPF,kBAEE,kBAGF,kBAEE,kBAPF,kBAEE,oBAGF,kBAEE,oBAPF,kBAEE,kBAGF,kBAEE,kBF1DN,4BEUE,SACE,QAGF,sBApCJ,aACA,WAcA,mBACE,aACA,WAFF,mBACE,aACA,UAFF,mBACE,aACA,mBAFF,mBACE,aACA,UAFF,mBACE,aACA,UAFF,mBACE,aACA,mBA+BE,eAhDJ,aACA,WAqDQ,YAhEN,aACA,kBA+DM,YAhEN,aACA,mBA+DM,YAhEN,aACA,UA+DM,YAhEN,aACA,mBA+DM,YAhEN,aACA,mBA+DM,YAhEN,aACA,UA+DM,YAhEN,aACA,mBA+DM,YAhEN,aACA,mBA+DM,YAhEN,aACA,UA+DM,aAhEN,aACA,mBA+DM,aAhEN,aACA,mBA+DM,aAhEN,aACA,WAuEQ,eAxDV,aAwDU,eAxDV,uBAwDU,eAxDV,wBAwDU,eAxDV,eAwDU,eAxDV,wBAwDU,eAxDV,wBAwDU,eAxDV,eAwDU,eAxDV,wBAwDU,eAxDV,wBAwDU,eAxDV,eAwDU,gBAxDV,wBAwDU,gBAxDV,wBAmEM,oBAEE,eAGF,oBAEE,eAPF,oBAEE,qBAGF,oBAEE,qBAPF,oBAEE,oBAGF,oBAEE,oBAPF,oBAEE,kBAGF,oBAEE,kBAPF,oBAEE,oBAGF,oBAEE,oBAPF,oBAEE,kBAGF,oBAEE,kBCrHV,SAEE,6BACA,2BACA,+BACA,4BAEA,0CACA,gCACA,+CACA,2BACA,kDACA,8DACA,iDACA,4DACA,gDACA,6DAEA,CAGA,0CAFA,kBACA,mBACA,CAHA,UAUA,0BAIE,mCACA,wBACA,CADA,0CACA,wDAGF,CAHE,yGAHA,2BACA,CADA,kFACA,CAHA,aAQF,cACE,sBAGF,cACE,qBAIJ,sBACE,oBAOF,CAPE,+CAOF,cACE,gBAUA,6BACE,cAeF,iCACE,kBAGA,CAHA,qCAGA,mCACE,kBAOJ,CAPI,qCAOJ,qCACE,qBAGF,sCACE,kBAUF,CAQA,kGACE,mDACA,8CAQJ,eACE,mDACA,8CAQA,+BACE,kDACA,6CC5IF,gBAOE,qBACA,sBACA,gCACA,8BACA,8BACA,6BACA,6BACA,4BACA,4BAfF,iCAkBE,0CADA,2BAjBF,kBAOE,qBACA,sBACA,gCACA,8BACA,8BACA,6BACA,6BACA,4BACA,4BAfF,gBAOE,qBACA,sBACA,gCACA,8BACA,8BACA,6BACA,6BACA,4BACA,4BAfF,4BAkBE,0CADA,2BAjBF,aAOE,qBACA,sBACA,gCACA,8BACA,8BACA,6BACA,6BACA,4BACA,4BAfF,gBAOE,qBACA,sBACA,gCACA,8BACA,8BACA,6BACA,6BACA,4BACA,4BAfF,8BAkBE,0CADA,2BAjBF,eAOE,qBACA,sBACA,gCACA,8BACA,8BACA,6BACA,6BACA,4BACA,4BAfF,cAOE,qBACA,sBACA,gCACA,8BACA,8BACA,6BACA,6BACA,4BACA,4BAfF,0BAkBE,0CADA,2BDkJA,CCnKF,YAOE,qBACA,sBACA,gCACA,8BACA,8BACA,6BACA,6BACA,4BACA,4BDoJA,mBAEE,iCADA,eH1FF,6BGyFA,qBAEE,iCADA,eH1FF,8BGyFA,qBAEE,iCADA,eH1FF,8BGyFA,qBAEE,iCADA,eH1FF,+BGyFA,qBAEE,iCADA,eH1FF,+BGyFA,sBAEE,iCADA,eElKN,cACE,mBASF,iBdiRM,iBc1QJ,iBAJA,ed8QI,Cc/QJ,kCACA,CADA,qDACA,CAFA,+BACA,CADA,kDAUF,oBdsQM,kBcpQJ,gCdoQI,CcpQJ,mDdoQI,CcrQJ,6BACA,CADA,gDAKF,oBdgQM,kBc9PJ,iCd8PI,Cc9PJ,oDd8PI,Cc/PJ,8BACA,CADA,iDC5BF,YAKE,eCLF,CDKE,gCfsRI,gBetRJ,CAJA,iBCDF,eASE,uCACA,CACA,2BACA,CAFA,qBACA,CADA,kCACA,CACA,wBZGE,CYHF,0DZGE,sBaHE,CbGF,qCaHE,CDJJ,aACA,CADA,0BACA,CARA,aACA,ChByRI,cgBrRJ,gBACA,gBACA,CALA,sBhBwRI,CiB/QA,qEDVJ,UCcI,wCDhBN,cCiBQ,eDGN,2BACE,eAEA,yDACE,cAKJ,qBAEE,qBACA,CADA,kCACA,qBACA,CAKE,kCARF,aACA,CADA,0BACA,CAEA,SASF,4CAYE,YAKA,UAXA,cAgBF,sCACE,aACA,UAIF,4BACE,eAEA,CAFA,+BAEA,UAQF,wBAEE,wBAGA,CAHA,uCAGA,UAIF,2CE1FA,wBFgGE,CEhGF,sCFgGE,CAGA,cACA,CAHA,oBACA,CAEA,2BACA,CADA,8CACA,gBCzFE,CDkFF,aE9FF,CF8FE,0BE9FF,CF4FE,uBACA,yBACA,CAHA,sBACA,CAIA,mBACA,CCrFE,qID8EJ,CC9EI,6HD8EJ,qCE1FA,wBFgGE,CEhGF,sCFgGE,CAGA,cACA,CAHA,oBACA,CAEA,2BACA,CADA,8CACA,gBCzFE,CDkFF,aE9FF,CF8FE,0BE9FF,CF4FE,uBACA,yBACA,CAHA,sBACA,CAIA,mBACA,CCrFE,6HAIA,wCD0EJ,0CCzEM,uBDyEN,CCzEM,eDyEN,qCCzEM,eDwFN,iFACE,wBADF,CACE,uCADF,0EACE,wBASJ,CATI,uCASJ,yBAOE,wBACA,CACA,kBAEA,CAFA,kBAEA,CAFA,sCAHA,aACA,CADA,0BACA,CANA,aACA,CAGA,eACA,CAFA,eACA,CAFA,iBACA,CAFA,UASA,+BACE,SAGF,iFAGE,eADA,eAYJ,kBZjII,oBYuIF,CZvIE,yCJ4QE,iBI5QF,CYkIF,oCACA,CADA,yDACA,qBAIA,8CAEE,qBACA,yBAFA,oBADF,wCAEE,qBACA,yBAFA,oBAMJ,kBZ9II,mBYoJF,CZpJE,yCJ4QE,iBI5QF,CY+IF,mCACA,CADA,wDACA,mBAIA,8CAEE,mBACA,wBAFA,kBADF,wCAEE,mBACA,wBAFA,kBAUF,uBACE,qCAGF,CAHE,0DAGF,0BACE,oCAGF,CAHE,yDAGF,0BACE,mCAKJ,CALI,wDAKJ,qBAEE,iCACA,CADA,sDACA,iBAFA,UAIA,oDACE,cAGF,wCACE,kBZvLA,sBY2LF,CZ3LE,qCY2LF,2CACE,kBZ5LA,sBYgMF,CZhME,qCYgMF,qCAAoB,gCACpB,CADoB,qDACpB,qCAAoB,+BG/MtB,CH+MsB,oDG/MtB,cACE,qQAWA,CACA,uBACA,iBACA,wDACA,mDACA,iFfHE,CaHE,wCbGF,2BaHE,0BAIA,oFEOJ,sBAEE,sCAKE,CAhBJ,yCADA,cACA,+CADA,sCACA,CAgBI,oEAIJ,CArBA,UAqBA,wCAGE,aAGF,oCAEE,sDAKF,CALE,SAKF,CACE,0DACA,qBAKF,CALE,oBAKF,uBACA,wBACA,wCfzCE,kEe+CF,uCAEA,iBAOE,6DACE,CfzDF,iBewDA,CfxDA,yCJ4QE,kBmBnNA,iBCrEJ,mBACA,yCAGE,CALF,iBACA,CAHF,oBACE,kBACA,CDsEI,iBCjEF,mCAKJ,qQAoBE,2BACA,qBACA,CAFA,iBACA,mBACA,yCACA,wCAEA,eADA,mBACA,iBACA,mDACA,cADA,mBACA,uDAGA,CAME,uBAGF,yDAIA,+CAGE,wBAGF,CAHE,4BAGF,uBACE,yBACA,2DAMI,CA3BN,chB3BE,2BgB+BF,CAuBM,yDAIJ,CA3BF,mBAJA,SA+BE,kCAII,mEAKN,gDACE,yBACA,oBAKE,uEAIJ,wBACE,qBAEA,0CAOA,oQAyBA,uChBjHA,4KgBqHA,gDAIA,8PAsBJ,CAzBM,wBAGF,qBAsBJ,4BAKA,WACE,WACA,CALA,mBAKA,4FAMI,yBACA,cACA,kBAOF,oNC7KF,CAEA,yCAKE,sBAA0B,mBAP5B,kBAEA,CAK4B,+CAC1B,CARF,SAQE,wCAA0B,8CAG5B,uCAIA,0KJVI,+MIUJ,CJVI,wBIUJ,iCJLM,qFIqBN,cHtCA,mBGsCA,wCACE,CACA,iBACA,YAEA,uCAFA,iBAEA,oDAMF,wBjBlCE,mBiBkCF,+EjBlCE,0LaHE,aAIA,uCIiCJ,yBJhCM,CALF,aAIA,WAJA,UAKE,4BI0CJ,yCH3DF,gDGiEE,qCAGA,gDACA,+BACA,2CAQA,uCACE,sDAHF,8BAEA,CACE,8GAIA,uGCpFJ,CD4EA,UC5EA,0EAGE,kFACA,oEAIF,wBAEE,wCAIA,mBACA,mBACA,CAXA,WAGF,gBAJE,uBAYA,+BAGA,eACA,yBACA,CADA,4BAFA,WACA,CACA,2GLHE,uGKQJ,CAPE,UAOF,wCAEE,8BpB2iFJ,mGAQA,wLoB3iFM,sBACA,+DpBgjFN,qEoB3iFM,wCAIJ,0BAEE,2CpBmjFJ,2JoB3iFM,+CACA,CpB0jFN,iBoB1jFM,gFpB0jFN,sBoBrjFQ,sBAEA,0CACA,CpBkjFR,uDoBtjFQ,mBACA,CpBqjFR,yDoBvjFQ,CpBujFR,MoBljFQ,oBlBhDJ,6DkBuDA,CAZI,kBACA,CpBsjFR,SoB3iFI,6DACE,qFACA,kHAMA,WpBqjFN,qMoB5iFM,sBCvFN,CDuFM,oBCvFN,uGAOE,wEAIE,sBAEA,CAHA,oBAGA,CAIF,mLAaE,eAYJ,yCAEE,2DAIA,4MnBjCE,qBF0qFJ,gGE1qFI,wBmBsCF,kBnBtCE,CmBsCF,kBnBtCE,UF0qFJ,qDE1qFI,wDFmrFJ,2HqBtnFE,sCnB7DE,4EmBkEJ,qGrB6nFA,2YAOA,+HEtrFI,wBACA,uCmBsFF,gJACE,CrB8lFJ,gKqB9lFI,mHAIF,oNC5FA,oBAHE,yCAIA,CxB2PE,iBwB/PF,CAHA,oBAOA,2DAKA,kBACA,CAiBE,iqBAWE,6BADF,yBACE,2IAWA,4BADA,wBACA,CA3EJ,4DA2EI,wHAOF,2BAGE,mKAEE,wBACA,mCACA,4DACA,CAHA,WAFF,aAEE,mCAFF,mCAEE,CAFF,oCAKE,+HAKF,wEA/FJ,wQAiHE,yDACE,CADF,4BACE,2DAGF,CArBE,sGAqBF,uEACE,qGAGF,mIAOA,6EAhIF,CA+HA,kCA/HA,yVxByRE,gRI5QF,6DFy0FJ,uEEz0FI,sBFy0FJ,qEsBt1FI,mEAqDE,0FAIE,uEACA,2BACA,mEACA,oBAGF,kIACE,wBACA,2HAjEJ,iCA0EI,wDACA,uGA3EJ,aAkFE,uFAGE,mWAIE,SACA,mBAIJ,iDAJI,6BAIJ,CAJI,4BAIJ,kBAEE,0DAhGJ,4DAwGI,CARA,WADA,aACA,mCADA,cACA,sBADA,oCASA,+IAOF,4EAMA,qUAWA,CAhIF,yDAgIE,2BAhIF,6DAiHE,qEACE,mCAlHJ,yOCAF,+EAIA,6EAGA,CzBkRI,kCyBlRJ,6DAEA,qEACA,qOAIA,6UAgBA,6DrBjBE,sEaHE,CQoBJ,sBRpBI,8IQZN,kCAuCI,uDAEA,2EAMA,2BACA,uEAIF,oBACE,iDPrDF,uFO6DI,wBAIJ,8CACE,mFAUF,wFAKE,2GAIA,aAGA,0cA8BF,SCtGA,gCAEA,6BACA,8CACA,yBACA,yBACA,oCACA,kBACA,6CACA,4BACA,+CACA,kCACA,uEAXA,+BACA,gFAGA,CACA,kCAJA,kEAEA,0CAEA,CAKA,yBACA,CD0FA,cCtGA,CAKA,oBACA,CACA,qCAEA,mCACA,2EACA,CALA,uDACA,CAKA,iBACA,sBAPA,6HAIA,CAVA,wBACA,iBACA,CAWA,qBAHA,wCACA,oBACA,aACA,uCAbA,8CAEA,CAUA,+BAVA,uBAEA,iCACA,wCACA,CAHA,yBAGA,oBAEA,uCACA,8CACA,0CACA,CAJA,+BACA,CAEA,SACA,+BACA,6CACA,CDyFA,yCCrGA,CDqGA,SCrGA,oGAKA,wCACA,+CAEA,CAJA,gCAIA,0KAIA,yCAbA,oDAKA,0CACA,iDACA,CALA,kCAEA,CAGA,sCAEA,CALA,mBAKA,iCACA,4EACA,0BACA,oCACA,qCAbA,2BACA,2BACA,qCAEA,wDAEA,0DACA,uCAEA,mCACA,4EACA,0BACA,oCACA,sCAbA,2BACA,CACA,+DAEA,wDAEA,8BACA,4BACA,uCACA,iCACA,mDACA,mDACA,oCACA,qCAYA,2BACA,2BACA,qCACA,wDAEA,6BACA,6BACA,uCACA,8BACA,kDACA,2BACA,6DACA,qCD2FA,2BCvGA,2BACA,qCACA,wDAEA,6BACA,6BACA,uCACA,CACA,oDACA,wDACA,0BACA,oCACA,oCACA,2BD0FA,2BCvGA,qCAEA,wDAEA,6BACA,oEAEA,gCACA,kDACA,oDACA,oCACA,oCACA,2BACA,2BAbA,qCACA,wDAEA,6BACA,6BACA,uCACA,YACA,uCACA,8BACA,oDACA,oCACA,sCACA,4BACA,0BD0FA,qCCtGA,wDAEA,6BACA,6BACA,uCACA,8BACA,qBACA,uDACA,8DACA,mCACA,2BACA,2BACA,qCAbA,wDAEA,6BACA,6BAC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","sources":["../node_modules/bootstrap/scss/_type.scss","../node_modules/bootstrap/scss/_images.scss","../node_modules/bootstrap/scss/mixins/_banner.scss","../node_modules/bootstrap/scss/_root.scss","../node_modules/bootstrap/scss/vendor/_rfs.scss","../node_modules/bootstrap/scss/mixins/_color-mode.scss","../node_modules/bootstrap/dist/css/dist/css/bootstrap.css","../node_modules/bootstrap/scss/_reboot.scss","../node_modules/bootstrap/scss/mixins/_border-radius.scss","../node_modules/bootstrap/scss/mixins/_lists.scss","../node_modules/bootstrap/scss/mixins/_image.scss","../node_modules/bootstrap/scss/_containers.scss","../node_modules/bootstrap/scss/mixins/_container.scss","../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../node_modules/bootstrap/scss/_grid.scss","../node_modules/bootstrap/scss/mixins/_grid.scss","../node_modules/bootstrap/scss/_tables.scss","../node_modules/bootstrap/scss/mixins/_table-variants.scss","../node_modules/bootstrap/scss/forms/_labels.scss","../node_modules/bootstrap/scss/forms/_form-text.scss","../node_modules/bootstrap/scss/forms/_form-control.scss","../node_modules/bootstrap/scss/mixins/_transition.scss","../node_modules/bootstrap/scss/mixins/_gradients.scss","../node_modules/bootstrap/scss/forms/_form-select.scss","../node_modules/bootstrap/scss/forms/_form-check.scss","../node_modules/bootstrap/scss/forms/_form-range.scss","../node_modules/bootstrap/scss/forms/_floating-labels.scss","../node_modules/bootstrap/scss/forms/_input-group.scss","../node_modules/bootstrap/scss/mixins/_forms.scss","../node_modules/bootstrap/scss/_buttons.scss","../node_modules/bootstrap/scss/mixins/_buttons.scss","../node_modules/bootstrap/scss/_transitions.scss","../node_modules/bootstrap/scss/_dropdown.scss","../node_modules/bootstrap/scss/mixins/_caret.scss","../node_modules/bootstrap/scss/_button-group.scss","../node_modules/bootstrap/scss/_nav.scss","../node_modules/bootstrap/scss/_navbar.scss","../node_modules/bootstrap/scss/_card.scss","../node_modules/bootstrap/scss/_accordion.scss","../node_modules/bootstrap/scss/_breadcrumb.scss","../node_modules/bootstrap/scss/_pagination.scss","../node_modules/bootstrap/scss/_badge.scss","../node_modules/bootstrap/scss/_alert.scss","../node_modules/bootstrap/scss/_progress.scss","../node_modules/bootstrap/scss/_list-group.scss","../node_modules/bootstrap/scss/_close.scss","../node_modules/bootstrap/scss/_toasts.scss","../node_modules/bootstrap/scss/_modal.scss","../node_modules/bootstrap/scss/mixins/_backdrop.scss","../node_modules/bootstrap/scss/_tooltip.scss","../node_modules/bootstrap/scss/mixins/_reset-text.scss","../node_modules/bootstrap/scss/_popover.scss","../node_modules/bootstrap/scss/_carousel.scss","../node_modules/bootstrap/scss/_spinners.scss","../node_modules/bootstrap/scss/_offcanvas.scss","../node_modules/bootstrap/scss/_placeholders.scss","../node_modules/bootstrap/scss/mixins/_clearfix.scss","../node_modules/bootstrap/scss/helpers/_color-bg.scss","../node_modules/bootstrap/scss/helpers/_colored-links.scss","../node_modules/bootstrap/scss/helpers/_focus-ring.scss","../node_modules/bootstrap/scss/helpers/_icon-link.scss","../node_modules/bootstrap/scss/helpers/_ratio.scss","../node_modules/bootstrap/scss/helpers/_position.scss","../node_modules/bootstrap/scss/helpers/_stacks.scss","../node_modules/bootstrap/scss/mixins/_visually-hidden.scss","../node_modules/bootstrap/scss/helpers/_stretched-link.scss","../node_modules/bootstrap/scss/mixins/_text-truncate.scss","../node_modules/bootstrap/scss/helpers/_vr.scss","../node_modules/bootstrap/scss/mixins/_utilities.scss","../node_modules/bootstrap/scss/utilities/_api.scss","../node_modules/@fortawesome/fontawesome-free/css/all.min.css","colorThemes/default.css","index.css","components/ProfileSection/ProfileSection.module.css","components/CardElement/CardElement.module.css","components/SocialMedia/Section/SocialMediaSection.module.css","components/SocialMedia/Element/SocialMediaElement.module.css","components/SocialMedia/Element/SocialMediaIcons.css","components/Modal/ModalComponent.module.css","components/Footer/Footer.module.css","App.css"],"sourcesContent":["//\n// Headings\n//\n.h1 {\n @extend h1;\n}\n\n.h2 {\n @extend h2;\n}\n\n.h3 {\n @extend h3;\n}\n\n.h4 {\n @extend h4;\n}\n\n.h5 {\n @extend h5;\n}\n\n.h6 {\n @extend h6;\n}\n\n\n.lead {\n @include font-size($lead-font-size);\n font-weight: $lead-font-weight;\n}\n\n// Type display classes\n@each $display, $font-size in $display-font-sizes {\n .display-#{$display} {\n @include font-size($font-size);\n font-family: $display-font-family;\n font-style: $display-font-style;\n font-weight: $display-font-weight;\n line-height: $display-line-height;\n }\n}\n\n//\n// Emphasis\n//\n.small {\n @extend small;\n}\n\n.mark {\n @extend mark;\n}\n\n//\n// Lists\n//\n\n.list-unstyled {\n @include list-unstyled();\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n @include list-unstyled();\n}\n.list-inline-item {\n display: inline-block;\n\n &:not(:last-child) {\n margin-right: $list-inline-padding;\n }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n @include font-size($initialism-font-size);\n text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n margin-bottom: $blockquote-margin-y;\n @include font-size($blockquote-font-size);\n\n > :last-child {\n margin-bottom: 0;\n }\n}\n\n.blockquote-footer {\n margin-top: -$blockquote-margin-y;\n margin-bottom: $blockquote-margin-y;\n @include font-size($blockquote-footer-font-size);\n color: $blockquote-footer-color;\n\n &::before {\n content: \"\\2014\\00A0\"; // em dash, nbsp\n }\n}\n","// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all ``s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n @include img-fluid();\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n padding: $thumbnail-padding;\n background-color: $thumbnail-bg;\n border: $thumbnail-border-width solid $thumbnail-border-color;\n @include border-radius($thumbnail-border-radius);\n @include box-shadow($thumbnail-box-shadow);\n\n // Keep them at most 100% wide\n @include img-fluid();\n}\n\n//\n// Figures\n//\n\n.figure {\n // Ensures the caption's text aligns with the image.\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: $spacer * .5;\n line-height: 1;\n}\n\n.figure-caption {\n @include font-size($figure-caption-font-size);\n color: $figure-caption-color;\n}\n","@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n\n --#{$prefix}body-color: #{$body-color};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n // scss-docs-end root-body-variables\n\n --#{$prefix}heading-color: #{$headings-color};\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-color: #{$mark-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-xxl: #{$border-radius-xxl};\n --#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n // Focus styles\n // scss-docs-start root-focus-variables\n --#{$prefix}focus-ring-width: #{$focus-ring-width};\n --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};\n --#{$prefix}focus-ring-color: #{$focus-ring-color};\n // scss-docs-end root-focus-variables\n\n // scss-docs-start root-form-validation-variables\n --#{$prefix}form-valid-color: #{$form-valid-color};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color};\n --#{$prefix}form-invalid-color: #{$form-invalid-color};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color};\n // scss-docs-end root-form-validation-variables\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n color-scheme: dark;\n\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n @each $color, $value in $theme-colors-text-dark {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle-dark {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle-dark {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n --#{$prefix}highlight-color: #{$mark-color-dark};\n --#{$prefix}highlight-bg: #{$mark-bg-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n\n --#{$prefix}form-valid-color: #{$form-valid-color-dark};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color-dark};\n --#{$prefix}form-invalid-color: #{$form-invalid-color-dark};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","// stylelint-disable scss/dimension-no-non-numeric-values\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query () {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query () {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + \" \" + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n } @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + \" \" + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n } @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + \" \" + $value;\n } @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + \" calc(\" + $min-width + if($value < 0, \" - \", \" + \") + $variable-width + \")\";\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluid-val: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluid-val {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule () {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluid-val);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule () {\n #{$property}: if($rfs-mode == max-media-query, $fluid-val, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","@charset \"UTF-8\";\n/*!\n * Bootstrap v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text-emphasis: #052c65;\n --bs-secondary-text-emphasis: #2b2f32;\n --bs-success-text-emphasis: #0a3622;\n --bs-info-text-emphasis: #055160;\n --bs-warning-text-emphasis: #664d03;\n --bs-danger-text-emphasis: #58151c;\n --bs-light-text-emphasis: #495057;\n --bs-dark-text-emphasis: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #e2e3e5;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #c4c8cb;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-heading-color: inherit;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-color: #212529;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-xxl: 2rem;\n --bs-border-radius-2xl: var(--bs-border-radius-xxl);\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n --bs-focus-ring-width: 0.25rem;\n --bs-focus-ring-opacity: 0.25;\n --bs-focus-ring-color: rgba(13, 110, 253, 0.25);\n --bs-form-valid-color: #198754;\n --bs-form-valid-border-color: #198754;\n --bs-form-invalid-color: #dc3545;\n --bs-form-invalid-border-color: #dc3545;\n}\n\n[data-bs-theme=dark] {\n color-scheme: dark;\n --bs-body-color: #dee2e6;\n --bs-body-color-rgb: 222, 226, 230;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #fff;\n --bs-emphasis-color-rgb: 255, 255, 255;\n --bs-secondary-color: rgba(222, 226, 230, 0.75);\n --bs-secondary-color-rgb: 222, 226, 230;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(222, 226, 230, 0.5);\n --bs-tertiary-color-rgb: 222, 226, 230;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-primary-text-emphasis: #6ea8fe;\n --bs-secondary-text-emphasis: #a7acb1;\n --bs-success-text-emphasis: #75b798;\n --bs-info-text-emphasis: #6edff6;\n --bs-warning-text-emphasis: #ffda6a;\n --bs-danger-text-emphasis: #ea868f;\n --bs-light-text-emphasis: #f8f9fa;\n --bs-dark-text-emphasis: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #161719;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #41464b;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #087990;\n --bs-warning-border-subtle: #997404;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: inherit;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #8bb9fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 139, 185, 254;\n --bs-code-color: #e685b5;\n --bs-highlight-color: #dee2e6;\n --bs-highlight-bg: #664d03;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n --bs-form-valid-color: #75b798;\n --bs-form-valid-border-color: #75b798;\n --bs-form-invalid-color: #ea868f;\n --bs-form-invalid-border-color: #ea868f;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :root {\n scroll-behavior: smooth;\n }\n}\n\nbody {\n margin: 0;\n font-family: var(--bs-body-font-family);\n font-size: var(--bs-body-font-size);\n font-weight: var(--bs-body-font-weight);\n line-height: var(--bs-body-line-height);\n color: var(--bs-body-color);\n text-align: var(--bs-body-text-align);\n background-color: var(--bs-body-bg);\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n margin: 1rem 0;\n color: inherit;\n border: 0;\n border-top: var(--bs-border-width) solid;\n opacity: 0.25;\n}\n\nh6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n color: var(--bs-heading-color);\n}\n\nh1, .h1 {\n font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n h1, .h1 {\n font-size: 2.5rem;\n }\n}\n\nh2, .h2 {\n font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n h2, .h2 {\n font-size: 2rem;\n }\n}\n\nh3, .h3 {\n font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n h3, .h3 {\n font-size: 1.75rem;\n }\n}\n\nh4, .h4 {\n font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n h4, .h4 {\n font-size: 1.5rem;\n }\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title] {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n -webkit-text-decoration-skip-ink: none;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: 0.5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall, .small {\n font-size: 0.875em;\n}\n\nmark, .mark {\n padding: 0.1875em;\n color: var(--bs-highlight-color);\n background-color: var(--bs-highlight-bg);\n}\n\nsub,\nsup {\n position: relative;\n font-size: 0.75em;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\na {\n color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));\n text-decoration: underline;\n}\na:hover {\n --bs-link-color-rgb: var(--bs-link-hover-color-rgb);\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: var(--bs-font-monospace);\n font-size: 1em;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n font-size: 0.875em;\n}\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\ncode {\n font-size: 0.875em;\n color: var(--bs-code-color);\n word-wrap: break-word;\n}\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.1875rem 0.375rem;\n font-size: 0.875em;\n color: var(--bs-body-bg);\n background-color: var(--bs-body-color);\n border-radius: 0.25rem;\n}\nkbd kbd {\n padding: 0;\n font-size: 1em;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-secondary-color);\n text-align: left;\n}\n\nth {\n text-align: inherit;\n text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\nlabel {\n display: inline-block;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\n[role=button] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\nselect:disabled {\n opacity: 1;\n}\n\n[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n display: none !important;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n cursor: pointer;\n}\n\n::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n float: left;\n width: 100%;\n padding: 0;\n margin-bottom: 0.5rem;\n font-size: calc(1.275rem + 0.3vw);\n line-height: inherit;\n}\n@media (min-width: 1200px) {\n legend {\n font-size: 1.5rem;\n }\n}\nlegend + * {\n clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n padding: 0;\n}\n\n::-webkit-inner-spin-button {\n height: auto;\n}\n\n[type=search] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n padding: 0;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\n::file-selector-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\niframe {\n border: 0;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[hidden] {\n display: none !important;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: calc(1.625rem + 4.5vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-1 {\n font-size: 5rem;\n }\n}\n\n.display-2 {\n font-size: calc(1.575rem + 3.9vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-2 {\n font-size: 4.5rem;\n }\n}\n\n.display-3 {\n font-size: calc(1.525rem + 3.3vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-3 {\n font-size: 4rem;\n }\n}\n\n.display-4 {\n font-size: calc(1.475rem + 2.7vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-4 {\n font-size: 3.5rem;\n }\n}\n\n.display-5 {\n font-size: calc(1.425rem + 2.1vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-5 {\n font-size: 3rem;\n }\n}\n\n.display-6 {\n font-size: calc(1.375rem + 1.5vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-6 {\n font-size: 2.5rem;\n }\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n\n.initialism {\n font-size: 0.875em;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n.blockquote > :last-child {\n margin-bottom: 0;\n}\n\n.blockquote-footer {\n margin-top: -1rem;\n margin-bottom: 1rem;\n font-size: 0.875em;\n color: #6c757d;\n}\n.blockquote-footer::before {\n content: \"— \";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: var(--bs-body-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 0.875em;\n color: var(--bs-secondary-color);\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.table {\n --bs-table-color-type: initial;\n --bs-table-bg-type: initial;\n --bs-table-color-state: initial;\n --bs-table-bg-state: initial;\n --bs-table-color: var(--bs-emphasis-color);\n --bs-table-bg: var(--bs-body-bg);\n --bs-table-border-color: var(--bs-border-color);\n --bs-table-accent-bg: transparent;\n --bs-table-striped-color: var(--bs-emphasis-color);\n --bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), 0.05);\n --bs-table-active-color: var(--bs-emphasis-color);\n --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1);\n --bs-table-hover-color: var(--bs-emphasis-color);\n --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.075);\n width: 100%;\n margin-bottom: 1rem;\n vertical-align: top;\n border-color: var(--bs-table-border-color);\n}\n.table > :not(caption) > * > * {\n padding: 0.5rem 0.5rem;\n color: var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));\n background-color: var(--bs-table-bg);\n border-bottom-width: var(--bs-border-width);\n box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));\n}\n.table > tbody {\n vertical-align: inherit;\n}\n.table > thead {\n vertical-align: bottom;\n}\n\n.table-group-divider {\n border-top: calc(var(--bs-border-width) * 2) solid currentcolor;\n}\n\n.caption-top {\n caption-side: top;\n}\n\n.table-sm > :not(caption) > * > * {\n padding: 0.25rem 0.25rem;\n}\n\n.table-bordered > :not(caption) > * {\n border-width: var(--bs-border-width) 0;\n}\n.table-bordered > :not(caption) > * > * {\n border-width: 0 var(--bs-border-width);\n}\n\n.table-borderless > :not(caption) > * > * {\n border-bottom-width: 0;\n}\n.table-borderless > :not(:first-child) {\n border-top-width: 0;\n}\n\n.table-striped > tbody > tr:nth-of-type(odd) > * {\n --bs-table-color-type: var(--bs-table-striped-color);\n --bs-table-bg-type: var(--bs-table-striped-bg);\n}\n\n.table-striped-columns > :not(caption) > tr > :nth-child(even) {\n --bs-table-color-type: var(--bs-table-striped-color);\n --bs-table-bg-type: var(--bs-table-striped-bg);\n}\n\n.table-active {\n --bs-table-color-state: var(--bs-table-active-color);\n --bs-table-bg-state: var(--bs-table-active-bg);\n}\n\n.table-hover > tbody > tr:hover > * {\n --bs-table-color-state: var(--bs-table-hover-color);\n --bs-table-bg-state: var(--bs-table-hover-bg);\n}\n\n.table-primary {\n --bs-table-color: #000;\n --bs-table-bg: #cfe2ff;\n --bs-table-border-color: #a6b5cc;\n --bs-table-striped-bg: #c5d7f2;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #bacbe6;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #bfd1ec;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-secondary {\n --bs-table-color: #000;\n --bs-table-bg: #e2e3e5;\n --bs-table-border-color: #b5b6b7;\n --bs-table-striped-bg: #d7d8da;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #cbccce;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #d1d2d4;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-success {\n --bs-table-color: #000;\n --bs-table-bg: #d1e7dd;\n --bs-table-border-color: #a7b9b1;\n --bs-table-striped-bg: #c7dbd2;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #bcd0c7;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #c1d6cc;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-info {\n --bs-table-color: #000;\n --bs-table-bg: #cff4fc;\n --bs-table-border-color: #a6c3ca;\n --bs-table-striped-bg: #c5e8ef;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #badce3;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #bfe2e9;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-warning {\n --bs-table-color: #000;\n --bs-table-bg: #fff3cd;\n --bs-table-border-color: #ccc2a4;\n --bs-table-striped-bg: #f2e7c3;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #e6dbb9;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #ece1be;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-danger {\n --bs-table-color: #000;\n --bs-table-bg: #f8d7da;\n --bs-table-border-color: #c6acae;\n --bs-table-striped-bg: #eccccf;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #dfc2c4;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #e5c7ca;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-light {\n --bs-table-color: #000;\n --bs-table-bg: #f8f9fa;\n --bs-table-border-color: #c6c7c8;\n --bs-table-striped-bg: #ecedee;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #dfe0e1;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #e5e6e7;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-dark {\n --bs-table-color: #fff;\n --bs-table-bg: #212529;\n --bs-table-border-color: #4d5154;\n --bs-table-striped-bg: #2c3034;\n --bs-table-striped-color: #fff;\n --bs-table-active-bg: #373b3e;\n --bs-table-active-color: #fff;\n --bs-table-hover-bg: #323539;\n --bs-table-hover-color: #fff;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-responsive {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 767.98px) {\n .table-responsive-md {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 1399.98px) {\n .table-responsive-xxl {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n.form-label {\n margin-bottom: 0.5rem;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + var(--bs-border-width));\n padding-bottom: calc(0.375rem + var(--bs-border-width));\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + var(--bs-border-width));\n padding-bottom: calc(0.5rem + var(--bs-border-width));\n font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + var(--bs-border-width));\n padding-bottom: calc(0.25rem + var(--bs-border-width));\n font-size: 0.875rem;\n}\n\n.form-text {\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-secondary-color);\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: var(--bs-body-bg);\n background-clip: padding-box;\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-control {\n transition: none;\n }\n}\n.form-control[type=file] {\n overflow: hidden;\n}\n.form-control[type=file]:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n.form-control:focus {\n color: var(--bs-body-color);\n background-color: var(--bs-body-bg);\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-control::-webkit-date-and-time-value {\n min-width: 85px;\n height: 1.5em;\n margin: 0;\n}\n.form-control::-webkit-datetime-edit {\n display: block;\n padding: 0;\n}\n.form-control::-moz-placeholder {\n color: var(--bs-secondary-color);\n opacity: 1;\n}\n.form-control::placeholder {\n color: var(--bs-secondary-color);\n opacity: 1;\n}\n.form-control:disabled {\n background-color: var(--bs-secondary-bg);\n opacity: 1;\n}\n.form-control::-webkit-file-upload-button {\n padding: 0.375rem 0.75rem;\n margin: -0.375rem -0.75rem;\n -webkit-margin-end: 0.75rem;\n margin-inline-end: 0.75rem;\n color: var(--bs-body-color);\n background-color: var(--bs-tertiary-bg);\n pointer-events: none;\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n border-inline-end-width: var(--bs-border-width);\n border-radius: 0;\n -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n.form-control::file-selector-button {\n padding: 0.375rem 0.75rem;\n margin: -0.375rem -0.75rem;\n -webkit-margin-end: 0.75rem;\n margin-inline-end: 0.75rem;\n color: var(--bs-body-color);\n background-color: var(--bs-tertiary-bg);\n pointer-events: none;\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n border-inline-end-width: var(--bs-border-width);\n border-radius: 0;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-control::-webkit-file-upload-button {\n -webkit-transition: none;\n transition: none;\n }\n .form-control::file-selector-button {\n transition: none;\n }\n}\n.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n background-color: var(--bs-secondary-bg);\n}\n.form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n background-color: var(--bs-secondary-bg);\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding: 0.375rem 0;\n margin-bottom: 0;\n line-height: 1.5;\n color: var(--bs-body-color);\n background-color: transparent;\n border: solid transparent;\n border-width: var(--bs-border-width) 0;\n}\n.form-control-plaintext:focus {\n outline: 0;\n}\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm {\n min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n.form-control-sm::-webkit-file-upload-button {\n padding: 0.25rem 0.5rem;\n margin: -0.25rem -0.5rem;\n -webkit-margin-end: 0.5rem;\n margin-inline-end: 0.5rem;\n}\n.form-control-sm::file-selector-button {\n padding: 0.25rem 0.5rem;\n margin: -0.25rem -0.5rem;\n -webkit-margin-end: 0.5rem;\n margin-inline-end: 0.5rem;\n}\n\n.form-control-lg {\n min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n.form-control-lg::-webkit-file-upload-button {\n padding: 0.5rem 1rem;\n margin: -0.5rem -1rem;\n -webkit-margin-end: 1rem;\n margin-inline-end: 1rem;\n}\n.form-control-lg::file-selector-button {\n padding: 0.5rem 1rem;\n margin: -0.5rem -1rem;\n -webkit-margin-end: 1rem;\n margin-inline-end: 1rem;\n}\n\ntextarea.form-control {\n min-height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));\n}\ntextarea.form-control-sm {\n min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n}\ntextarea.form-control-lg {\n min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-control-color {\n width: 3rem;\n height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));\n padding: 0.375rem;\n}\n.form-control-color:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n.form-control-color::-moz-color-swatch {\n border: 0 !important;\n border-radius: var(--bs-border-radius);\n}\n.form-control-color::-webkit-color-swatch {\n border: 0 !important;\n border-radius: var(--bs-border-radius);\n}\n.form-control-color.form-control-sm {\n height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n}\n.form-control-color.form-control-lg {\n height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-select {\n --bs-form-select-bg-img: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n display: block;\n width: 100%;\n padding: 0.375rem 2.25rem 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: var(--bs-body-bg);\n background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);\n background-repeat: no-repeat;\n background-position: right 0.75rem center;\n background-size: 16px 12px;\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-select {\n transition: none;\n }\n}\n.form-select:focus {\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-select[multiple], .form-select[size]:not([size=\"1\"]) {\n padding-right: 0.75rem;\n background-image: none;\n}\n.form-select:disabled {\n background-color: var(--bs-secondary-bg);\n}\n.form-select:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 var(--bs-body-color);\n}\n\n.form-select-sm {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-left: 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n\n.form-select-lg {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n\n[data-bs-theme=dark] .form-select {\n --bs-form-select-bg-img: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n}\n\n.form-check {\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5em;\n margin-bottom: 0.125rem;\n}\n.form-check .form-check-input {\n float: left;\n margin-left: -1.5em;\n}\n\n.form-check-reverse {\n padding-right: 1.5em;\n padding-left: 0;\n text-align: right;\n}\n.form-check-reverse .form-check-input {\n float: right;\n margin-right: -1.5em;\n margin-left: 0;\n}\n\n.form-check-input {\n --bs-form-check-bg: var(--bs-body-bg);\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n margin-top: 0.25em;\n vertical-align: top;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: var(--bs-form-check-bg);\n background-image: var(--bs-form-check-bg-image);\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n border: var(--bs-border-width) solid var(--bs-border-color);\n -webkit-print-color-adjust: exact;\n color-adjust: exact;\n print-color-adjust: exact;\n}\n.form-check-input[type=checkbox] {\n border-radius: 0.25em;\n}\n.form-check-input[type=radio] {\n border-radius: 50%;\n}\n.form-check-input:active {\n filter: brightness(90%);\n}\n.form-check-input:focus {\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-check-input:checked {\n background-color: #0d6efd;\n border-color: #0d6efd;\n}\n.form-check-input:checked[type=checkbox] {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e\");\n}\n.form-check-input:checked[type=radio] {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-check-input[type=checkbox]:indeterminate {\n background-color: #0d6efd;\n border-color: #0d6efd;\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\");\n}\n.form-check-input:disabled {\n pointer-events: none;\n filter: none;\n opacity: 0.5;\n}\n.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {\n cursor: default;\n opacity: 0.5;\n}\n\n.form-switch {\n padding-left: 2.5em;\n}\n.form-switch .form-check-input {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");\n width: 2em;\n margin-left: -2.5em;\n background-image: var(--bs-form-switch-bg);\n background-position: left center;\n border-radius: 2em;\n transition: background-position 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-switch .form-check-input {\n transition: none;\n }\n}\n.form-switch .form-check-input:focus {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\");\n}\n.form-switch .form-check-input:checked {\n background-position: right center;\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-switch.form-check-reverse {\n padding-right: 2.5em;\n padding-left: 0;\n}\n.form-switch.form-check-reverse .form-check-input {\n margin-right: -2.5em;\n margin-left: 0;\n}\n\n.form-check-inline {\n display: inline-block;\n margin-right: 1rem;\n}\n\n.btn-check {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.btn-check[disabled] + .btn, .btn-check:disabled + .btn {\n pointer-events: none;\n filter: none;\n opacity: 0.65;\n}\n\n[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e\");\n}\n\n.form-range {\n width: 100%;\n height: 1.5rem;\n padding: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: transparent;\n}\n.form-range:focus {\n outline: 0;\n}\n.form-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range::-moz-focus-outer {\n border: 0;\n}\n.form-range::-webkit-slider-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: -0.25rem;\n -webkit-appearance: none;\n appearance: none;\n background-color: #0d6efd;\n border: 0;\n border-radius: 1rem;\n -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-range::-webkit-slider-thumb {\n -webkit-transition: none;\n transition: none;\n }\n}\n.form-range::-webkit-slider-thumb:active {\n background-color: #b6d4fe;\n}\n.form-range::-webkit-slider-runnable-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: var(--bs-secondary-bg);\n border-color: transparent;\n border-radius: 1rem;\n}\n.form-range::-moz-range-thumb {\n width: 1rem;\n height: 1rem;\n -moz-appearance: none;\n appearance: none;\n background-color: #0d6efd;\n border: 0;\n border-radius: 1rem;\n -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-range::-moz-range-thumb {\n -moz-transition: none;\n transition: none;\n }\n}\n.form-range::-moz-range-thumb:active {\n background-color: #b6d4fe;\n}\n.form-range::-moz-range-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: var(--bs-secondary-bg);\n border-color: transparent;\n border-radius: 1rem;\n}\n.form-range:disabled {\n pointer-events: none;\n}\n.form-range:disabled::-webkit-slider-thumb {\n background-color: var(--bs-secondary-color);\n}\n.form-range:disabled::-moz-range-thumb {\n background-color: var(--bs-secondary-color);\n}\n\n.form-floating {\n position: relative;\n}\n.form-floating > .form-control,\n.form-floating > .form-control-plaintext,\n.form-floating > .form-select {\n height: calc(3.5rem + calc(var(--bs-border-width) * 2));\n min-height: calc(3.5rem + calc(var(--bs-border-width) * 2));\n line-height: 1.25;\n}\n.form-floating > label {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2;\n height: 100%;\n padding: 1rem 0.75rem;\n overflow: hidden;\n text-align: start;\n text-overflow: ellipsis;\n white-space: nowrap;\n pointer-events: none;\n border: var(--bs-border-width) solid transparent;\n transform-origin: 0 0;\n transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-floating > label {\n transition: none;\n }\n}\n.form-floating > .form-control,\n.form-floating > .form-control-plaintext {\n padding: 1rem 0.75rem;\n}\n.form-floating > .form-control::-moz-placeholder, .form-floating > .form-control-plaintext::-moz-placeholder {\n color: transparent;\n}\n.form-floating > .form-control::placeholder,\n.form-floating > .form-control-plaintext::placeholder {\n color: transparent;\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown), .form-floating > .form-control-plaintext:not(:-moz-placeholder-shown) {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),\n.form-floating > .form-control-plaintext:focus,\n.form-floating > .form-control-plaintext:not(:placeholder-shown) {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:-webkit-autofill,\n.form-floating > .form-control-plaintext:-webkit-autofill {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-select {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {\n color: rgba(var(--bs-body-color-rgb), 0.65);\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control:focus ~ label,\n.form-floating > .form-control:not(:placeholder-shown) ~ label,\n.form-floating > .form-control-plaintext ~ label,\n.form-floating > .form-select ~ label {\n color: rgba(var(--bs-body-color-rgb), 0.65);\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label::after {\n position: absolute;\n inset: 1rem 0.375rem;\n z-index: -1;\n height: 1.5em;\n content: \"\";\n background-color: var(--bs-body-bg);\n border-radius: var(--bs-border-radius);\n}\n.form-floating > .form-control:focus ~ label::after,\n.form-floating > .form-control:not(:placeholder-shown) ~ label::after,\n.form-floating > .form-control-plaintext ~ label::after,\n.form-floating > .form-select ~ label::after {\n position: absolute;\n inset: 1rem 0.375rem;\n z-index: -1;\n height: 1.5em;\n content: \"\";\n background-color: var(--bs-body-bg);\n border-radius: var(--bs-border-radius);\n}\n.form-floating > .form-control:-webkit-autofill ~ label {\n color: rgba(var(--bs-body-color-rgb), 0.65);\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control-plaintext ~ label {\n border-width: var(--bs-border-width) 0;\n}\n.form-floating > :disabled ~ label,\n.form-floating > .form-control:disabled ~ label {\n color: #6c757d;\n}\n.form-floating > :disabled ~ label::after,\n.form-floating > .form-control:disabled ~ label::after {\n background-color: var(--bs-secondary-bg);\n}\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: stretch;\n width: 100%;\n}\n.input-group > .form-control,\n.input-group > .form-select,\n.input-group > .form-floating {\n position: relative;\n flex: 1 1 auto;\n width: 1%;\n min-width: 0;\n}\n.input-group > .form-control:focus,\n.input-group > .form-select:focus,\n.input-group > .form-floating:focus-within {\n z-index: 5;\n}\n.input-group .btn {\n position: relative;\n z-index: 2;\n}\n.input-group .btn:focus {\n z-index: 5;\n}\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--bs-tertiary-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n padding-right: 3rem;\n}\n\n.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3),\n.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control,\n.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4),\n.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control,\n.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {\n margin-left: calc(var(--bs-border-width) * -1);\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group > .form-floating:not(:first-child) > .form-control,\n.input-group > .form-floating:not(:first-child) > .form-select {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-form-valid-color);\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: 0.1rem;\n font-size: 0.875rem;\n color: #fff;\n background-color: var(--bs-success);\n border-radius: var(--bs-border-radius);\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n border-color: var(--bs-form-valid-border-color);\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n border-color: var(--bs-form-valid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:valid, .form-select.is-valid {\n border-color: var(--bs-form-valid-border-color);\n}\n.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size=\"1\"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size=\"1\"] {\n --bs-form-select-bg-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n padding-right: 4.125rem;\n background-position: right 0.75rem center, center right 2.25rem;\n background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:valid:focus, .form-select.is-valid:focus {\n border-color: var(--bs-form-valid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);\n}\n\n.was-validated .form-control-color:valid, .form-control-color.is-valid {\n width: calc(3rem + calc(1.5em + 0.75rem));\n}\n\n.was-validated .form-check-input:valid, .form-check-input.is-valid {\n border-color: var(--bs-form-valid-border-color);\n}\n.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\n background-color: var(--bs-form-valid-color);\n}\n.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);\n}\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: var(--bs-form-valid-color);\n}\n\n.form-check-inline .form-check-input ~ .valid-feedback {\n margin-left: 0.5em;\n}\n\n.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid,\n.was-validated .input-group > .form-select:not(:focus):valid,\n.input-group > .form-select:not(:focus).is-valid,\n.was-validated .input-group > .form-floating:not(:focus-within):valid,\n.input-group > .form-floating:not(:focus-within).is-valid {\n z-index: 3;\n}\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-form-invalid-color);\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: 0.1rem;\n font-size: 0.875rem;\n color: #fff;\n background-color: var(--bs-danger);\n border-radius: var(--bs-border-radius);\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n border-color: var(--bs-form-invalid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:invalid, .form-select.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n}\n.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size=\"1\"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size=\"1\"] {\n --bs-form-select-bg-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n padding-right: 4.125rem;\n background-position: right 0.75rem center, center right 2.25rem;\n background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {\n border-color: var(--bs-form-invalid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n}\n\n.was-validated .form-control-color:invalid, .form-control-color.is-invalid {\n width: calc(3rem + calc(1.5em + 0.75rem));\n}\n\n.was-validated .form-check-input:invalid, .form-check-input.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n}\n.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\n background-color: var(--bs-form-invalid-color);\n}\n.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n}\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: var(--bs-form-invalid-color);\n}\n\n.form-check-inline .form-check-input ~ .invalid-feedback {\n margin-left: 0.5em;\n}\n\n.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid,\n.was-validated .input-group > .form-select:not(:focus):invalid,\n.input-group > .form-select:not(:focus).is-invalid,\n.was-validated .input-group > .form-floating:not(:focus-within):invalid,\n.input-group > .form-floating:not(:focus-within).is-invalid {\n z-index: 4;\n}\n\n.btn {\n --bs-btn-padding-x: 0.75rem;\n --bs-btn-padding-y: 0.375rem;\n --bs-btn-font-family: ;\n --bs-btn-font-size: 1rem;\n --bs-btn-font-weight: 400;\n --bs-btn-line-height: 1.5;\n --bs-btn-color: var(--bs-body-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-width: var(--bs-border-width);\n --bs-btn-border-color: transparent;\n --bs-btn-border-radius: var(--bs-border-radius);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n --bs-btn-disabled-opacity: 0.65;\n --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);\n display: inline-block;\n padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);\n font-family: var(--bs-btn-font-family);\n font-size: var(--bs-btn-font-size);\n font-weight: var(--bs-btn-font-weight);\n line-height: var(--bs-btn-line-height);\n color: var(--bs-btn-color);\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);\n border-radius: var(--bs-btn-border-radius);\n background-color: var(--bs-btn-bg);\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .btn {\n transition: none;\n }\n}\n.btn:hover {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n}\n.btn-check + .btn:hover {\n color: var(--bs-btn-color);\n background-color: var(--bs-btn-bg);\n border-color: var(--bs-btn-border-color);\n}\n.btn:focus-visible {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn-check:focus-visible + .btn {\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show {\n color: var(--bs-btn-active-color);\n background-color: var(--bs-btn-active-bg);\n border-color: var(--bs-btn-active-border-color);\n}\n.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible {\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn:disabled, .btn.disabled, fieldset:disabled .btn {\n color: var(--bs-btn-disabled-color);\n pointer-events: none;\n background-color: var(--bs-btn-disabled-bg);\n border-color: var(--bs-btn-disabled-border-color);\n opacity: var(--bs-btn-disabled-opacity);\n}\n\n.btn-primary {\n --bs-btn-color: #fff;\n --bs-btn-bg: #0d6efd;\n --bs-btn-border-color: #0d6efd;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #0b5ed7;\n --bs-btn-hover-border-color: #0a58ca;\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0a58ca;\n --bs-btn-active-border-color: #0a53be;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #0d6efd;\n --bs-btn-disabled-border-color: #0d6efd;\n}\n\n.btn-secondary {\n --bs-btn-color: #fff;\n --bs-btn-bg: #6c757d;\n --bs-btn-border-color: #6c757d;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #5c636a;\n --bs-btn-hover-border-color: #565e64;\n --bs-btn-focus-shadow-rgb: 130, 138, 145;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #565e64;\n --bs-btn-active-border-color: #51585e;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #6c757d;\n --bs-btn-disabled-border-color: #6c757d;\n}\n\n.btn-success {\n --bs-btn-color: #fff;\n --bs-btn-bg: #198754;\n --bs-btn-border-color: #198754;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #157347;\n --bs-btn-hover-border-color: #146c43;\n --bs-btn-focus-shadow-rgb: 60, 153, 110;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #146c43;\n --bs-btn-active-border-color: #13653f;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #198754;\n --bs-btn-disabled-border-color: #198754;\n}\n\n.btn-info {\n --bs-btn-color: #000;\n --bs-btn-bg: #0dcaf0;\n --bs-btn-border-color: #0dcaf0;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #31d2f2;\n --bs-btn-hover-border-color: #25cff2;\n --bs-btn-focus-shadow-rgb: 11, 172, 204;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #3dd5f3;\n --bs-btn-active-border-color: #25cff2;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #0dcaf0;\n --bs-btn-disabled-border-color: #0dcaf0;\n}\n\n.btn-warning {\n --bs-btn-color: #000;\n --bs-btn-bg: #ffc107;\n --bs-btn-border-color: #ffc107;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #ffca2c;\n --bs-btn-hover-border-color: #ffc720;\n --bs-btn-focus-shadow-rgb: 217, 164, 6;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #ffcd39;\n --bs-btn-active-border-color: #ffc720;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #ffc107;\n --bs-btn-disabled-border-color: #ffc107;\n}\n\n.btn-danger {\n --bs-btn-color: #fff;\n --bs-btn-bg: #dc3545;\n --bs-btn-border-color: #dc3545;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #bb2d3b;\n --bs-btn-hover-border-color: #b02a37;\n --bs-btn-focus-shadow-rgb: 225, 83, 97;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #b02a37;\n --bs-btn-active-border-color: #a52834;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #dc3545;\n --bs-btn-disabled-border-color: #dc3545;\n}\n\n.btn-light {\n --bs-btn-color: #000;\n --bs-btn-bg: #f8f9fa;\n --bs-btn-border-color: #f8f9fa;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #d3d4d5;\n --bs-btn-hover-border-color: #c6c7c8;\n --bs-btn-focus-shadow-rgb: 211, 212, 213;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #c6c7c8;\n --bs-btn-active-border-color: #babbbc;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #f8f9fa;\n --bs-btn-disabled-border-color: #f8f9fa;\n}\n\n.btn-dark {\n --bs-btn-color: #fff;\n --bs-btn-bg: #212529;\n --bs-btn-border-color: #212529;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #424649;\n --bs-btn-hover-border-color: #373b3e;\n --bs-btn-focus-shadow-rgb: 66, 70, 73;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #4d5154;\n --bs-btn-active-border-color: #373b3e;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #212529;\n --bs-btn-disabled-border-color: #212529;\n}\n\n.btn-outline-primary {\n --bs-btn-color: #0d6efd;\n --bs-btn-border-color: #0d6efd;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #0d6efd;\n --bs-btn-hover-border-color: #0d6efd;\n --bs-btn-focus-shadow-rgb: 13, 110, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0d6efd;\n --bs-btn-active-border-color: #0d6efd;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #0d6efd;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #0d6efd;\n --bs-gradient: none;\n}\n\n.btn-outline-secondary {\n --bs-btn-color: #6c757d;\n --bs-btn-border-color: #6c757d;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #6c757d;\n --bs-btn-hover-border-color: #6c757d;\n --bs-btn-focus-shadow-rgb: 108, 117, 125;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #6c757d;\n --bs-btn-active-border-color: #6c757d;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #6c757d;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #6c757d;\n --bs-gradient: none;\n}\n\n.btn-outline-success {\n --bs-btn-color: #198754;\n --bs-btn-border-color: #198754;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #198754;\n --bs-btn-hover-border-color: #198754;\n --bs-btn-focus-shadow-rgb: 25, 135, 84;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #198754;\n --bs-btn-active-border-color: #198754;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #198754;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #198754;\n --bs-gradient: none;\n}\n\n.btn-outline-info {\n --bs-btn-color: #0dcaf0;\n --bs-btn-border-color: #0dcaf0;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #0dcaf0;\n --bs-btn-hover-border-color: #0dcaf0;\n --bs-btn-focus-shadow-rgb: 13, 202, 240;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #0dcaf0;\n --bs-btn-active-border-color: #0dcaf0;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #0dcaf0;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #0dcaf0;\n --bs-gradient: none;\n}\n\n.btn-outline-warning {\n --bs-btn-color: #ffc107;\n --bs-btn-border-color: #ffc107;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #ffc107;\n --bs-btn-hover-border-color: #ffc107;\n --bs-btn-focus-shadow-rgb: 255, 193, 7;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #ffc107;\n --bs-btn-active-border-color: #ffc107;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #ffc107;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #ffc107;\n --bs-gradient: none;\n}\n\n.btn-outline-danger {\n --bs-btn-color: #dc3545;\n --bs-btn-border-color: #dc3545;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #dc3545;\n --bs-btn-hover-border-color: #dc3545;\n --bs-btn-focus-shadow-rgb: 220, 53, 69;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #dc3545;\n --bs-btn-active-border-color: #dc3545;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #dc3545;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #dc3545;\n --bs-gradient: none;\n}\n\n.btn-outline-light {\n --bs-btn-color: #f8f9fa;\n --bs-btn-border-color: #f8f9fa;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #f8f9fa;\n --bs-btn-hover-border-color: #f8f9fa;\n --bs-btn-focus-shadow-rgb: 248, 249, 250;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #f8f9fa;\n --bs-btn-active-border-color: #f8f9fa;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #f8f9fa;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #f8f9fa;\n --bs-gradient: none;\n}\n\n.btn-outline-dark {\n --bs-btn-color: #212529;\n --bs-btn-border-color: #212529;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #212529;\n --bs-btn-hover-border-color: #212529;\n --bs-btn-focus-shadow-rgb: 33, 37, 41;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #212529;\n --bs-btn-active-border-color: #212529;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #212529;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #212529;\n --bs-gradient: none;\n}\n\n.btn-link {\n --bs-btn-font-weight: 400;\n --bs-btn-color: var(--bs-link-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-color: transparent;\n --bs-btn-hover-color: var(--bs-link-hover-color);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-active-color: var(--bs-link-hover-color);\n --bs-btn-active-border-color: transparent;\n --bs-btn-disabled-color: #6c757d;\n --bs-btn-disabled-border-color: transparent;\n --bs-btn-box-shadow: 0 0 0 #000;\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n text-decoration: underline;\n}\n.btn-link:focus-visible {\n color: var(--bs-btn-color);\n}\n.btn-link:hover {\n color: var(--bs-btn-hover-color);\n}\n\n.btn-lg, .btn-group-lg > .btn {\n --bs-btn-padding-y: 0.5rem;\n --bs-btn-padding-x: 1rem;\n --bs-btn-font-size: 1.25rem;\n --bs-btn-border-radius: var(--bs-border-radius-lg);\n}\n\n.btn-sm, .btn-group-sm > .btn {\n --bs-btn-padding-y: 0.25rem;\n --bs-btn-padding-x: 0.5rem;\n --bs-btn-font-size: 0.875rem;\n --bs-btn-border-radius: var(--bs-border-radius-sm);\n}\n\n.fade {\n transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n .fade {\n transition: none;\n }\n}\n.fade:not(.show) {\n opacity: 0;\n}\n\n.collapse:not(.show) {\n display: none;\n}\n\n.collapsing {\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .collapsing {\n transition: none;\n }\n}\n.collapsing.collapse-horizontal {\n width: 0;\n height: auto;\n transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .collapsing.collapse-horizontal {\n transition: none;\n }\n}\n\n.dropup,\n.dropend,\n.dropdown,\n.dropstart,\n.dropup-center,\n.dropdown-center {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n}\n.dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n --bs-dropdown-zindex: 1000;\n --bs-dropdown-min-width: 10rem;\n --bs-dropdown-padding-x: 0;\n --bs-dropdown-padding-y: 0.5rem;\n --bs-dropdown-spacer: 0.125rem;\n --bs-dropdown-font-size: 1rem;\n --bs-dropdown-color: var(--bs-body-color);\n --bs-dropdown-bg: var(--bs-body-bg);\n --bs-dropdown-border-color: var(--bs-border-color-translucent);\n --bs-dropdown-border-radius: var(--bs-border-radius);\n --bs-dropdown-border-width: var(--bs-border-width);\n --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));\n --bs-dropdown-divider-bg: var(--bs-border-color-translucent);\n --bs-dropdown-divider-margin-y: 0.5rem;\n --bs-dropdown-box-shadow: var(--bs-box-shadow);\n --bs-dropdown-link-color: var(--bs-body-color);\n --bs-dropdown-link-hover-color: var(--bs-body-color);\n --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);\n --bs-dropdown-link-active-color: #fff;\n --bs-dropdown-link-active-bg: #0d6efd;\n --bs-dropdown-link-disabled-color: var(--bs-tertiary-color);\n --bs-dropdown-item-padding-x: 1rem;\n --bs-dropdown-item-padding-y: 0.25rem;\n --bs-dropdown-header-color: #6c757d;\n --bs-dropdown-header-padding-x: 1rem;\n --bs-dropdown-header-padding-y: 0.5rem;\n position: absolute;\n z-index: var(--bs-dropdown-zindex);\n display: none;\n min-width: var(--bs-dropdown-min-width);\n padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);\n margin: 0;\n font-size: var(--bs-dropdown-font-size);\n color: var(--bs-dropdown-color);\n text-align: left;\n list-style: none;\n background-color: var(--bs-dropdown-bg);\n background-clip: padding-box;\n border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);\n border-radius: var(--bs-dropdown-border-radius);\n}\n.dropdown-menu[data-bs-popper] {\n top: 100%;\n left: 0;\n margin-top: var(--bs-dropdown-spacer);\n}\n\n.dropdown-menu-start {\n --bs-position: start;\n}\n.dropdown-menu-start[data-bs-popper] {\n right: auto;\n left: 0;\n}\n\n.dropdown-menu-end {\n --bs-position: end;\n}\n.dropdown-menu-end[data-bs-popper] {\n right: 0;\n left: auto;\n}\n\n@media (min-width: 576px) {\n .dropdown-menu-sm-start {\n --bs-position: start;\n }\n .dropdown-menu-sm-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-sm-end {\n --bs-position: end;\n }\n .dropdown-menu-sm-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 768px) {\n .dropdown-menu-md-start {\n --bs-position: start;\n }\n .dropdown-menu-md-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-md-end {\n --bs-position: end;\n }\n .dropdown-menu-md-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 992px) {\n .dropdown-menu-lg-start {\n --bs-position: start;\n }\n .dropdown-menu-lg-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-lg-end {\n --bs-position: end;\n }\n .dropdown-menu-lg-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 1200px) {\n .dropdown-menu-xl-start {\n --bs-position: start;\n }\n .dropdown-menu-xl-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xl-end {\n --bs-position: end;\n }\n .dropdown-menu-xl-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 1400px) {\n .dropdown-menu-xxl-start {\n --bs-position: start;\n }\n .dropdown-menu-xxl-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xxl-end {\n --bs-position: end;\n }\n .dropdown-menu-xxl-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n.dropup .dropdown-menu[data-bs-popper] {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: var(--bs-dropdown-spacer);\n}\n.dropup .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropend .dropdown-menu[data-bs-popper] {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: var(--bs-dropdown-spacer);\n}\n.dropend .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n.dropend .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropend .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropstart .dropdown-menu[data-bs-popper] {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: var(--bs-dropdown-spacer);\n}\n.dropstart .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n.dropstart .dropdown-toggle::after {\n display: none;\n}\n.dropstart .dropdown-toggle::before {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n.dropstart .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropstart .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-divider {\n height: 0;\n margin: var(--bs-dropdown-divider-margin-y) 0;\n overflow: hidden;\n border-top: 1px solid var(--bs-dropdown-divider-bg);\n opacity: 1;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);\n clear: both;\n font-weight: 400;\n color: var(--bs-dropdown-link-color);\n text-align: inherit;\n text-decoration: none;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n border-radius: var(--bs-dropdown-item-border-radius, 0);\n}\n.dropdown-item:hover, .dropdown-item:focus {\n color: var(--bs-dropdown-link-hover-color);\n background-color: var(--bs-dropdown-link-hover-bg);\n}\n.dropdown-item.active, .dropdown-item:active {\n color: var(--bs-dropdown-link-active-color);\n text-decoration: none;\n background-color: var(--bs-dropdown-link-active-bg);\n}\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: var(--bs-dropdown-link-disabled-color);\n pointer-events: none;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);\n margin-bottom: 0;\n font-size: 0.875rem;\n color: var(--bs-dropdown-header-color);\n white-space: nowrap;\n}\n\n.dropdown-item-text {\n display: block;\n padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);\n color: var(--bs-dropdown-link-color);\n}\n\n.dropdown-menu-dark {\n --bs-dropdown-color: #dee2e6;\n --bs-dropdown-bg: #343a40;\n --bs-dropdown-border-color: var(--bs-border-color-translucent);\n --bs-dropdown-box-shadow: ;\n --bs-dropdown-link-color: #dee2e6;\n --bs-dropdown-link-hover-color: #fff;\n --bs-dropdown-divider-bg: var(--bs-border-color-translucent);\n --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);\n --bs-dropdown-link-active-color: #fff;\n --bs-dropdown-link-active-bg: #0d6efd;\n --bs-dropdown-link-disabled-color: #adb5bd;\n --bs-dropdown-header-color: #adb5bd;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 1 1 auto;\n}\n.btn-group > .btn-check:checked + .btn,\n.btn-group > .btn-check:focus + .btn,\n.btn-group > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn-check:checked + .btn,\n.btn-group-vertical > .btn-check:focus + .btn,\n.btn-group-vertical > .btn:hover,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group {\n border-radius: var(--bs-border-radius);\n}\n.btn-group > :not(.btn-check:first-child) + .btn,\n.btn-group > .btn-group:not(:first-child) {\n margin-left: calc(var(--bs-border-width) * -1);\n}\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn.dropdown-toggle-split:first-child,\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:nth-child(n+3),\n.btn-group > :not(.btn-check) + .btn,\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {\n margin-left: 0;\n}\n.dropstart .dropdown-toggle-split::before {\n margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n width: 100%;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n margin-top: calc(var(--bs-border-width) * -1);\n}\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn ~ .btn,\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav {\n --bs-nav-link-padding-x: 1rem;\n --bs-nav-link-padding-y: 0.5rem;\n --bs-nav-link-font-weight: ;\n --bs-nav-link-color: var(--bs-link-color);\n --bs-nav-link-hover-color: var(--bs-link-hover-color);\n --bs-nav-link-disabled-color: var(--bs-secondary-color);\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);\n font-size: var(--bs-nav-link-font-size);\n font-weight: var(--bs-nav-link-font-weight);\n color: var(--bs-nav-link-color);\n text-decoration: none;\n background: none;\n border: 0;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .nav-link {\n transition: none;\n }\n}\n.nav-link:hover, .nav-link:focus {\n color: var(--bs-nav-link-hover-color);\n}\n.nav-link:focus-visible {\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.nav-link.disabled, .nav-link:disabled {\n color: var(--bs-nav-link-disabled-color);\n pointer-events: none;\n cursor: default;\n}\n\n.nav-tabs {\n --bs-nav-tabs-border-width: var(--bs-border-width);\n --bs-nav-tabs-border-color: var(--bs-border-color);\n --bs-nav-tabs-border-radius: var(--bs-border-radius);\n --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);\n --bs-nav-tabs-link-active-color: var(--bs-emphasis-color);\n --bs-nav-tabs-link-active-bg: var(--bs-body-bg);\n --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);\n border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color);\n}\n.nav-tabs .nav-link {\n margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width));\n border: var(--bs-nav-tabs-border-width) solid transparent;\n border-top-left-radius: var(--bs-nav-tabs-border-radius);\n border-top-right-radius: var(--bs-nav-tabs-border-radius);\n}\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n isolation: isolate;\n border-color: var(--bs-nav-tabs-link-hover-border-color);\n}\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: var(--bs-nav-tabs-link-active-color);\n background-color: var(--bs-nav-tabs-link-active-bg);\n border-color: var(--bs-nav-tabs-link-active-border-color);\n}\n.nav-tabs .dropdown-menu {\n margin-top: calc(-1 * var(--bs-nav-tabs-border-width));\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills {\n --bs-nav-pills-border-radius: var(--bs-border-radius);\n --bs-nav-pills-link-active-color: #fff;\n --bs-nav-pills-link-active-bg: #0d6efd;\n}\n.nav-pills .nav-link {\n border-radius: var(--bs-nav-pills-border-radius);\n}\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: var(--bs-nav-pills-link-active-color);\n background-color: var(--bs-nav-pills-link-active-bg);\n}\n\n.nav-underline {\n --bs-nav-underline-gap: 1rem;\n --bs-nav-underline-border-width: 0.125rem;\n --bs-nav-underline-link-active-color: var(--bs-emphasis-color);\n gap: var(--bs-nav-underline-gap);\n}\n.nav-underline .nav-link {\n padding-right: 0;\n padding-left: 0;\n border-bottom: var(--bs-nav-underline-border-width) solid transparent;\n}\n.nav-underline .nav-link:hover, .nav-underline .nav-link:focus {\n border-bottom-color: currentcolor;\n}\n.nav-underline .nav-link.active,\n.nav-underline .show > .nav-link {\n font-weight: 700;\n color: var(--bs-nav-underline-link-active-color);\n border-bottom-color: currentcolor;\n}\n\n.nav-fill > .nav-link,\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified > .nav-link,\n.nav-justified .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n}\n\n.nav-fill .nav-item .nav-link,\n.nav-justified .nav-item .nav-link {\n width: 100%;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n --bs-navbar-padding-x: 0;\n --bs-navbar-padding-y: 0.5rem;\n --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65);\n --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8);\n --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3);\n --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-brand-padding-y: 0.3125rem;\n --bs-navbar-brand-margin-end: 1rem;\n --bs-navbar-brand-font-size: 1.25rem;\n --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-nav-link-padding-x: 0.5rem;\n --bs-navbar-toggler-padding-y: 0.25rem;\n --bs-navbar-toggler-padding-x: 0.75rem;\n --bs-navbar-toggler-font-size: 1.25rem;\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15);\n --bs-navbar-toggler-border-radius: var(--bs-border-radius);\n --bs-navbar-toggler-focus-width: 0.25rem;\n --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);\n}\n.navbar > .container,\n.navbar > .container-fluid,\n.navbar > .container-sm,\n.navbar > .container-md,\n.navbar > .container-lg,\n.navbar > .container-xl,\n.navbar > .container-xxl {\n display: flex;\n flex-wrap: inherit;\n align-items: center;\n justify-content: space-between;\n}\n.navbar-brand {\n padding-top: var(--bs-navbar-brand-padding-y);\n padding-bottom: var(--bs-navbar-brand-padding-y);\n margin-right: var(--bs-navbar-brand-margin-end);\n font-size: var(--bs-navbar-brand-font-size);\n color: var(--bs-navbar-brand-color);\n text-decoration: none;\n white-space: nowrap;\n}\n.navbar-brand:hover, .navbar-brand:focus {\n color: var(--bs-navbar-brand-hover-color);\n}\n\n.navbar-nav {\n --bs-nav-link-padding-x: 0;\n --bs-nav-link-padding-y: 0.5rem;\n --bs-nav-link-font-weight: ;\n --bs-nav-link-color: var(--bs-navbar-color);\n --bs-nav-link-hover-color: var(--bs-navbar-hover-color);\n --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.navbar-nav .nav-link.active, .navbar-nav .nav-link.show {\n color: var(--bs-navbar-active-color);\n}\n.navbar-nav .dropdown-menu {\n position: static;\n}\n\n.navbar-text {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-navbar-color);\n}\n.navbar-text a,\n.navbar-text a:hover,\n.navbar-text a:focus {\n color: var(--bs-navbar-active-color);\n}\n\n.navbar-collapse {\n flex-basis: 100%;\n flex-grow: 1;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);\n font-size: var(--bs-navbar-toggler-font-size);\n line-height: 1;\n color: var(--bs-navbar-color);\n background-color: transparent;\n border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);\n border-radius: var(--bs-navbar-toggler-border-radius);\n transition: var(--bs-navbar-toggler-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .navbar-toggler {\n transition: none;\n }\n}\n.navbar-toggler:hover {\n text-decoration: none;\n}\n.navbar-toggler:focus {\n text-decoration: none;\n outline: 0;\n box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width);\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n background-image: var(--bs-navbar-toggler-icon-bg);\n background-repeat: no-repeat;\n background-position: center;\n background-size: 100%;\n}\n\n.navbar-nav-scroll {\n max-height: var(--bs-scroll-height, 75vh);\n overflow-y: auto;\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-sm .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n .navbar-expand-sm .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-sm .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-sm .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-md .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n .navbar-expand-md .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-md .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-md .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-lg .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n .navbar-expand-lg .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-lg .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-lg .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-xl .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n .navbar-expand-xl .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-xl .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-xl .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 1400px) {\n .navbar-expand-xxl {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xxl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xxl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xxl .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-xxl .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-xxl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xxl .navbar-toggler {\n display: none;\n }\n .navbar-expand-xxl .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-xxl .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-xxl .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n.navbar-expand {\n flex-wrap: nowrap;\n justify-content: flex-start;\n}\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n.navbar-expand .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n}\n.navbar-expand .navbar-nav-scroll {\n overflow: visible;\n}\n.navbar-expand .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n}\n.navbar-expand .navbar-toggler {\n display: none;\n}\n.navbar-expand .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n}\n.navbar-expand .offcanvas .offcanvas-header {\n display: none;\n}\n.navbar-expand .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n}\n\n.navbar-dark,\n.navbar[data-bs-theme=dark] {\n --bs-navbar-color: rgba(255, 255, 255, 0.55);\n --bs-navbar-hover-color: rgba(255, 255, 255, 0.75);\n --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);\n --bs-navbar-active-color: #fff;\n --bs-navbar-brand-color: #fff;\n --bs-navbar-brand-hover-color: #fff;\n --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n[data-bs-theme=dark] .navbar-toggler-icon {\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.card {\n --bs-card-spacer-y: 1rem;\n --bs-card-spacer-x: 1rem;\n --bs-card-title-spacer-y: 0.5rem;\n --bs-card-title-color: ;\n --bs-card-subtitle-color: ;\n --bs-card-border-width: var(--bs-border-width);\n --bs-card-border-color: var(--bs-border-color-translucent);\n --bs-card-border-radius: var(--bs-border-radius);\n --bs-card-box-shadow: ;\n --bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));\n --bs-card-cap-padding-y: 0.5rem;\n --bs-card-cap-padding-x: 1rem;\n --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);\n --bs-card-cap-color: ;\n --bs-card-height: ;\n --bs-card-color: ;\n --bs-card-bg: var(--bs-body-bg);\n --bs-card-img-overlay-padding: 1rem;\n --bs-card-group-margin: 0.75rem;\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n height: var(--bs-card-height);\n color: var(--bs-body-color);\n word-wrap: break-word;\n background-color: var(--bs-card-bg);\n background-clip: border-box;\n border: var(--bs-card-border-width) solid var(--bs-card-border-color);\n border-radius: var(--bs-card-border-radius);\n}\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n.card > .list-group {\n border-top: inherit;\n border-bottom: inherit;\n}\n.card > .list-group:first-child {\n border-top-width: 0;\n border-top-left-radius: var(--bs-card-inner-border-radius);\n border-top-right-radius: var(--bs-card-inner-border-radius);\n}\n.card > .list-group:last-child {\n border-bottom-width: 0;\n border-bottom-right-radius: var(--bs-card-inner-border-radius);\n border-bottom-left-radius: var(--bs-card-inner-border-radius);\n}\n.card > .card-header + .list-group,\n.card > .list-group + .card-footer {\n border-top: 0;\n}\n\n.card-body {\n flex: 1 1 auto;\n padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x);\n color: var(--bs-card-color);\n}\n\n.card-title {\n margin-bottom: var(--bs-card-title-spacer-y);\n color: var(--bs-card-title-color);\n}\n\n.card-subtitle {\n margin-top: calc(-0.5 * var(--bs-card-title-spacer-y));\n margin-bottom: 0;\n color: var(--bs-card-subtitle-color);\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link + .card-link {\n margin-left: var(--bs-card-spacer-x);\n}\n\n.card-header {\n padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);\n margin-bottom: 0;\n color: var(--bs-card-cap-color);\n background-color: var(--bs-card-cap-bg);\n border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color);\n}\n.card-header:first-child {\n border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0;\n}\n\n.card-footer {\n padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);\n color: var(--bs-card-cap-color);\n background-color: var(--bs-card-cap-bg);\n border-top: var(--bs-card-border-width) solid var(--bs-card-border-color);\n}\n.card-footer:last-child {\n border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius);\n}\n\n.card-header-tabs {\n margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));\n margin-bottom: calc(-1 * var(--bs-card-cap-padding-y));\n margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));\n border-bottom: 0;\n}\n.card-header-tabs .nav-link.active {\n background-color: var(--bs-card-bg);\n border-bottom-color: var(--bs-card-bg);\n}\n\n.card-header-pills {\n margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));\n margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: var(--bs-card-img-overlay-padding);\n border-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n width: 100%;\n}\n\n.card-img,\n.card-img-top {\n border-top-left-radius: var(--bs-card-inner-border-radius);\n border-top-right-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-img,\n.card-img-bottom {\n border-bottom-right-radius: var(--bs-card-inner-border-radius);\n border-bottom-left-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-group > .card {\n margin-bottom: var(--bs-card-group-margin);\n}\n@media (min-width: 576px) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n }\n .card-group > .card {\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-top,\n .card-group > .card:not(:last-child) .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-bottom,\n .card-group > .card:not(:last-child) .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-top,\n .card-group > .card:not(:first-child) .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-bottom,\n .card-group > .card:not(:first-child) .card-footer {\n border-bottom-left-radius: 0;\n }\n}\n\n.accordion {\n --bs-accordion-color: var(--bs-body-color);\n --bs-accordion-bg: var(--bs-body-bg);\n --bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;\n --bs-accordion-border-color: var(--bs-border-color);\n --bs-accordion-border-width: var(--bs-border-width);\n --bs-accordion-border-radius: var(--bs-border-radius);\n --bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));\n --bs-accordion-btn-padding-x: 1.25rem;\n --bs-accordion-btn-padding-y: 1rem;\n --bs-accordion-btn-color: var(--bs-body-color);\n --bs-accordion-btn-bg: var(--bs-accordion-bg);\n --bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n --bs-accordion-btn-icon-width: 1.25rem;\n --bs-accordion-btn-icon-transform: rotate(-180deg);\n --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;\n --bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n --bs-accordion-btn-focus-border-color: #86b7fe;\n --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n --bs-accordion-body-padding-x: 1.25rem;\n --bs-accordion-body-padding-y: 1rem;\n --bs-accordion-active-color: var(--bs-primary-text-emphasis);\n --bs-accordion-active-bg: var(--bs-primary-bg-subtle);\n}\n\n.accordion-button {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);\n font-size: 1rem;\n color: var(--bs-accordion-btn-color);\n text-align: left;\n background-color: var(--bs-accordion-btn-bg);\n border: 0;\n border-radius: 0;\n overflow-anchor: none;\n transition: var(--bs-accordion-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .accordion-button {\n transition: none;\n }\n}\n.accordion-button:not(.collapsed) {\n color: var(--bs-accordion-active-color);\n background-color: var(--bs-accordion-active-bg);\n box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color);\n}\n.accordion-button:not(.collapsed)::after {\n background-image: var(--bs-accordion-btn-active-icon);\n transform: var(--bs-accordion-btn-icon-transform);\n}\n.accordion-button::after {\n flex-shrink: 0;\n width: var(--bs-accordion-btn-icon-width);\n height: var(--bs-accordion-btn-icon-width);\n margin-left: auto;\n content: \"\";\n background-image: var(--bs-accordion-btn-icon);\n background-repeat: no-repeat;\n background-size: var(--bs-accordion-btn-icon-width);\n transition: var(--bs-accordion-btn-icon-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .accordion-button::after {\n transition: none;\n }\n}\n.accordion-button:hover {\n z-index: 2;\n}\n.accordion-button:focus {\n z-index: 3;\n border-color: var(--bs-accordion-btn-focus-border-color);\n outline: 0;\n box-shadow: var(--bs-accordion-btn-focus-box-shadow);\n}\n\n.accordion-header {\n margin-bottom: 0;\n}\n\n.accordion-item {\n color: var(--bs-accordion-color);\n background-color: var(--bs-accordion-bg);\n border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color);\n}\n.accordion-item:first-of-type {\n border-top-left-radius: var(--bs-accordion-border-radius);\n border-top-right-radius: var(--bs-accordion-border-radius);\n}\n.accordion-item:first-of-type .accordion-button {\n border-top-left-radius: var(--bs-accordion-inner-border-radius);\n border-top-right-radius: var(--bs-accordion-inner-border-radius);\n}\n.accordion-item:not(:first-of-type) {\n border-top: 0;\n}\n.accordion-item:last-of-type {\n border-bottom-right-radius: var(--bs-accordion-border-radius);\n border-bottom-left-radius: var(--bs-accordion-border-radius);\n}\n.accordion-item:last-of-type .accordion-button.collapsed {\n border-bottom-right-radius: var(--bs-accordion-inner-border-radius);\n border-bottom-left-radius: var(--bs-accordion-inner-border-radius);\n}\n.accordion-item:last-of-type .accordion-collapse {\n border-bottom-right-radius: var(--bs-accordion-border-radius);\n border-bottom-left-radius: var(--bs-accordion-border-radius);\n}\n\n.accordion-body {\n padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x);\n}\n\n.accordion-flush .accordion-collapse {\n border-width: 0;\n}\n.accordion-flush .accordion-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n.accordion-flush .accordion-item:first-child {\n border-top: 0;\n}\n.accordion-flush .accordion-item:last-child {\n border-bottom: 0;\n}\n.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed {\n border-radius: 0;\n}\n\n[data-bs-theme=dark] .accordion-button::after {\n --bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n --bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n}\n\n.breadcrumb {\n --bs-breadcrumb-padding-x: 0;\n --bs-breadcrumb-padding-y: 0;\n --bs-breadcrumb-margin-bottom: 1rem;\n --bs-breadcrumb-bg: ;\n --bs-breadcrumb-border-radius: ;\n --bs-breadcrumb-divider-color: var(--bs-secondary-color);\n --bs-breadcrumb-item-padding-x: 0.5rem;\n --bs-breadcrumb-item-active-color: var(--bs-secondary-color);\n display: flex;\n flex-wrap: wrap;\n padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);\n margin-bottom: var(--bs-breadcrumb-margin-bottom);\n font-size: var(--bs-breadcrumb-font-size);\n list-style: none;\n background-color: var(--bs-breadcrumb-bg);\n border-radius: var(--bs-breadcrumb-border-radius);\n}\n\n.breadcrumb-item + .breadcrumb-item {\n padding-left: var(--bs-breadcrumb-item-padding-x);\n}\n.breadcrumb-item + .breadcrumb-item::before {\n float: left;\n padding-right: var(--bs-breadcrumb-item-padding-x);\n color: var(--bs-breadcrumb-divider-color);\n content: var(--bs-breadcrumb-divider, \"/\") /* rtl: var(--bs-breadcrumb-divider, \"/\") */;\n}\n.breadcrumb-item.active {\n color: var(--bs-breadcrumb-item-active-color);\n}\n\n.pagination {\n --bs-pagination-padding-x: 0.75rem;\n --bs-pagination-padding-y: 0.375rem;\n --bs-pagination-font-size: 1rem;\n --bs-pagination-color: var(--bs-link-color);\n --bs-pagination-bg: var(--bs-body-bg);\n --bs-pagination-border-width: var(--bs-border-width);\n --bs-pagination-border-color: var(--bs-border-color);\n --bs-pagination-border-radius: var(--bs-border-radius);\n --bs-pagination-hover-color: var(--bs-link-hover-color);\n --bs-pagination-hover-bg: var(--bs-tertiary-bg);\n --bs-pagination-hover-border-color: var(--bs-border-color);\n --bs-pagination-focus-color: var(--bs-link-hover-color);\n --bs-pagination-focus-bg: var(--bs-secondary-bg);\n --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n --bs-pagination-active-color: #fff;\n --bs-pagination-active-bg: #0d6efd;\n --bs-pagination-active-border-color: #0d6efd;\n --bs-pagination-disabled-color: var(--bs-secondary-color);\n --bs-pagination-disabled-bg: var(--bs-secondary-bg);\n --bs-pagination-disabled-border-color: var(--bs-border-color);\n display: flex;\n padding-left: 0;\n list-style: none;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);\n font-size: var(--bs-pagination-font-size);\n color: var(--bs-pagination-color);\n text-decoration: none;\n background-color: var(--bs-pagination-bg);\n border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .page-link {\n transition: none;\n }\n}\n.page-link:hover {\n z-index: 2;\n color: var(--bs-pagination-hover-color);\n background-color: var(--bs-pagination-hover-bg);\n border-color: var(--bs-pagination-hover-border-color);\n}\n.page-link:focus {\n z-index: 3;\n color: var(--bs-pagination-focus-color);\n background-color: var(--bs-pagination-focus-bg);\n outline: 0;\n box-shadow: var(--bs-pagination-focus-box-shadow);\n}\n.page-link.active, .active > .page-link {\n z-index: 3;\n color: var(--bs-pagination-active-color);\n background-color: var(--bs-pagination-active-bg);\n border-color: var(--bs-pagination-active-border-color);\n}\n.page-link.disabled, .disabled > .page-link {\n color: var(--bs-pagination-disabled-color);\n pointer-events: none;\n background-color: var(--bs-pagination-disabled-bg);\n border-color: var(--bs-pagination-disabled-border-color);\n}\n\n.page-item:not(:first-child) .page-link {\n margin-left: calc(var(--bs-border-width) * -1);\n}\n.page-item:first-child .page-link {\n border-top-left-radius: var(--bs-pagination-border-radius);\n border-bottom-left-radius: var(--bs-pagination-border-radius);\n}\n.page-item:last-child .page-link {\n border-top-right-radius: var(--bs-pagination-border-radius);\n border-bottom-right-radius: var(--bs-pagination-border-radius);\n}\n\n.pagination-lg {\n --bs-pagination-padding-x: 1.5rem;\n --bs-pagination-padding-y: 0.75rem;\n --bs-pagination-font-size: 1.25rem;\n --bs-pagination-border-radius: var(--bs-border-radius-lg);\n}\n\n.pagination-sm {\n --bs-pagination-padding-x: 0.5rem;\n --bs-pagination-padding-y: 0.25rem;\n --bs-pagination-font-size: 0.875rem;\n --bs-pagination-border-radius: var(--bs-border-radius-sm);\n}\n\n.badge {\n --bs-badge-padding-x: 0.65em;\n --bs-badge-padding-y: 0.35em;\n --bs-badge-font-size: 0.75em;\n --bs-badge-font-weight: 700;\n --bs-badge-color: #fff;\n --bs-badge-border-radius: var(--bs-border-radius);\n display: inline-block;\n padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);\n font-size: var(--bs-badge-font-size);\n font-weight: var(--bs-badge-font-weight);\n line-height: 1;\n color: var(--bs-badge-color);\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: var(--bs-badge-border-radius);\n}\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.alert {\n --bs-alert-bg: transparent;\n --bs-alert-padding-x: 1rem;\n --bs-alert-padding-y: 1rem;\n --bs-alert-margin-bottom: 1rem;\n --bs-alert-color: inherit;\n --bs-alert-border-color: transparent;\n --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);\n --bs-alert-border-radius: var(--bs-border-radius);\n --bs-alert-link-color: inherit;\n position: relative;\n padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);\n margin-bottom: var(--bs-alert-margin-bottom);\n color: var(--bs-alert-color);\n background-color: var(--bs-alert-bg);\n border: var(--bs-alert-border);\n border-radius: var(--bs-alert-border-radius);\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n color: var(--bs-alert-link-color);\n}\n\n.alert-dismissible {\n padding-right: 3rem;\n}\n.alert-dismissible .btn-close {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n padding: 1.25rem 1rem;\n}\n\n.alert-primary {\n --bs-alert-color: var(--bs-primary-text-emphasis);\n --bs-alert-bg: var(--bs-primary-bg-subtle);\n --bs-alert-border-color: var(--bs-primary-border-subtle);\n --bs-alert-link-color: var(--bs-primary-text-emphasis);\n}\n\n.alert-secondary {\n --bs-alert-color: var(--bs-secondary-text-emphasis);\n --bs-alert-bg: var(--bs-secondary-bg-subtle);\n --bs-alert-border-color: var(--bs-secondary-border-subtle);\n --bs-alert-link-color: var(--bs-secondary-text-emphasis);\n}\n\n.alert-success {\n --bs-alert-color: var(--bs-success-text-emphasis);\n --bs-alert-bg: var(--bs-success-bg-subtle);\n --bs-alert-border-color: var(--bs-success-border-subtle);\n --bs-alert-link-color: var(--bs-success-text-emphasis);\n}\n\n.alert-info {\n --bs-alert-color: var(--bs-info-text-emphasis);\n --bs-alert-bg: var(--bs-info-bg-subtle);\n --bs-alert-border-color: var(--bs-info-border-subtle);\n --bs-alert-link-color: var(--bs-info-text-emphasis);\n}\n\n.alert-warning {\n --bs-alert-color: var(--bs-warning-text-emphasis);\n --bs-alert-bg: var(--bs-warning-bg-subtle);\n --bs-alert-border-color: var(--bs-warning-border-subtle);\n --bs-alert-link-color: var(--bs-warning-text-emphasis);\n}\n\n.alert-danger {\n --bs-alert-color: var(--bs-danger-text-emphasis);\n --bs-alert-bg: var(--bs-danger-bg-subtle);\n --bs-alert-border-color: var(--bs-danger-border-subtle);\n --bs-alert-link-color: var(--bs-danger-text-emphasis);\n}\n\n.alert-light {\n --bs-alert-color: var(--bs-light-text-emphasis);\n --bs-alert-bg: var(--bs-light-bg-subtle);\n --bs-alert-border-color: var(--bs-light-border-subtle);\n --bs-alert-link-color: var(--bs-light-text-emphasis);\n}\n\n.alert-dark {\n --bs-alert-color: var(--bs-dark-text-emphasis);\n --bs-alert-bg: var(--bs-dark-bg-subtle);\n --bs-alert-border-color: var(--bs-dark-border-subtle);\n --bs-alert-link-color: var(--bs-dark-text-emphasis);\n}\n\n@keyframes progress-bar-stripes {\n 0% {\n background-position-x: 1rem;\n }\n}\n.progress,\n.progress-stacked {\n --bs-progress-height: 1rem;\n --bs-progress-font-size: 0.75rem;\n --bs-progress-bg: var(--bs-secondary-bg);\n --bs-progress-border-radius: var(--bs-border-radius);\n --bs-progress-box-shadow: var(--bs-box-shadow-inset);\n --bs-progress-bar-color: #fff;\n --bs-progress-bar-bg: #0d6efd;\n --bs-progress-bar-transition: width 0.6s ease;\n display: flex;\n height: var(--bs-progress-height);\n overflow: hidden;\n font-size: var(--bs-progress-font-size);\n background-color: var(--bs-progress-bg);\n border-radius: var(--bs-progress-border-radius);\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n color: var(--bs-progress-bar-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--bs-progress-bar-bg);\n transition: var(--bs-progress-bar-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar {\n transition: none;\n }\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: var(--bs-progress-height) var(--bs-progress-height);\n}\n\n.progress-stacked > .progress {\n overflow: visible;\n}\n\n.progress-stacked > .progress > .progress-bar {\n width: 100%;\n}\n\n.progress-bar-animated {\n animation: 1s linear infinite progress-bar-stripes;\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar-animated {\n animation: none;\n }\n}\n\n.list-group {\n --bs-list-group-color: var(--bs-body-color);\n --bs-list-group-bg: var(--bs-body-bg);\n --bs-list-group-border-color: var(--bs-border-color);\n --bs-list-group-border-width: var(--bs-border-width);\n --bs-list-group-border-radius: var(--bs-border-radius);\n --bs-list-group-item-padding-x: 1rem;\n --bs-list-group-item-padding-y: 0.5rem;\n --bs-list-group-action-color: var(--bs-secondary-color);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-tertiary-bg);\n --bs-list-group-action-active-color: var(--bs-body-color);\n --bs-list-group-action-active-bg: var(--bs-secondary-bg);\n --bs-list-group-disabled-color: var(--bs-secondary-color);\n --bs-list-group-disabled-bg: var(--bs-body-bg);\n --bs-list-group-active-color: #fff;\n --bs-list-group-active-bg: #0d6efd;\n --bs-list-group-active-border-color: #0d6efd;\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n border-radius: var(--bs-list-group-border-radius);\n}\n\n.list-group-numbered {\n list-style-type: none;\n counter-reset: section;\n}\n.list-group-numbered > .list-group-item::before {\n content: counters(section, \".\") \". \";\n counter-increment: section;\n}\n\n.list-group-item-action {\n width: 100%;\n color: var(--bs-list-group-action-color);\n text-align: inherit;\n}\n.list-group-item-action:hover, .list-group-item-action:focus {\n z-index: 1;\n color: var(--bs-list-group-action-hover-color);\n text-decoration: none;\n background-color: var(--bs-list-group-action-hover-bg);\n}\n.list-group-item-action:active {\n color: var(--bs-list-group-action-active-color);\n background-color: var(--bs-list-group-action-active-bg);\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);\n color: var(--bs-list-group-color);\n text-decoration: none;\n background-color: var(--bs-list-group-bg);\n border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color);\n}\n.list-group-item:first-child {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n}\n.list-group-item:last-child {\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n}\n.list-group-item.disabled, .list-group-item:disabled {\n color: var(--bs-list-group-disabled-color);\n pointer-events: none;\n background-color: var(--bs-list-group-disabled-bg);\n}\n.list-group-item.active {\n z-index: 2;\n color: var(--bs-list-group-active-color);\n background-color: var(--bs-list-group-active-bg);\n border-color: var(--bs-list-group-active-border-color);\n}\n.list-group-item + .list-group-item {\n border-top-width: 0;\n}\n.list-group-item + .list-group-item.active {\n margin-top: calc(-1 * var(--bs-list-group-border-width));\n border-top-width: var(--bs-list-group-border-width);\n}\n\n.list-group-horizontal {\n flex-direction: row;\n}\n.list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n}\n.list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n}\n.list-group-horizontal > .list-group-item.active {\n margin-top: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n}\n\n@media (min-width: 576px) {\n .list-group-horizontal-sm {\n flex-direction: row;\n }\n .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-sm > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-sm > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 768px) {\n .list-group-horizontal-md {\n flex-direction: row;\n }\n .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-md > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-md > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 992px) {\n .list-group-horizontal-lg {\n flex-direction: row;\n }\n .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-lg > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-lg > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 1200px) {\n .list-group-horizontal-xl {\n flex-direction: row;\n }\n .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-xl > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xl > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 1400px) {\n .list-group-horizontal-xxl {\n flex-direction: row;\n }\n .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-xxl > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xxl > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n.list-group-flush {\n border-radius: 0;\n}\n.list-group-flush > .list-group-item {\n border-width: 0 0 var(--bs-list-group-border-width);\n}\n.list-group-flush > .list-group-item:last-child {\n border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n --bs-list-group-color: var(--bs-primary-text-emphasis);\n --bs-list-group-bg: var(--bs-primary-bg-subtle);\n --bs-list-group-border-color: var(--bs-primary-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-primary-border-subtle);\n --bs-list-group-active-color: var(--bs-primary-bg-subtle);\n --bs-list-group-active-bg: var(--bs-primary-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-primary-text-emphasis);\n}\n\n.list-group-item-secondary {\n --bs-list-group-color: var(--bs-secondary-text-emphasis);\n --bs-list-group-bg: var(--bs-secondary-bg-subtle);\n --bs-list-group-border-color: var(--bs-secondary-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);\n --bs-list-group-active-color: var(--bs-secondary-bg-subtle);\n --bs-list-group-active-bg: var(--bs-secondary-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis);\n}\n\n.list-group-item-success {\n --bs-list-group-color: var(--bs-success-text-emphasis);\n --bs-list-group-bg: var(--bs-success-bg-subtle);\n --bs-list-group-border-color: var(--bs-success-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-success-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-success-border-subtle);\n --bs-list-group-active-color: var(--bs-success-bg-subtle);\n --bs-list-group-active-bg: var(--bs-success-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-success-text-emphasis);\n}\n\n.list-group-item-info {\n --bs-list-group-color: var(--bs-info-text-emphasis);\n --bs-list-group-bg: var(--bs-info-bg-subtle);\n --bs-list-group-border-color: var(--bs-info-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-info-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-info-border-subtle);\n --bs-list-group-active-color: var(--bs-info-bg-subtle);\n --bs-list-group-active-bg: var(--bs-info-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-info-text-emphasis);\n}\n\n.list-group-item-warning {\n --bs-list-group-color: var(--bs-warning-text-emphasis);\n --bs-list-group-bg: var(--bs-warning-bg-subtle);\n --bs-list-group-border-color: var(--bs-warning-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-warning-border-subtle);\n --bs-list-group-active-color: var(--bs-warning-bg-subtle);\n --bs-list-group-active-bg: var(--bs-warning-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-warning-text-emphasis);\n}\n\n.list-group-item-danger {\n --bs-list-group-color: var(--bs-danger-text-emphasis);\n --bs-list-group-bg: var(--bs-danger-bg-subtle);\n --bs-list-group-border-color: var(--bs-danger-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-danger-border-subtle);\n --bs-list-group-active-color: var(--bs-danger-bg-subtle);\n --bs-list-group-active-bg: var(--bs-danger-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-danger-text-emphasis);\n}\n\n.list-group-item-light {\n --bs-list-group-color: var(--bs-light-text-emphasis);\n --bs-list-group-bg: var(--bs-light-bg-subtle);\n --bs-list-group-border-color: var(--bs-light-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-light-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-light-border-subtle);\n --bs-list-group-active-color: var(--bs-light-bg-subtle);\n --bs-list-group-active-bg: var(--bs-light-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-light-text-emphasis);\n}\n\n.list-group-item-dark {\n --bs-list-group-color: var(--bs-dark-text-emphasis);\n --bs-list-group-bg: var(--bs-dark-bg-subtle);\n --bs-list-group-border-color: var(--bs-dark-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-dark-border-subtle);\n --bs-list-group-active-color: var(--bs-dark-bg-subtle);\n --bs-list-group-active-bg: var(--bs-dark-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-dark-text-emphasis);\n}\n\n.btn-close {\n --bs-btn-close-color: #000;\n --bs-btn-close-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e\");\n --bs-btn-close-opacity: 0.5;\n --bs-btn-close-hover-opacity: 0.75;\n --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n --bs-btn-close-focus-opacity: 1;\n --bs-btn-close-disabled-opacity: 0.25;\n --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);\n box-sizing: content-box;\n width: 1em;\n height: 1em;\n padding: 0.25em 0.25em;\n color: var(--bs-btn-close-color);\n background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat;\n border: 0;\n border-radius: 0.375rem;\n opacity: var(--bs-btn-close-opacity);\n}\n.btn-close:hover {\n color: var(--bs-btn-close-color);\n text-decoration: none;\n opacity: var(--bs-btn-close-hover-opacity);\n}\n.btn-close:focus {\n outline: 0;\n box-shadow: var(--bs-btn-close-focus-shadow);\n opacity: var(--bs-btn-close-focus-opacity);\n}\n.btn-close:disabled, .btn-close.disabled {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n opacity: var(--bs-btn-close-disabled-opacity);\n}\n\n.btn-close-white {\n filter: var(--bs-btn-close-white-filter);\n}\n\n[data-bs-theme=dark] .btn-close {\n filter: var(--bs-btn-close-white-filter);\n}\n\n.toast {\n --bs-toast-zindex: 1090;\n --bs-toast-padding-x: 0.75rem;\n --bs-toast-padding-y: 0.5rem;\n --bs-toast-spacing: 1.5rem;\n --bs-toast-max-width: 350px;\n --bs-toast-font-size: 0.875rem;\n --bs-toast-color: ;\n --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);\n --bs-toast-border-width: var(--bs-border-width);\n --bs-toast-border-color: var(--bs-border-color-translucent);\n --bs-toast-border-radius: var(--bs-border-radius);\n --bs-toast-box-shadow: var(--bs-box-shadow);\n --bs-toast-header-color: var(--bs-secondary-color);\n --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);\n --bs-toast-header-border-color: var(--bs-border-color-translucent);\n width: var(--bs-toast-max-width);\n max-width: 100%;\n font-size: var(--bs-toast-font-size);\n color: var(--bs-toast-color);\n pointer-events: auto;\n background-color: var(--bs-toast-bg);\n background-clip: padding-box;\n border: var(--bs-toast-border-width) solid var(--bs-toast-border-color);\n box-shadow: var(--bs-toast-box-shadow);\n border-radius: var(--bs-toast-border-radius);\n}\n.toast.showing {\n opacity: 0;\n}\n.toast:not(.show) {\n display: none;\n}\n\n.toast-container {\n --bs-toast-zindex: 1090;\n position: absolute;\n z-index: var(--bs-toast-zindex);\n width: -webkit-max-content;\n width: -moz-max-content;\n width: max-content;\n max-width: 100%;\n pointer-events: none;\n}\n.toast-container > :not(:last-child) {\n margin-bottom: var(--bs-toast-spacing);\n}\n\n.toast-header {\n display: flex;\n align-items: center;\n padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x);\n color: var(--bs-toast-header-color);\n background-color: var(--bs-toast-header-bg);\n background-clip: padding-box;\n border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);\n border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));\n border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));\n}\n.toast-header .btn-close {\n margin-right: calc(-0.5 * var(--bs-toast-padding-x));\n margin-left: var(--bs-toast-padding-x);\n}\n\n.toast-body {\n padding: var(--bs-toast-padding-x);\n word-wrap: break-word;\n}\n\n.modal {\n --bs-modal-zindex: 1055;\n --bs-modal-width: 500px;\n --bs-modal-padding: 1rem;\n --bs-modal-margin: 0.5rem;\n --bs-modal-color: ;\n --bs-modal-bg: var(--bs-body-bg);\n --bs-modal-border-color: var(--bs-border-color-translucent);\n --bs-modal-border-width: var(--bs-border-width);\n --bs-modal-border-radius: var(--bs-border-radius-lg);\n --bs-modal-box-shadow: var(--bs-box-shadow-sm);\n --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));\n --bs-modal-header-padding-x: 1rem;\n --bs-modal-header-padding-y: 1rem;\n --bs-modal-header-padding: 1rem 1rem;\n --bs-modal-header-border-color: var(--bs-border-color);\n --bs-modal-header-border-width: var(--bs-border-width);\n --bs-modal-title-line-height: 1.5;\n --bs-modal-footer-gap: 0.5rem;\n --bs-modal-footer-bg: ;\n --bs-modal-footer-border-color: var(--bs-border-color);\n --bs-modal-footer-border-width: var(--bs-border-width);\n position: fixed;\n top: 0;\n left: 0;\n z-index: var(--bs-modal-zindex);\n display: none;\n width: 100%;\n height: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n outline: 0;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: var(--bs-modal-margin);\n pointer-events: none;\n}\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -50px);\n}\n@media (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n transition: none;\n }\n}\n.modal.show .modal-dialog {\n transform: none;\n}\n.modal.modal-static .modal-dialog {\n transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n height: calc(100% - var(--bs-modal-margin) * 2);\n}\n.modal-dialog-scrollable .modal-content {\n max-height: 100%;\n overflow: hidden;\n}\n.modal-dialog-scrollable .modal-body {\n overflow-y: auto;\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - var(--bs-modal-margin) * 2);\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n color: var(--bs-modal-color);\n pointer-events: auto;\n background-color: var(--bs-modal-bg);\n background-clip: padding-box;\n border: var(--bs-modal-border-width) solid var(--bs-modal-border-color);\n border-radius: var(--bs-modal-border-radius);\n outline: 0;\n}\n\n.modal-backdrop {\n --bs-backdrop-zindex: 1050;\n --bs-backdrop-bg: #000;\n --bs-backdrop-opacity: 0.5;\n position: fixed;\n top: 0;\n left: 0;\n z-index: var(--bs-backdrop-zindex);\n width: 100vw;\n height: 100vh;\n background-color: var(--bs-backdrop-bg);\n}\n.modal-backdrop.fade {\n opacity: 0;\n}\n.modal-backdrop.show {\n opacity: var(--bs-backdrop-opacity);\n}\n\n.modal-header {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: space-between;\n padding: var(--bs-modal-header-padding);\n border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);\n border-top-left-radius: var(--bs-modal-inner-border-radius);\n border-top-right-radius: var(--bs-modal-inner-border-radius);\n}\n.modal-header .btn-close {\n padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5);\n margin: calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x)) calc(-0.5 * var(--bs-modal-header-padding-y)) auto;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: var(--bs-modal-title-line-height);\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: var(--bs-modal-padding);\n}\n\n.modal-footer {\n display: flex;\n flex-shrink: 0;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5);\n background-color: var(--bs-modal-footer-bg);\n border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);\n border-bottom-right-radius: var(--bs-modal-inner-border-radius);\n border-bottom-left-radius: var(--bs-modal-inner-border-radius);\n}\n.modal-footer > * {\n margin: calc(var(--bs-modal-footer-gap) * 0.5);\n}\n\n@media (min-width: 576px) {\n .modal {\n --bs-modal-margin: 1.75rem;\n --bs-modal-box-shadow: var(--bs-box-shadow);\n }\n .modal-dialog {\n max-width: var(--bs-modal-width);\n margin-right: auto;\n margin-left: auto;\n }\n .modal-sm {\n --bs-modal-width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg,\n .modal-xl {\n --bs-modal-width: 800px;\n }\n}\n@media (min-width: 1200px) {\n .modal-xl {\n --bs-modal-width: 1140px;\n }\n}\n.modal-fullscreen {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n}\n.modal-fullscreen .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n}\n.modal-fullscreen .modal-header,\n.modal-fullscreen .modal-footer {\n border-radius: 0;\n}\n.modal-fullscreen .modal-body {\n overflow-y: auto;\n}\n\n@media (max-width: 575.98px) {\n .modal-fullscreen-sm-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-sm-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-sm-down .modal-header,\n .modal-fullscreen-sm-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-sm-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 767.98px) {\n .modal-fullscreen-md-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-md-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-md-down .modal-header,\n .modal-fullscreen-md-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-md-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 991.98px) {\n .modal-fullscreen-lg-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-lg-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-lg-down .modal-header,\n .modal-fullscreen-lg-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-lg-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 1199.98px) {\n .modal-fullscreen-xl-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-xl-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-xl-down .modal-header,\n .modal-fullscreen-xl-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-xl-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 1399.98px) {\n .modal-fullscreen-xxl-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-xxl-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-xxl-down .modal-header,\n .modal-fullscreen-xxl-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-xxl-down .modal-body {\n overflow-y: auto;\n }\n}\n.tooltip {\n --bs-tooltip-zindex: 1080;\n --bs-tooltip-max-width: 200px;\n --bs-tooltip-padding-x: 0.5rem;\n --bs-tooltip-padding-y: 0.25rem;\n --bs-tooltip-margin: ;\n --bs-tooltip-font-size: 0.875rem;\n --bs-tooltip-color: var(--bs-body-bg);\n --bs-tooltip-bg: var(--bs-emphasis-color);\n --bs-tooltip-border-radius: var(--bs-border-radius);\n --bs-tooltip-opacity: 0.9;\n --bs-tooltip-arrow-width: 0.8rem;\n --bs-tooltip-arrow-height: 0.4rem;\n z-index: var(--bs-tooltip-zindex);\n display: block;\n margin: var(--bs-tooltip-margin);\n font-family: var(--bs-font-sans-serif);\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n white-space: normal;\n word-spacing: normal;\n line-break: auto;\n font-size: var(--bs-tooltip-font-size);\n word-wrap: break-word;\n opacity: 0;\n}\n.tooltip.show {\n opacity: var(--bs-tooltip-opacity);\n}\n.tooltip .tooltip-arrow {\n display: block;\n width: var(--bs-tooltip-arrow-width);\n height: var(--bs-tooltip-arrow-height);\n}\n.tooltip .tooltip-arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {\n bottom: calc(-1 * var(--bs-tooltip-arrow-height));\n}\n.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {\n top: -1px;\n border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;\n border-top-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {\n left: calc(-1 * var(--bs-tooltip-arrow-height));\n width: var(--bs-tooltip-arrow-height);\n height: var(--bs-tooltip-arrow-width);\n}\n.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {\n right: -1px;\n border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;\n border-right-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:end:ignore */\n.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {\n top: calc(-1 * var(--bs-tooltip-arrow-height));\n}\n.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {\n bottom: -1px;\n border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);\n border-bottom-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {\n right: calc(-1 * var(--bs-tooltip-arrow-height));\n width: var(--bs-tooltip-arrow-height);\n height: var(--bs-tooltip-arrow-width);\n}\n.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {\n left: -1px;\n border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);\n border-left-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:end:ignore */\n.tooltip-inner {\n max-width: var(--bs-tooltip-max-width);\n padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);\n color: var(--bs-tooltip-color);\n text-align: center;\n background-color: var(--bs-tooltip-bg);\n border-radius: var(--bs-tooltip-border-radius);\n}\n\n.popover {\n --bs-popover-zindex: 1070;\n --bs-popover-max-width: 276px;\n --bs-popover-font-size: 0.875rem;\n --bs-popover-bg: var(--bs-body-bg);\n --bs-popover-border-width: var(--bs-border-width);\n --bs-popover-border-color: var(--bs-border-color-translucent);\n --bs-popover-border-radius: var(--bs-border-radius-lg);\n --bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));\n --bs-popover-box-shadow: var(--bs-box-shadow);\n --bs-popover-header-padding-x: 1rem;\n --bs-popover-header-padding-y: 0.5rem;\n --bs-popover-header-font-size: 1rem;\n --bs-popover-header-color: inherit;\n --bs-popover-header-bg: var(--bs-secondary-bg);\n --bs-popover-body-padding-x: 1rem;\n --bs-popover-body-padding-y: 1rem;\n --bs-popover-body-color: var(--bs-body-color);\n --bs-popover-arrow-width: 1rem;\n --bs-popover-arrow-height: 0.5rem;\n --bs-popover-arrow-border: var(--bs-popover-border-color);\n z-index: var(--bs-popover-zindex);\n display: block;\n max-width: var(--bs-popover-max-width);\n font-family: var(--bs-font-sans-serif);\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n white-space: normal;\n word-spacing: normal;\n line-break: auto;\n font-size: var(--bs-popover-font-size);\n word-wrap: break-word;\n background-color: var(--bs-popover-bg);\n background-clip: padding-box;\n border: var(--bs-popover-border-width) solid var(--bs-popover-border-color);\n border-radius: var(--bs-popover-border-radius);\n}\n.popover .popover-arrow {\n display: block;\n width: var(--bs-popover-arrow-width);\n height: var(--bs-popover-arrow-height);\n}\n.popover .popover-arrow::before, .popover .popover-arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n border-width: 0;\n}\n\n.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {\n bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {\n bottom: 0;\n border-top-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n bottom: var(--bs-popover-border-width);\n border-top-color: var(--bs-popover-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {\n left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n width: var(--bs-popover-arrow-height);\n height: var(--bs-popover-arrow-width);\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n border-width: calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {\n left: 0;\n border-right-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n left: var(--bs-popover-border-width);\n border-right-color: var(--bs-popover-bg);\n}\n\n/* rtl:end:ignore */\n.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {\n top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {\n top: 0;\n border-bottom-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n top: var(--bs-popover-border-width);\n border-bottom-color: var(--bs-popover-bg);\n}\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: var(--bs-popover-arrow-width);\n margin-left: calc(-0.5 * var(--bs-popover-arrow-width));\n content: \"\";\n border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {\n right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n width: var(--bs-popover-arrow-height);\n height: var(--bs-popover-arrow-width);\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {\n right: 0;\n border-left-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n right: var(--bs-popover-border-width);\n border-left-color: var(--bs-popover-bg);\n}\n\n/* rtl:end:ignore */\n.popover-header {\n padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);\n margin-bottom: 0;\n font-size: var(--bs-popover-header-font-size);\n color: var(--bs-popover-header-color);\n background-color: var(--bs-popover-header-bg);\n border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color);\n border-top-left-radius: var(--bs-popover-inner-border-radius);\n border-top-right-radius: var(--bs-popover-inner-border-radius);\n}\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);\n color: var(--bs-popover-body-color);\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n.carousel-inner::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.carousel-item {\n position: relative;\n display: none;\n float: left;\n width: 100%;\n margin-right: -100%;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transition: transform 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-item {\n transition: none;\n }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n transform: translateX(-100%);\n}\n\n.carousel-fade .carousel-item {\n opacity: 0;\n transition-property: opacity;\n transform: none;\n}\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-start,\n.carousel-fade .carousel-item-prev.carousel-item-end {\n z-index: 1;\n opacity: 1;\n}\n.carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n z-index: 0;\n opacity: 0;\n transition: opacity 0s 0.6s;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-start,\n .carousel-fade .active.carousel-item-end {\n transition: none;\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n padding: 0;\n color: #fff;\n text-align: center;\n background: none;\n border: 0;\n opacity: 0.5;\n transition: opacity 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-control-prev,\n .carousel-control-next {\n transition: none;\n }\n}\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: 0.9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n background-repeat: no-repeat;\n background-position: 50%;\n background-size: 100% 100%;\n}\n\n/* rtl:options: {\n \"autoRename\": true,\n \"stringMap\":[ {\n \"name\" : \"prev-next\",\n \"search\" : \"prev\",\n \"replace\" : \"next\"\n } ]\n} */\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 2;\n display: flex;\n justify-content: center;\n padding: 0;\n margin-right: 15%;\n margin-bottom: 1rem;\n margin-left: 15%;\n}\n.carousel-indicators [data-bs-target] {\n box-sizing: content-box;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n padding: 0;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #fff;\n background-clip: padding-box;\n border: 0;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n opacity: 0.5;\n transition: opacity 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-indicators [data-bs-target] {\n transition: none;\n }\n}\n.carousel-indicators .active {\n opacity: 1;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 1.25rem;\n left: 15%;\n padding-top: 1.25rem;\n padding-bottom: 1.25rem;\n color: #fff;\n text-align: center;\n}\n\n.carousel-dark .carousel-control-prev-icon,\n.carousel-dark .carousel-control-next-icon {\n filter: invert(1) grayscale(100);\n}\n.carousel-dark .carousel-indicators [data-bs-target] {\n background-color: #000;\n}\n.carousel-dark .carousel-caption {\n color: #000;\n}\n\n[data-bs-theme=dark] .carousel .carousel-control-prev-icon,\n[data-bs-theme=dark] .carousel .carousel-control-next-icon, [data-bs-theme=dark].carousel .carousel-control-prev-icon,\n[data-bs-theme=dark].carousel .carousel-control-next-icon {\n filter: invert(1) grayscale(100);\n}\n[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target], [data-bs-theme=dark].carousel .carousel-indicators [data-bs-target] {\n background-color: #000;\n}\n[data-bs-theme=dark] .carousel .carousel-caption, [data-bs-theme=dark].carousel .carousel-caption {\n color: #000;\n}\n\n.spinner-grow,\n.spinner-border {\n display: inline-block;\n width: var(--bs-spinner-width);\n height: var(--bs-spinner-height);\n vertical-align: var(--bs-spinner-vertical-align);\n border-radius: 50%;\n animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);\n}\n\n@keyframes spinner-border {\n to {\n transform: rotate(360deg) /* rtl:ignore */;\n }\n}\n.spinner-border {\n --bs-spinner-width: 2rem;\n --bs-spinner-height: 2rem;\n --bs-spinner-vertical-align: -0.125em;\n --bs-spinner-border-width: 0.25em;\n --bs-spinner-animation-speed: 0.75s;\n --bs-spinner-animation-name: spinner-border;\n border: var(--bs-spinner-border-width) solid currentcolor;\n border-right-color: transparent;\n}\n\n.spinner-border-sm {\n --bs-spinner-width: 1rem;\n --bs-spinner-height: 1rem;\n --bs-spinner-border-width: 0.2em;\n}\n\n@keyframes spinner-grow {\n 0% {\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n transform: none;\n }\n}\n.spinner-grow {\n --bs-spinner-width: 2rem;\n --bs-spinner-height: 2rem;\n --bs-spinner-vertical-align: -0.125em;\n --bs-spinner-animation-speed: 0.75s;\n --bs-spinner-animation-name: spinner-grow;\n background-color: currentcolor;\n opacity: 0;\n}\n\n.spinner-grow-sm {\n --bs-spinner-width: 1rem;\n --bs-spinner-height: 1rem;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .spinner-border,\n .spinner-grow {\n --bs-spinner-animation-speed: 1.5s;\n }\n}\n.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm {\n --bs-offcanvas-zindex: 1045;\n --bs-offcanvas-width: 400px;\n --bs-offcanvas-height: 30vh;\n --bs-offcanvas-padding-x: 1rem;\n --bs-offcanvas-padding-y: 1rem;\n --bs-offcanvas-color: var(--bs-body-color);\n --bs-offcanvas-bg: var(--bs-body-bg);\n --bs-offcanvas-border-width: var(--bs-border-width);\n --bs-offcanvas-border-color: var(--bs-border-color-translucent);\n --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm);\n --bs-offcanvas-transition: transform 0.3s ease-in-out;\n --bs-offcanvas-title-line-height: 1.5;\n}\n\n@media (max-width: 575.98px) {\n .offcanvas-sm {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-sm {\n transition: none;\n }\n}\n@media (max-width: 575.98px) {\n .offcanvas-sm.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-sm.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-sm.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-sm.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show {\n visibility: visible;\n }\n}\n@media (min-width: 576px) {\n .offcanvas-sm {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-sm .offcanvas-header {\n display: none;\n }\n .offcanvas-sm .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 767.98px) {\n .offcanvas-md {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-md {\n transition: none;\n }\n}\n@media (max-width: 767.98px) {\n .offcanvas-md.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-md.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-md.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-md.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show {\n visibility: visible;\n }\n}\n@media (min-width: 768px) {\n .offcanvas-md {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-md .offcanvas-header {\n display: none;\n }\n .offcanvas-md .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 991.98px) {\n .offcanvas-lg {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-lg {\n transition: none;\n }\n}\n@media (max-width: 991.98px) {\n .offcanvas-lg.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-lg.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-lg.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-lg.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show {\n visibility: visible;\n }\n}\n@media (min-width: 992px) {\n .offcanvas-lg {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-lg .offcanvas-header {\n display: none;\n }\n .offcanvas-lg .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 1199.98px) {\n .offcanvas-xl {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-xl {\n transition: none;\n }\n}\n@media (max-width: 1199.98px) {\n .offcanvas-xl.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-xl.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-xl.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-xl.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show {\n visibility: visible;\n }\n}\n@media (min-width: 1200px) {\n .offcanvas-xl {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-xl .offcanvas-header {\n display: none;\n }\n .offcanvas-xl .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 1399.98px) {\n .offcanvas-xxl {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-xxl {\n transition: none;\n }\n}\n@media (max-width: 1399.98px) {\n .offcanvas-xxl.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-xxl.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-xxl.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-xxl.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show {\n visibility: visible;\n }\n}\n@media (min-width: 1400px) {\n .offcanvas-xxl {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-xxl .offcanvas-header {\n display: none;\n }\n .offcanvas-xxl .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n.offcanvas {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .offcanvas {\n transition: none;\n }\n}\n.offcanvas.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n}\n.offcanvas.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n}\n.offcanvas.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n}\n.offcanvas.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n}\n.offcanvas.showing, .offcanvas.show:not(.hiding) {\n transform: none;\n}\n.offcanvas.showing, .offcanvas.hiding, .offcanvas.show {\n visibility: visible;\n}\n\n.offcanvas-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1040;\n width: 100vw;\n height: 100vh;\n background-color: #000;\n}\n.offcanvas-backdrop.fade {\n opacity: 0;\n}\n.offcanvas-backdrop.show {\n opacity: 0.5;\n}\n\n.offcanvas-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);\n}\n.offcanvas-header .btn-close {\n padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5);\n margin-top: calc(-0.5 * var(--bs-offcanvas-padding-y));\n margin-right: calc(-0.5 * var(--bs-offcanvas-padding-x));\n margin-bottom: calc(-0.5 * var(--bs-offcanvas-padding-y));\n}\n\n.offcanvas-title {\n margin-bottom: 0;\n line-height: var(--bs-offcanvas-title-line-height);\n}\n\n.offcanvas-body {\n flex-grow: 1;\n padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);\n overflow-y: auto;\n}\n\n.placeholder {\n display: inline-block;\n min-height: 1em;\n vertical-align: middle;\n cursor: wait;\n background-color: currentcolor;\n opacity: 0.5;\n}\n.placeholder.btn::before {\n display: inline-block;\n content: \"\";\n}\n\n.placeholder-xs {\n min-height: 0.6em;\n}\n\n.placeholder-sm {\n min-height: 0.8em;\n}\n\n.placeholder-lg {\n min-height: 1.2em;\n}\n\n.placeholder-glow .placeholder {\n animation: placeholder-glow 2s ease-in-out infinite;\n}\n\n@keyframes placeholder-glow {\n 50% {\n opacity: 0.2;\n }\n}\n.placeholder-wave {\n -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n -webkit-mask-size: 200% 100%;\n mask-size: 200% 100%;\n animation: placeholder-wave 2s linear infinite;\n}\n\n@keyframes placeholder-wave {\n 100% {\n -webkit-mask-position: -200% 0%;\n mask-position: -200% 0%;\n }\n}\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.text-bg-primary {\n color: #fff !important;\n background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-secondary {\n color: #fff !important;\n background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-success {\n color: #fff !important;\n background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-info {\n color: #000 !important;\n background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-warning {\n color: #000 !important;\n background-color: RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-danger {\n color: #fff !important;\n background-color: RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-light {\n color: #000 !important;\n background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-dark {\n color: #fff !important;\n background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.link-primary {\n color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-primary:hover, .link-primary:focus {\n color: RGBA(10, 88, 202, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-secondary {\n color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-secondary:hover, .link-secondary:focus {\n color: RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-success {\n color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-success:hover, .link-success:focus {\n color: RGBA(20, 108, 67, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-info {\n color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-info:hover, .link-info:focus {\n color: RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-warning {\n color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-warning:hover, .link-warning:focus {\n color: RGBA(255, 205, 57, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-danger {\n color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-danger:hover, .link-danger:focus {\n color: RGBA(176, 42, 55, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-light {\n color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-light:hover, .link-light:focus {\n color: RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-dark {\n color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-dark:hover, .link-dark:focus {\n color: RGBA(26, 30, 33, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-body-emphasis {\n color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-body-emphasis:hover, .link-body-emphasis:focus {\n color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important;\n text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important;\n}\n\n.focus-ring:focus {\n outline: 0;\n box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color);\n}\n\n.icon-link {\n display: inline-flex;\n gap: 0.375rem;\n align-items: center;\n -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));\n text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));\n text-underline-offset: 0.25em;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.icon-link > .bi {\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n fill: currentcolor;\n transition: 0.2s ease-in-out transform;\n}\n@media (prefers-reduced-motion: reduce) {\n .icon-link > .bi {\n transition: none;\n }\n}\n\n.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n transform: var(--bs-icon-link-transform, translate3d(0.25em, 0, 0));\n}\n\n.ratio {\n position: relative;\n width: 100%;\n}\n.ratio::before {\n display: block;\n padding-top: var(--bs-aspect-ratio);\n content: \"\";\n}\n.ratio > * {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.ratio-1x1 {\n --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n --bs-aspect-ratio: 75%;\n}\n\n.ratio-16x9 {\n --bs-aspect-ratio: 56.25%;\n}\n\n.ratio-21x9 {\n --bs-aspect-ratio: 42.8571428571%;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n.sticky-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n}\n\n.sticky-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n}\n\n@media (min-width: 576px) {\n .sticky-sm-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-sm-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 768px) {\n .sticky-md-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-md-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 992px) {\n .sticky-lg-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-lg-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 1200px) {\n .sticky-xl-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-xl-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 1400px) {\n .sticky-xxl-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-xxl-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n.hstack {\n display: flex;\n flex-direction: row;\n align-items: center;\n align-self: stretch;\n}\n\n.vstack {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n.visually-hidden:not(caption),\n.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {\n position: absolute !important;\n}\n\n.stretched-link::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n content: \"\";\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.vr {\n display: inline-block;\n align-self: stretch;\n width: var(--bs-border-width);\n min-height: 1em;\n background-color: currentcolor;\n opacity: 0.25;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.float-start {\n float: left !important;\n}\n\n.float-end {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n.object-fit-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n}\n\n.object-fit-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n}\n\n.object-fit-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n}\n\n.object-fit-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n}\n\n.object-fit-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n}\n\n.opacity-0 {\n opacity: 0 !important;\n}\n\n.opacity-25 {\n opacity: 0.25 !important;\n}\n\n.opacity-50 {\n opacity: 0.5 !important;\n}\n\n.opacity-75 {\n opacity: 0.75 !important;\n}\n\n.opacity-100 {\n opacity: 1 !important;\n}\n\n.overflow-auto {\n overflow: auto !important;\n}\n\n.overflow-hidden {\n overflow: hidden !important;\n}\n\n.overflow-visible {\n overflow: visible !important;\n}\n\n.overflow-scroll {\n overflow: scroll !important;\n}\n\n.overflow-x-auto {\n overflow-x: auto !important;\n}\n\n.overflow-x-hidden {\n overflow-x: hidden !important;\n}\n\n.overflow-x-visible {\n overflow-x: visible !important;\n}\n\n.overflow-x-scroll {\n overflow-x: scroll !important;\n}\n\n.overflow-y-auto {\n overflow-y: auto !important;\n}\n\n.overflow-y-hidden {\n overflow-y: hidden !important;\n}\n\n.overflow-y-visible {\n overflow-y: visible !important;\n}\n\n.overflow-y-scroll {\n overflow-y: scroll !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.shadow {\n box-shadow: var(--bs-box-shadow) !important;\n}\n\n.shadow-sm {\n box-shadow: var(--bs-box-shadow-sm) !important;\n}\n\n.shadow-lg {\n box-shadow: var(--bs-box-shadow-lg) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}\n\n.focus-ring-primary {\n --bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-secondary {\n --bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-success {\n --bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-info {\n --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-warning {\n --bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-danger {\n --bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-light {\n --bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-dark {\n --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity));\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: -webkit-sticky !important;\n position: sticky !important;\n}\n\n.top-0 {\n top: 0 !important;\n}\n\n.top-50 {\n top: 50% !important;\n}\n\n.top-100 {\n top: 100% !important;\n}\n\n.bottom-0 {\n bottom: 0 !important;\n}\n\n.bottom-50 {\n bottom: 50% !important;\n}\n\n.bottom-100 {\n bottom: 100% !important;\n}\n\n.start-0 {\n left: 0 !important;\n}\n\n.start-50 {\n left: 50% !important;\n}\n\n.start-100 {\n left: 100% !important;\n}\n\n.end-0 {\n right: 0 !important;\n}\n\n.end-50 {\n right: 50% !important;\n}\n\n.end-100 {\n right: 100% !important;\n}\n\n.translate-middle {\n transform: translate(-50%, -50%) !important;\n}\n\n.translate-middle-x {\n transform: translateX(-50%) !important;\n}\n\n.translate-middle-y {\n transform: translateY(-50%) !important;\n}\n\n.border {\n border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top {\n border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-end {\n border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-end-0 {\n border-right: 0 !important;\n}\n\n.border-bottom {\n border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-start {\n border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-start-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-secondary {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-success {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-info {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-warning {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-danger {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-light {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-dark {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-black {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-white {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-primary-subtle {\n border-color: var(--bs-primary-border-subtle) !important;\n}\n\n.border-secondary-subtle {\n border-color: var(--bs-secondary-border-subtle) !important;\n}\n\n.border-success-subtle {\n border-color: var(--bs-success-border-subtle) !important;\n}\n\n.border-info-subtle {\n border-color: var(--bs-info-border-subtle) !important;\n}\n\n.border-warning-subtle {\n border-color: var(--bs-warning-border-subtle) !important;\n}\n\n.border-danger-subtle {\n border-color: var(--bs-danger-border-subtle) !important;\n}\n\n.border-light-subtle {\n border-color: var(--bs-light-border-subtle) !important;\n}\n\n.border-dark-subtle {\n border-color: var(--bs-dark-border-subtle) !important;\n}\n\n.border-1 {\n border-width: 1px !important;\n}\n\n.border-2 {\n border-width: 2px !important;\n}\n\n.border-3 {\n border-width: 3px !important;\n}\n\n.border-4 {\n border-width: 4px !important;\n}\n\n.border-5 {\n border-width: 5px !important;\n}\n\n.border-opacity-10 {\n --bs-border-opacity: 0.1;\n}\n\n.border-opacity-25 {\n --bs-border-opacity: 0.25;\n}\n\n.border-opacity-50 {\n --bs-border-opacity: 0.5;\n}\n\n.border-opacity-75 {\n --bs-border-opacity: 0.75;\n}\n\n.border-opacity-100 {\n --bs-border-opacity: 1;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.w-auto {\n width: auto !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.vw-100 {\n width: 100vw !important;\n}\n\n.min-vw-100 {\n min-width: 100vw !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.h-auto {\n height: auto !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.vh-100 {\n height: 100vh !important;\n}\n\n.min-vh-100 {\n min-height: 100vh !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n.gap-0 {\n gap: 0 !important;\n}\n\n.gap-1 {\n gap: 0.25rem !important;\n}\n\n.gap-2 {\n gap: 0.5rem !important;\n}\n\n.gap-3 {\n gap: 1rem !important;\n}\n\n.gap-4 {\n gap: 1.5rem !important;\n}\n\n.gap-5 {\n gap: 3rem !important;\n}\n\n.row-gap-0 {\n row-gap: 0 !important;\n}\n\n.row-gap-1 {\n row-gap: 0.25rem !important;\n}\n\n.row-gap-2 {\n row-gap: 0.5rem !important;\n}\n\n.row-gap-3 {\n row-gap: 1rem !important;\n}\n\n.row-gap-4 {\n row-gap: 1.5rem !important;\n}\n\n.row-gap-5 {\n row-gap: 3rem !important;\n}\n\n.column-gap-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n}\n\n.column-gap-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n}\n\n.column-gap-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n}\n\n.column-gap-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n}\n\n.column-gap-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n}\n\n.column-gap-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n}\n\n.font-monospace {\n font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n font-size: 1.25rem !important;\n}\n\n.fs-6 {\n font-size: 1rem !important;\n}\n\n.fst-italic {\n font-style: italic !important;\n}\n\n.fst-normal {\n font-style: normal !important;\n}\n\n.fw-lighter {\n font-weight: lighter !important;\n}\n\n.fw-light {\n font-weight: 300 !important;\n}\n\n.fw-normal {\n font-weight: 400 !important;\n}\n\n.fw-medium {\n font-weight: 500 !important;\n}\n\n.fw-semibold {\n font-weight: 600 !important;\n}\n\n.fw-bold {\n font-weight: 700 !important;\n}\n\n.fw-bolder {\n font-weight: bolder !important;\n}\n\n.lh-1 {\n line-height: 1 !important;\n}\n\n.lh-sm {\n line-height: 1.25 !important;\n}\n\n.lh-base {\n line-height: 1.5 !important;\n}\n\n.lh-lg {\n line-height: 2 !important;\n}\n\n.text-start {\n text-align: left !important;\n}\n\n.text-end {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-decoration-none {\n text-decoration: none !important;\n}\n\n.text-decoration-underline {\n text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n text-decoration: line-through !important;\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.text-wrap {\n white-space: normal !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n/* rtl:begin:remove */\n.text-break {\n word-wrap: break-word !important;\n word-break: break-word !important;\n}\n\n/* rtl:end:remove */\n.text-primary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n --bs-text-opacity: 1;\n color: var(--bs-secondary-color) !important;\n}\n\n.text-black-50 {\n --bs-text-opacity: 1;\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n --bs-text-opacity: 1;\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-body-secondary {\n --bs-text-opacity: 1;\n color: var(--bs-secondary-color) !important;\n}\n\n.text-body-tertiary {\n --bs-text-opacity: 1;\n color: var(--bs-tertiary-color) !important;\n}\n\n.text-body-emphasis {\n --bs-text-opacity: 1;\n color: var(--bs-emphasis-color) !important;\n}\n\n.text-reset {\n --bs-text-opacity: 1;\n color: inherit !important;\n}\n\n.text-opacity-25 {\n --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n --bs-text-opacity: 1;\n}\n\n.text-primary-emphasis {\n color: var(--bs-primary-text-emphasis) !important;\n}\n\n.text-secondary-emphasis {\n color: var(--bs-secondary-text-emphasis) !important;\n}\n\n.text-success-emphasis {\n color: var(--bs-success-text-emphasis) !important;\n}\n\n.text-info-emphasis {\n color: var(--bs-info-text-emphasis) !important;\n}\n\n.text-warning-emphasis {\n color: var(--bs-warning-text-emphasis) !important;\n}\n\n.text-danger-emphasis {\n color: var(--bs-danger-text-emphasis) !important;\n}\n\n.text-light-emphasis {\n color: var(--bs-light-text-emphasis) !important;\n}\n\n.text-dark-emphasis {\n color: var(--bs-dark-text-emphasis) !important;\n}\n\n.link-opacity-10 {\n --bs-link-opacity: 0.1;\n}\n\n.link-opacity-10-hover:hover {\n --bs-link-opacity: 0.1;\n}\n\n.link-opacity-25 {\n --bs-link-opacity: 0.25;\n}\n\n.link-opacity-25-hover:hover {\n --bs-link-opacity: 0.25;\n}\n\n.link-opacity-50 {\n --bs-link-opacity: 0.5;\n}\n\n.link-opacity-50-hover:hover {\n --bs-link-opacity: 0.5;\n}\n\n.link-opacity-75 {\n --bs-link-opacity: 0.75;\n}\n\n.link-opacity-75-hover:hover {\n --bs-link-opacity: 0.75;\n}\n\n.link-opacity-100 {\n --bs-link-opacity: 1;\n}\n\n.link-opacity-100-hover:hover {\n --bs-link-opacity: 1;\n}\n\n.link-offset-1 {\n text-underline-offset: 0.125em !important;\n}\n\n.link-offset-1-hover:hover {\n text-underline-offset: 0.125em !important;\n}\n\n.link-offset-2 {\n text-underline-offset: 0.25em !important;\n}\n\n.link-offset-2-hover:hover {\n text-underline-offset: 0.25em !important;\n}\n\n.link-offset-3 {\n text-underline-offset: 0.375em !important;\n}\n\n.link-offset-3-hover:hover {\n text-underline-offset: 0.375em !important;\n}\n\n.link-underline-primary {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-secondary {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-success {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-info {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-warning {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-danger {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-light {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-dark {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-underline-opacity-0 {\n --bs-link-underline-opacity: 0;\n}\n\n.link-underline-opacity-0-hover:hover {\n --bs-link-underline-opacity: 0;\n}\n\n.link-underline-opacity-10 {\n --bs-link-underline-opacity: 0.1;\n}\n\n.link-underline-opacity-10-hover:hover {\n --bs-link-underline-opacity: 0.1;\n}\n\n.link-underline-opacity-25 {\n --bs-link-underline-opacity: 0.25;\n}\n\n.link-underline-opacity-25-hover:hover {\n --bs-link-underline-opacity: 0.25;\n}\n\n.link-underline-opacity-50 {\n --bs-link-underline-opacity: 0.5;\n}\n\n.link-underline-opacity-50-hover:hover {\n --bs-link-underline-opacity: 0.5;\n}\n\n.link-underline-opacity-75 {\n --bs-link-underline-opacity: 0.75;\n}\n\n.link-underline-opacity-75-hover:hover {\n --bs-link-underline-opacity: 0.75;\n}\n\n.link-underline-opacity-100 {\n --bs-link-underline-opacity: 1;\n}\n\n.link-underline-opacity-100-hover:hover {\n --bs-link-underline-opacity: 1;\n}\n\n.bg-primary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n --bs-bg-opacity: 1;\n background-color: transparent !important;\n}\n\n.bg-body-secondary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body-tertiary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-opacity-10 {\n --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n --bs-bg-opacity: 1;\n}\n\n.bg-primary-subtle {\n background-color: var(--bs-primary-bg-subtle) !important;\n}\n\n.bg-secondary-subtle {\n background-color: var(--bs-secondary-bg-subtle) !important;\n}\n\n.bg-success-subtle {\n background-color: var(--bs-success-bg-subtle) !important;\n}\n\n.bg-info-subtle {\n background-color: var(--bs-info-bg-subtle) !important;\n}\n\n.bg-warning-subtle {\n background-color: var(--bs-warning-bg-subtle) !important;\n}\n\n.bg-danger-subtle {\n background-color: var(--bs-danger-bg-subtle) !important;\n}\n\n.bg-light-subtle {\n background-color: var(--bs-light-bg-subtle) !important;\n}\n\n.bg-dark-subtle {\n background-color: var(--bs-dark-bg-subtle) !important;\n}\n\n.bg-gradient {\n background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n -webkit-user-select: all !important;\n -moz-user-select: all !important;\n user-select: all !important;\n}\n\n.user-select-auto {\n -webkit-user-select: auto !important;\n -moz-user-select: auto !important;\n user-select: auto !important;\n}\n\n.user-select-none {\n -webkit-user-select: none !important;\n -moz-user-select: none !important;\n user-select: none !important;\n}\n\n.pe-none {\n pointer-events: none !important;\n}\n\n.pe-auto {\n pointer-events: auto !important;\n}\n\n.rounded {\n border-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.rounded-1 {\n border-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-2 {\n border-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-3 {\n border-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-4 {\n border-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-5 {\n border-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-pill {\n border-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-top {\n border-top-left-radius: var(--bs-border-radius) !important;\n border-top-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-top-0 {\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n}\n\n.rounded-top-1 {\n border-top-left-radius: var(--bs-border-radius-sm) !important;\n border-top-right-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-top-2 {\n border-top-left-radius: var(--bs-border-radius) !important;\n border-top-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-top-3 {\n border-top-left-radius: var(--bs-border-radius-lg) !important;\n border-top-right-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-top-4 {\n border-top-left-radius: var(--bs-border-radius-xl) !important;\n border-top-right-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-top-5 {\n border-top-left-radius: var(--bs-border-radius-xxl) !important;\n border-top-right-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-top-circle {\n border-top-left-radius: 50% !important;\n border-top-right-radius: 50% !important;\n}\n\n.rounded-top-pill {\n border-top-left-radius: var(--bs-border-radius-pill) !important;\n border-top-right-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-end {\n border-top-right-radius: var(--bs-border-radius) !important;\n border-bottom-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-end-0 {\n border-top-right-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n}\n\n.rounded-end-1 {\n border-top-right-radius: var(--bs-border-radius-sm) !important;\n border-bottom-right-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-end-2 {\n border-top-right-radius: var(--bs-border-radius) !important;\n border-bottom-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-end-3 {\n border-top-right-radius: var(--bs-border-radius-lg) !important;\n border-bottom-right-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-end-4 {\n border-top-right-radius: var(--bs-border-radius-xl) !important;\n border-bottom-right-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-end-5 {\n border-top-right-radius: var(--bs-border-radius-xxl) !important;\n border-bottom-right-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-end-circle {\n border-top-right-radius: 50% !important;\n border-bottom-right-radius: 50% !important;\n}\n\n.rounded-end-pill {\n border-top-right-radius: var(--bs-border-radius-pill) !important;\n border-bottom-right-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: var(--bs-border-radius) !important;\n border-bottom-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-bottom-0 {\n border-bottom-right-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n}\n\n.rounded-bottom-1 {\n border-bottom-right-radius: var(--bs-border-radius-sm) !important;\n border-bottom-left-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-bottom-2 {\n border-bottom-right-radius: var(--bs-border-radius) !important;\n border-bottom-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-bottom-3 {\n border-bottom-right-radius: var(--bs-border-radius-lg) !important;\n border-bottom-left-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-bottom-4 {\n border-bottom-right-radius: var(--bs-border-radius-xl) !important;\n border-bottom-left-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-bottom-5 {\n border-bottom-right-radius: var(--bs-border-radius-xxl) !important;\n border-bottom-left-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-bottom-circle {\n border-bottom-right-radius: 50% !important;\n border-bottom-left-radius: 50% !important;\n}\n\n.rounded-bottom-pill {\n border-bottom-right-radius: var(--bs-border-radius-pill) !important;\n border-bottom-left-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-start {\n border-bottom-left-radius: var(--bs-border-radius) !important;\n border-top-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-start-0 {\n border-bottom-left-radius: 0 !important;\n border-top-left-radius: 0 !important;\n}\n\n.rounded-start-1 {\n border-bottom-left-radius: var(--bs-border-radius-sm) !important;\n border-top-left-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-start-2 {\n border-bottom-left-radius: var(--bs-border-radius) !important;\n border-top-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-start-3 {\n border-bottom-left-radius: var(--bs-border-radius-lg) !important;\n border-top-left-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-start-4 {\n border-bottom-left-radius: var(--bs-border-radius-xl) !important;\n border-top-left-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-start-5 {\n border-bottom-left-radius: var(--bs-border-radius-xxl) !important;\n border-top-left-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-start-circle {\n border-bottom-left-radius: 50% !important;\n border-top-left-radius: 50% !important;\n}\n\n.rounded-start-pill {\n border-bottom-left-radius: var(--bs-border-radius-pill) !important;\n border-top-left-radius: var(--bs-border-radius-pill) !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n.z-n1 {\n z-index: -1 !important;\n}\n\n.z-0 {\n z-index: 0 !important;\n}\n\n.z-1 {\n z-index: 1 !important;\n}\n\n.z-2 {\n z-index: 2 !important;\n}\n\n.z-3 {\n z-index: 3 !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-start {\n float: left !important;\n }\n .float-sm-end {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n .object-fit-sm-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-sm-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-sm-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-sm-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-sm-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n .gap-sm-0 {\n gap: 0 !important;\n }\n .gap-sm-1 {\n gap: 0.25rem !important;\n }\n .gap-sm-2 {\n gap: 0.5rem !important;\n }\n .gap-sm-3 {\n gap: 1rem !important;\n }\n .gap-sm-4 {\n gap: 1.5rem !important;\n }\n .gap-sm-5 {\n gap: 3rem !important;\n }\n .row-gap-sm-0 {\n row-gap: 0 !important;\n }\n .row-gap-sm-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-sm-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-sm-3 {\n row-gap: 1rem !important;\n }\n .row-gap-sm-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-sm-5 {\n row-gap: 3rem !important;\n }\n .column-gap-sm-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-sm-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-sm-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-sm-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-sm-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-sm-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-sm-start {\n text-align: left !important;\n }\n .text-sm-end {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n@media (min-width: 768px) {\n .float-md-start {\n float: left !important;\n }\n .float-md-end {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n .object-fit-md-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-md-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-md-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-md-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-md-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n .gap-md-0 {\n gap: 0 !important;\n }\n .gap-md-1 {\n gap: 0.25rem !important;\n }\n .gap-md-2 {\n gap: 0.5rem !important;\n }\n .gap-md-3 {\n gap: 1rem !important;\n }\n .gap-md-4 {\n gap: 1.5rem !important;\n }\n .gap-md-5 {\n gap: 3rem !important;\n }\n .row-gap-md-0 {\n row-gap: 0 !important;\n }\n .row-gap-md-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-md-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-md-3 {\n row-gap: 1rem !important;\n }\n .row-gap-md-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-md-5 {\n row-gap: 3rem !important;\n }\n .column-gap-md-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-md-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-md-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-md-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-md-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-md-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-md-start {\n text-align: left !important;\n }\n .text-md-end {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n@media (min-width: 992px) {\n .float-lg-start {\n float: left !important;\n }\n .float-lg-end {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n .object-fit-lg-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-lg-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-lg-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-lg-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-lg-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n .gap-lg-0 {\n gap: 0 !important;\n }\n .gap-lg-1 {\n gap: 0.25rem !important;\n }\n .gap-lg-2 {\n gap: 0.5rem !important;\n }\n .gap-lg-3 {\n gap: 1rem !important;\n }\n .gap-lg-4 {\n gap: 1.5rem !important;\n }\n .gap-lg-5 {\n gap: 3rem !important;\n }\n .row-gap-lg-0 {\n row-gap: 0 !important;\n }\n .row-gap-lg-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-lg-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-lg-3 {\n row-gap: 1rem !important;\n }\n .row-gap-lg-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-lg-5 {\n row-gap: 3rem !important;\n }\n .column-gap-lg-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-lg-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-lg-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-lg-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-lg-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-lg-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-lg-start {\n text-align: left !important;\n }\n .text-lg-end {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1200px) {\n .float-xl-start {\n float: left !important;\n }\n .float-xl-end {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n .object-fit-xl-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-xl-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-xl-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-xl-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-xl-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n .gap-xl-0 {\n gap: 0 !important;\n }\n .gap-xl-1 {\n gap: 0.25rem !important;\n }\n .gap-xl-2 {\n gap: 0.5rem !important;\n }\n .gap-xl-3 {\n gap: 1rem !important;\n }\n .gap-xl-4 {\n gap: 1.5rem !important;\n }\n .gap-xl-5 {\n gap: 3rem !important;\n }\n .row-gap-xl-0 {\n row-gap: 0 !important;\n }\n .row-gap-xl-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-xl-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-xl-3 {\n row-gap: 1rem !important;\n }\n .row-gap-xl-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-xl-5 {\n row-gap: 3rem !important;\n }\n .column-gap-xl-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-xl-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-xl-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-xl-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-xl-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-xl-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-xl-start {\n text-align: left !important;\n }\n .text-xl-end {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1400px) {\n .float-xxl-start {\n float: left !important;\n }\n .float-xxl-end {\n float: right !important;\n }\n .float-xxl-none {\n float: none !important;\n }\n .object-fit-xxl-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-xxl-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-xxl-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-xxl-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-xxl-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n .gap-xxl-0 {\n gap: 0 !important;\n }\n .gap-xxl-1 {\n gap: 0.25rem !important;\n }\n .gap-xxl-2 {\n gap: 0.5rem !important;\n }\n .gap-xxl-3 {\n gap: 1rem !important;\n }\n .gap-xxl-4 {\n gap: 1.5rem !important;\n }\n .gap-xxl-5 {\n gap: 3rem !important;\n }\n .row-gap-xxl-0 {\n row-gap: 0 !important;\n }\n .row-gap-xxl-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-xxl-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-xxl-3 {\n row-gap: 1rem !important;\n }\n .row-gap-xxl-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-xxl-5 {\n row-gap: 3rem !important;\n }\n .column-gap-xxl-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-xxl-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-xxl-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-xxl-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-xxl-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-xxl-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-xxl-start {\n text-align: left !important;\n }\n .text-xxl-end {\n text-align: right !important;\n }\n .text-xxl-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1200px) {\n .fs-1 {\n font-size: 2.5rem !important;\n }\n .fs-2 {\n font-size: 2rem !important;\n }\n .fs-3 {\n font-size: 1.75rem !important;\n }\n .fs-4 {\n font-size: 1.5rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n @include font-size(var(--#{$prefix}root-font-size));\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$prefix}body-font-family);\n @include font-size(var(--#{$prefix}body-font-size));\n font-weight: var(--#{$prefix}body-font-weight);\n line-height: var(--#{$prefix}body-line-height);\n color: var(--#{$prefix}body-color);\n text-align: var(--#{$prefix}body-text-align);\n background-color: var(--#{$prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n opacity: $hr-opacity;\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: var(--#{$prefix}heading-color);\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 2. Add explicit cursor to indicate changed behavior.\n// 3. Prevent the text-decoration to be skipped.\n\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n color: var(--#{$prefix}highlight-color);\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}code-color);\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`\n {children}\n );\n};\n\nexport default ModalComponent;\n","// extracted by mini-css-extract-plugin\nexport default {\"footer\":\"Footer_footer__kXlYa\",\"footerCopyright\":\"Footer_footerCopyright__iqeSK\",\"footerLinks\":\"Footer_footerLinks__3aiFY\",\"footerElement\":\"Footer_footerElement__M7jMA\"};","/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [jsx=false]\n * Support JSX identifiers (default: `false`).\n */\n\nconst startRe = /[$_\\p{ID_Start}]/u\nconst contRe = /[$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst contReJsx = /[-$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst nameRe = /^[$_\\p{ID_Start}][$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\nconst nameReJsx = /^[$_\\p{ID_Start}][-$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Checks if the given code point can start an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @returns {boolean}\n * Whether `code` can start an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function start(code) {\n return code ? startRe.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given code point can continue an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `code` can continue an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function cont(code, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? contReJsx : contRe\n return code ? re.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given value is a valid identifier name.\n *\n * @param {string} name\n * Identifier to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `name` can be an identifier.\n */\nexport function name(name, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? nameReJsx : nameRe\n return re.test(name)\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See .\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record} Properties\n * @typedef {Record} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: boolean,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // ``. List of URIs to archives\n axis: null, // `` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
`. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
`\n cellSpacing: null, // `
`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
`. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // ``\n event: null, // `\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase()\n if (htmlRawNames.includes(name)) {\n effects.consume(code)\n return continuationClose\n }\n return continuation(code)\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationAfter(code)\n }\n effects.consume(code)\n return continuationClose\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit('htmlFlow')\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return after\n }\n return nok(code)\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n}\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n }\n let initialPrefix = 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code)\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1]\n initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n marker = code\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++\n effects.consume(code)\n return sequenceOpen\n }\n if (sizeOpen < 3) {\n return nok(code)\n }\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, infoBefore, 'whitespace')(code)\n : infoBefore(code)\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return self.interrupt\n ? ok(code)\n : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return infoBefore(code)\n }\n if (markdownSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, metaBefore, 'whitespace')(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return info\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code)\n }\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return infoBefore(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return meta\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code)\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return contentStart\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code)\n ? factorySpace(\n effects,\n beforeContentChunk,\n 'linePrefix',\n initialPrefix + 1\n )(code)\n : beforeContentChunk(code)\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return contentChunk(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return beforeContentChunk(code)\n }\n effects.consume(code)\n return contentChunk\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0\n return startBefore\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter('codeFencedFence')\n return markdownSpace(code)\n ? factorySpace(\n effects,\n beforeSequenceClose,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : beforeSequenceClose(code)\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter('codeFencedFenceSequence')\n return sequenceClose(code)\n }\n return nok(code)\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++\n effects.consume(code)\n return sequenceClose\n }\n if (size >= sizeOpen) {\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, sequenceCloseAfter, 'whitespace')(code)\n : sequenceCloseAfter(code)\n }\n return nok(code)\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n return nok(code)\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this\n return start\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code)\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n let max\n /** @type {(code: Code) => boolean} */\n let test\n return start\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit('characterReferenceValue')\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {asciiPunctuation} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return inside\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1\n while (++index < events.length) {\n const token = events[index][1]\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n let token\n /** @type {number | undefined} */\n let open\n /** @type {number | undefined} */\n let close\n /** @type {Array} */\n let media\n\n // Find an opening.\n while (index--) {\n token = events[index][1]\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ]\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3))\n\n // Text open.\n media = push(media, [['enter', text, context]])\n\n // Always populated by defaults.\n\n // Between.\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n )\n\n // Text close, marker close, label close.\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ])\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1))\n\n // Media close.\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n let labelStart\n /** @type {boolean} */\n let defined\n\n // Find an opening.\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n return start\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code)\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code)\n }\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return after\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n labelEndOk,\n defined ? labelEndOk : labelEndNok\n )(code)\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(\n referenceFullConstruct,\n labelEndOk,\n defined ? referenceNotFull : labelEndNok\n )(code)\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code)\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(\n referenceCollapsedConstruct,\n labelEndOk,\n labelEndNok\n )(code)\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code)\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return resourceBefore\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceOpen)(code)\n : resourceOpen(code)\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code)\n }\n return factoryDestination(\n effects,\n resourceDestinationAfter,\n resourceDestinationMissing,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceBetween)(code)\n : resourceEnd(code)\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code)\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n resourceTitleAfter,\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n return resourceEnd(code)\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceEnd)(code)\n : resourceEnd(code)\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this\n return referenceFull\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(\n self,\n effects,\n referenceFullAfter,\n referenceFullMissing,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return referenceCollapsedOpen\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n let open\n /** @type {Token} */\n let group\n /** @type {Token} */\n let text\n /** @type {Token} */\n let openingSequence\n /** @type {Token} */\n let closingSequence\n /** @type {number} */\n let use\n /** @type {Array} */\n let nextEvents\n /** @type {number} */\n let offset\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n }\n\n // Number of markers to use from the sequence.\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = []\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n }\n\n // Opening.\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ])\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n )\n\n // Closing.\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ])\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code\n effects.enter('attentionSequence')\n return inside(code)\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n const token = effects.exit('attentionSequence')\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code)\n\n // Always populated by defaults.\n\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {undefined}\n */\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n return emailAtext(code)\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1\n return schemeInsideOrEmailAtext(code)\n }\n return emailAtext(code)\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n size = 0\n return urlInside\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n size = 0\n return emailAtext(code)\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return urlInside\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n return emailAtSignOrDot\n }\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n return nok(code)\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n return emailValue(code)\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel\n effects.consume(code)\n return next\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable | undefined} */\n let marker\n /** @type {number} */\n let index\n /** @type {State} */\n let returnState\n return start\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n index = 0\n return cdataOpenInside\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n return nok(code)\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return nok(code)\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n if (markdownLineEnding(code)) {\n returnState = comment\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return comment\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return comment(code)\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62\n ? end(code)\n : code === 45\n ? commentClose(code)\n : comment(code)\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n return index === value.length ? cdata : cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n if (markdownLineEnding(code)) {\n returnState = cdata\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return cdata\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n if (markdownLineEnding(code)) {\n returnState = declaration\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return declaration\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n if (markdownLineEnding(code)) {\n returnState = instruction\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return instruction\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n return tagCloseBetween(code)\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n return end(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n return end(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n return tagOpenAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n return tagOpenBetween(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueQuotedAfter\n }\n if (code === null) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n return nok(code)\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineEndingAfter\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code)\n ? factorySpace(\n effects,\n lineEndingAfterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : lineEndingAfterPrefix(code)\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.consume(code)\n return after\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n let index\n /** @type {number | undefined} */\n let enter\n\n // If we start and end with an EOL or a space.\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1\n tailExitIndex++\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n enter = undefined\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n let size\n /** @type {Token} */\n let token\n return start\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n effects.exit('codeTextSequence')\n return between(code)\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return between\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return sequenceClose(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return between\n }\n\n // Data.\n effects.enter('codeTextData')\n return data(code)\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return between(code)\n }\n effects.consume(code)\n return data\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return sequenceClose\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n }\n\n // More or less accents: mark as data.\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {string, text} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n value =\n buffer +\n (typeof value === 'string'\n ? value.toString()\n : new TextDecoder(encoding || undefined).decode(value))\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | null | undefined | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {undefined | void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(this: CompileContext) => undefined} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Nodes, token: Token, onError?: OnEnterError) => undefined} enter\n * Enter a node.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => undefined} exit\n * Exit a node.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n * @property {CompileData} data\n * Info passed around; key/value store.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\nimport {toString} from 'mdast-util-to-string'\nimport {parse, postprocess, preprocess} from 'micromark'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n }\n configure(config, (options || {}).mdastExtensions || [])\n\n /** @type {CompileData} */\n const data = {}\n return compile\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n }\n /** @type {Array} */\n const listStack = []\n let index = -1\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n const tail = listStack.pop()\n index = prepareList(events, tail, index)\n }\n }\n }\n index = -1\n while (++index < events.length) {\n const handler = config[events[index][0]]\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n\n // Call transforms.\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n return tree\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token | undefined} */\n let listItem\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number | undefined} */\n let firstBlankLineIndex\n /** @type {boolean | undefined} */\n let atMarker\n while (++index <= length) {\n const event = events[index]\n switch (event[1].type) {\n case 'listUnordered':\n case 'listOrdered':\n case 'blockQuote': {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n atMarker = undefined\n break\n }\n case 'lineEndingBlank': {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n atMarker = undefined\n }\n break\n }\n case 'linePrefix':\n case 'listItemValue':\n case 'listItemMarker':\n case 'listItemPrefix':\n case 'listItemPrefixWhitespace': {\n // Empty.\n\n break\n }\n default: {\n atMarker = undefined\n }\n }\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n }\n listItem = item\n events.splice(index, 0, ['enter', item, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n events[start][1]._spread = listSpread\n return length\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {undefined}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Nodes} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {undefined}\n * Nothing.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n /** @type {Array} */\n const siblings = parent.children\n siblings.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler])\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n }\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {undefined}\n * Nothing.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it’s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n node.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n this.data.expectingFirstListItemValue = undefined\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.lang = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return\n this.buffer()\n this.data.flowCodeInside = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n this.data.flowCodeInside = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1]\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1]\n /** @type {Array} */\n const siblings = node.children\n let tail = siblings[siblings.length - 1]\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we’ll add `end` later.\n end: undefined\n }\n siblings.push(tail)\n }\n this.stack.push(tail)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n // If we’re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n this.data.atHardBreak = undefined\n return\n }\n if (\n !this.data.setextHeadingSlurpLineEnding &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n this.data.referenceType = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n this.data.referenceType = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token)\n const ancestor = this.stack[this.stack.length - 2]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string)\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1]\n const value = this.resume()\n const node = this.stack[this.stack.length - 1]\n // Assume a reference.\n this.data.inReference = true\n if (node.type === 'link') {\n /** @type {Array} */\n const children = fragment.children\n node.children = children\n } else {\n node.alt = value\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed'\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n this.data.referenceType = 'full'\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = this.data.characterReferenceType\n /** @type {string} */\n let value\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n this.data.characterReferenceType = undefined\n } else {\n const result = decodeNamedCharacterReference(data)\n value = result\n }\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n }\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Array | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1\n while (++index < extensions.length) {\n const value = extensions[index]\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols': {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n break\n }\n case 'transforms': {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n break\n }\n case 'enter':\n case 'exit': {\n const right = extension[key]\n if (right) {\n Object.assign(combined[key], right)\n }\n break\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser} Parser\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {Omit} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type)\n return as([type, [...value]], value);\n \n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55_295 && code < 57_344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56_320 && next > 56_319 && next < 57_344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n * Generate content for the backreference dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array | ElementContent | string}\n * Content for the backreference when linking back from definitions to their\n * reference.\n *\n * @callback FootnoteBackLabelTemplate\n * Generate a back label dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array}\n * Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n /** @type {Array} */\n const result = [{type: 'text', value: '↩'}]\n\n if (rereferenceIndex > 1) {\n result.push({\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [{type: 'text', value: String(rereferenceIndex)}]\n })\n }\n\n return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n return (\n 'Back to reference ' +\n (referenceIndex + 1) +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const footnoteBackContent =\n state.options.footnoteBackContent || defaultFootnoteBackContent\n const footnoteBackLabel =\n state.options.footnoteBackLabel || defaultFootnoteBackLabel\n const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n className: ['sr-only']\n }\n /** @type {Array} */\n const listItems = []\n let referenceIndex = -1\n\n while (++referenceIndex < state.footnoteOrder.length) {\n const def = state.footnoteById.get(state.footnoteOrder[referenceIndex])\n\n if (!def) {\n continue\n }\n\n const content = state.all(def)\n const id = String(def.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let rereferenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n const counts = state.footnoteCounts.get(id)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (counts !== undefined && ++rereferenceIndex <= counts) {\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n let children =\n typeof footnoteBackContent === 'string'\n ? footnoteBackContent\n : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n if (typeof children === 'string') {\n children = {type: 'text', value: children}\n }\n\n backReferences.push({\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n clobberPrefix +\n 'fnref-' +\n safeId +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n dataFootnoteBackref: '',\n ariaLabel:\n typeof footnoteBackLabel === 'string'\n ? footnoteBackLabel\n : footnoteBackLabel(referenceIndex, rereferenceIndex),\n className: ['data-footnote-backref']\n },\n children: Array.isArray(children) ? children : [children]\n })\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(def, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: footnoteLabelTagName,\n properties: {\n ...structuredClone(footnoteLabelProperties),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propsFactory(check) {\n const checkAsRecord = /** @type {Record} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor, Check>, Ancestor, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly} */\n let result = empty\n /** @type {Readonly} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Reference} Reference\n *\n * @typedef {import('./state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {Extract} node\n * Reference node (image, link).\n * @returns {Array}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return [{type: 'text', value: '![' + node.alt + suffix}]\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === null || spread === undefined\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {import('../state.js').Handlers}\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n // @ts-expect-error: root is different, but hard to type.\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n\n if (node.lang) {\n properties.className = ['language-' + node.lang]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Html} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Parents} HastParents\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').RootContent} HastRootContent\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').Parents} MdastParents\n *\n * @typedef {import('./footer.js').FootnoteBackContentTemplate} FootnoteBackContentTemplate\n * @typedef {import('./footer.js').FootnoteBackLabelTemplate} FootnoteBackLabelTemplate\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   

\n * \n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > 👉 **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array} all\n * Transform the children of an mdast parent to hast.\n * @property {(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map} definitionById\n * Definitions by their identifier.\n * @property {Map} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {(nodes: Array, loose?: boolean | undefined) => Array} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map} */\n const definitionById = new Map()\n /** @type {Map} */\n const footnoteById = new Map()\n /** @type {Map} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n","/**\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('./state.js').Options} Options\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n","// Include `data` fields in mdast and `raw` nodes in hast.\n/// \n\n/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} Options\n * @typedef {import('unified').Processor} Processor\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given, runs the (rehype) plugins used on it with a\n * hast tree, then discards the result (*bridge mode*)\n * * otherwise, returns a hast tree, the plugins used after `remarkRehype`\n * are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only way\n * to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @param {Readonly | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly | null | undefined} [options]\n * When a processor was given, configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nexport default function remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (toHast(tree, options))\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree) {\n // Cast because root in -> root out.\n return /** @type {HastRoot} */ (toHast(tree, options || destination))\n }\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","/**\n * @typedef {(error?: Error|null|undefined, ...output: Array) => void} Callback\n * @typedef {(...input: Array) => any} Middleware\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add `fn` (middleware) to the list.\n * @typedef {{run: Run, use: Use}} Pipeline\n * Middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n */\nexport function trough() {\n /** @type {Array} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error|null|undefined} error\n * @param {Array} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware`.\n * Can be sync or async; return a promise, receive a callback, or return new\n * values and errors.\n *\n * @param {Middleware} middleware\n * @param {Callback} callback\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result instanceof Promise) {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","// A derivative work based on:\n// .\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [ext]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extIndex = ext.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === ext.codePointAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: \nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n * @typedef {import('vfile-message').Options} MessageOptions\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef {Options | URL | VFile | Value} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * Set multiple values.\n * @property {string | null | undefined} [basename]\n * Set `basename` (name).\n * @property {string | null | undefined} [cwd]\n * Set `cwd` (working directory).\n * @property {Data | null | undefined} [data]\n * Set `data` (associated info).\n * @property {string | null | undefined} [dirname]\n * Set `dirname` (path w/o basename).\n * @property {string | null | undefined} [extname]\n * Set `extname` (extension with dot).\n * @property {Array | null | undefined} [history]\n * Set `history` (paths the file moved between).\n * @property {URL | string | null | undefined} [path]\n * Set `path` (current path).\n * @property {string | null | undefined} [stem]\n * Set `stem` (name without extension).\n * @property {Value | null | undefined} [value]\n * Set `value` (the contents of the file).\n *\n * @typedef Map\n * Raw source map.\n *\n * See:\n * .\n * @property {number} version\n * Which version of the source map spec this map is following.\n * @property {Array} sources\n * An array of URLs to the original source files.\n * @property {Array} names\n * An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n * The URL root from which all sources are relative.\n * @property {Array | undefined} [sourcesContent]\n * An array of contents of the original source files.\n * @property {string} mappings\n * A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n * The generated file this source map is associated with.\n *\n * @typedef {Record & VFileCoreOptions} Options\n * Configuration.\n *\n * A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record} ReporterSettings\n * Configuration for reporters.\n */\n\n/**\n * @template [Settings=ReporterSettings]\n * Options type.\n * @callback Reporter\n * Type for a reporter.\n * @param {Array} files\n * Files to report.\n * @param {Settings} options\n * Configuration.\n * @returns {string}\n * Report.\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {path} from 'vfile/do-not-use-conditional-minpath'\nimport {proc} from 'vfile/do-not-use-conditional-minproc'\nimport {urlToPath, isUrl} from 'vfile/do-not-use-conditional-minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n prop in options &&\n options[prop] !== undefined &&\n options[prop] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) {\n // @ts-expect-error: fine to set other things.\n this[prop] = options[prop]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > .\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","export const CallableInstance =\n /**\n * @type {new , Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const func = proto[property]\n /** @type {(...parameters: Array) => unknown} */\n const apply = function () {\n return func.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n const names = Object.getOwnPropertyNames(func)\n\n for (const p of names) {\n const descriptor = Object.getOwnPropertyDescriptor(func, p)\n if (descriptor) Object.defineProperty(apply, p, descriptor)\n }\n\n return apply\n }\n )\n )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@link CompileResultMap `CompileResultMap`}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@link Node `Node`}\n * and {@link VFile `VFile`} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@link VFile `VFile`} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@link Node `Node`}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin, any, any> |\n * PluginTuple, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// .\n/**\n * @template {Array} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > 👉 **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > 👉 **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback} next\n * Callback.\n * @returns {(\n * Promise |\n * Promise | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : // Unknown.\n * Processor\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@link VFile `VFile`} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@link VFile `VFile`}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor}\n * New *unfrozen* processor ({@link Processor `Processor`}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > 👉 **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > 👉 **Note**: to register custom data in TypeScript, augment the\n * > {@link Data `Data`} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > 👉 **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > 👉 **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback> | undefined} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > 👉 **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > 👉 **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > 👉 **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor}\n *\n * @overload\n * @param {Plugin} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","// Register `Raw` in tree:\n/// \n\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-to-jsx-runtime').Components} JsxRuntimeComponents\n * @typedef {import('remark-rehype').Options} RemarkRehypeOptions\n * @typedef {import('unist-util-visit').BuildVisitor} Visitor\n * @typedef {import('unified').PluggableList} PluggableList\n */\n\n/**\n * @callback AllowElement\n * Filter elements.\n * @param {Readonly} element\n * Element to check.\n * @param {number} index\n * Index of `element` in `parent`.\n * @param {Readonly | undefined} parent\n * Parent of `element`.\n * @returns {boolean | null | undefined}\n * Whether to allow `element` (default: `false`).\n *\n * @typedef {Partial} Components\n * Map tag names to components.\n *\n * @typedef Deprecation\n * Deprecation.\n * @property {string} from\n * Old field.\n * @property {string} id\n * ID in readme.\n * @property {keyof Options} [to]\n * New field.\n *\n * @typedef Options\n * Configuration.\n * @property {AllowElement | null | undefined} [allowElement]\n * Filter elements (optional);\n * `allowedElements` / `disallowedElements` is used first.\n * @property {ReadonlyArray | null | undefined} [allowedElements]\n * Tag names to allow (default: all tag names);\n * cannot combine w/ `disallowedElements`.\n * @property {string | null | undefined} [children]\n * Markdown.\n * @property {string | null | undefined} [className]\n * Wrap in a `div` with this class name.\n * @property {Components | null | undefined} [components]\n * Map tag names to components.\n * @property {ReadonlyArray | null | undefined} [disallowedElements]\n * Tag names to disallow (default: `[]`);\n * cannot combine w/ `allowedElements`.\n * @property {PluggableList | null | undefined} [rehypePlugins]\n * List of rehype plugins to use.\n * @property {PluggableList | null | undefined} [remarkPlugins]\n * List of remark plugins to use.\n * @property {Readonly | null | undefined} [remarkRehypeOptions]\n * Options to pass through to `remark-rehype`.\n * @property {boolean | null | undefined} [skipHtml=false]\n * Ignore HTML in markdown completely (default: `false`).\n * @property {boolean | null | undefined} [unwrapDisallowed=false]\n * Extract (unwrap) what’s in disallowed elements (default: `false`);\n * normally when say `strong` is not allowed, it and it’s children are dropped,\n * with `unwrapDisallowed` the element itself is replaced by its children.\n * @property {UrlTransform | null | undefined} [urlTransform]\n * Change URLs (default: `defaultUrlTransform`)\n *\n * @callback UrlTransform\n * Transform all URLs.\n * @param {string} url\n * URL.\n * @param {string} key\n * Property name (example: `'href'`).\n * @param {Readonly} node\n * Node.\n * @returns {string | null | undefined}\n * Transformed URL (optional).\n */\n\nimport {unreachable} from 'devlop'\nimport {toJsxRuntime} from 'hast-util-to-jsx-runtime'\nimport {urlAttributes} from 'html-url-attributes'\n// @ts-expect-error: untyped.\nimport {Fragment, jsx, jsxs} from 'react/jsx-runtime'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport {unified} from 'unified'\nimport {visit} from 'unist-util-visit'\nimport {VFile} from 'vfile'\n\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {PluggableList} */\nconst emptyPlugins = []\n/** @type {Readonly} */\nconst emptyRemarkRehypeOptions = {allowDangerousHtml: true}\nconst safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i\n\n// Mutable because we `delete` any time it’s used and a message is sent.\n/** @type {ReadonlyArray>} */\nconst deprecations = [\n {from: 'astPlugins', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'allowDangerousHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {\n from: 'allowNode',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowElement'\n },\n {\n from: 'allowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowedElements'\n },\n {\n from: 'disallowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'disallowedElements'\n },\n {from: 'escapeHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'includeElementIndex', id: '#remove-includeelementindex'},\n {\n from: 'includeNodeIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n },\n {from: 'linkTarget', id: 'remove-linktarget'},\n {from: 'plugins', id: 'change-plugins-to-remarkplugins', to: 'remarkPlugins'},\n {from: 'rawSourcePos', id: '#remove-rawsourcepos'},\n {from: 'renderers', id: 'change-renderers-to-components', to: 'components'},\n {from: 'source', id: 'change-source-to-children', to: 'children'},\n {from: 'sourcePos', id: '#remove-sourcepos'},\n {from: 'transformImageUri', id: '#add-urltransform', to: 'urlTransform'},\n {from: 'transformLinkUri', id: '#add-urltransform', to: 'urlTransform'}\n]\n\n/**\n * Component to render markdown.\n *\n * @param {Readonly} options\n * Props.\n * @returns {JSX.Element}\n * React element.\n */\nexport function Markdown(options) {\n const allowedElements = options.allowedElements\n const allowElement = options.allowElement\n const children = options.children || ''\n const className = options.className\n const components = options.components\n const disallowedElements = options.disallowedElements\n const rehypePlugins = options.rehypePlugins || emptyPlugins\n const remarkPlugins = options.remarkPlugins || emptyPlugins\n const remarkRehypeOptions = options.remarkRehypeOptions\n ? {...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions}\n : emptyRemarkRehypeOptions\n const skipHtml = options.skipHtml\n const unwrapDisallowed = options.unwrapDisallowed\n const urlTransform = options.urlTransform || defaultUrlTransform\n\n const processor = unified()\n .use(remarkParse)\n .use(remarkPlugins)\n .use(remarkRehype, remarkRehypeOptions)\n .use(rehypePlugins)\n\n const file = new VFile()\n\n if (typeof children === 'string') {\n file.value = children\n } else {\n unreachable(\n 'Unexpected value `' +\n children +\n '` for `children` prop, expected `string`'\n )\n }\n\n if (allowedElements && disallowedElements) {\n unreachable(\n 'Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other'\n )\n }\n\n for (const deprecation of deprecations) {\n if (Object.hasOwn(options, deprecation.from)) {\n unreachable(\n 'Unexpected `' +\n deprecation.from +\n '` prop, ' +\n (deprecation.to\n ? 'use `' + deprecation.to + '` instead'\n : 'remove it') +\n ' (see <' +\n changelog +\n '#' +\n deprecation.id +\n '> for more info)'\n )\n }\n }\n\n const mdastTree = processor.parse(file)\n /** @type {Nodes} */\n let hastTree = processor.runSync(mdastTree, file)\n\n // Wrap in `div` if there’s a class name.\n if (className) {\n hastTree = {\n type: 'element',\n tagName: 'div',\n properties: {className},\n // Assume no doctypes.\n children: /** @type {Array} */ (\n hastTree.type === 'root' ? hastTree.children : [hastTree]\n )\n }\n }\n\n visit(hastTree, transform)\n\n return toJsxRuntime(hastTree, {\n Fragment,\n components,\n ignoreInvalidStyle: true,\n jsx,\n jsxs,\n passKeys: true,\n passNode: true\n })\n\n /** @type {Visitor} */\n function transform(node, index, parent) {\n if (node.type === 'raw' && parent && typeof index === 'number') {\n if (skipHtml) {\n parent.children.splice(index, 1)\n } else {\n parent.children[index] = {type: 'text', value: node.value}\n }\n\n return index\n }\n\n if (node.type === 'element') {\n /** @type {string} */\n let key\n\n for (key in urlAttributes) {\n if (\n Object.hasOwn(urlAttributes, key) &&\n Object.hasOwn(node.properties, key)\n ) {\n const value = node.properties[key]\n const test = urlAttributes[key]\n if (test === null || test.includes(node.tagName)) {\n node.properties[key] = urlTransform(String(value || ''), key, node)\n }\n }\n }\n }\n\n if (node.type === 'element') {\n let remove = allowedElements\n ? !allowedElements.includes(node.tagName)\n : disallowedElements\n ? disallowedElements.includes(node.tagName)\n : false\n\n if (!remove && allowElement && typeof index === 'number') {\n remove = !allowElement(node, index, parent)\n }\n\n if (remove && parent && typeof index === 'number') {\n if (unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n }\n }\n}\n\n/**\n * Make a URL safe.\n *\n * @satisfies {UrlTransform}\n * @param {string} value\n * URL.\n * @returns {string}\n * Safe URL.\n */\nexport function defaultUrlTransform(value) {\n // Same as:\n // \n // But without the `encode` part.\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n safeProtocol.test(value.slice(0, colon))\n ) {\n return value\n }\n\n return ''\n}\n","import React, {useState} from 'react';\nimport ModalComponent from '../Modal/ModalComponent';\nimport styles from './Footer.module.css';\nimport ReactMarkdown from 'react-markdown';\nimport IconElement from '../IconElement/IconElement'; // Import the IconElement component\n\ninterface LinkElement {\n title: string;\n description?: string;\n href: string;\n icon: string;\n modal?: string;\n modalMarkdownContent?: string;\n}\n\ninterface Copyright {\n text: string;\n}\n\ninterface FooterProps {\n copyright: Copyright;\n linkElements: LinkElement[];\n}\n\nconst Footer: React.FC = ({copyright, linkElements}) => {\n const [modalIsOpen, setModalIsOpen] = useState(false);\n const [modalContent, setModalContent] = useState('');\n\n const openModal = (content: string) => {\n setModalContent(content);\n setModalIsOpen(true);\n };\n\n const closeModal = () => {\n setModalIsOpen(false);\n };\n\n return (
\n {/* Copyright first */}\n
{copyright.text}
\n\n {/* Link elements */}\n
\n {linkElements.map((element, index) => (
\n {element.modal === 'true' ? (// If it's a modal link, render a div that can be clicked to open a modal\n
openModal(element.modalMarkdownContent || '')}>\n \n {element.title}\n
) : (\n \n {element.title}\n )}\n
))}\n
\n\n \n {modalContent}\n \n
);\n};\n\nexport default Footer;\n","import React, {useEffect, useState} from 'react';\nimport ProfileSection from './components/ProfileSection/ProfileSection';\nimport CardElement from './components/CardElement/CardElement';\nimport SocialMediaSection from './components/SocialMedia/Section/SocialMediaSection';\nimport Footer from './components/Footer/Footer';\nimport config from './config/config.json';\nimport './App.css';\n\nconst App = () => {\n const [profileData, setProfileData] = useState({\n profile: {\n name: '', background: '', photo: '', description: '',\n }, footer: {\n copyright: {\n text: '',\n }, linkElements: [],\n }, socialMediaElements: [], cardElements: [{\n title: \"\", description: \"\", href: \"\", icon: \"\"\n }],\n });\n\n useEffect(() => {\n if (config.encodeProfileData) {\n // Fetch the encoded profile data\n fetch('data/b64ProfileData.json')\n .then(response => response.text())\n .then(encodedData => {\n // Decode the base64 data\n const uint8Array = new Uint8Array(atob(encodedData).split(\"\").map(c => c.charCodeAt(0)));\n const data = new TextDecoder('utf-8').decode(uint8Array);\n setProfileData(JSON.parse(data));\n })\n .catch(error => {\n console.error('Failed to load and decode profile data:', error);\n });\n } else {\n // Import the profile data directly if not encoded\n import('./data/profileData.json')\n .then(() => {\n setProfileData(profileData);\n });\n }\n }, [profileData]);\n\n // Wait for profile data to be loaded and decoded\n if (!profileData) {\n return
Loading...
;\n }\n\n const {profile, footer} = profileData;\n const socialMediaObjects = profileData.socialMediaElements.map(href => ({href}));\n\n return (
\n {/* Content Section */}\n
\n \n\n {/* Social Media Section */}\n \n\n {/* Card Elements Section */}\n {profileData.cardElements.map((element, index) => ())}\n
\n\n {/* Footer Section */}\n \n
);\n};\n\nexport default App;\n","import 'bootstrap/dist/css/bootstrap.min.css';\nimport '@fortawesome/fontawesome-free/css/all.min.css';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config/config.json';\nimport siteData from './data/siteData.json';\nimport './index.css';\nimport App from './App';\n\nfunction loadTheme() {\n let theme = config.theme;\n\n if (theme === 'auto') {\n theme = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n\n import(`./colorThemes/${theme}.css`).then(() => {\n document.documentElement.setAttribute('data-theme', theme);\n });\n}\n\nfunction setMetaTags() {\n if (!config.searchEngineIndexing) {\n const metaRobots = document.createElement('meta');\n metaRobots.name = 'robots';\n metaRobots.content = 'noindex, nofollow';\n document.head.appendChild(metaRobots);\n }\n\n // Set site-specific meta tags\n document.title = siteData.title;\n const metaDescription = document.createElement('meta');\n metaDescription.name = 'description';\n metaDescription.content = siteData.description;\n document.head.appendChild(metaDescription);\n\n const metaLanguage = document.createElement('meta');\n metaLanguage.httpEquiv = 'Content-Language';\n metaLanguage.content = siteData.language;\n document.head.appendChild(metaLanguage);\n\n const metaOgImage = document.createElement('meta');\n metaOgImage.content = siteData.ogImage;\n document.head.appendChild(metaOgImage);\n\n siteData.additionalMetaTags.forEach(tag => {\n const meta = document.createElement('meta');\n meta.name = tag.name || '';\n meta.content = tag.content;\n document.head.appendChild(meta);\n });\n}\n\nloadTheme();\nsetMetaTags();\n\nReactDOM.render(\n \n, document.getElementById('root'));\n"],"names":["canUseDOM","window","document","createElement","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","addEventListener","attachEvent","canUseViewport","screen","define","hasOwn","Object","prototype","hasOwnProperty","toStr","toString","defineProperty","gOPD","getOwnPropertyDescriptor","isArray","arr","Array","call","isPlainObject","obj","key","hasOwnConstructor","hasIsPrototypeOf","constructor","setProperty","target","options","name","enumerable","configurable","value","newValue","writable","getProperty","module","exports","extend","src","copy","copyIsArray","clone","arguments","i","length","deep","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","trim","str","replace","style","TypeError","lineno","column","updatePosition","lines","match","lastIndexOf","position","start","line","node","Position","whitespace","this","end","source","content","errorsList","error","msg","err","Error","reason","filename","silent","push","re","m","exec","slice","comments","rules","c","comment","pos","charAt","type","declaration","prop","val","ret","property","decl","decls","declarations","ReactPropTypesSecret","require","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","ca","p","a","b","encodeURIComponent","da","Set","ea","fa","ha","add","ia","ja","ka","la","ma","v","d","e","f","g","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","z","split","forEach","toLowerCase","ra","sa","toUpperCase","ta","pa","isNaN","qa","test","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","assign","Ma","stack","Na","Oa","prepareStackTrace","set","Reflect","construct","l","h","k","displayName","includes","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","get","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","indexOf","keys","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","removeEventListener","Nb","apply","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","Math","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","String","fromCharCode","code","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","min","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","n","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","callback","dh","K","eh","fh","gh","q","r","y","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","join","uh","vh","index","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","undefined","setState","nextProps","prevState","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","polyfill","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","newApiName","maybeSnapshot","snapshot","__suppressDeprecationWarning","bodyOpenClassName","portalClassName","_extends","_createClass","defineProperties","descriptor","Constructor","protoProps","staticProps","_react","_react2","_interopRequireDefault","_reactDom2","_propTypes2","_ModalPortal2","ariaAppHider","__esModule","newObj","default","_interopRequireWildcard","_safeHTMLElement","_safeHTMLElement2","_reactLifecyclesCompat","_possibleConstructorReturn","self","ReferenceError","isReact16","createHTMLElement","getCreatePortal","getParentElement","parentSelector","Modal","_Component","_ref","_temp","_this","_classCallCheck","_len","args","_key","__proto__","getPrototypeOf","removePortal","parent","warn","portalRef","portal","renderPortal","defaultStyles","subClass","superClass","setPrototypeOf","_inherits","className","prevParent","nextParent","_","_props","isOpen","closesAt","closeTimeoutMS","beforeClose","closeWithTimeout","setElement","propTypes","overlay","htmlOpenClassName","afterOpen","overlayClassName","appElement","SafeHTMLCollection","SafeNodeList","onAfterOpen","onRequestClose","ariaHideApp","shouldFocusAfterRender","shouldCloseOnOverlayClick","shouldReturnFocusAfterClose","preventScroll","aria","role","contentLabel","shouldCloseOnEsc","overlayRef","contentRef","overlayElement","contentElement","contentEl","right","bottom","backgroundColor","border","background","WebkitOverflowScrolling","borderRadius","outline","padding","_typeof","focusManager","_scopeTab2","classList","_portalOpenInstances2","CLASS_NAMES","ariaHiddenInstances","ModalPortal","setOverlayRef","setContentRef","afterClose","_this$props","parentDocument","remove","getElementsByTagName","show","returnFocus","teardownScopedFocus","popWithoutFocus","onAfterClose","deregister","open","beforeOpen","closeTimer","setupScopedFocus","markForFocusLater","openAnimationFrame","requestAnimationFrame","overlayEl","close","closeWithoutTimeout","focusContent","contentHasFocus","handleKeyDown","isTabKey","isEscKey","requestClose","handleOverlayOnClick","shouldClose","ownerHandlesClose","handleContentOnMouseUp","handleOverlayOnMouseDown","handleContentOnClick","handleContentOnMouseDown","shouldBeClosed","buildClassName","additional","classNames","attributesFromObject","prefix","items","reduce","acc","moveFromContentToOverlay","cancelAnimationFrame","hide","register","_props2","contentStyles","overlayStyles","overlayProps","onMouseDown","contentProps","tabIndex","onKeyDown","onMouseUp","modal","testId","resetState","globalElement","process","assertNodeList","useElement","validateElement","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","documentNotReadyOrSSRTesting","_warning","_warning2","nodeList","selector","HTMLCollection","NodeList","_arr","before","after","_i","item","instances","_arr2","_i2","check","_portalOpenInstances","subscribe","eventType","openInstances","cloneNode","parentElement","htmlElement","cls","htmlClassList","removeClass","_cls","docBodyClassList","at","classString","classListRef","poll","incrementReference","decrementReference","focusLaterElements","handleBlur","handleFocus","toFocus","pop","modalElement","_tabbable","_tabbable2","needToFocus","portalOpenInstances","PortalOpenInstances","openInstance","emit","subscribers","subscriber","_exenv","EE","SafeHTMLElement","HTMLElement","tabbable","head","getActiveElement","checkSafari","navigator","userAgent","shadowRoot","findTabbableDescendants","descendants","finished","filter","DISPLAY_NONE","DISPLAY_CONTENTS","tabbableNode","hidesContents","zeroSize","offsetWidth","offsetHeight","getComputedStyle","displayValue","getPropertyValue","scrollWidth","scrollHeight","isNotOverflowing","exception","focusable","isTabIndexNotNaN","rootNode","getRootNode","host","visible","getAttribute","isTabIndexNaN","_Modal","_Modal2","__self","__source","Fragment","jsx","jsxs","forceUpdate","escape","_status","_result","Children","map","count","toArray","only","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","inline_style_parser_1","__importDefault","styleObject","hasIterator","warning","webpackAsyncContext","req","__webpack_require__","o","ids","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","getter","leafPrototypes","getProto","ns","def","getOwnPropertyNames","definition","chunkId","all","promises","miniCssF","inProgress","dataWebpackPrefix","script","needAttach","scripts","s","charset","timeout","nc","onScriptComplete","prev","onerror","onload","doneFns","fn","toStringTag","loadStylesheet","reject","fullhref","existingLinkTags","dataHref","rel","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","request","createStylesheet","installedCssChunks","miniCss","installedChunks","j","installedChunkData","promise","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","backgroundImage","profileImage","description","_jsxs","styles","profileSection","_jsx","alt","profileContainer","profileName","icon","title","isFontAwesomeIcon","startsWith","IconElement","platform","platformIcon","platformMappings","platformURL","info","entries","getPlatformInfo","socialMediaElements","SocialMediaElement","ReactModal","nameRe","nameReJsx","emptyOptions","empty","Schema","normal","space","merge","definitions","normalize","Info","attribute","boolean","booleanish","overloadedBoolean","commaSeparated","spaceSeparated","commaOrSpaceSeparated","defined","powers","increment","checks","types","DefinedInfo","mask","super","mark","values","own","properties","transform","attributes","xlink","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xml","xmlLang","xmlBase","xmlSpace","caseSensitiveTransform","caseInsensitiveTransform","xmlns","xmlnsxlink","xmlnsXLink","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDescribedBy","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabel","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","html","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","as","async","autoCapitalize","autoComplete","autoPlay","blocking","charSet","cite","cols","colSpan","controls","controlsList","coords","crossOrigin","dateTime","decoding","defer","dir","dirName","download","draggable","encType","enterKeyHint","fetchPriority","formAction","formEncType","formMethod","formNoValidate","formTarget","headers","hidden","high","hrefLang","htmlFor","httpEquiv","imageSizes","imageSrcSet","inert","inputMode","integrity","isMap","itemId","itemProp","itemRef","itemScope","itemType","kind","label","lang","language","list","loading","loop","low","manifest","max","maxLength","media","method","minLength","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforeMatch","onBeforePrint","onBeforeToggle","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onChange","onClose","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onFocus","onFormData","onHashChange","onInput","onInvalid","onKeyPress","onKeyUp","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onResize","onScroll","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","pattern","ping","placeholder","playsInline","popover","popoverTarget","popoverTargetAction","poster","preload","readOnly","referrerPolicy","required","reversed","rows","rowSpan","sandbox","scope","scoped","seamless","shadowRootDelegatesFocus","shadowRootMode","sizes","slot","span","spellCheck","srcDoc","srcLang","srcSet","step","translate","typeMustMatch","useMap","wrap","align","aLink","archive","axis","bgColor","borderColor","bottomMargin","cellPadding","cellSpacing","charOff","classId","clear","codeBase","codeType","compact","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","profile","prompt","rev","rightMargin","scheme","scrolling","standby","summary","topMargin","valueType","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","results","security","unselectable","svg","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillRule","floodColor","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","pointerEvents","renderingIntent","shapeRendering","stopColor","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","textAnchor","textDecoration","textRendering","transformOrigin","typeOf","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","additive","alphabetic","amplitude","ascent","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","begin","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cursor","cx","cy","defaultAction","descent","diffuseConstant","direction","dur","divisor","dx","dy","edgeMode","editable","elevation","exponent","externalResourcesRequired","fill","filterRes","filterUnits","focusHighlight","format","fr","from","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","handler","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","observer","operator","orient","orientation","origin","path","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","resource","restart","result","rotate","rx","ry","scale","seed","side","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","startOffset","stdDeviation","stemh","stemv","stitchTiles","stroke","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","to","u1","u2","unicode","viewBox","viewTarget","visibility","widths","x1","x2","xChannelSelector","y1","y2","yChannelSelector","zoomAndPan","htmlBase","svgBase","valid","dash","cap","kebab","$0","camelcase","hastToReact","StyleToObject","pointEnd","point","pointStart","stringifyPosition","VFileMessage","causeOrReason","optionsOrParentOrPlace","legacyCause","place","ancestors","cause","ruleId","fatal","file","actual","expected","note","emptyMap","dashSomething","tableElements","tableCellElement","docs","toJsxRuntime","tree","filePath","development","jsxDEV","isStaticChildren","columnNumber","fileName","lineNumber","developmentCreate","productionCreate","components","elementAttributeNameCase","evaluater","createEvaluater","ignoreInvalidStyle","passKeys","passNode","schema","stylePropertyNameCase","tableCellAlignToStyle","one","parentSchema","findComponentFromName","alignValue","createProperty","createElementProps","createChildren","thing","addNode","addChildren","estree","expression","evaluateExpression","crashEstree","mdxExpression","objectExpression","argument","createJsxElementProps","mdxJsxElement","evaluateProgram","mdxEsm","root","countsByName","Type","rest","dashes","find","Number","settings","padRight","padLeft","commas","styleToObject","replacer","toCamel","parseStyle","domCasing","cssCasing","transformStyleToCssCasing","transformStylesToCssCasing","allowExpression","identifiers","isIdentifierName","computed","Boolean","optional","toDash","$1","urlAttributes","includeImageAlt","includeHtml","parameters","chunkStart","subtokenize","events","jumps","lineIndex","otherIndex","otherEvent","subevents","more","_tokenizer","_isInFirstContentOfListItem","contentType","subcontent","_container","eventIndex","token","startPosition","startPositions","tokenizer","parser","childEvents","gaps","stream","previous","adjust","breaks","sliceStream","defineSkip","_gfmTasklistFirstContentOfListItem","write","syntaxExtension","extension","hook","constructs","existing","unicodePunctuationInternal","regexCheck","asciiAlpha","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodeWhitespace","regex","factorySpace","limit","POSITIVE_INFINITY","enter","consume","exit","tokenize","contentStart","attempt","contentInitial","lineStart","childFlow","childToken","lineStartOffset","continued","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flow","flowContinue","writeToChild","eof","seen","entry","nok","disable","null","blankLine","partial","chunkInside","contentEnd","continuationConstruct","contentContinue","prefixed","sliceSerialize","initial","flowInitial","afterConstruct","resolver","resolveAll","createResolver","initializeFactory","field","notText","atBreak","resolveAllLineSuffixes","extraResolver","chunks","tabs","bufferIndex","chunk","charCodeAt","_index","_bufferIndex","called","createTokenizer","initialize","columnStart","resolveAllConstructs","consumed","accountForPotentialSkip","fields","constructFactory","addResult","onsuccessfulcheck","expandTabs","atTab","serializeChunks","main","expectedCode","startIndex","startBufferIndex","endIndex","endBufferIndex","sliceChunks","chunkIndex","go","restore","onreturn","returnState","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleMapOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","store","resolveTo","thematicBreak","marker","sequence","initialSize","atMarker","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","notBlank","furtherBlankLines","notInCurrentItem","indentConstruct","blockQuote","contBefore","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","raw","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","factoryWhitespace","normalizeIdentifier","identifier","labelAfter","markerAfter","destinationBefore","destinationAfter","titleBefore","afterWhitespace","beforeMarker","titleAfter","titleAfterOptionalWhitespace","codeIndented","afterPrefix","furtherStart","headingAtx","sequenceOpen","sequenceFurther","setextUnderline","paragraph","heading","htmlBlockNames","htmlRawNames","htmlFlow","closingTag","buffer","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationStart","blankLineBefore","continuationAfter","nonLazyContinuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","nonLazyContinuation","codeFenced","closeStart","startBefore","beforeSequenceClose","sequenceClose","sizeOpen","sequenceCloseAfter","initialPrefix","beforeSequenceOpen","infoBefore","atNonLazyBreak","metaBefore","contentBefore","beforeContentChunk","contentChunk","decodeNamedCharacterReference","characterReference","numeric","characterEscape","lineEnding","labelEnd","labelStart","_balanced","_inactive","labelEndNok","resourceConstruct","labelEndOk","referenceFullConstruct","referenceNotFull","referenceCollapsedConstruct","group","insideSpan","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFullAfter","referenceFullMissing","referenceCollapsedOpen","labelStartImage","classifyCharacter","unicodePunctuation","attention","attentionMarkers","_open","_close","openingSequence","closingSequence","use","nextEvents","movePoint","autolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","htmlText","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelStartLink","hardBreakEscape","codeText","between","tailExitIndex","headEnterIndex","resolveText","parse","extensions","combineExtensions","defaultConstructs","decodeNumericCharacterReference","parseInt","fromCodePoint","characterEscapeOrReference","decode","$2","hex","fromMarkdown","encoding","config","transforms","canContainEols","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreak","hardBreakTrailing","htmlFlowData","htmlTextData","image","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","reference","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","configure","mdastExtensions","compile","tokenStack","resume","listStack","prepareList","defaultOnError","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","_spread","and","errorHandler","onExitError","expectingFirstListItemValue","flowCodeInside","depth","setextHeadingSlurpLineEnding","codePointAt","siblings","atHardBreak","inReference","referenceType","ancestor","decodeString","fragment","characterReferenceType","ordered","spread","compiler","postprocess","atCarriageReturn","endPosition","TextDecoder","lastIndex","preprocess","combined","remarkParse","doc","env","globalThis","deserialize","serialized","deserializer","$","out","unpair","RegExp","BigInt","EMPTY","asString","shouldSkip","TYPE","serialize","json","lossy","serializer","strict","pair","toJSON","toISOString","structuredClone","normalizeUri","skip","defaultFootnoteBackContent","rereferenceIndex","defaultFootnoteBackLabel","referenceIndex","convert","castFactory","tests","anyFactory","checkAsRecord","nodeAsRecord","propsFactory","typeFactory","testFunction","looksLikeANode","CONTINUE","EXIT","SKIP","visitParents","visitor","reverse","factory","parents","visit","subresult","grandparents","toResult","nodeAsParent","testOrVisitor","visitorOrReverse","maybeReverse","revert","subtype","suffix","contents","listItemLoose","tab","trimLines","trimLine","handlers","blockquote","patch","applyData","break","footnoteReference","clobberPrefix","safeId","footnoteOrder","counter","reuseCounter","footnoteCounts","dataFootnoteRef","sup","allowDangerousHtml","imageReference","definitionById","inlineCode","linkReference","loose","listLoose","table","firstRow","tableContent","tableCell","tableRow","cellIndex","cells","cell","toml","ignore","yaml","footnoteDefinition","hName","hChildren","hProperties","defaultUnknownHandler","nodes","trimMarkdownSpaceStart","toHast","footnoteById","defaultHandlers","handle","passThrough","shallow","unknownHandler","createState","foot","footnoteBackContent","footnoteBackLabel","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","listItems","backReferences","counts","dataFootnoteBackref","tailTail","dataFootnotes","footer","remarkRehype","destination","hastTree","run","bail","trough","fns","pipeline","middlewareIndex","_len2","output","_key2","middleware","wrapped","_len3","_key3","fnExpectsCallback","_len4","_key4","middelware","basename","ext","assertPath","seenNonSlash","firstNonSlashEnd","extIndex","dirname","unmatchedSlash","extname","startPart","startDot","preDotState","joined","segments","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","normalizeString","sep","proc","cwd","isUrl","fileUrlOrPath","protocol","auth","urlToPath","URL","hostname","pathname","third","decodeURIComponent","getPathFromURLPosix","VFile","isUint8Array","history","messages","stored","assertNonEmpty","assertPart","stem","fail","part","CallableInstance","proto","names","Processor","Compiler","Parser","attachers","freezeIndex","frozen","namespace","transformers","attacher","assertUnfrozen","freeze","transformer","realFile","vfile","assertParser","assertCompiler","executor","parseTree","realDone","compileTree","compileResult","processSync","complete","assertDone","assertNode","outputTree","resultingTree","runSync","addPlugin","addList","addPreset","plugin","plugins","entryIndex","primary","currentPrimary","isPlainObj","unified","asyncName","looksLikeAVFile","emptyPlugins","emptyRemarkRehypeOptions","safeProtocol","deprecations","Markdown","allowedElements","allowElement","disallowedElements","rehypePlugins","remarkPlugins","remarkRehypeOptions","skipHtml","unwrapDisallowed","urlTransform","defaultUrlTransform","processor","deprecation","mdastTree","colon","questionMark","numberSign","copyright","linkElements","modalIsOpen","setModalIsOpen","modalContent","setModalContent","openModal","modalMarkdownContent","ModalComponent","closeModal","ReactMarkdown","App","profileData","setProfileData","photo","cardElements","fetch","response","encodedData","uint8Array","Uint8Array","atob","socialMediaObjects","ProfileSection","SocialMediaSection","CardElement","Footer","theme","matchMedia","matches","loadTheme","metaRobots","siteData","metaDescription","metaLanguage","metaOgImage","setMetaTags","ReactDOM","React","getElementById"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.93fe4510.js.map b/static/js/main.93fe4510.js.map deleted file mode 100644 index 9d44d41..0000000 --- a/static/js/main.93fe4510.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/main.93fe4510.js","mappings":"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","sources":["../node_modules/exenv/index.js","../node_modules/extend/index.js","../node_modules/inline-style-parser/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-modal/lib/components/Modal.js","../node_modules/react-modal/lib/components/ModalPortal.js","../node_modules/react-modal/lib/helpers/ariaAppHider.js","../node_modules/react-modal/lib/helpers/bodyTrap.js","../node_modules/react-modal/lib/helpers/classList.js","../node_modules/react-modal/lib/helpers/focusManager.js","../node_modules/react-modal/lib/helpers/portalOpenInstances.js","../node_modules/react-modal/lib/helpers/safeHTMLElement.js","../node_modules/react-modal/lib/helpers/scopeTab.js","../node_modules/react-modal/lib/helpers/tabbable.js","../node_modules/react-modal/lib/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/style-to-object/src/index.ts","../node_modules/warning/warning.js","colorThemes|lazy|/^/.//.*/.css$/|groupOptions: {}|namespace object","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","webpack://my-digital-card/./src/components/ProfileSection/ProfileSection.module.css?ca88","components/ProfileSection/ProfileSection.tsx","webpack://my-digital-card/./src/components/CardElement/CardElement.module.css?2254","components/IconElement/IconElement.tsx","components/CardElement/CardElement.tsx","webpack://my-digital-card/./src/components/SocialMedia/Section/SocialMediaSection.module.css?d2ac","webpack://my-digital-card/./src/components/SocialMedia/Element/SocialMediaElement.module.css?c34f","components/SocialMedia/Element/SocialMediaElement.tsx","components/SocialMedia/Section/SocialMediaSection.tsx","webpack://my-digital-card/./src/components/Modal/ModalComponent.module.css?f0ab","components/Modal/ModalComponent.tsx","webpack://my-digital-card/./src/components/Footer/Footer.module.css?bcd4","../node_modules/estree-util-is-identifier-name/lib/index.js","../node_modules/hast-util-whitespace/lib/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/index.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/lib/hast-to-react.js","../node_modules/style-to-object/esm/index.mjs","../node_modules/unist-util-position/lib/index.js","../node_modules/unist-util-stringify-position/lib/index.js","../node_modules/vfile-message/lib/index.js","../node_modules/hast-util-to-jsx-runtime/lib/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/html-url-attributes/lib/index.js","../node_modules/mdast-util-to-string/lib/index.js","../node_modules/micromark-util-chunked/index.js","../node_modules/micromark-util-subtokenize/index.js","../node_modules/micromark-util-combine-extensions/index.js","../node_modules/micromark-util-character/index.js","../node_modules/micromark-factory-space/index.js","../node_modules/micromark/lib/initialize/content.js","../node_modules/micromark/lib/initialize/document.js","../node_modules/micromark-core-commonmark/lib/blank-line.js","../node_modules/micromark-core-commonmark/lib/content.js","../node_modules/micromark/lib/initialize/flow.js","../node_modules/micromark/lib/initialize/text.js","../node_modules/micromark-util-resolve-all/index.js","../node_modules/micromark/lib/create-tokenizer.js","../node_modules/micromark-core-commonmark/lib/thematic-break.js","../node_modules/micromark-core-commonmark/lib/list.js","../node_modules/micromark-core-commonmark/lib/block-quote.js","../node_modules/micromark-factory-destination/index.js","../node_modules/micromark-factory-label/index.js","../node_modules/micromark-factory-title/index.js","../node_modules/micromark-factory-whitespace/index.js","../node_modules/micromark-util-normalize-identifier/index.js","../node_modules/micromark-core-commonmark/lib/definition.js","../node_modules/micromark-core-commonmark/lib/code-indented.js","../node_modules/micromark-core-commonmark/lib/heading-atx.js","../node_modules/micromark-core-commonmark/lib/setext-underline.js","../node_modules/micromark-util-html-tag-name/index.js","../node_modules/micromark-core-commonmark/lib/html-flow.js","../node_modules/micromark-core-commonmark/lib/code-fenced.js","../node_modules/decode-named-character-reference/index.dom.js","../node_modules/micromark-core-commonmark/lib/character-reference.js","../node_modules/micromark-core-commonmark/lib/character-escape.js","../node_modules/micromark-core-commonmark/lib/line-ending.js","../node_modules/micromark-core-commonmark/lib/label-end.js","../node_modules/micromark-core-commonmark/lib/label-start-image.js","../node_modules/micromark-util-classify-character/index.js","../node_modules/micromark-core-commonmark/lib/attention.js","../node_modules/micromark-core-commonmark/lib/autolink.js","../node_modules/micromark-core-commonmark/lib/html-text.js","../node_modules/micromark-core-commonmark/lib/label-start-link.js","../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../node_modules/micromark-core-commonmark/lib/code-text.js","../node_modules/micromark/lib/constructs.js","../node_modules/micromark/lib/parse.js","../node_modules/micromark/lib/preprocess.js","../node_modules/micromark-util-decode-numeric-character-reference/index.js","../node_modules/micromark-util-decode-string/index.js","../node_modules/mdast-util-from-markdown/lib/index.js","../node_modules/micromark/lib/postprocess.js","../node_modules/remark-parse/lib/index.js","../node_modules/@ungap/structured-clone/esm/types.js","../node_modules/@ungap/structured-clone/esm/deserialize.js","../node_modules/@ungap/structured-clone/esm/serialize.js","../node_modules/@ungap/structured-clone/esm/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit-parents/lib/index.js","../node_modules/unist-util-visit/lib/index.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/trim-lines/index.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","../node_modules/mdast-util-to-hast/lib/handlers/table-row.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/state.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/remark-rehype/lib/index.js","../node_modules/bail/index.js","../node_modules/is-plain-obj/index.js","../node_modules/trough/index.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/vfile/lib/minurl.shared.js","../node_modules/vfile/lib/minurl.browser.js","../node_modules/vfile/lib/index.js","../node_modules/unified/lib/callable-instance.js","../node_modules/unified/lib/index.js","../node_modules/react-markdown/lib/index.js","components/Footer/Footer.tsx","App.tsx","index.tsx"],"sourcesContent":["/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function (style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function (node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=318 (which dropped IE support).\n */\nvar isTabKey = function isTabKey(event) {\n return event.code === \"Tab\" || event.keyCode === 9;\n};\nvar isEscKey = function isEscKey(event) {\n return event.code === \"Escape\" || event.keyCode === 27;\n};\n\nvar ariaHiddenInstances = 0;\n\nvar ModalPortal = function (_Component) {\n _inherits(ModalPortal, _Component);\n\n function ModalPortal(props) {\n _classCallCheck(this, ModalPortal);\n\n var _this = _possibleConstructorReturn(this, (ModalPortal.__proto__ || Object.getPrototypeOf(ModalPortal)).call(this, props));\n\n _this.setOverlayRef = function (overlay) {\n _this.overlay = overlay;\n _this.props.overlayRef && _this.props.overlayRef(overlay);\n };\n\n _this.setContentRef = function (content) {\n _this.content = content;\n _this.props.contentRef && _this.props.contentRef(content);\n };\n\n _this.afterClose = function () {\n var _this$props = _this.props,\n appElement = _this$props.appElement,\n ariaHideApp = _this$props.ariaHideApp,\n htmlOpenClassName = _this$props.htmlOpenClassName,\n bodyOpenClassName = _this$props.bodyOpenClassName,\n parentSelector = _this$props.parentSelector;\n\n\n var parentDocument = parentSelector && parentSelector().ownerDocument || document;\n\n // Remove classes.\n bodyOpenClassName && classList.remove(parentDocument.body, bodyOpenClassName);\n\n htmlOpenClassName && classList.remove(parentDocument.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n // Reset aria-hidden attribute if all modals have been removed\n if (ariaHideApp && ariaHiddenInstances > 0) {\n ariaHiddenInstances -= 1;\n\n if (ariaHiddenInstances === 0) {\n ariaAppHider.show(appElement);\n }\n }\n\n if (_this.props.shouldFocusAfterRender) {\n if (_this.props.shouldReturnFocusAfterClose) {\n focusManager.returnFocus(_this.props.preventScroll);\n focusManager.teardownScopedFocus();\n } else {\n focusManager.popWithoutFocus();\n }\n }\n\n if (_this.props.onAfterClose) {\n _this.props.onAfterClose();\n }\n\n _portalOpenInstances2.default.deregister(_this);\n };\n\n _this.open = function () {\n _this.beforeOpen();\n if (_this.state.afterOpen && _this.state.beforeClose) {\n clearTimeout(_this.closeTimer);\n _this.setState({ beforeClose: false });\n } else {\n if (_this.props.shouldFocusAfterRender) {\n focusManager.setupScopedFocus(_this.node);\n focusManager.markForFocusLater();\n }\n\n _this.setState({ isOpen: true }, function () {\n _this.openAnimationFrame = requestAnimationFrame(function () {\n _this.setState({ afterOpen: true });\n\n if (_this.props.isOpen && _this.props.onAfterOpen) {\n _this.props.onAfterOpen({\n overlayEl: _this.overlay,\n contentEl: _this.content\n });\n }\n });\n });\n }\n };\n\n _this.close = function () {\n if (_this.props.closeTimeoutMS > 0) {\n _this.closeWithTimeout();\n } else {\n _this.closeWithoutTimeout();\n }\n };\n\n _this.focusContent = function () {\n return _this.content && !_this.contentHasFocus() && _this.content.focus({ preventScroll: true });\n };\n\n _this.closeWithTimeout = function () {\n var closesAt = Date.now() + _this.props.closeTimeoutMS;\n _this.setState({ beforeClose: true, closesAt: closesAt }, function () {\n _this.closeTimer = setTimeout(_this.closeWithoutTimeout, _this.state.closesAt - Date.now());\n });\n };\n\n _this.closeWithoutTimeout = function () {\n _this.setState({\n beforeClose: false,\n isOpen: false,\n afterOpen: false,\n closesAt: null\n }, _this.afterClose);\n };\n\n _this.handleKeyDown = function (event) {\n if (isTabKey(event)) {\n (0, _scopeTab2.default)(_this.content, event);\n }\n\n if (_this.props.shouldCloseOnEsc && isEscKey(event)) {\n event.stopPropagation();\n _this.requestClose(event);\n }\n };\n\n _this.handleOverlayOnClick = function (event) {\n if (_this.shouldClose === null) {\n _this.shouldClose = true;\n }\n\n if (_this.shouldClose && _this.props.shouldCloseOnOverlayClick) {\n if (_this.ownerHandlesClose()) {\n _this.requestClose(event);\n } else {\n _this.focusContent();\n }\n }\n _this.shouldClose = null;\n };\n\n _this.handleContentOnMouseUp = function () {\n _this.shouldClose = false;\n };\n\n _this.handleOverlayOnMouseDown = function (event) {\n if (!_this.props.shouldCloseOnOverlayClick && event.target == _this.overlay) {\n event.preventDefault();\n }\n };\n\n _this.handleContentOnClick = function () {\n _this.shouldClose = false;\n };\n\n _this.handleContentOnMouseDown = function () {\n _this.shouldClose = false;\n };\n\n _this.requestClose = function (event) {\n return _this.ownerHandlesClose() && _this.props.onRequestClose(event);\n };\n\n _this.ownerHandlesClose = function () {\n return _this.props.onRequestClose;\n };\n\n _this.shouldBeClosed = function () {\n return !_this.state.isOpen && !_this.state.beforeClose;\n };\n\n _this.contentHasFocus = function () {\n return document.activeElement === _this.content || _this.content.contains(document.activeElement);\n };\n\n _this.buildClassName = function (which, additional) {\n var classNames = (typeof additional === \"undefined\" ? \"undefined\" : _typeof(additional)) === \"object\" ? additional : {\n base: CLASS_NAMES[which],\n afterOpen: CLASS_NAMES[which] + \"--after-open\",\n beforeClose: CLASS_NAMES[which] + \"--before-close\"\n };\n var className = classNames.base;\n if (_this.state.afterOpen) {\n className = className + \" \" + classNames.afterOpen;\n }\n if (_this.state.beforeClose) {\n className = className + \" \" + classNames.beforeClose;\n }\n return typeof additional === \"string\" && additional ? className + \" \" + additional : className;\n };\n\n _this.attributesFromObject = function (prefix, items) {\n return Object.keys(items).reduce(function (acc, name) {\n acc[prefix + \"-\" + name] = items[name];\n return acc;\n }, {});\n };\n\n _this.state = {\n afterOpen: false,\n beforeClose: false\n };\n\n _this.shouldClose = null;\n _this.moveFromContentToOverlay = null;\n return _this;\n }\n\n _createClass(ModalPortal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.isOpen) {\n this.open();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (process.env.NODE_ENV !== \"production\") {\n if (prevProps.bodyOpenClassName !== this.props.bodyOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"bodyOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n if (prevProps.htmlOpenClassName !== this.props.htmlOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"htmlOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n }\n\n if (this.props.isOpen && !prevProps.isOpen) {\n this.open();\n } else if (!this.props.isOpen && prevProps.isOpen) {\n this.close();\n }\n\n // Focus only needs to be set once when the modal is being opened\n if (this.props.shouldFocusAfterRender && this.state.isOpen && !prevState.isOpen) {\n this.focusContent();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.state.isOpen) {\n this.afterClose();\n }\n clearTimeout(this.closeTimer);\n cancelAnimationFrame(this.openAnimationFrame);\n }\n }, {\n key: \"beforeOpen\",\n value: function beforeOpen() {\n var _props = this.props,\n appElement = _props.appElement,\n ariaHideApp = _props.ariaHideApp,\n htmlOpenClassName = _props.htmlOpenClassName,\n bodyOpenClassName = _props.bodyOpenClassName,\n parentSelector = _props.parentSelector;\n\n\n var parentDocument = parentSelector && parentSelector().ownerDocument || document;\n\n // Add classes.\n bodyOpenClassName && classList.add(parentDocument.body, bodyOpenClassName);\n\n htmlOpenClassName && classList.add(parentDocument.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n if (ariaHideApp) {\n ariaHiddenInstances += 1;\n ariaAppHider.hide(appElement);\n }\n\n _portalOpenInstances2.default.register(this);\n }\n\n // Don't steal focus from inner elements\n\n }, {\n key: \"render\",\n value: function render() {\n var _props2 = this.props,\n id = _props2.id,\n className = _props2.className,\n overlayClassName = _props2.overlayClassName,\n defaultStyles = _props2.defaultStyles,\n children = _props2.children;\n\n var contentStyles = className ? {} : defaultStyles.content;\n var overlayStyles = overlayClassName ? {} : defaultStyles.overlay;\n\n if (this.shouldBeClosed()) {\n return null;\n }\n\n var overlayProps = {\n ref: this.setOverlayRef,\n className: this.buildClassName(\"overlay\", overlayClassName),\n style: _extends({}, overlayStyles, this.props.style.overlay),\n onClick: this.handleOverlayOnClick,\n onMouseDown: this.handleOverlayOnMouseDown\n };\n\n var contentProps = _extends({\n id: id,\n ref: this.setContentRef,\n style: _extends({}, contentStyles, this.props.style.content),\n className: this.buildClassName(\"content\", className),\n tabIndex: \"-1\",\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleContentOnMouseDown,\n onMouseUp: this.handleContentOnMouseUp,\n onClick: this.handleContentOnClick,\n role: this.props.role,\n \"aria-label\": this.props.contentLabel\n }, this.attributesFromObject(\"aria\", _extends({ modal: true }, this.props.aria)), this.attributesFromObject(\"data\", this.props.data || {}), {\n \"data-testid\": this.props.testId\n });\n\n var contentElement = this.props.contentElement(contentProps, children);\n return this.props.overlayElement(overlayProps, contentElement);\n }\n }]);\n\n return ModalPortal;\n}(_react.Component);\n\nModalPortal.defaultProps = {\n style: {\n overlay: {},\n content: {}\n },\n defaultStyles: {}\n};\nModalPortal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n defaultStyles: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n parentSelector: _propTypes2.default.func,\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n ariaHideApp: _propTypes2.default.bool,\n appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n onAfterOpen: _propTypes2.default.func,\n onAfterClose: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n preventScroll: _propTypes2.default.bool,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n children: _propTypes2.default.node,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func,\n id: _propTypes2.default.string,\n overlayElement: _propTypes2.default.func,\n contentElement: _propTypes2.default.func,\n testId: _propTypes2.default.string\n};\nexports.default = ModalPortal;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.assertNodeList = assertNodeList;\nexports.setElement = setElement;\nexports.validateElement = validateElement;\nexports.hide = hide;\nexports.show = show;\nexports.documentNotReadyOrSSRTesting = documentNotReadyOrSSRTesting;\n\nvar _warning = require(\"warning\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _safeHTMLElement = require(\"./safeHTMLElement\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar globalElement = null;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n if (globalElement) {\n if (globalElement.removeAttribute) {\n globalElement.removeAttribute(\"aria-hidden\");\n } else if (globalElement.length != null) {\n globalElement.forEach(function (element) {\n return element.removeAttribute(\"aria-hidden\");\n });\n } else {\n document.querySelectorAll(globalElement).forEach(function (element) {\n return element.removeAttribute(\"aria-hidden\");\n });\n }\n }\n globalElement = null;\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n var check = globalElement || {};\n console.log(\"ariaAppHider ----------\");\n console.log(check.nodeName, check.className, check.id);\n console.log(\"end ariaAppHider ----------\");\n }\n}\n/* eslint-enable no-console */\n\nfunction assertNodeList(nodeList, selector) {\n if (!nodeList || !nodeList.length) {\n throw new Error(\"react-modal: No elements were found for selector \" + selector + \".\");\n }\n}\n\nfunction setElement(element) {\n var useElement = element;\n if (typeof useElement === \"string\" && _safeHTMLElement.canUseDOM) {\n var el = document.querySelectorAll(useElement);\n assertNodeList(el, useElement);\n useElement = el;\n }\n globalElement = useElement || globalElement;\n return globalElement;\n}\n\nfunction validateElement(appElement) {\n var el = appElement || globalElement;\n if (el) {\n return Array.isArray(el) || el instanceof HTMLCollection || el instanceof NodeList ? el : [el];\n } else {\n (0, _warning2.default)(false, [\"react-modal: App element is not defined.\", \"Please use `Modal.setAppElement(el)` or set `appElement={el}`.\", \"This is needed so screen readers don't see main content\", \"when modal is opened. It is not recommended, but you can opt-out\", \"by setting `ariaHideApp={false}`.\"].join(\" \"));\n\n return [];\n }\n}\n\nfunction hide(appElement) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = validateElement(appElement)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var el = _step.value;\n\n el.setAttribute(\"aria-hidden\", \"true\");\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\nfunction show(appElement) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = validateElement(appElement)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var el = _step2.value;\n\n el.removeAttribute(\"aria-hidden\");\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n}\n\nfunction documentNotReadyOrSSRTesting() {\n globalElement = null;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\n\nvar _portalOpenInstances = require(\"./portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Body focus trap see Issue #742\n\nvar before = void 0,\n after = void 0,\n instances = [];\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n var _arr = [before, after];\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var item = _arr[_i];\n if (!item) continue;\n item.parentNode && item.parentNode.removeChild(item);\n }\n before = after = null;\n instances = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n console.log(\"bodyTrap ----------\");\n console.log(instances.length);\n var _arr2 = [before, after];\n for (var _i2 = 0; _i2 < _arr2.length; _i2++) {\n var item = _arr2[_i2];\n var check = item || {};\n console.log(check.nodeName, check.className, check.id);\n }\n console.log(\"edn bodyTrap ----------\");\n}\n/* eslint-enable no-console */\n\nfunction focusContent() {\n if (instances.length === 0) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Open instances > 0 expected\");\n }\n return;\n }\n instances[instances.length - 1].focusContent();\n}\n\nfunction bodyTrap(eventType, openInstances) {\n if (!before && !after) {\n before = document.createElement(\"div\");\n before.setAttribute(\"data-react-modal-body-trap\", \"\");\n before.style.position = \"absolute\";\n before.style.opacity = \"0\";\n before.setAttribute(\"tabindex\", \"0\");\n before.addEventListener(\"focus\", focusContent);\n after = before.cloneNode();\n after.addEventListener(\"focus\", focusContent);\n }\n\n instances = openInstances;\n\n if (instances.length > 0) {\n // Add focus trap\n if (document.body.firstChild !== before) {\n document.body.insertBefore(before, document.body.firstChild);\n }\n if (document.body.lastChild !== after) {\n document.body.appendChild(after);\n }\n } else {\n // Remove focus trap\n if (before.parentElement) {\n before.parentElement.removeChild(before);\n }\n if (after.parentElement) {\n after.parentElement.removeChild(after);\n }\n }\n}\n\n_portalOpenInstances2.default.subscribe(bodyTrap);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nvar htmlClassList = {};\nvar docBodyClassList = {};\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction removeClass(at, cls) {\n at.classList.remove(cls);\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n var htmlElement = document.getElementsByTagName(\"html\")[0];\n for (var cls in htmlClassList) {\n removeClass(htmlElement, htmlClassList[cls]);\n }\n\n var body = document.body;\n for (var _cls in docBodyClassList) {\n removeClass(body, docBodyClassList[_cls]);\n }\n\n htmlClassList = {};\n docBodyClassList = {};\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n var classes = document.getElementsByTagName(\"html\")[0].className;\n var buffer = \"Show tracked classes:\\n\\n\";\n\n buffer += \" (\" + classes + \"):\\n \";\n for (var x in htmlClassList) {\n buffer += \" \" + x + \" \" + htmlClassList[x] + \"\\n \";\n }\n\n classes = document.body.className;\n\n buffer += \"\\n\\ndoc.body (\" + classes + \"):\\n \";\n for (var _x in docBodyClassList) {\n buffer += \" \" + _x + \" \" + docBodyClassList[_x] + \"\\n \";\n }\n\n buffer += \"\\n\";\n\n console.log(buffer);\n }\n}\n/* eslint-enable no-console */\n\n/**\n * Track the number of reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar incrementReference = function incrementReference(poll, className) {\n if (!poll[className]) {\n poll[className] = 0;\n }\n poll[className] += 1;\n return className;\n};\n\n/**\n * Drop the reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar decrementReference = function decrementReference(poll, className) {\n if (poll[className]) {\n poll[className] -= 1;\n }\n return className;\n};\n\n/**\n * Track a class and add to the given class list.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be tracked.\n */\nvar trackClass = function trackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n incrementReference(poll, className);\n classListRef.add(className);\n });\n};\n\n/**\n * Untrack a class and remove from the given class list if the reference\n * reaches 0.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be untracked.\n */\nvar untrackClass = function untrackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n decrementReference(poll, className);\n poll[className] === 0 && classListRef.remove(className);\n });\n};\n\n/**\n * Public inferface to add classes to the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\nvar add = exports.add = function add(element, classString) {\n return trackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};\n\n/**\n * Public inferface to remove classes from the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\nvar remove = exports.remove = function remove(element, classString) {\n return untrackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.handleBlur = handleBlur;\nexports.handleFocus = handleFocus;\nexports.markForFocusLater = markForFocusLater;\nexports.returnFocus = returnFocus;\nexports.popWithoutFocus = popWithoutFocus;\nexports.setupScopedFocus = setupScopedFocus;\nexports.teardownScopedFocus = teardownScopedFocus;\n\nvar _tabbable = require(\"../helpers/tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar focusLaterElements = [];\nvar modalElement = null;\nvar needToFocus = false;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n focusLaterElements = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n console.log(\"focusManager ----------\");\n focusLaterElements.forEach(function (f) {\n var check = f || {};\n console.log(check.nodeName, check.className, check.id);\n });\n console.log(\"end focusManager ----------\");\n }\n}\n/* eslint-enable no-console */\n\nfunction handleBlur() {\n needToFocus = true;\n}\n\nfunction handleFocus() {\n if (needToFocus) {\n needToFocus = false;\n if (!modalElement) {\n return;\n }\n // need to see how jQuery shims document.on('focusin') so we don't need the\n // setTimeout, firefox doesn't support focusin, if it did, we could focus\n // the element outside of a setTimeout. Side-effect of this implementation\n // is that the document.body gets focus, and then we focus our element right\n // after, seems fine.\n setTimeout(function () {\n if (modalElement.contains(document.activeElement)) {\n return;\n }\n var el = (0, _tabbable2.default)(modalElement)[0] || modalElement;\n el.focus();\n }, 0);\n }\n}\n\nfunction markForFocusLater() {\n focusLaterElements.push(document.activeElement);\n}\n\n/* eslint-disable no-console */\nfunction returnFocus() {\n var preventScroll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var toFocus = null;\n try {\n if (focusLaterElements.length !== 0) {\n toFocus = focusLaterElements.pop();\n toFocus.focus({ preventScroll: preventScroll });\n }\n return;\n } catch (e) {\n console.warn([\"You tried to return focus to\", toFocus, \"but it is not in the DOM anymore\"].join(\" \"));\n }\n}\n/* eslint-enable no-console */\n\nfunction popWithoutFocus() {\n focusLaterElements.length > 0 && focusLaterElements.pop();\n}\n\nfunction setupScopedFocus(element) {\n modalElement = element;\n\n if (window.addEventListener) {\n window.addEventListener(\"blur\", handleBlur, false);\n document.addEventListener(\"focus\", handleFocus, true);\n } else {\n window.attachEvent(\"onBlur\", handleBlur);\n document.attachEvent(\"onFocus\", handleFocus);\n }\n}\n\nfunction teardownScopedFocus() {\n modalElement = null;\n\n if (window.addEventListener) {\n window.removeEventListener(\"blur\", handleBlur);\n document.removeEventListener(\"focus\", handleFocus);\n } else {\n window.detachEvent(\"onBlur\", handleBlur);\n document.detachEvent(\"onFocus\", handleFocus);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.log = log;\nexports.resetState = resetState;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Tracks portals that are open and emits events to subscribers\n\nvar PortalOpenInstances = function PortalOpenInstances() {\n var _this = this;\n\n _classCallCheck(this, PortalOpenInstances);\n\n this.register = function (openInstance) {\n if (_this.openInstances.indexOf(openInstance) !== -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Cannot register modal instance that's already open\");\n }\n return;\n }\n _this.openInstances.push(openInstance);\n _this.emit(\"register\");\n };\n\n this.deregister = function (openInstance) {\n var index = _this.openInstances.indexOf(openInstance);\n if (index === -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Unable to deregister \" + openInstance + \" as \" + \"it was never registered\");\n }\n return;\n }\n _this.openInstances.splice(index, 1);\n _this.emit(\"deregister\");\n };\n\n this.subscribe = function (callback) {\n _this.subscribers.push(callback);\n };\n\n this.emit = function (eventType) {\n _this.subscribers.forEach(function (subscriber) {\n return subscriber(eventType,\n // shallow copy to avoid accidental mutation\n _this.openInstances.slice());\n });\n };\n\n this.openInstances = [];\n this.subscribers = [];\n};\n\nvar portalOpenInstances = new PortalOpenInstances();\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction log() {\n console.log(\"portalOpenInstances ----------\");\n console.log(portalOpenInstances.openInstances.length);\n portalOpenInstances.openInstances.forEach(function (p) {\n return console.log(p);\n });\n console.log(\"end portalOpenInstances ----------\");\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n portalOpenInstances = new PortalOpenInstances();\n}\n/* eslint-enable no-console */\n\nexports.default = portalOpenInstances;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canUseDOM = exports.SafeNodeList = exports.SafeHTMLCollection = undefined;\n\nvar _exenv = require(\"exenv\");\n\nvar _exenv2 = _interopRequireDefault(_exenv);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EE = _exenv2.default;\n\nvar SafeHTMLElement = EE.canUseDOM ? window.HTMLElement : {};\n\nvar SafeHTMLCollection = exports.SafeHTMLCollection = EE.canUseDOM ? window.HTMLCollection : {};\n\nvar SafeNodeList = exports.SafeNodeList = EE.canUseDOM ? window.NodeList : {};\n\nvar canUseDOM = exports.canUseDOM = EE.canUseDOM;\n\nexports.default = SafeHTMLElement;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = scopeTab;\n\nvar _tabbable = require(\"./tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getActiveElement() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n\n return el.activeElement.shadowRoot ? getActiveElement(el.activeElement.shadowRoot) : el.activeElement;\n}\n\nfunction scopeTab(node, event) {\n var tabbable = (0, _tabbable2.default)(node);\n\n if (!tabbable.length) {\n // Do nothing, since there are no elements that can receive focus.\n event.preventDefault();\n return;\n }\n\n var target = void 0;\n\n var shiftKey = event.shiftKey;\n var head = tabbable[0];\n var tail = tabbable[tabbable.length - 1];\n var activeElement = getActiveElement();\n\n // proceed with default browser behavior on tab.\n // Focus on last element on shift + tab.\n if (node === activeElement) {\n if (!shiftKey) return;\n target = tail;\n }\n\n if (tail === activeElement && !shiftKey) {\n target = head;\n }\n\n if (head === activeElement && shiftKey) {\n target = tail;\n }\n\n if (target) {\n event.preventDefault();\n target.focus();\n return;\n }\n\n // Safari radio issue.\n //\n // Safari does not move the focus to the radio button,\n // so we need to force it to really walk through all elements.\n //\n // This is very error prone, since we are trying to guess\n // if it is a safari browser from the first occurence between\n // chrome or safari.\n //\n // The chrome user agent contains the first ocurrence\n // as the 'chrome/version' and later the 'safari/version'.\n var checkSafari = /(\\bChrome\\b|\\bSafari\\b)\\//.exec(navigator.userAgent);\n var isSafariDesktop = checkSafari != null && checkSafari[1] != \"Chrome\" && /\\biPod\\b|\\biPad\\b/g.exec(navigator.userAgent) == null;\n\n // If we are not in safari desktop, let the browser control\n // the focus\n if (!isSafariDesktop) return;\n\n var x = tabbable.indexOf(activeElement);\n\n if (x > -1) {\n x += shiftKey ? -1 : 1;\n }\n\n target = tabbable[x];\n\n // If the tabbable element does not exist,\n // focus head/tail based on shiftKey\n if (typeof target === \"undefined\") {\n event.preventDefault();\n target = shiftKey ? tail : head;\n target.focus();\n return;\n }\n\n event.preventDefault();\n\n target.focus();\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = findTabbableDescendants;\n/*!\n * Adapted from jQuery UI core\n *\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\nvar DISPLAY_NONE = \"none\";\nvar DISPLAY_CONTENTS = \"contents\";\n\nvar tabbableNode = /input|select|textarea|button|object|iframe/;\n\nfunction isNotOverflowing(element, style) {\n return style.getPropertyValue(\"overflow\") !== \"visible\" ||\n // if 'overflow: visible' set, check if there is actually any overflow\n element.scrollWidth <= 0 && element.scrollHeight <= 0;\n}\n\nfunction hidesContents(element) {\n var zeroSize = element.offsetWidth <= 0 && element.offsetHeight <= 0;\n\n // If the node is empty, this is good enough\n if (zeroSize && !element.innerHTML) return true;\n\n try {\n // Otherwise we need to check some styles\n var style = window.getComputedStyle(element);\n var displayValue = style.getPropertyValue(\"display\");\n return zeroSize ? displayValue !== DISPLAY_CONTENTS && isNotOverflowing(element, style) : displayValue === DISPLAY_NONE;\n } catch (exception) {\n // eslint-disable-next-line no-console\n console.warn(\"Failed to inspect element style\");\n return false;\n }\n}\n\nfunction visible(element) {\n var parentElement = element;\n var rootNode = element.getRootNode && element.getRootNode();\n while (parentElement) {\n if (parentElement === document.body) break;\n\n // if we are not hidden yet, skip to checking outside the Web Component\n if (rootNode && parentElement === rootNode) parentElement = rootNode.host.parentNode;\n\n if (hidesContents(parentElement)) return false;\n parentElement = parentElement.parentNode;\n }\n return true;\n}\n\nfunction focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n var res = tabbableNode.test(nodeName) && !element.disabled || (nodeName === \"a\" ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);\n return res && visible(element);\n}\n\nfunction tabbable(element) {\n var tabIndex = element.getAttribute(\"tabindex\");\n if (tabIndex === null) tabIndex = undefined;\n var isTabIndexNaN = isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n}\n\nfunction findTabbableDescendants(element) {\n var descendants = [].slice.call(element.querySelectorAll(\"*\"), 0).reduce(function (finished, el) {\n return finished.concat(!el.shadowRoot ? [el] : findTabbableDescendants(el.shadowRoot));\n }, []);\n return descendants.filter(tabbable);\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Modal = require(\"./components/Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Modal2.default;\nmodule.exports = exports[\"default\"];","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","import parse from 'inline-style-parser';\nimport type { Declaration } from 'inline-style-parser';\n\nexport { Declaration };\n\ninterface StyleObject {\n [name: string]: string;\n}\n\ntype Iterator = (\n property: string,\n value: string,\n declaration: Declaration,\n) => void;\n\n/**\n * Parses inline style to object.\n *\n * @param style - Inline style.\n * @param iterator - Iterator.\n * @returns - Style object or null.\n *\n * @example Parsing inline style to object:\n *\n * ```js\n * import parse from 'style-to-object';\n * parse('line-height: 42;'); // { 'line-height': '42' }\n * ```\n */\nexport default function StyleToObject(\n style: string,\n iterator?: Iterator,\n): StyleObject | null {\n let styleObject: StyleObject | null = null;\n\n if (!style || typeof style !== 'string') {\n return styleObject;\n }\n\n const declarations = parse(style);\n const hasIterator = typeof iterator === 'function';\n\n declarations.forEach((declaration) => {\n if (declaration.type !== 'declaration') {\n return;\n }\n\n const { property, value } = declaration;\n\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n styleObject = styleObject || {};\n styleObject[property] = value;\n }\n });\n\n return styleObject;\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","var map = {\n\t\"./dark.css\": [\n\t\t628,\n\t\t628\n\t],\n\t\"./default.css\": [\n\t\t397,\n\t\t397\n\t],\n\t\"./light.css\": [\n\t\t286,\n\t\t286\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 746;\nmodule.exports = webpackAsyncContext;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"286\":\"3f5f4987\",\"397\":\"ba95b3f0\",\"449\":\"45173e9e\",\"628\":\"ef8e3c43\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + chunkId + \".\" + {\"286\":\"ead04c20\",\"397\":\"57b3426d\",\"628\":\"672c354f\"}[chunkId] + \".chunk.css\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"my-digital-card:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"https://weisser-dev.github.io/my-digital-card/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"286\":1,\"397\":1,\"628\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkmy_digital_card\"] = self[\"webpackChunkmy_digital_card\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// extracted by mini-css-extract-plugin\nexport default {\"backgroundImage\":\"ProfileSection_backgroundImage__uiwCq\",\"profileContainer\":\"ProfileSection_profileContainer__VaeFZ\",\"profileImage\":\"ProfileSection_profileImage__pbcto\",\"profileName\":\"ProfileSection_profileName__LOhHx\"};","import React from 'react';\nimport styles from './ProfileSection.module.css';\n\ninterface ProfileSectionProps {\n name: string;\n backgroundImage: string;\n profileImage: string;\n description: string;\n}\n\nconst ProfileSection: React.FC = ({name, backgroundImage, profileImage, description}) => {\n return (
\n {name}\n
\n {name}\n
\n

{name}

\n

{description}

\n
);\n};\n\nexport default ProfileSection;\n","// extracted by mini-css-extract-plugin\nexport default {\"cardElement\":\"CardElement_cardElement__sIFMY\",\"cardElementIcon\":\"CardElement_cardElementIcon__1QJCy\",\"cardTitle\":\"CardElement_cardTitle__+mcs7\",\"cardText\":\"CardElement_cardText__cf5lA\"};","import React from 'react';\n\ninterface IconElementProps {\n icon: string;\n title: string;\n}\n\nconst IconElement: React.FC = ({icon, title}) => {\n const isFontAwesomeIcon = icon.startsWith('fa-') || icon.startsWith('fab ');\n\n return (
\n {isFontAwesomeIcon ? () : ({title}/)}\n
);\n};\n\nexport default IconElement;\n","import React from 'react';\nimport styles from './CardElement.module.css';\nimport IconElement from '../IconElement/IconElement';\n\ninterface CardElementProps {\n title: string;\n description: string;\n href: string;\n icon: string;\n}\n\nconst CardElement: React.FC = ({title, description, href, icon}) => {\n return ();\n};\n\nexport default CardElement;\n","// extracted by mini-css-extract-plugin\nexport default {\"socialMediaSection\":\"SocialMediaSection_socialMediaSection__mZqph\"};","// extracted by mini-css-extract-plugin\nexport default {\"socialMediaLink\":\"SocialMediaElement_socialMediaLink__uSxDZ\",\"socialMediaIcon\":\"SocialMediaElement_socialMediaIcon__4aKmc\"};","import React from 'react';\nimport styles from './SocialMediaElement.module.css';\nimport './SocialMediaIcons.css';\n\ninterface SocialMediaElementProps {\n href: string;\n}\n\nconst SocialMediaElement: React.FC = ({href}) => {\n const getPlatformInfo = (url: string) => {\n const platformMappings: Record = {\n 'facebook.com': {platform: 'Facebook', icon: 'fab fa-facebook'},\n 'twitter.com': {platform: 'Twitter', icon: 'fab fa-twitter'},\n 'linkedin.com': {platform: 'LinkedIn', icon: 'fab fa-linkedin'},\n 'instagram.com': {platform: 'Instagram', icon: 'fab fa-instagram'},\n 'youtube.com': {platform: 'YouTube', icon: 'fab fa-youtube'},\n 'pinterest.com': {platform: 'Pinterest', icon: 'fab fa-pinterest'},\n 'snapchat.com': {platform: 'SnapChat', icon: 'fab fa-snapchat'},\n 'github.com': {platform: 'GitHub', icon: 'fab fa-github'},\n 'wa.me': {platform: 'WhatsApp', icon: 'fab fa-whatsapp'},\n };\n\n for (const [platformURL, info] of Object.entries(platformMappings)) {\n if (url.includes(platformURL)) {\n return info;\n }\n }\n\n return {platform: 'Unknown', icon: 'fas fa-link'};\n };\n\n const {platform, icon: platformIcon} = getPlatformInfo(href);\n const title = `Visit ${platform}`;\n\n return (\n \n );\n};\n\nexport default SocialMediaElement;","import React from 'react';\nimport styles from './SocialMediaSection.module.css';\nimport SocialMediaElement from '../Element/SocialMediaElement';\n\ninterface SocialMediaSectionProps {\n socialMediaElements: { href: string }[];\n}\n\nconst SocialMediaSection: React.FC = ({socialMediaElements}) => {\n return (
\n {socialMediaElements.map((element, index) => ())}\n
);\n};\n\nexport default SocialMediaSection;\n","// extracted by mini-css-extract-plugin\nexport default {\"overlay\":\"ModalComponent_overlay__Jc2NM\",\"modal\":\"ModalComponent_modal__yZ3fx\",\"closeButton\":\"ModalComponent_closeButton__X32Qb\"};","// src/components/ModalComponent.tsx\nimport React from 'react';\nimport ReactModal from 'react-modal';\nimport styles from './ModalComponent.module.css';\n\nReactModal.setAppElement('#root');\n\ninterface ModalComponentProps {\n isOpen: boolean;\n contentLabel: string;\n onRequestClose: () => void;\n children: React.ReactNode;\n}\n\nconst ModalComponent: React.FC = ({isOpen, contentLabel, onRequestClose, children}) => {\n return (\n \n {children}\n );\n};\n\nexport default ModalComponent;\n","// extracted by mini-css-extract-plugin\nexport default {\"footer\":\"Footer_footer__kXlYa\",\"footerCopyright\":\"Footer_footerCopyright__iqeSK\",\"footerLinks\":\"Footer_footerLinks__3aiFY\",\"footerElement\":\"Footer_footerElement__M7jMA\"};","/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [jsx=false]\n * Support JSX identifiers (default: `false`).\n */\n\nconst startRe = /[$_\\p{ID_Start}]/u\nconst contRe = /[$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst contReJsx = /[-$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst nameRe = /^[$_\\p{ID_Start}][$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\nconst nameReJsx = /^[$_\\p{ID_Start}][-$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Checks if the given code point can start an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @returns {boolean}\n * Whether `code` can start an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function start(code) {\n return code ? startRe.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given code point can continue an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `code` can continue an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function cont(code, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? contReJsx : contRe\n return code ? re.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given value is a valid identifier name.\n *\n * @param {string} name\n * Identifier to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `name` can be an identifier.\n */\nexport function name(name, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? nameReJsx : nameRe\n return re.test(name)\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See .\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record} Properties\n * @typedef {Record} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: boolean,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // ``. List of URIs to archives\n axis: null, // `
` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
`. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
`\n cellSpacing: null, // `
`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
`. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // ``\n event: null, // `\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase()\n if (htmlRawNames.includes(name)) {\n effects.consume(code)\n return continuationClose\n }\n return continuation(code)\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationAfter(code)\n }\n effects.consume(code)\n return continuationClose\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit('htmlFlow')\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return after\n }\n return nok(code)\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n}\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n }\n let initialPrefix = 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code)\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1]\n initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n marker = code\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++\n effects.consume(code)\n return sequenceOpen\n }\n if (sizeOpen < 3) {\n return nok(code)\n }\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, infoBefore, 'whitespace')(code)\n : infoBefore(code)\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return self.interrupt\n ? ok(code)\n : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return infoBefore(code)\n }\n if (markdownSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, metaBefore, 'whitespace')(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return info\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code)\n }\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return infoBefore(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return meta\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code)\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return contentStart\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code)\n ? factorySpace(\n effects,\n beforeContentChunk,\n 'linePrefix',\n initialPrefix + 1\n )(code)\n : beforeContentChunk(code)\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return contentChunk(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return beforeContentChunk(code)\n }\n effects.consume(code)\n return contentChunk\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0\n return startBefore\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter('codeFencedFence')\n return markdownSpace(code)\n ? factorySpace(\n effects,\n beforeSequenceClose,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : beforeSequenceClose(code)\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter('codeFencedFenceSequence')\n return sequenceClose(code)\n }\n return nok(code)\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++\n effects.consume(code)\n return sequenceClose\n }\n if (size >= sizeOpen) {\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, sequenceCloseAfter, 'whitespace')(code)\n : sequenceCloseAfter(code)\n }\n return nok(code)\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n return nok(code)\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this\n return start\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code)\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n let max\n /** @type {(code: Code) => boolean} */\n let test\n return start\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit('characterReferenceValue')\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {asciiPunctuation} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return inside\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1\n while (++index < events.length) {\n const token = events[index][1]\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n let token\n /** @type {number | undefined} */\n let open\n /** @type {number | undefined} */\n let close\n /** @type {Array} */\n let media\n\n // Find an opening.\n while (index--) {\n token = events[index][1]\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ]\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3))\n\n // Text open.\n media = push(media, [['enter', text, context]])\n\n // Always populated by defaults.\n\n // Between.\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n )\n\n // Text close, marker close, label close.\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ])\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1))\n\n // Media close.\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n let labelStart\n /** @type {boolean} */\n let defined\n\n // Find an opening.\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n return start\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code)\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code)\n }\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return after\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n labelEndOk,\n defined ? labelEndOk : labelEndNok\n )(code)\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(\n referenceFullConstruct,\n labelEndOk,\n defined ? referenceNotFull : labelEndNok\n )(code)\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code)\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(\n referenceCollapsedConstruct,\n labelEndOk,\n labelEndNok\n )(code)\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code)\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return resourceBefore\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceOpen)(code)\n : resourceOpen(code)\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code)\n }\n return factoryDestination(\n effects,\n resourceDestinationAfter,\n resourceDestinationMissing,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceBetween)(code)\n : resourceEnd(code)\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code)\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n resourceTitleAfter,\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n return resourceEnd(code)\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceEnd)(code)\n : resourceEnd(code)\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this\n return referenceFull\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(\n self,\n effects,\n referenceFullAfter,\n referenceFullMissing,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return referenceCollapsedOpen\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n let open\n /** @type {Token} */\n let group\n /** @type {Token} */\n let text\n /** @type {Token} */\n let openingSequence\n /** @type {Token} */\n let closingSequence\n /** @type {number} */\n let use\n /** @type {Array} */\n let nextEvents\n /** @type {number} */\n let offset\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n }\n\n // Number of markers to use from the sequence.\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = []\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n }\n\n // Opening.\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ])\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n )\n\n // Closing.\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ])\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code\n effects.enter('attentionSequence')\n return inside(code)\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n const token = effects.exit('attentionSequence')\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code)\n\n // Always populated by defaults.\n\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {undefined}\n */\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n return emailAtext(code)\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1\n return schemeInsideOrEmailAtext(code)\n }\n return emailAtext(code)\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n size = 0\n return urlInside\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n size = 0\n return emailAtext(code)\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return urlInside\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n return emailAtSignOrDot\n }\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n return nok(code)\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n return emailValue(code)\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel\n effects.consume(code)\n return next\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable | undefined} */\n let marker\n /** @type {number} */\n let index\n /** @type {State} */\n let returnState\n return start\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n index = 0\n return cdataOpenInside\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n return nok(code)\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return nok(code)\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n if (markdownLineEnding(code)) {\n returnState = comment\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return comment\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return comment(code)\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62\n ? end(code)\n : code === 45\n ? commentClose(code)\n : comment(code)\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n return index === value.length ? cdata : cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n if (markdownLineEnding(code)) {\n returnState = cdata\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return cdata\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n if (markdownLineEnding(code)) {\n returnState = declaration\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return declaration\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n if (markdownLineEnding(code)) {\n returnState = instruction\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return instruction\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n return tagCloseBetween(code)\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n return end(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n return end(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n return tagOpenAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n return tagOpenBetween(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueQuotedAfter\n }\n if (code === null) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n return nok(code)\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineEndingAfter\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code)\n ? factorySpace(\n effects,\n lineEndingAfterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : lineEndingAfterPrefix(code)\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.consume(code)\n return after\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n let index\n /** @type {number | undefined} */\n let enter\n\n // If we start and end with an EOL or a space.\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1\n tailExitIndex++\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n enter = undefined\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n let size\n /** @type {Token} */\n let token\n return start\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n effects.exit('codeTextSequence')\n return between(code)\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return between\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return sequenceClose(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return between\n }\n\n // Data.\n effects.enter('codeTextData')\n return data(code)\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return between(code)\n }\n effects.consume(code)\n return data\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return sequenceClose\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n }\n\n // More or less accents: mark as data.\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {string, text} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n value =\n buffer +\n (typeof value === 'string'\n ? value.toString()\n : new TextDecoder(encoding || undefined).decode(value))\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | null | undefined | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {undefined | void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(this: CompileContext) => undefined} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Nodes, token: Token, onError?: OnEnterError) => undefined} enter\n * Enter a node.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => undefined} exit\n * Exit a node.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n * @property {CompileData} data\n * Info passed around; key/value store.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\nimport {toString} from 'mdast-util-to-string'\nimport {parse, postprocess, preprocess} from 'micromark'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n }\n configure(config, (options || {}).mdastExtensions || [])\n\n /** @type {CompileData} */\n const data = {}\n return compile\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n }\n /** @type {Array} */\n const listStack = []\n let index = -1\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n const tail = listStack.pop()\n index = prepareList(events, tail, index)\n }\n }\n }\n index = -1\n while (++index < events.length) {\n const handler = config[events[index][0]]\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n\n // Call transforms.\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n return tree\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token | undefined} */\n let listItem\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number | undefined} */\n let firstBlankLineIndex\n /** @type {boolean | undefined} */\n let atMarker\n while (++index <= length) {\n const event = events[index]\n switch (event[1].type) {\n case 'listUnordered':\n case 'listOrdered':\n case 'blockQuote': {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n atMarker = undefined\n break\n }\n case 'lineEndingBlank': {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n atMarker = undefined\n }\n break\n }\n case 'linePrefix':\n case 'listItemValue':\n case 'listItemMarker':\n case 'listItemPrefix':\n case 'listItemPrefixWhitespace': {\n // Empty.\n\n break\n }\n default: {\n atMarker = undefined\n }\n }\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n }\n listItem = item\n events.splice(index, 0, ['enter', item, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n events[start][1]._spread = listSpread\n return length\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {undefined}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Nodes} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {undefined}\n * Nothing.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n /** @type {Array} */\n const siblings = parent.children\n siblings.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler])\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n }\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {undefined}\n * Nothing.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it’s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n node.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n this.data.expectingFirstListItemValue = undefined\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.lang = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return\n this.buffer()\n this.data.flowCodeInside = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n this.data.flowCodeInside = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1]\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1]\n /** @type {Array} */\n const siblings = node.children\n let tail = siblings[siblings.length - 1]\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we’ll add `end` later.\n end: undefined\n }\n siblings.push(tail)\n }\n this.stack.push(tail)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n // If we’re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n this.data.atHardBreak = undefined\n return\n }\n if (\n !this.data.setextHeadingSlurpLineEnding &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n this.data.referenceType = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n this.data.referenceType = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token)\n const ancestor = this.stack[this.stack.length - 2]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string)\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1]\n const value = this.resume()\n const node = this.stack[this.stack.length - 1]\n // Assume a reference.\n this.data.inReference = true\n if (node.type === 'link') {\n /** @type {Array} */\n const children = fragment.children\n node.children = children\n } else {\n node.alt = value\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed'\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n this.data.referenceType = 'full'\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = this.data.characterReferenceType\n /** @type {string} */\n let value\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n this.data.characterReferenceType = undefined\n } else {\n const result = decodeNamedCharacterReference(data)\n value = result\n }\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n }\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Array | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1\n while (++index < extensions.length) {\n const value = extensions[index]\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols': {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n break\n }\n case 'transforms': {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n break\n }\n case 'enter':\n case 'exit': {\n const right = extension[key]\n if (right) {\n Object.assign(combined[key], right)\n }\n break\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser} Parser\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {Omit} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type)\n return as([type, [...value]], value);\n \n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55_295 && code < 57_344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56_320 && next > 56_319 && next < 57_344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n * Generate content for the backreference dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array | ElementContent | string}\n * Content for the backreference when linking back from definitions to their\n * reference.\n *\n * @callback FootnoteBackLabelTemplate\n * Generate a back label dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array}\n * Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n /** @type {Array} */\n const result = [{type: 'text', value: '↩'}]\n\n if (rereferenceIndex > 1) {\n result.push({\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [{type: 'text', value: String(rereferenceIndex)}]\n })\n }\n\n return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n return (\n 'Back to reference ' +\n (referenceIndex + 1) +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const footnoteBackContent =\n state.options.footnoteBackContent || defaultFootnoteBackContent\n const footnoteBackLabel =\n state.options.footnoteBackLabel || defaultFootnoteBackLabel\n const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n className: ['sr-only']\n }\n /** @type {Array} */\n const listItems = []\n let referenceIndex = -1\n\n while (++referenceIndex < state.footnoteOrder.length) {\n const def = state.footnoteById.get(state.footnoteOrder[referenceIndex])\n\n if (!def) {\n continue\n }\n\n const content = state.all(def)\n const id = String(def.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let rereferenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n const counts = state.footnoteCounts.get(id)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (counts !== undefined && ++rereferenceIndex <= counts) {\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n let children =\n typeof footnoteBackContent === 'string'\n ? footnoteBackContent\n : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n if (typeof children === 'string') {\n children = {type: 'text', value: children}\n }\n\n backReferences.push({\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n clobberPrefix +\n 'fnref-' +\n safeId +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n dataFootnoteBackref: '',\n ariaLabel:\n typeof footnoteBackLabel === 'string'\n ? footnoteBackLabel\n : footnoteBackLabel(referenceIndex, rereferenceIndex),\n className: ['data-footnote-backref']\n },\n children: Array.isArray(children) ? children : [children]\n })\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(def, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: footnoteLabelTagName,\n properties: {\n ...structuredClone(footnoteLabelProperties),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propsFactory(check) {\n const checkAsRecord = /** @type {Record} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor, Check>, Ancestor, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly} */\n let result = empty\n /** @type {Readonly} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Reference} Reference\n *\n * @typedef {import('./state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {Extract} node\n * Reference node (image, link).\n * @returns {Array}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return [{type: 'text', value: '![' + node.alt + suffix}]\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === null || spread === undefined\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {import('../state.js').Handlers}\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n // @ts-expect-error: root is different, but hard to type.\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n\n if (node.lang) {\n properties.className = ['language-' + node.lang]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Html} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Parents} HastParents\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').RootContent} HastRootContent\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').Parents} MdastParents\n *\n * @typedef {import('./footer.js').FootnoteBackContentTemplate} FootnoteBackContentTemplate\n * @typedef {import('./footer.js').FootnoteBackLabelTemplate} FootnoteBackLabelTemplate\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   

\n * \n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > 👉 **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array} all\n * Transform the children of an mdast parent to hast.\n * @property {(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map} definitionById\n * Definitions by their identifier.\n * @property {Map} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {(nodes: Array, loose?: boolean | undefined) => Array} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map} */\n const definitionById = new Map()\n /** @type {Map} */\n const footnoteById = new Map()\n /** @type {Map} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n","/**\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('./state.js').Options} Options\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n","// Include `data` fields in mdast and `raw` nodes in hast.\n/// \n\n/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} Options\n * @typedef {import('unified').Processor} Processor\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given, runs the (rehype) plugins used on it with a\n * hast tree, then discards the result (*bridge mode*)\n * * otherwise, returns a hast tree, the plugins used after `remarkRehype`\n * are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only way\n * to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @param {Readonly | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly | null | undefined} [options]\n * When a processor was given, configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nexport default function remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (toHast(tree, options))\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree) {\n // Cast because root in -> root out.\n return /** @type {HastRoot} */ (toHast(tree, options || destination))\n }\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","/**\n * @typedef {(error?: Error|null|undefined, ...output: Array) => void} Callback\n * @typedef {(...input: Array) => any} Middleware\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add `fn` (middleware) to the list.\n * @typedef {{run: Run, use: Use}} Pipeline\n * Middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n */\nexport function trough() {\n /** @type {Array} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error|null|undefined} error\n * @param {Array} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware`.\n * Can be sync or async; return a promise, receive a callback, or return new\n * values and errors.\n *\n * @param {Middleware} middleware\n * @param {Callback} callback\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result instanceof Promise) {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","// A derivative work based on:\n// .\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [ext]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extIndex = ext.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === ext.codePointAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: \nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n * @typedef {import('vfile-message').Options} MessageOptions\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef {Options | URL | VFile | Value} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * Set multiple values.\n * @property {string | null | undefined} [basename]\n * Set `basename` (name).\n * @property {string | null | undefined} [cwd]\n * Set `cwd` (working directory).\n * @property {Data | null | undefined} [data]\n * Set `data` (associated info).\n * @property {string | null | undefined} [dirname]\n * Set `dirname` (path w/o basename).\n * @property {string | null | undefined} [extname]\n * Set `extname` (extension with dot).\n * @property {Array | null | undefined} [history]\n * Set `history` (paths the file moved between).\n * @property {URL | string | null | undefined} [path]\n * Set `path` (current path).\n * @property {string | null | undefined} [stem]\n * Set `stem` (name without extension).\n * @property {Value | null | undefined} [value]\n * Set `value` (the contents of the file).\n *\n * @typedef Map\n * Raw source map.\n *\n * See:\n * .\n * @property {number} version\n * Which version of the source map spec this map is following.\n * @property {Array} sources\n * An array of URLs to the original source files.\n * @property {Array} names\n * An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n * The URL root from which all sources are relative.\n * @property {Array | undefined} [sourcesContent]\n * An array of contents of the original source files.\n * @property {string} mappings\n * A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n * The generated file this source map is associated with.\n *\n * @typedef {Record & VFileCoreOptions} Options\n * Configuration.\n *\n * A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record} ReporterSettings\n * Configuration for reporters.\n */\n\n/**\n * @template [Settings=ReporterSettings]\n * Options type.\n * @callback Reporter\n * Type for a reporter.\n * @param {Array} files\n * Files to report.\n * @param {Settings} options\n * Configuration.\n * @returns {string}\n * Report.\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {path} from 'vfile/do-not-use-conditional-minpath'\nimport {proc} from 'vfile/do-not-use-conditional-minproc'\nimport {urlToPath, isUrl} from 'vfile/do-not-use-conditional-minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n prop in options &&\n options[prop] !== undefined &&\n options[prop] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) {\n // @ts-expect-error: fine to set other things.\n this[prop] = options[prop]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > .\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","export const CallableInstance =\n /**\n * @type {new , Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const func = proto[property]\n /** @type {(...parameters: Array) => unknown} */\n const apply = function () {\n return func.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n const names = Object.getOwnPropertyNames(func)\n\n for (const p of names) {\n const descriptor = Object.getOwnPropertyDescriptor(func, p)\n if (descriptor) Object.defineProperty(apply, p, descriptor)\n }\n\n return apply\n }\n )\n )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@link CompileResultMap `CompileResultMap`}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@link Node `Node`}\n * and {@link VFile `VFile`} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@link VFile `VFile`} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@link Node `Node`}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin, any, any> |\n * PluginTuple, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// .\n/**\n * @template {Array} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > 👉 **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > 👉 **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback} next\n * Callback.\n * @returns {(\n * Promise |\n * Promise | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : // Unknown.\n * Processor\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@link VFile `VFile`} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@link VFile `VFile`}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor}\n * New *unfrozen* processor ({@link Processor `Processor`}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > 👉 **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > 👉 **Note**: to register custom data in TypeScript, augment the\n * > {@link Data `Data`} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > 👉 **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > 👉 **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback> | undefined} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > 👉 **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > 👉 **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > 👉 **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor}\n *\n * @overload\n * @param {Plugin} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","// Register `Raw` in tree:\n/// \n\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-to-jsx-runtime').Components} JsxRuntimeComponents\n * @typedef {import('remark-rehype').Options} RemarkRehypeOptions\n * @typedef {import('unist-util-visit').BuildVisitor} Visitor\n * @typedef {import('unified').PluggableList} PluggableList\n */\n\n/**\n * @callback AllowElement\n * Filter elements.\n * @param {Readonly} element\n * Element to check.\n * @param {number} index\n * Index of `element` in `parent`.\n * @param {Readonly | undefined} parent\n * Parent of `element`.\n * @returns {boolean | null | undefined}\n * Whether to allow `element` (default: `false`).\n *\n * @typedef {Partial} Components\n * Map tag names to components.\n *\n * @typedef Deprecation\n * Deprecation.\n * @property {string} from\n * Old field.\n * @property {string} id\n * ID in readme.\n * @property {keyof Options} [to]\n * New field.\n *\n * @typedef Options\n * Configuration.\n * @property {AllowElement | null | undefined} [allowElement]\n * Filter elements (optional);\n * `allowedElements` / `disallowedElements` is used first.\n * @property {ReadonlyArray | null | undefined} [allowedElements]\n * Tag names to allow (default: all tag names);\n * cannot combine w/ `disallowedElements`.\n * @property {string | null | undefined} [children]\n * Markdown.\n * @property {string | null | undefined} [className]\n * Wrap in a `div` with this class name.\n * @property {Components | null | undefined} [components]\n * Map tag names to components.\n * @property {ReadonlyArray | null | undefined} [disallowedElements]\n * Tag names to disallow (default: `[]`);\n * cannot combine w/ `allowedElements`.\n * @property {PluggableList | null | undefined} [rehypePlugins]\n * List of rehype plugins to use.\n * @property {PluggableList | null | undefined} [remarkPlugins]\n * List of remark plugins to use.\n * @property {Readonly | null | undefined} [remarkRehypeOptions]\n * Options to pass through to `remark-rehype`.\n * @property {boolean | null | undefined} [skipHtml=false]\n * Ignore HTML in markdown completely (default: `false`).\n * @property {boolean | null | undefined} [unwrapDisallowed=false]\n * Extract (unwrap) what’s in disallowed elements (default: `false`);\n * normally when say `strong` is not allowed, it and it’s children are dropped,\n * with `unwrapDisallowed` the element itself is replaced by its children.\n * @property {UrlTransform | null | undefined} [urlTransform]\n * Change URLs (default: `defaultUrlTransform`)\n *\n * @callback UrlTransform\n * Transform all URLs.\n * @param {string} url\n * URL.\n * @param {string} key\n * Property name (example: `'href'`).\n * @param {Readonly} node\n * Node.\n * @returns {string | null | undefined}\n * Transformed URL (optional).\n */\n\nimport {unreachable} from 'devlop'\nimport {toJsxRuntime} from 'hast-util-to-jsx-runtime'\nimport {urlAttributes} from 'html-url-attributes'\n// @ts-expect-error: untyped.\nimport {Fragment, jsx, jsxs} from 'react/jsx-runtime'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport {unified} from 'unified'\nimport {visit} from 'unist-util-visit'\nimport {VFile} from 'vfile'\n\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {PluggableList} */\nconst emptyPlugins = []\n/** @type {Readonly} */\nconst emptyRemarkRehypeOptions = {allowDangerousHtml: true}\nconst safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i\n\n// Mutable because we `delete` any time it’s used and a message is sent.\n/** @type {ReadonlyArray>} */\nconst deprecations = [\n {from: 'astPlugins', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'allowDangerousHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {\n from: 'allowNode',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowElement'\n },\n {\n from: 'allowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowedElements'\n },\n {\n from: 'disallowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'disallowedElements'\n },\n {from: 'escapeHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'includeElementIndex', id: '#remove-includeelementindex'},\n {\n from: 'includeNodeIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n },\n {from: 'linkTarget', id: 'remove-linktarget'},\n {from: 'plugins', id: 'change-plugins-to-remarkplugins', to: 'remarkPlugins'},\n {from: 'rawSourcePos', id: '#remove-rawsourcepos'},\n {from: 'renderers', id: 'change-renderers-to-components', to: 'components'},\n {from: 'source', id: 'change-source-to-children', to: 'children'},\n {from: 'sourcePos', id: '#remove-sourcepos'},\n {from: 'transformImageUri', id: '#add-urltransform', to: 'urlTransform'},\n {from: 'transformLinkUri', id: '#add-urltransform', to: 'urlTransform'}\n]\n\n/**\n * Component to render markdown.\n *\n * @param {Readonly} options\n * Props.\n * @returns {JSX.Element}\n * React element.\n */\nexport function Markdown(options) {\n const allowedElements = options.allowedElements\n const allowElement = options.allowElement\n const children = options.children || ''\n const className = options.className\n const components = options.components\n const disallowedElements = options.disallowedElements\n const rehypePlugins = options.rehypePlugins || emptyPlugins\n const remarkPlugins = options.remarkPlugins || emptyPlugins\n const remarkRehypeOptions = options.remarkRehypeOptions\n ? {...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions}\n : emptyRemarkRehypeOptions\n const skipHtml = options.skipHtml\n const unwrapDisallowed = options.unwrapDisallowed\n const urlTransform = options.urlTransform || defaultUrlTransform\n\n const processor = unified()\n .use(remarkParse)\n .use(remarkPlugins)\n .use(remarkRehype, remarkRehypeOptions)\n .use(rehypePlugins)\n\n const file = new VFile()\n\n if (typeof children === 'string') {\n file.value = children\n } else {\n unreachable(\n 'Unexpected value `' +\n children +\n '` for `children` prop, expected `string`'\n )\n }\n\n if (allowedElements && disallowedElements) {\n unreachable(\n 'Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other'\n )\n }\n\n for (const deprecation of deprecations) {\n if (Object.hasOwn(options, deprecation.from)) {\n unreachable(\n 'Unexpected `' +\n deprecation.from +\n '` prop, ' +\n (deprecation.to\n ? 'use `' + deprecation.to + '` instead'\n : 'remove it') +\n ' (see <' +\n changelog +\n '#' +\n deprecation.id +\n '> for more info)'\n )\n }\n }\n\n const mdastTree = processor.parse(file)\n /** @type {Nodes} */\n let hastTree = processor.runSync(mdastTree, file)\n\n // Wrap in `div` if there’s a class name.\n if (className) {\n hastTree = {\n type: 'element',\n tagName: 'div',\n properties: {className},\n // Assume no doctypes.\n children: /** @type {Array} */ (\n hastTree.type === 'root' ? hastTree.children : [hastTree]\n )\n }\n }\n\n visit(hastTree, transform)\n\n return toJsxRuntime(hastTree, {\n Fragment,\n components,\n ignoreInvalidStyle: true,\n jsx,\n jsxs,\n passKeys: true,\n passNode: true\n })\n\n /** @type {Visitor} */\n function transform(node, index, parent) {\n if (node.type === 'raw' && parent && typeof index === 'number') {\n if (skipHtml) {\n parent.children.splice(index, 1)\n } else {\n parent.children[index] = {type: 'text', value: node.value}\n }\n\n return index\n }\n\n if (node.type === 'element') {\n /** @type {string} */\n let key\n\n for (key in urlAttributes) {\n if (\n Object.hasOwn(urlAttributes, key) &&\n Object.hasOwn(node.properties, key)\n ) {\n const value = node.properties[key]\n const test = urlAttributes[key]\n if (test === null || test.includes(node.tagName)) {\n node.properties[key] = urlTransform(String(value || ''), key, node)\n }\n }\n }\n }\n\n if (node.type === 'element') {\n let remove = allowedElements\n ? !allowedElements.includes(node.tagName)\n : disallowedElements\n ? disallowedElements.includes(node.tagName)\n : false\n\n if (!remove && allowElement && typeof index === 'number') {\n remove = !allowElement(node, index, parent)\n }\n\n if (remove && parent && typeof index === 'number') {\n if (unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n }\n }\n}\n\n/**\n * Make a URL safe.\n *\n * @satisfies {UrlTransform}\n * @param {string} value\n * URL.\n * @returns {string}\n * Safe URL.\n */\nexport function defaultUrlTransform(value) {\n // Same as:\n // \n // But without the `encode` part.\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n safeProtocol.test(value.slice(0, colon))\n ) {\n return value\n }\n\n return ''\n}\n","import React, {useState} from 'react';\nimport ModalComponent from '../Modal/ModalComponent';\nimport styles from './Footer.module.css';\nimport ReactMarkdown from 'react-markdown';\nimport IconElement from '../IconElement/IconElement'; // Import the IconElement component\n\ninterface LinkElement {\n title: string;\n description?: string;\n href: string;\n icon: string;\n modal?: string;\n modalMarkdownContent?: string;\n}\n\ninterface Copyright {\n text: string;\n}\n\ninterface FooterProps {\n copyright: Copyright;\n linkElements: LinkElement[];\n}\n\nconst Footer: React.FC = ({copyright, linkElements}) => {\n const [modalIsOpen, setModalIsOpen] = useState(false);\n const [modalContent, setModalContent] = useState('');\n\n const openModal = (content: string) => {\n setModalContent(content);\n setModalIsOpen(true);\n };\n\n const closeModal = () => {\n setModalIsOpen(false);\n };\n\n return (
\n {/* Copyright first */}\n
{copyright.text}
\n\n {/* Link elements */}\n
\n {linkElements.map((element, index) => (
\n {element.modal === 'true' ? (// If it's a modal link, render a div that can be clicked to open a modal\n
openModal(element.modalMarkdownContent || '')}>\n \n {element.title}\n
) : (\n \n {element.title}\n )}\n
))}\n
\n\n \n {modalContent}\n \n
);\n};\n\nexport default Footer;\n","import React, {useEffect, useState} from 'react';\nimport ProfileSection from './components/ProfileSection/ProfileSection';\nimport CardElement from './components/CardElement/CardElement';\nimport SocialMediaSection from './components/SocialMedia/Section/SocialMediaSection';\nimport Footer from './components/Footer/Footer';\nimport config from './config/config.json';\nimport './App.css';\n\nconst App = () => {\n const [profileData, setProfileData] = useState({\n profile: {\n name: '', background: '', photo: '', description: '',\n }, footer: {\n copyright: {\n text: '',\n }, linkElements: [],\n }, socialMediaElements: [], cardElements: [{\n title: \"\", description: \"\", href: \"\", icon: \"\"\n }],\n });\n\n useEffect(() => {\n if (config.encodeProfileData) {\n // Fetch the encoded profile data\n fetch('data/b64ProfileData.json')\n .then(response => response.text())\n .then(encodedData => {\n // Decode the base64 data\n const uint8Array = new Uint8Array(atob(encodedData).split(\"\").map(c => c.charCodeAt(0)));\n const data = new TextDecoder('utf-8').decode(uint8Array);\n setProfileData(JSON.parse(data));\n })\n .catch(error => {\n console.error('Failed to load and decode profile data:', error);\n });\n } else {\n // Import the profile data directly if not encoded\n import('./data/profileData.json')\n .then(() => {\n setProfileData(profileData);\n });\n }\n }, [profileData]);\n\n // Wait for profile data to be loaded and decoded\n if (!profileData) {\n return
Loading...
;\n }\n\n const {profile, footer} = profileData;\n const socialMediaObjects = profileData.socialMediaElements.map(href => ({href}));\n\n return (
\n {/* Content Section */}\n
\n \n\n {/* Social Media Section */}\n \n\n {/* Card Elements Section */}\n {profileData.cardElements.map((element, index) => ())}\n
\n\n {/* Footer Section */}\n \n
);\n};\n\nexport default App;\n","import 'bootstrap/dist/css/bootstrap.min.css';\nimport '@fortawesome/fontawesome-free/css/all.min.css';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config/config.json';\nimport siteData from './data/siteData.json';\nimport './index.css';\nimport App from './App';\n\nfunction loadTheme() {\n let theme = config.theme;\n\n if (theme === 'auto') {\n theme = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n\n import(`./colorThemes/${theme}.css`).then(() => {\n document.documentElement.setAttribute('data-theme', theme);\n });\n}\n\nfunction setMetaTags() {\n if (!config.searchEngineIndexing) {\n const metaRobots = document.createElement('meta');\n metaRobots.name = 'robots';\n metaRobots.content = 'noindex, nofollow';\n document.head.appendChild(metaRobots);\n }\n\n // Set site-specific meta tags\n document.title = siteData.title;\n const metaDescription = document.createElement('meta');\n metaDescription.name = 'description';\n metaDescription.content = siteData.description;\n document.head.appendChild(metaDescription);\n\n const metaLanguage = document.createElement('meta');\n metaLanguage.httpEquiv = 'Content-Language';\n metaLanguage.content = siteData.language;\n document.head.appendChild(metaLanguage);\n\n const metaOgImage = document.createElement('meta');\n metaOgImage.content = siteData.ogImage;\n document.head.appendChild(metaOgImage);\n\n siteData.additionalMetaTags.forEach(tag => {\n const meta = document.createElement('meta');\n meta.name = tag.name || '';\n meta.content = tag.content;\n document.head.appendChild(meta);\n });\n}\n\nloadTheme();\nsetMetaTags();\n\nReactDOM.render(\n \n, document.getElementById('root'));\n"],"names":["canUseDOM","window","document","createElement","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","addEventListener","attachEvent","canUseViewport","screen","define","hasOwn","Object","prototype","hasOwnProperty","toStr","toString","defineProperty","gOPD","getOwnPropertyDescriptor","isArray","arr","Array","call","isPlainObject","obj","key","hasOwnConstructor","hasIsPrototypeOf","constructor","setProperty","target","options","name","enumerable","configurable","value","newValue","writable","getProperty","module","exports","extend","src","copy","copyIsArray","clone","arguments","i","length","deep","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","trim","str","replace","style","TypeError","lineno","column","updatePosition","lines","match","lastIndexOf","position","start","line","node","Position","whitespace","this","end","source","content","errorsList","error","msg","err","Error","reason","filename","silent","push","re","m","exec","slice","comments","rules","c","comment","pos","charAt","type","declaration","prop","val","ret","property","decl","decls","declarations","ReactPropTypesSecret","require","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","ca","p","a","b","encodeURIComponent","da","Set","ea","fa","ha","add","ia","ja","ka","la","ma","v","d","e","f","g","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","z","split","forEach","toLowerCase","ra","sa","toUpperCase","ta","pa","isNaN","qa","test","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","assign","Ma","stack","Na","Oa","prepareStackTrace","set","Reflect","construct","l","h","k","displayName","includes","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","get","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","indexOf","keys","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","removeEventListener","Nb","apply","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","Math","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","String","fromCharCode","code","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","min","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","n","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","callback","dh","K","eh","fh","gh","q","r","y","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","join","uh","vh","index","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","undefined","setState","nextProps","prevState","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","polyfill","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","newApiName","maybeSnapshot","snapshot","__suppressDeprecationWarning","bodyOpenClassName","portalClassName","_extends","_createClass","defineProperties","descriptor","Constructor","protoProps","staticProps","_react","_react2","_interopRequireDefault","_reactDom2","_propTypes2","_ModalPortal2","ariaAppHider","__esModule","newObj","default","_interopRequireWildcard","_safeHTMLElement","_safeHTMLElement2","_reactLifecyclesCompat","_possibleConstructorReturn","self","ReferenceError","isReact16","createHTMLElement","getCreatePortal","getParentElement","parentSelector","Modal","_Component","_ref","_temp","_this","_classCallCheck","_len","args","_key","__proto__","getPrototypeOf","removePortal","parent","warn","portalRef","portal","renderPortal","defaultStyles","subClass","superClass","setPrototypeOf","_inherits","className","prevParent","nextParent","_","_props","isOpen","closesAt","closeTimeoutMS","beforeClose","closeWithTimeout","setElement","propTypes","overlay","htmlOpenClassName","afterOpen","overlayClassName","appElement","SafeHTMLCollection","SafeNodeList","onAfterOpen","onRequestClose","ariaHideApp","shouldFocusAfterRender","shouldCloseOnOverlayClick","shouldReturnFocusAfterClose","preventScroll","aria","role","contentLabel","shouldCloseOnEsc","overlayRef","contentRef","overlayElement","contentElement","contentEl","right","bottom","backgroundColor","border","background","WebkitOverflowScrolling","borderRadius","outline","padding","_typeof","focusManager","_scopeTab2","classList","_portalOpenInstances2","CLASS_NAMES","ariaHiddenInstances","ModalPortal","setOverlayRef","setContentRef","afterClose","_this$props","parentDocument","remove","getElementsByTagName","show","returnFocus","teardownScopedFocus","popWithoutFocus","onAfterClose","deregister","open","beforeOpen","closeTimer","setupScopedFocus","markForFocusLater","openAnimationFrame","requestAnimationFrame","overlayEl","close","closeWithoutTimeout","focusContent","contentHasFocus","handleKeyDown","isTabKey","isEscKey","requestClose","handleOverlayOnClick","shouldClose","ownerHandlesClose","handleContentOnMouseUp","handleOverlayOnMouseDown","handleContentOnClick","handleContentOnMouseDown","shouldBeClosed","buildClassName","additional","classNames","attributesFromObject","prefix","items","reduce","acc","moveFromContentToOverlay","cancelAnimationFrame","hide","register","_props2","contentStyles","overlayStyles","overlayProps","onMouseDown","contentProps","tabIndex","onKeyDown","onMouseUp","modal","testId","resetState","globalElement","process","assertNodeList","useElement","validateElement","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","documentNotReadyOrSSRTesting","_warning","_warning2","nodeList","selector","HTMLCollection","NodeList","_arr","before","after","_i","item","instances","_arr2","_i2","check","_portalOpenInstances","subscribe","eventType","openInstances","cloneNode","parentElement","htmlElement","cls","htmlClassList","removeClass","_cls","docBodyClassList","at","classString","classListRef","poll","incrementReference","decrementReference","focusLaterElements","handleBlur","handleFocus","toFocus","pop","modalElement","_tabbable","_tabbable2","needToFocus","portalOpenInstances","PortalOpenInstances","openInstance","emit","subscribers","subscriber","_exenv","EE","SafeHTMLElement","HTMLElement","tabbable","head","getActiveElement","checkSafari","navigator","userAgent","shadowRoot","findTabbableDescendants","descendants","finished","filter","DISPLAY_NONE","DISPLAY_CONTENTS","tabbableNode","hidesContents","zeroSize","offsetWidth","offsetHeight","getComputedStyle","displayValue","getPropertyValue","scrollWidth","scrollHeight","isNotOverflowing","exception","focusable","isTabIndexNotNaN","rootNode","getRootNode","host","visible","getAttribute","isTabIndexNaN","_Modal","_Modal2","__self","__source","Fragment","jsx","jsxs","forceUpdate","escape","_status","_result","Children","map","count","toArray","only","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","inline_style_parser_1","__importDefault","styleObject","hasIterator","warning","webpackAsyncContext","req","__webpack_require__","o","ids","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","getter","leafPrototypes","getProto","ns","def","getOwnPropertyNames","definition","chunkId","all","promises","miniCssF","inProgress","dataWebpackPrefix","script","needAttach","scripts","s","charset","timeout","nc","onScriptComplete","prev","onerror","onload","doneFns","fn","toStringTag","loadStylesheet","reject","fullhref","existingLinkTags","dataHref","rel","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","request","createStylesheet","installedCssChunks","miniCss","installedChunks","j","installedChunkData","promise","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","backgroundImage","profileImage","description","_jsxs","styles","profileSection","_jsx","alt","profileContainer","profileName","icon","title","isFontAwesomeIcon","startsWith","IconElement","platform","platformIcon","platformMappings","platformURL","info","entries","getPlatformInfo","socialMediaElements","SocialMediaElement","ReactModal","nameRe","nameReJsx","emptyOptions","empty","Schema","normal","space","merge","definitions","normalize","Info","attribute","boolean","booleanish","overloadedBoolean","commaSeparated","spaceSeparated","commaOrSpaceSeparated","defined","powers","increment","checks","types","DefinedInfo","mask","super","mark","values","own","properties","transform","attributes","xlink","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xml","xmlLang","xmlBase","xmlSpace","caseSensitiveTransform","caseInsensitiveTransform","xmlns","xmlnsxlink","xmlnsXLink","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDescribedBy","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabel","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","html","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","as","async","autoCapitalize","autoComplete","autoPlay","blocking","charSet","cite","cols","colSpan","controls","controlsList","coords","crossOrigin","dateTime","decoding","defer","dir","dirName","download","draggable","encType","enterKeyHint","fetchPriority","formAction","formEncType","formMethod","formNoValidate","formTarget","headers","hidden","high","hrefLang","htmlFor","httpEquiv","imageSizes","imageSrcSet","inert","inputMode","integrity","isMap","itemId","itemProp","itemRef","itemScope","itemType","kind","label","lang","language","list","loading","loop","low","manifest","max","maxLength","media","method","minLength","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforeMatch","onBeforePrint","onBeforeToggle","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onChange","onClose","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onFocus","onFormData","onHashChange","onInput","onInvalid","onKeyPress","onKeyUp","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onResize","onScroll","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","pattern","ping","placeholder","playsInline","popover","popoverTarget","popoverTargetAction","poster","preload","readOnly","referrerPolicy","required","reversed","rows","rowSpan","sandbox","scope","scoped","seamless","shadowRootDelegatesFocus","shadowRootMode","sizes","slot","span","spellCheck","srcDoc","srcLang","srcSet","step","translate","typeMustMatch","useMap","wrap","align","aLink","archive","axis","bgColor","borderColor","bottomMargin","cellPadding","cellSpacing","charOff","classId","clear","codeBase","codeType","compact","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","profile","prompt","rev","rightMargin","scheme","scrolling","standby","summary","topMargin","valueType","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","results","security","unselectable","svg","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillRule","floodColor","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","pointerEvents","renderingIntent","shapeRendering","stopColor","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","textAnchor","textDecoration","textRendering","transformOrigin","typeOf","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","additive","alphabetic","amplitude","ascent","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","begin","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cursor","cx","cy","defaultAction","descent","diffuseConstant","direction","dur","divisor","dx","dy","edgeMode","editable","elevation","exponent","externalResourcesRequired","fill","filterRes","filterUnits","focusHighlight","format","fr","from","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","handler","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","observer","operator","orient","orientation","origin","path","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","resource","restart","result","rotate","rx","ry","scale","seed","side","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","startOffset","stdDeviation","stemh","stemv","stitchTiles","stroke","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","to","u1","u2","unicode","viewBox","viewTarget","visibility","widths","x1","x2","xChannelSelector","y1","y2","yChannelSelector","zoomAndPan","htmlBase","svgBase","valid","dash","cap","kebab","$0","camelcase","hastToReact","StyleToObject","pointEnd","point","pointStart","stringifyPosition","VFileMessage","causeOrReason","optionsOrParentOrPlace","legacyCause","place","ancestors","cause","ruleId","fatal","file","actual","expected","note","emptyMap","dashSomething","tableElements","tableCellElement","docs","toJsxRuntime","tree","filePath","development","jsxDEV","isStaticChildren","columnNumber","fileName","lineNumber","developmentCreate","productionCreate","components","elementAttributeNameCase","evaluater","createEvaluater","ignoreInvalidStyle","passKeys","passNode","schema","stylePropertyNameCase","tableCellAlignToStyle","one","parentSchema","findComponentFromName","alignValue","createProperty","createElementProps","createChildren","thing","addNode","addChildren","estree","expression","evaluateExpression","crashEstree","mdxExpression","objectExpression","argument","createJsxElementProps","mdxJsxElement","evaluateProgram","mdxEsm","root","countsByName","Type","rest","dashes","find","Number","settings","padRight","padLeft","commas","styleToObject","replacer","toCamel","parseStyle","domCasing","cssCasing","transformStyleToCssCasing","transformStylesToCssCasing","allowExpression","identifiers","isIdentifierName","computed","Boolean","optional","toDash","$1","urlAttributes","includeImageAlt","includeHtml","parameters","chunkStart","subtokenize","events","jumps","lineIndex","otherIndex","otherEvent","subevents","more","_tokenizer","_isInFirstContentOfListItem","contentType","subcontent","_container","eventIndex","token","startPosition","startPositions","tokenizer","parser","childEvents","gaps","stream","previous","adjust","breaks","sliceStream","defineSkip","_gfmTasklistFirstContentOfListItem","write","syntaxExtension","extension","hook","constructs","existing","unicodePunctuationInternal","regexCheck","asciiAlpha","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodeWhitespace","regex","factorySpace","limit","POSITIVE_INFINITY","enter","consume","exit","tokenize","contentStart","attempt","contentInitial","lineStart","childFlow","childToken","lineStartOffset","continued","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flow","flowContinue","writeToChild","eof","seen","entry","nok","disable","null","blankLine","partial","chunkInside","contentEnd","continuationConstruct","contentContinue","prefixed","sliceSerialize","initial","flowInitial","afterConstruct","resolver","resolveAll","createResolver","initializeFactory","field","notText","atBreak","resolveAllLineSuffixes","extraResolver","chunks","tabs","bufferIndex","chunk","charCodeAt","_index","_bufferIndex","called","createTokenizer","initialize","columnStart","resolveAllConstructs","consumed","accountForPotentialSkip","fields","constructFactory","addResult","onsuccessfulcheck","expandTabs","atTab","serializeChunks","main","expectedCode","startIndex","startBufferIndex","endIndex","endBufferIndex","sliceChunks","chunkIndex","go","restore","onreturn","returnState","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleMapOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","store","resolveTo","thematicBreak","marker","sequence","initialSize","atMarker","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","notBlank","furtherBlankLines","notInCurrentItem","indentConstruct","blockQuote","contBefore","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","raw","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","factoryWhitespace","normalizeIdentifier","identifier","labelAfter","markerAfter","destinationBefore","destinationAfter","titleBefore","afterWhitespace","beforeMarker","titleAfter","titleAfterOptionalWhitespace","codeIndented","afterPrefix","furtherStart","headingAtx","sequenceOpen","sequenceFurther","setextUnderline","paragraph","heading","htmlBlockNames","htmlRawNames","htmlFlow","closingTag","buffer","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationStart","blankLineBefore","continuationAfter","nonLazyContinuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","nonLazyContinuation","codeFenced","closeStart","startBefore","beforeSequenceClose","sequenceClose","sizeOpen","sequenceCloseAfter","initialPrefix","beforeSequenceOpen","infoBefore","atNonLazyBreak","metaBefore","contentBefore","beforeContentChunk","contentChunk","decodeNamedCharacterReference","characterReference","numeric","characterEscape","lineEnding","labelEnd","labelStart","_balanced","_inactive","labelEndNok","resourceConstruct","labelEndOk","referenceFullConstruct","referenceNotFull","referenceCollapsedConstruct","group","insideSpan","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFullAfter","referenceFullMissing","referenceCollapsedOpen","labelStartImage","classifyCharacter","unicodePunctuation","attention","attentionMarkers","_open","_close","openingSequence","closingSequence","use","nextEvents","movePoint","autolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","htmlText","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelStartLink","hardBreakEscape","codeText","between","tailExitIndex","headEnterIndex","resolveText","parse","extensions","combineExtensions","defaultConstructs","decodeNumericCharacterReference","parseInt","fromCodePoint","characterEscapeOrReference","decode","$2","hex","fromMarkdown","encoding","config","transforms","canContainEols","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreak","hardBreakTrailing","htmlFlowData","htmlTextData","image","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","reference","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","configure","mdastExtensions","compile","tokenStack","resume","listStack","prepareList","defaultOnError","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","_spread","and","errorHandler","onExitError","expectingFirstListItemValue","flowCodeInside","depth","setextHeadingSlurpLineEnding","codePointAt","siblings","atHardBreak","inReference","referenceType","ancestor","decodeString","fragment","characterReferenceType","ordered","spread","compiler","postprocess","atCarriageReturn","endPosition","TextDecoder","lastIndex","preprocess","combined","remarkParse","doc","env","globalThis","deserialize","serialized","deserializer","$","out","unpair","RegExp","BigInt","EMPTY","asString","shouldSkip","TYPE","serialize","json","lossy","serializer","strict","pair","toJSON","toISOString","structuredClone","normalizeUri","skip","defaultFootnoteBackContent","rereferenceIndex","defaultFootnoteBackLabel","referenceIndex","convert","castFactory","tests","anyFactory","checkAsRecord","nodeAsRecord","propsFactory","typeFactory","testFunction","looksLikeANode","CONTINUE","EXIT","SKIP","visitParents","visitor","reverse","factory","parents","visit","subresult","grandparents","toResult","nodeAsParent","testOrVisitor","visitorOrReverse","maybeReverse","revert","subtype","suffix","contents","listItemLoose","tab","trimLines","trimLine","handlers","blockquote","patch","applyData","break","footnoteReference","clobberPrefix","safeId","footnoteOrder","counter","reuseCounter","footnoteCounts","dataFootnoteRef","sup","allowDangerousHtml","imageReference","definitionById","inlineCode","linkReference","loose","listLoose","table","firstRow","tableContent","tableCell","tableRow","cellIndex","cells","cell","toml","ignore","yaml","footnoteDefinition","hName","hChildren","hProperties","defaultUnknownHandler","nodes","trimMarkdownSpaceStart","toHast","footnoteById","defaultHandlers","handle","passThrough","shallow","unknownHandler","createState","foot","footnoteBackContent","footnoteBackLabel","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","listItems","backReferences","counts","dataFootnoteBackref","tailTail","dataFootnotes","footer","remarkRehype","destination","hastTree","run","bail","trough","fns","pipeline","middlewareIndex","_len2","output","_key2","middleware","wrapped","_len3","_key3","fnExpectsCallback","_len4","_key4","middelware","basename","ext","assertPath","seenNonSlash","firstNonSlashEnd","extIndex","dirname","unmatchedSlash","extname","startPart","startDot","preDotState","joined","segments","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","normalizeString","sep","proc","cwd","isUrl","fileUrlOrPath","protocol","auth","urlToPath","URL","hostname","pathname","third","decodeURIComponent","getPathFromURLPosix","VFile","isUint8Array","history","messages","stored","assertNonEmpty","assertPart","stem","fail","part","CallableInstance","proto","names","Processor","Compiler","Parser","attachers","freezeIndex","frozen","namespace","transformers","attacher","assertUnfrozen","freeze","transformer","realFile","vfile","assertParser","assertCompiler","executor","parseTree","realDone","compileTree","compileResult","processSync","complete","assertDone","assertNode","outputTree","resultingTree","runSync","addPlugin","addList","addPreset","plugin","plugins","entryIndex","primary","currentPrimary","isPlainObj","unified","asyncName","looksLikeAVFile","emptyPlugins","emptyRemarkRehypeOptions","safeProtocol","deprecations","Markdown","allowedElements","allowElement","disallowedElements","rehypePlugins","remarkPlugins","remarkRehypeOptions","skipHtml","unwrapDisallowed","urlTransform","defaultUrlTransform","processor","deprecation","mdastTree","colon","questionMark","numberSign","copyright","linkElements","modalIsOpen","setModalIsOpen","modalContent","setModalContent","openModal","modalMarkdownContent","ModalComponent","closeModal","ReactMarkdown","App","profileData","setProfileData","photo","cardElements","fetch","response","encodedData","uint8Array","Uint8Array","atob","socialMediaObjects","ProfileSection","SocialMediaSection","CardElement","Footer","theme","matchMedia","matches","loadTheme","metaRobots","siteData","metaDescription","metaLanguage","metaOgImage","setMetaTags","ReactDOM","React","getElementById"],"sourceRoot":""} \ No newline at end of file