diff --git a/404.html b/404.html index c1e3dac..c913150 100644 --- a/404.html +++ b/404.html @@ -1,7 +1,7 @@ -Eric X. Liu's Personal Page
Eric X. Liu's Personal Page +Eric X. Liu's Personal Page
Eric X. Liu's Personal Page
  • Posts
  • Chat
  • Git
  • Coder
  • About
  • |
  • Sign in

404

Page Not Found

Sorry, this page does not exist.
You can head back to the homepage.

© 2016 - 2025 Eric X. Liu -[de8df55]
\ No newline at end of file +[f374ada]
\ No newline at end of file diff --git a/about/index.html b/about/index.html index 3585273..7691f80 100644 --- a/about/index.html +++ b/about/index.html @@ -5,7 +5,7 @@ My work focuses on Infrastructure Performance and Customer Engineering, specific I am a Staff Software Engineer and Tech Lead Manager (TLM) at Google, based in Sunnyvale, CA. My work focuses on Infrastructure Performance and Customer Engineering, specifically for GPUs and TPUs. I lead teams that bridge the gap between cutting-edge AI hardware and the latest ML models (like Gemini), ensuring optimal performance and reliability at Google Cloud scale. I thrive in the ambiguous space where hardware constraints meet software ambition—whether it’s debugging race conditions across thousands of chips or designing API surfaces for next-gen models.">
Eric X. Liu's Personal Page +My work focuses on Infrastructure Performance and Customer Engineering, specifically for GPUs and TPUs. I lead teams that bridge the gap between cutting-edge AI hardware and the latest ML models (like Gemini), ensuring optimal performance and reliability at Google Cloud scale. I thrive in the ambiguous space where hardware constraints meet software ambition—whether it’s debugging race conditions across thousands of chips or designing API surfaces for next-gen models.">
Eric X. Liu's Personal Page
  • Posts
  • Chat
  • Git
  • Coder
  • About
  • |
  • Sign in

About

Eric Liu

Hi, I’m Eric Liu.

I am a Staff Software Engineer and Tech Lead Manager (TLM) at Google, based in Sunnyvale, CA.

My work focuses on Infrastructure Performance and Customer Engineering, specifically for GPUs and TPUs. I lead teams that bridge the gap between cutting-edge AI hardware and the latest ML models (like Gemini), ensuring optimal performance and reliability at Google Cloud scale. I thrive in the ambiguous space where hardware constraints meet software ambition—whether it’s debugging race conditions across thousands of chips or designing API surfaces for next-gen models.

Beyond the code, I maintain this “digital garden” where I document my projects and learnings. It serves as my second brain, capturing everything from technical deep dives to random musings. I believe in “learning in public”—so you’ll find unpolished notes on troubleshooting Kubernetes clusters alongside recipes I’m refining. It’s not just a blog; it’s a living repository of my curiosity.

Personal Interests @@ -13,4 +13,4 @@ My work focuses on Infrastructure Performance and Customer Engineering, specific 2016 - 2025 Eric X. Liu -[de8df55]

\ No newline at end of file +[f374ada]
\ No newline at end of file diff --git a/categories/index.html b/categories/index.html index 653f62d..66bbd32 100644 --- a/categories/index.html +++ b/categories/index.html @@ -1,7 +1,7 @@ -Categories · Eric X. Liu's Personal Page
Eric X. Liu's Personal Page +Categories · Eric X. Liu's Personal Page
Eric X. Liu's Personal Page -
  • Posts
  • Chat
  • Git
  • Coder
  • About
  • |
  • Sign in

Categories

    © +
    • Posts
    • Chat
    • Git
    • Coder
    • About
    • |
    • Sign in

    Categories

      © 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada] \ No newline at end of file diff --git a/categories/page/1/index.html b/categories/page/1/index.html new file mode 100644 index 0000000..600b35e --- /dev/null +++ b/categories/page/1/index.html @@ -0,0 +1 @@ +https://ericxliu.me/categories/ \ No newline at end of file diff --git a/css/coder.min.f03d6359cf766772af14fbe07ce6aca734b321c2e15acba0bbf4e2254941c460.css b/css/coder.min.4b392a85107b91dbdabc528edf014a6ab1a30cd44cafcd5325c8efe796794fca.css similarity index 95% rename from css/coder.min.f03d6359cf766772af14fbe07ce6aca734b321c2e15acba0bbf4e2254941c460.css rename to css/coder.min.4b392a85107b91dbdabc528edf014a6ab1a30cd44cafcd5325c8efe796794fca.css index a932868..d7425a8 100644 --- a/css/coder.min.f03d6359cf766772af14fbe07ce6aca734b321c2e15acba0bbf4e2254941c460.css +++ b/css/coder.min.4b392a85107b91dbdabc528edf014a6ab1a30cd44cafcd5325c8efe796794fca.css @@ -8,4 +8,4 @@ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc.*/:root,:host{--fa-style-family-brands:'Font Awesome 6 Brands';--fa-font-brands:normal 400 1em/1 'Font Awesome 6 Brands'}@font-face{font-family:'font awesome 6 brands';font-style:normal;font-weight:400;font-display:block;src:url(../fonts/fa-brands-400.woff2)format("woff2"),url(../fonts/fa-brands-400.ttf)format("truetype")}.fab,.fa-brands{font-weight:400}.fa-monero{--fa:"\f3d0"}.fa-hooli{--fa:"\f427"}.fa-yelp{--fa:"\f1e9"}.fa-cc-visa{--fa:"\f1f0"}.fa-lastfm{--fa:"\f202"}.fa-shopware{--fa:"\f5b5"}.fa-creative-commons-nc{--fa:"\f4e8"}.fa-aws{--fa:"\f375"}.fa-redhat{--fa:"\f7bc"}.fa-yoast{--fa:"\f2b1"}.fa-cloudflare{--fa:"\e07d"}.fa-ups{--fa:"\f7e0"}.fa-pixiv{--fa:"\e640"}.fa-wpexplorer{--fa:"\f2de"}.fa-dyalog{--fa:"\f399"}.fa-bity{--fa:"\f37a"}.fa-stackpath{--fa:"\f842"}.fa-buysellads{--fa:"\f20d"}.fa-first-order{--fa:"\f2b0"}.fa-modx{--fa:"\f285"}.fa-guilded{--fa:"\e07e"}.fa-vnv{--fa:"\f40b"}.fa-square-js{--fa:"\f3b9"}.fa-js-square{--fa:"\f3b9"}.fa-microsoft{--fa:"\f3ca"}.fa-qq{--fa:"\f1d6"}.fa-orcid{--fa:"\f8d2"}.fa-java{--fa:"\f4e4"}.fa-invision{--fa:"\f7b0"}.fa-creative-commons-pd-alt{--fa:"\f4ed"}.fa-centercode{--fa:"\f380"}.fa-glide-g{--fa:"\f2a6"}.fa-drupal{--fa:"\f1a9"}.fa-jxl{--fa:"\e67b"}.fa-dart-lang{--fa:"\e693"}.fa-hire-a-helper{--fa:"\f3b0"}.fa-creative-commons-by{--fa:"\f4e7"}.fa-unity{--fa:"\e049"}.fa-whmcs{--fa:"\f40d"}.fa-rocketchat{--fa:"\f3e8"}.fa-vk{--fa:"\f189"}.fa-untappd{--fa:"\f405"}.fa-mailchimp{--fa:"\f59e"}.fa-css3-alt{--fa:"\f38b"}.fa-square-reddit{--fa:"\f1a2"}.fa-reddit-square{--fa:"\f1a2"}.fa-vimeo-v{--fa:"\f27d"}.fa-contao{--fa:"\f26d"}.fa-square-font-awesome{--fa:"\e5ad"}.fa-deskpro{--fa:"\f38f"}.fa-brave{--fa:"\e63c"}.fa-sistrix{--fa:"\f3ee"}.fa-square-instagram{--fa:"\e055"}.fa-instagram-square{--fa:"\e055"}.fa-battle-net{--fa:"\f835"}.fa-the-red-yeti{--fa:"\f69d"}.fa-square-hacker-news{--fa:"\f3af"}.fa-hacker-news-square{--fa:"\f3af"}.fa-edge{--fa:"\f282"}.fa-threads{--fa:"\e618"}.fa-napster{--fa:"\f3d2"}.fa-square-snapchat{--fa:"\f2ad"}.fa-snapchat-square{--fa:"\f2ad"}.fa-google-plus-g{--fa:"\f0d5"}.fa-artstation{--fa:"\f77a"}.fa-markdown{--fa:"\f60f"}.fa-sourcetree{--fa:"\f7d3"}.fa-google-plus{--fa:"\f2b3"}.fa-diaspora{--fa:"\f791"}.fa-foursquare{--fa:"\f180"}.fa-stack-overflow{--fa:"\f16c"}.fa-github-alt{--fa:"\f113"}.fa-phoenix-squadron{--fa:"\f511"}.fa-pagelines{--fa:"\f18c"}.fa-algolia{--fa:"\f36c"}.fa-red-river{--fa:"\f3e3"}.fa-creative-commons-sa{--fa:"\f4ef"}.fa-safari{--fa:"\f267"}.fa-google{--fa:"\f1a0"}.fa-square-font-awesome-stroke{--fa:"\f35c"}.fa-font-awesome-alt{--fa:"\f35c"}.fa-atlassian{--fa:"\f77b"}.fa-linkedin-in{--fa:"\f0e1"}.fa-digital-ocean{--fa:"\f391"}.fa-nimblr{--fa:"\f5a8"}.fa-chromecast{--fa:"\f838"}.fa-evernote{--fa:"\f839"}.fa-hacker-news{--fa:"\f1d4"}.fa-creative-commons-sampling{--fa:"\f4f0"}.fa-adversal{--fa:"\f36a"}.fa-creative-commons{--fa:"\f25e"}.fa-watchman-monitoring{--fa:"\e087"}.fa-fonticons{--fa:"\f280"}.fa-weixin{--fa:"\f1d7"}.fa-shirtsinbulk{--fa:"\f214"}.fa-codepen{--fa:"\f1cb"}.fa-git-alt{--fa:"\f841"}.fa-lyft{--fa:"\f3c3"}.fa-rev{--fa:"\f5b2"}.fa-windows{--fa:"\f17a"}.fa-wizards-of-the-coast{--fa:"\f730"}.fa-square-viadeo{--fa:"\f2aa"}.fa-viadeo-square{--fa:"\f2aa"}.fa-meetup{--fa:"\f2e0"}.fa-centos{--fa:"\f789"}.fa-adn{--fa:"\f170"}.fa-cloudsmith{--fa:"\f384"}.fa-opensuse{--fa:"\e62b"}.fa-pied-piper-alt{--fa:"\f1a8"}.fa-square-dribbble{--fa:"\f397"}.fa-dribbble-square{--fa:"\f397"}.fa-codiepie{--fa:"\f284"}.fa-node{--fa:"\f419"}.fa-mix{--fa:"\f3cb"}.fa-steam{--fa:"\f1b6"}.fa-cc-apple-pay{--fa:"\f416"}.fa-scribd{--fa:"\f28a"}.fa-debian{--fa:"\e60b"}.fa-openid{--fa:"\f19b"}.fa-instalod{--fa:"\e081"}.fa-files-pinwheel{--fa:"\e69f"}.fa-expeditedssl{--fa:"\f23e"}.fa-sellcast{--fa:"\f2da"}.fa-square-twitter{--fa:"\f081"}.fa-twitter-square{--fa:"\f081"}.fa-r-project{--fa:"\f4f7"}.fa-delicious{--fa:"\f1a5"}.fa-freebsd{--fa:"\f3a4"}.fa-vuejs{--fa:"\f41f"}.fa-accusoft{--fa:"\f369"}.fa-ioxhost{--fa:"\f208"}.fa-fonticons-fi{--fa:"\f3a2"}.fa-app-store{--fa:"\f36f"}.fa-cc-mastercard{--fa:"\f1f1"}.fa-itunes-note{--fa:"\f3b5"}.fa-golang{--fa:"\e40f"}.fa-kickstarter{--fa:"\f3bb"}.fa-square-kickstarter{--fa:"\f3bb"}.fa-grav{--fa:"\f2d6"}.fa-weibo{--fa:"\f18a"}.fa-uncharted{--fa:"\e084"}.fa-firstdraft{--fa:"\f3a1"}.fa-square-youtube{--fa:"\f431"}.fa-youtube-square{--fa:"\f431"}.fa-wikipedia-w{--fa:"\f266"}.fa-wpressr{--fa:"\f3e4"}.fa-rendact{--fa:"\f3e4"}.fa-angellist{--fa:"\f209"}.fa-galactic-republic{--fa:"\f50c"}.fa-nfc-directional{--fa:"\e530"}.fa-skype{--fa:"\f17e"}.fa-joget{--fa:"\f3b7"}.fa-fedora{--fa:"\f798"}.fa-stripe-s{--fa:"\f42a"}.fa-meta{--fa:"\e49b"}.fa-laravel{--fa:"\f3bd"}.fa-hotjar{--fa:"\f3b1"}.fa-bluetooth-b{--fa:"\f294"}.fa-square-letterboxd{--fa:"\e62e"}.fa-sticker-mule{--fa:"\f3f7"}.fa-creative-commons-zero{--fa:"\f4f3"}.fa-hips{--fa:"\f452"}.fa-css{--fa:"\e6a2"}.fa-behance{--fa:"\f1b4"}.fa-reddit{--fa:"\f1a1"}.fa-discord{--fa:"\f392"}.fa-chrome{--fa:"\f268"}.fa-app-store-ios{--fa:"\f370"}.fa-cc-discover{--fa:"\f1f2"}.fa-wpbeginner{--fa:"\f297"}.fa-confluence{--fa:"\f78d"}.fa-shoelace{--fa:"\e60c"}.fa-mdb{--fa:"\f8ca"}.fa-dochub{--fa:"\f394"}.fa-accessible-icon{--fa:"\f368"}.fa-ebay{--fa:"\f4f4"}.fa-amazon{--fa:"\f270"}.fa-unsplash{--fa:"\e07c"}.fa-yarn{--fa:"\f7e3"}.fa-square-steam{--fa:"\f1b7"}.fa-steam-square{--fa:"\f1b7"}.fa-500px{--fa:"\f26e"}.fa-square-vimeo{--fa:"\f194"}.fa-vimeo-square{--fa:"\f194"}.fa-asymmetrik{--fa:"\f372"}.fa-font-awesome{--fa:"\f2b4"}.fa-font-awesome-flag{--fa:"\f2b4"}.fa-font-awesome-logo-full{--fa:"\f2b4"}.fa-gratipay{--fa:"\f184"}.fa-apple{--fa:"\f179"}.fa-hive{--fa:"\e07f"}.fa-gitkraken{--fa:"\f3a6"}.fa-keybase{--fa:"\f4f5"}.fa-apple-pay{--fa:"\f415"}.fa-padlet{--fa:"\e4a0"}.fa-amazon-pay{--fa:"\f42c"}.fa-square-github{--fa:"\f092"}.fa-github-square{--fa:"\f092"}.fa-stumbleupon{--fa:"\f1a4"}.fa-fedex{--fa:"\f797"}.fa-phoenix-framework{--fa:"\f3dc"}.fa-shopify{--fa:"\e057"}.fa-neos{--fa:"\f612"}.fa-square-threads{--fa:"\e619"}.fa-hackerrank{--fa:"\f5f7"}.fa-researchgate{--fa:"\f4f8"}.fa-swift{--fa:"\f8e1"}.fa-angular{--fa:"\f420"}.fa-speakap{--fa:"\f3f3"}.fa-angrycreative{--fa:"\f36e"}.fa-y-combinator{--fa:"\f23b"}.fa-empire{--fa:"\f1d1"}.fa-envira{--fa:"\f299"}.fa-google-scholar{--fa:"\e63b"}.fa-square-gitlab{--fa:"\e5ae"}.fa-gitlab-square{--fa:"\e5ae"}.fa-studiovinari{--fa:"\f3f8"}.fa-pied-piper{--fa:"\f2ae"}.fa-wordpress{--fa:"\f19a"}.fa-product-hunt{--fa:"\f288"}.fa-firefox{--fa:"\f269"}.fa-linode{--fa:"\f2b8"}.fa-goodreads{--fa:"\f3a8"}.fa-square-odnoklassniki{--fa:"\f264"}.fa-odnoklassniki-square{--fa:"\f264"}.fa-jsfiddle{--fa:"\f1cc"}.fa-sith{--fa:"\f512"}.fa-themeisle{--fa:"\f2b2"}.fa-page4{--fa:"\f3d7"}.fa-hashnode{--fa:"\e499"}.fa-react{--fa:"\f41b"}.fa-cc-paypal{--fa:"\f1f4"}.fa-squarespace{--fa:"\f5be"}.fa-cc-stripe{--fa:"\f1f5"}.fa-creative-commons-share{--fa:"\f4f2"}.fa-bitcoin{--fa:"\f379"}.fa-keycdn{--fa:"\f3ba"}.fa-opera{--fa:"\f26a"}.fa-itch-io{--fa:"\f83a"}.fa-umbraco{--fa:"\f8e8"}.fa-galactic-senate{--fa:"\f50d"}.fa-ubuntu{--fa:"\f7df"}.fa-draft2digital{--fa:"\f396"}.fa-stripe{--fa:"\f429"}.fa-houzz{--fa:"\f27c"}.fa-gg{--fa:"\f260"}.fa-dhl{--fa:"\f790"}.fa-square-pinterest{--fa:"\f0d3"}.fa-pinterest-square{--fa:"\f0d3"}.fa-xing{--fa:"\f168"}.fa-blackberry{--fa:"\f37b"}.fa-creative-commons-pd{--fa:"\f4ec"}.fa-playstation{--fa:"\f3df"}.fa-quinscape{--fa:"\f459"}.fa-less{--fa:"\f41d"}.fa-blogger-b{--fa:"\f37d"}.fa-opencart{--fa:"\f23d"}.fa-vine{--fa:"\f1ca"}.fa-signal-messenger{--fa:"\e663"}.fa-paypal{--fa:"\f1ed"}.fa-gitlab{--fa:"\f296"}.fa-typo3{--fa:"\f42b"}.fa-reddit-alien{--fa:"\f281"}.fa-yahoo{--fa:"\f19e"}.fa-dailymotion{--fa:"\e052"}.fa-affiliatetheme{--fa:"\f36b"}.fa-pied-piper-pp{--fa:"\f1a7"}.fa-bootstrap{--fa:"\f836"}.fa-odnoklassniki{--fa:"\f263"}.fa-nfc-symbol{--fa:"\e531"}.fa-mintbit{--fa:"\e62f"}.fa-ethereum{--fa:"\f42e"}.fa-speaker-deck{--fa:"\f83c"}.fa-creative-commons-nc-eu{--fa:"\f4e9"}.fa-patreon{--fa:"\f3d9"}.fa-avianex{--fa:"\f374"}.fa-ello{--fa:"\f5f1"}.fa-gofore{--fa:"\f3a7"}.fa-bimobject{--fa:"\f378"}.fa-brave-reverse{--fa:"\e63d"}.fa-facebook-f{--fa:"\f39e"}.fa-square-google-plus{--fa:"\f0d4"}.fa-google-plus-square{--fa:"\f0d4"}.fa-web-awesome{--fa:"\e682"}.fa-mandalorian{--fa:"\f50f"}.fa-first-order-alt{--fa:"\f50a"}.fa-osi{--fa:"\f41a"}.fa-google-wallet{--fa:"\f1ee"}.fa-d-and-d-beyond{--fa:"\f6ca"}.fa-periscope{--fa:"\f3da"}.fa-fulcrum{--fa:"\f50b"}.fa-cloudscale{--fa:"\f383"}.fa-forumbee{--fa:"\f211"}.fa-mizuni{--fa:"\f3cc"}.fa-schlix{--fa:"\f3ea"}.fa-square-xing{--fa:"\f169"}.fa-xing-square{--fa:"\f169"}.fa-bandcamp{--fa:"\f2d5"}.fa-wpforms{--fa:"\f298"}.fa-cloudversify{--fa:"\f385"}.fa-usps{--fa:"\f7e1"}.fa-megaport{--fa:"\f5a3"}.fa-magento{--fa:"\f3c4"}.fa-spotify{--fa:"\f1bc"}.fa-optin-monster{--fa:"\f23c"}.fa-fly{--fa:"\f417"}.fa-square-bluesky{--fa:"\e6a3"}.fa-aviato{--fa:"\f421"}.fa-itunes{--fa:"\f3b4"}.fa-cuttlefish{--fa:"\f38c"}.fa-blogger{--fa:"\f37c"}.fa-flickr{--fa:"\f16e"}.fa-viber{--fa:"\f409"}.fa-soundcloud{--fa:"\f1be"}.fa-digg{--fa:"\f1a6"}.fa-tencent-weibo{--fa:"\f1d5"}.fa-letterboxd{--fa:"\e62d"}.fa-symfony{--fa:"\f83d"}.fa-maxcdn{--fa:"\f136"}.fa-etsy{--fa:"\f2d7"}.fa-facebook-messenger{--fa:"\f39f"}.fa-audible{--fa:"\f373"}.fa-think-peaks{--fa:"\f731"}.fa-bilibili{--fa:"\e3d9"}.fa-erlang{--fa:"\f39d"}.fa-x-twitter{--fa:"\e61b"}.fa-cotton-bureau{--fa:"\f89e"}.fa-dashcube{--fa:"\f210"}.fa-42-group{--fa:"\e080"}.fa-innosoft{--fa:"\e080"}.fa-stack-exchange{--fa:"\f18d"}.fa-elementor{--fa:"\f430"}.fa-square-pied-piper{--fa:"\e01e"}.fa-pied-piper-square{--fa:"\e01e"}.fa-creative-commons-nd{--fa:"\f4eb"}.fa-palfed{--fa:"\f3d8"}.fa-superpowers{--fa:"\f2dd"}.fa-resolving{--fa:"\f3e7"}.fa-xbox{--fa:"\f412"}.fa-square-web-awesome-stroke{--fa:"\e684"}.fa-searchengin{--fa:"\f3eb"}.fa-tiktok{--fa:"\e07b"}.fa-square-facebook{--fa:"\f082"}.fa-facebook-square{--fa:"\f082"}.fa-renren{--fa:"\f18b"}.fa-linux{--fa:"\f17c"}.fa-glide{--fa:"\f2a5"}.fa-linkedin{--fa:"\f08c"}.fa-hubspot{--fa:"\f3b2"}.fa-deploydog{--fa:"\f38e"}.fa-twitch{--fa:"\f1e8"}.fa-flutter{--fa:"\e694"}.fa-ravelry{--fa:"\f2d9"}.fa-mixer{--fa:"\e056"}.fa-square-lastfm{--fa:"\f203"}.fa-lastfm-square{--fa:"\f203"}.fa-vimeo{--fa:"\f40a"}.fa-mendeley{--fa:"\f7b3"}.fa-uniregistry{--fa:"\f404"}.fa-figma{--fa:"\f799"}.fa-creative-commons-remix{--fa:"\f4ee"}.fa-cc-amazon-pay{--fa:"\f42d"}.fa-dropbox{--fa:"\f16b"}.fa-instagram{--fa:"\f16d"}.fa-cmplid{--fa:"\e360"}.fa-upwork{--fa:"\e641"}.fa-facebook{--fa:"\f09a"}.fa-gripfire{--fa:"\f3ac"}.fa-jedi-order{--fa:"\f50e"}.fa-uikit{--fa:"\f403"}.fa-fort-awesome-alt{--fa:"\f3a3"}.fa-phabricator{--fa:"\f3db"}.fa-ussunnah{--fa:"\f407"}.fa-earlybirds{--fa:"\f39a"}.fa-trade-federation{--fa:"\f513"}.fa-autoprefixer{--fa:"\f41c"}.fa-whatsapp{--fa:"\f232"}.fa-square-upwork{--fa:"\e67c"}.fa-slideshare{--fa:"\f1e7"}.fa-google-play{--fa:"\f3ab"}.fa-viadeo{--fa:"\f2a9"}.fa-line{--fa:"\f3c0"}.fa-google-drive{--fa:"\f3aa"}.fa-servicestack{--fa:"\f3ec"}.fa-simplybuilt{--fa:"\f215"}.fa-bitbucket{--fa:"\f171"}.fa-imdb{--fa:"\f2d8"}.fa-deezer{--fa:"\e077"}.fa-raspberry-pi{--fa:"\f7bb"}.fa-jira{--fa:"\f7b1"}.fa-docker{--fa:"\f395"}.fa-screenpal{--fa:"\e570"}.fa-bluetooth{--fa:"\f293"}.fa-gitter{--fa:"\f426"}.fa-d-and-d{--fa:"\f38d"}.fa-microblog{--fa:"\e01a"}.fa-cc-diners-club{--fa:"\f24c"}.fa-gg-circle{--fa:"\f261"}.fa-pied-piper-hat{--fa:"\f4e5"}.fa-kickstarter-k{--fa:"\f3bc"}.fa-yandex{--fa:"\f413"}.fa-readme{--fa:"\f4d5"}.fa-html5{--fa:"\f13b"}.fa-sellsy{--fa:"\f213"}.fa-square-web-awesome{--fa:"\e683"}.fa-sass{--fa:"\f41e"}.fa-wirsindhandwerk{--fa:"\e2d0"}.fa-wsh{--fa:"\e2d0"}.fa-buromobelexperte{--fa:"\f37f"}.fa-salesforce{--fa:"\f83b"}.fa-octopus-deploy{--fa:"\e082"}.fa-medapps{--fa:"\f3c6"}.fa-ns8{--fa:"\f3d5"}.fa-pinterest-p{--fa:"\f231"}.fa-apper{--fa:"\f371"}.fa-fort-awesome{--fa:"\f286"}.fa-waze{--fa:"\f83f"}.fa-bluesky{--fa:"\e671"}.fa-cc-jcb{--fa:"\f24b"}.fa-snapchat{--fa:"\f2ab"}.fa-snapchat-ghost{--fa:"\f2ab"}.fa-fantasy-flight-games{--fa:"\f6dc"}.fa-rust{--fa:"\e07a"}.fa-wix{--fa:"\f5cf"}.fa-square-behance{--fa:"\f1b5"}.fa-behance-square{--fa:"\f1b5"}.fa-supple{--fa:"\f3f9"}.fa-webflow{--fa:"\e65c"}.fa-rebel{--fa:"\f1d0"}.fa-css3{--fa:"\f13c"}.fa-staylinked{--fa:"\f3f5"}.fa-kaggle{--fa:"\f5fa"}.fa-space-awesome{--fa:"\e5ac"}.fa-deviantart{--fa:"\f1bd"}.fa-cpanel{--fa:"\f388"}.fa-goodreads-g{--fa:"\f3a9"}.fa-square-git{--fa:"\f1d2"}.fa-git-square{--fa:"\f1d2"}.fa-square-tumblr{--fa:"\f174"}.fa-tumblr-square{--fa:"\f174"}.fa-trello{--fa:"\f181"}.fa-creative-commons-nc-jp{--fa:"\f4ea"}.fa-get-pocket{--fa:"\f265"}.fa-perbyte{--fa:"\e083"}.fa-grunt{--fa:"\f3ad"}.fa-weebly{--fa:"\f5cc"}.fa-connectdevelop{--fa:"\f20e"}.fa-leanpub{--fa:"\f212"}.fa-black-tie{--fa:"\f27e"}.fa-themeco{--fa:"\f5c6"}.fa-python{--fa:"\f3e2"}.fa-android{--fa:"\f17b"}.fa-bots{--fa:"\e340"}.fa-free-code-camp{--fa:"\f2c5"}.fa-hornbill{--fa:"\f592"}.fa-js{--fa:"\f3b8"}.fa-ideal{--fa:"\e013"}.fa-git{--fa:"\f1d3"}.fa-dev{--fa:"\f6cc"}.fa-sketch{--fa:"\f7c6"}.fa-yandex-international{--fa:"\f414"}.fa-cc-amex{--fa:"\f1f3"}.fa-uber{--fa:"\f402"}.fa-github{--fa:"\f09b"}.fa-php{--fa:"\f457"}.fa-alipay{--fa:"\f642"}.fa-youtube{--fa:"\f167"}.fa-skyatlas{--fa:"\f216"}.fa-firefox-browser{--fa:"\e007"}.fa-replyd{--fa:"\f3e6"}.fa-suse{--fa:"\f7d6"}.fa-jenkins{--fa:"\f3b6"}.fa-twitter{--fa:"\f099"}.fa-rockrms{--fa:"\f3e9"}.fa-pinterest{--fa:"\f0d2"}.fa-buffer{--fa:"\f837"}.fa-npm{--fa:"\f3d4"}.fa-yammer{--fa:"\f840"}.fa-btc{--fa:"\f15a"}.fa-dribbble{--fa:"\f17d"}.fa-stumbleupon-circle{--fa:"\f1a3"}.fa-internet-explorer{--fa:"\f26b"}.fa-stubber{--fa:"\e5c7"}.fa-telegram{--fa:"\f2c6"}.fa-telegram-plane{--fa:"\f2c6"}.fa-old-republic{--fa:"\f510"}.fa-odysee{--fa:"\e5c6"}.fa-square-whatsapp{--fa:"\f40c"}.fa-whatsapp-square{--fa:"\f40c"}.fa-node-js{--fa:"\f3d3"}.fa-edge-legacy{--fa:"\e078"}.fa-slack{--fa:"\f198"}.fa-slack-hash{--fa:"\f198"}.fa-medrt{--fa:"\f3c8"}.fa-usb{--fa:"\f287"}.fa-tumblr{--fa:"\f173"}.fa-vaadin{--fa:"\f408"}.fa-quora{--fa:"\f2c4"}.fa-square-x-twitter{--fa:"\e61a"}.fa-reacteurope{--fa:"\f75d"}.fa-medium{--fa:"\f23a"}.fa-medium-m{--fa:"\f23a"}.fa-amilia{--fa:"\f36d"}.fa-mixcloud{--fa:"\f289"}.fa-flipboard{--fa:"\f44d"}.fa-viacoin{--fa:"\f237"}.fa-critical-role{--fa:"\f6c9"}.fa-sitrox{--fa:"\e44a"}.fa-discourse{--fa:"\f393"}.fa-joomla{--fa:"\f1aa"}.fa-mastodon{--fa:"\f4f6"}.fa-airbnb{--fa:"\f834"}.fa-wolf-pack-battalion{--fa:"\f514"}.fa-buy-n-large{--fa:"\f8a6"}.fa-gulp{--fa:"\f3ae"}.fa-creative-commons-sampling-plus{--fa:"\f4f1"}.fa-strava{--fa:"\f428"}.fa-ember{--fa:"\f423"}.fa-canadian-maple-leaf{--fa:"\f785"}.fa-teamspeak{--fa:"\f4f9"}.fa-pushed{--fa:"\f3e1"}.fa-wordpress-simple{--fa:"\f411"}.fa-nutritionix{--fa:"\f3d6"}.fa-wodu{--fa:"\e088"}.fa-google-pay{--fa:"\e079"}.fa-intercom{--fa:"\f7af"}.fa-zhihu{--fa:"\f63f"}.fa-korvue{--fa:"\f42f"}.fa-pix{--fa:"\e43a"}.fa-steam-symbol{--fa:"\f3f6"}/*!* Font Awesome Free 6.7.2 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 2024 Fonticons, Inc.*/.fa.fa-glass{--fa:"\f000"}.fa.fa-envelope-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-envelope-o{--fa:"\f0e0"}.fa.fa-star-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-star-o{--fa:"\f005"}.fa.fa-remove{--fa:"\f00d"}.fa.fa-close{--fa:"\f00d"}.fa.fa-gear{--fa:"\f013"}.fa.fa-trash-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-trash-o{--fa:"\f2ed"}.fa.fa-home{--fa:"\f015"}.fa.fa-file-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-o{--fa:"\f15b"}.fa.fa-clock-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-clock-o{--fa:"\f017"}.fa.fa-arrow-circle-o-down{font-family:'font awesome 6 free';font-weight:400}.fa.fa-arrow-circle-o-down{--fa:"\f358"}.fa.fa-arrow-circle-o-up{font-family:'font awesome 6 free';font-weight:400}.fa.fa-arrow-circle-o-up{--fa:"\f35b"}.fa.fa-play-circle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-play-circle-o{--fa:"\f144"}.fa.fa-repeat{--fa:"\f01e"}.fa.fa-rotate-right{--fa:"\f01e"}.fa.fa-refresh{--fa:"\f021"}.fa.fa-list-alt{font-family:'font awesome 6 free';font-weight:400}.fa.fa-list-alt{--fa:"\f022"}.fa.fa-dedent{--fa:"\f03b"}.fa.fa-video-camera{--fa:"\f03d"}.fa.fa-picture-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-picture-o{--fa:"\f03e"}.fa.fa-photo{font-family:'font awesome 6 free';font-weight:400}.fa.fa-photo{--fa:"\f03e"}.fa.fa-image{font-family:'font awesome 6 free';font-weight:400}.fa.fa-image{--fa:"\f03e"}.fa.fa-map-marker{--fa:"\f3c5"}.fa.fa-pencil-square-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-pencil-square-o{--fa:"\f044"}.fa.fa-edit{font-family:'font awesome 6 free';font-weight:400}.fa.fa-edit{--fa:"\f044"}.fa.fa-share-square-o{--fa:"\f14d"}.fa.fa-check-square-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-check-square-o{--fa:"\f14a"}.fa.fa-arrows{--fa:"\f0b2"}.fa.fa-times-circle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-times-circle-o{--fa:"\f057"}.fa.fa-check-circle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-check-circle-o{--fa:"\f058"}.fa.fa-mail-forward{--fa:"\f064"}.fa.fa-expand{--fa:"\f424"}.fa.fa-compress{--fa:"\f422"}.fa.fa-eye{font-family:'font awesome 6 free';font-weight:400}.fa.fa-eye-slash{font-family:'font awesome 6 free';font-weight:400}.fa.fa-warning{--fa:"\f071"}.fa.fa-calendar{--fa:"\f073"}.fa.fa-arrows-v{--fa:"\f338"}.fa.fa-arrows-h{--fa:"\f337"}.fa.fa-bar-chart{--fa:"\e0e3"}.fa.fa-bar-chart-o{--fa:"\e0e3"}.fa.fa-twitter-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-twitter-square{--fa:"\f081"}.fa.fa-facebook-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-facebook-square{--fa:"\f082"}.fa.fa-gears{--fa:"\f085"}.fa.fa-thumbs-o-up{font-family:'font awesome 6 free';font-weight:400}.fa.fa-thumbs-o-up{--fa:"\f164"}.fa.fa-thumbs-o-down{font-family:'font awesome 6 free';font-weight:400}.fa.fa-thumbs-o-down{--fa:"\f165"}.fa.fa-heart-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-heart-o{--fa:"\f004"}.fa.fa-sign-out{--fa:"\f2f5"}.fa.fa-linkedin-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-linkedin-square{--fa:"\f08c"}.fa.fa-thumb-tack{--fa:"\f08d"}.fa.fa-external-link{--fa:"\f35d"}.fa.fa-sign-in{--fa:"\f2f6"}.fa.fa-github-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-github-square{--fa:"\f092"}.fa.fa-lemon-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-lemon-o{--fa:"\f094"}.fa.fa-square-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-square-o{--fa:"\f0c8"}.fa.fa-bookmark-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-bookmark-o{--fa:"\f02e"}.fa.fa-twitter{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-facebook{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-facebook{--fa:"\f39e"}.fa.fa-facebook-f{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-facebook-f{--fa:"\f39e"}.fa.fa-github{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-credit-card{font-family:'font awesome 6 free';font-weight:400}.fa.fa-feed{--fa:"\f09e"}.fa.fa-hdd-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hdd-o{--fa:"\f0a0"}.fa.fa-hand-o-right{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-o-right{--fa:"\f0a4"}.fa.fa-hand-o-left{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-o-left{--fa:"\f0a5"}.fa.fa-hand-o-up{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-o-up{--fa:"\f0a6"}.fa.fa-hand-o-down{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-o-down{--fa:"\f0a7"}.fa.fa-globe{--fa:"\f57d"}.fa.fa-tasks{--fa:"\f828"}.fa.fa-arrows-alt{--fa:"\f31e"}.fa.fa-group{--fa:"\f0c0"}.fa.fa-chain{--fa:"\f0c1"}.fa.fa-cut{--fa:"\f0c4"}.fa.fa-files-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-files-o{--fa:"\f0c5"}.fa.fa-floppy-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-floppy-o{--fa:"\f0c7"}.fa.fa-save{font-family:'font awesome 6 free';font-weight:400}.fa.fa-save{--fa:"\f0c7"}.fa.fa-navicon{--fa:"\f0c9"}.fa.fa-reorder{--fa:"\f0c9"}.fa.fa-magic{--fa:"\e2ca"}.fa.fa-pinterest{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-pinterest-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-pinterest-square{--fa:"\f0d3"}.fa.fa-google-plus-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-google-plus-square{--fa:"\f0d4"}.fa.fa-google-plus{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-google-plus{--fa:"\f0d5"}.fa.fa-money{--fa:"\f3d1"}.fa.fa-unsorted{--fa:"\f0dc"}.fa.fa-sort-desc{--fa:"\f0dd"}.fa.fa-sort-asc{--fa:"\f0de"}.fa.fa-linkedin{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-linkedin{--fa:"\f0e1"}.fa.fa-rotate-left{--fa:"\f0e2"}.fa.fa-legal{--fa:"\f0e3"}.fa.fa-tachometer{--fa:"\f625"}.fa.fa-dashboard{--fa:"\f625"}.fa.fa-comment-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-comment-o{--fa:"\f075"}.fa.fa-comments-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-comments-o{--fa:"\f086"}.fa.fa-flash{--fa:"\f0e7"}.fa.fa-clipboard{--fa:"\f0ea"}.fa.fa-lightbulb-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-lightbulb-o{--fa:"\f0eb"}.fa.fa-exchange{--fa:"\f362"}.fa.fa-cloud-download{--fa:"\f0ed"}.fa.fa-cloud-upload{--fa:"\f0ee"}.fa.fa-bell-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-bell-o{--fa:"\f0f3"}.fa.fa-cutlery{--fa:"\f2e7"}.fa.fa-file-text-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-text-o{--fa:"\f15c"}.fa.fa-building-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-building-o{--fa:"\f1ad"}.fa.fa-hospital-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hospital-o{--fa:"\f0f8"}.fa.fa-tablet{--fa:"\f3fa"}.fa.fa-mobile{--fa:"\f3cd"}.fa.fa-mobile-phone{--fa:"\f3cd"}.fa.fa-circle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-circle-o{--fa:"\f111"}.fa.fa-mail-reply{--fa:"\f3e5"}.fa.fa-github-alt{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-folder-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-folder-o{--fa:"\f07b"}.fa.fa-folder-open-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-folder-open-o{--fa:"\f07c"}.fa.fa-smile-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-smile-o{--fa:"\f118"}.fa.fa-frown-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-frown-o{--fa:"\f119"}.fa.fa-meh-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-meh-o{--fa:"\f11a"}.fa.fa-keyboard-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-keyboard-o{--fa:"\f11c"}.fa.fa-flag-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-flag-o{--fa:"\f024"}.fa.fa-mail-reply-all{--fa:"\f122"}.fa.fa-star-half-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-star-half-o{--fa:"\f5c0"}.fa.fa-star-half-empty{font-family:'font awesome 6 free';font-weight:400}.fa.fa-star-half-empty{--fa:"\f5c0"}.fa.fa-star-half-full{font-family:'font awesome 6 free';font-weight:400}.fa.fa-star-half-full{--fa:"\f5c0"}.fa.fa-code-fork{--fa:"\f126"}.fa.fa-chain-broken{--fa:"\f127"}.fa.fa-unlink{--fa:"\f127"}.fa.fa-calendar-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-calendar-o{--fa:"\f133"}.fa.fa-maxcdn{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-html5{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-css3{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-unlock-alt{--fa:"\f09c"}.fa.fa-minus-square-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-minus-square-o{--fa:"\f146"}.fa.fa-level-up{--fa:"\f3bf"}.fa.fa-level-down{--fa:"\f3be"}.fa.fa-pencil-square{--fa:"\f14b"}.fa.fa-external-link-square{--fa:"\f360"}.fa.fa-compass{font-family:'font awesome 6 free';font-weight:400}.fa.fa-caret-square-o-down{font-family:'font awesome 6 free';font-weight:400}.fa.fa-caret-square-o-down{--fa:"\f150"}.fa.fa-toggle-down{font-family:'font awesome 6 free';font-weight:400}.fa.fa-toggle-down{--fa:"\f150"}.fa.fa-caret-square-o-up{font-family:'font awesome 6 free';font-weight:400}.fa.fa-caret-square-o-up{--fa:"\f151"}.fa.fa-toggle-up{font-family:'font awesome 6 free';font-weight:400}.fa.fa-toggle-up{--fa:"\f151"}.fa.fa-caret-square-o-right{font-family:'font awesome 6 free';font-weight:400}.fa.fa-caret-square-o-right{--fa:"\f152"}.fa.fa-toggle-right{font-family:'font awesome 6 free';font-weight:400}.fa.fa-toggle-right{--fa:"\f152"}.fa.fa-eur{--fa:"\f153"}.fa.fa-euro{--fa:"\f153"}.fa.fa-gbp{--fa:"\f154"}.fa.fa-usd{--fa:"\24"}.fa.fa-dollar{--fa:"\24"}.fa.fa-inr{--fa:"\e1bc"}.fa.fa-rupee{--fa:"\e1bc"}.fa.fa-jpy{--fa:"\f157"}.fa.fa-cny{--fa:"\f157"}.fa.fa-rmb{--fa:"\f157"}.fa.fa-yen{--fa:"\f157"}.fa.fa-rub{--fa:"\f158"}.fa.fa-ruble{--fa:"\f158"}.fa.fa-rouble{--fa:"\f158"}.fa.fa-krw{--fa:"\f159"}.fa.fa-won{--fa:"\f159"}.fa.fa-btc{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-bitcoin{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-bitcoin{--fa:"\f15a"}.fa.fa-file-text{--fa:"\f15c"}.fa.fa-sort-alpha-asc{--fa:"\f15d"}.fa.fa-sort-alpha-desc{--fa:"\f881"}.fa.fa-sort-amount-asc{--fa:"\f884"}.fa.fa-sort-amount-desc{--fa:"\f160"}.fa.fa-sort-numeric-asc{--fa:"\f162"}.fa.fa-sort-numeric-desc{--fa:"\f886"}.fa.fa-youtube-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-youtube-square{--fa:"\f431"}.fa.fa-youtube{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-xing{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-xing-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-xing-square{--fa:"\f169"}.fa.fa-youtube-play{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-youtube-play{--fa:"\f167"}.fa.fa-dropbox{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-stack-overflow{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-instagram{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-flickr{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-adn{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-bitbucket{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-bitbucket-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-bitbucket-square{--fa:"\f171"}.fa.fa-tumblr{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-tumblr-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-tumblr-square{--fa:"\f174"}.fa.fa-long-arrow-down{--fa:"\f309"}.fa.fa-long-arrow-up{--fa:"\f30c"}.fa.fa-long-arrow-left{--fa:"\f30a"}.fa.fa-long-arrow-right{--fa:"\f30b"}.fa.fa-apple{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-windows{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-android{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-linux{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-dribbble{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-skype{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-foursquare{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-trello{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-gratipay{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-gittip{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-gittip{--fa:"\f184"}.fa.fa-sun-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-sun-o{--fa:"\f185"}.fa.fa-moon-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-moon-o{--fa:"\f186"}.fa.fa-vk{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-weibo{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-renren{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-pagelines{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-stack-exchange{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-arrow-circle-o-right{font-family:'font awesome 6 free';font-weight:400}.fa.fa-arrow-circle-o-right{--fa:"\f35a"}.fa.fa-arrow-circle-o-left{font-family:'font awesome 6 free';font-weight:400}.fa.fa-arrow-circle-o-left{--fa:"\f359"}.fa.fa-caret-square-o-left{font-family:'font awesome 6 free';font-weight:400}.fa.fa-caret-square-o-left{--fa:"\f191"}.fa.fa-toggle-left{font-family:'font awesome 6 free';font-weight:400}.fa.fa-toggle-left{--fa:"\f191"}.fa.fa-dot-circle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-dot-circle-o{--fa:"\f192"}.fa.fa-vimeo-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-vimeo-square{--fa:"\f194"}.fa.fa-try{--fa:"\e2bb"}.fa.fa-turkish-lira{--fa:"\e2bb"}.fa.fa-plus-square-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-plus-square-o{--fa:"\f0fe"}.fa.fa-slack{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-wordpress{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-openid{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-institution{--fa:"\f19c"}.fa.fa-bank{--fa:"\f19c"}.fa.fa-mortar-board{--fa:"\f19d"}.fa.fa-yahoo{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-google{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-reddit{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-reddit-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-reddit-square{--fa:"\f1a2"}.fa.fa-stumbleupon-circle{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-stumbleupon{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-delicious{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-digg{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-pied-piper-pp{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-pied-piper-alt{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-drupal{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-joomla{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-behance{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-behance-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-behance-square{--fa:"\f1b5"}.fa.fa-steam{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-steam-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-steam-square{--fa:"\f1b7"}.fa.fa-automobile{--fa:"\f1b9"}.fa.fa-cab{--fa:"\f1ba"}.fa.fa-spotify{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-deviantart{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-soundcloud{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-file-pdf-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-pdf-o{--fa:"\f1c1"}.fa.fa-file-word-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-word-o{--fa:"\f1c2"}.fa.fa-file-excel-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-excel-o{--fa:"\f1c3"}.fa.fa-file-powerpoint-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-powerpoint-o{--fa:"\f1c4"}.fa.fa-file-image-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-image-o{--fa:"\f1c5"}.fa.fa-file-photo-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-photo-o{--fa:"\f1c5"}.fa.fa-file-picture-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-picture-o{--fa:"\f1c5"}.fa.fa-file-archive-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-archive-o{--fa:"\f1c6"}.fa.fa-file-zip-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-zip-o{--fa:"\f1c6"}.fa.fa-file-audio-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-audio-o{--fa:"\f1c7"}.fa.fa-file-sound-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-sound-o{--fa:"\f1c7"}.fa.fa-file-video-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-video-o{--fa:"\f1c8"}.fa.fa-file-movie-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-movie-o{--fa:"\f1c8"}.fa.fa-file-code-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-code-o{--fa:"\f1c9"}.fa.fa-vine{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-codepen{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-jsfiddle{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-life-bouy{--fa:"\f1cd"}.fa.fa-life-buoy{--fa:"\f1cd"}.fa.fa-life-saver{--fa:"\f1cd"}.fa.fa-support{--fa:"\f1cd"}.fa.fa-circle-o-notch{--fa:"\f1ce"}.fa.fa-rebel{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-ra{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-ra{--fa:"\f1d0"}.fa.fa-resistance{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-resistance{--fa:"\f1d0"}.fa.fa-empire{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-ge{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-ge{--fa:"\f1d1"}.fa.fa-git-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-git-square{--fa:"\f1d2"}.fa.fa-git{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-hacker-news{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-y-combinator-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-y-combinator-square{--fa:"\f1d4"}.fa.fa-yc-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-yc-square{--fa:"\f1d4"}.fa.fa-tencent-weibo{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-qq{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-weixin{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-wechat{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-wechat{--fa:"\f1d7"}.fa.fa-send{--fa:"\f1d8"}.fa.fa-paper-plane-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-paper-plane-o{--fa:"\f1d8"}.fa.fa-send-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-send-o{--fa:"\f1d8"}.fa.fa-circle-thin{font-family:'font awesome 6 free';font-weight:400}.fa.fa-circle-thin{--fa:"\f111"}.fa.fa-header{--fa:"\f1dc"}.fa.fa-futbol-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-futbol-o{--fa:"\f1e3"}.fa.fa-soccer-ball-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-soccer-ball-o{--fa:"\f1e3"}.fa.fa-slideshare{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-twitch{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-yelp{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-newspaper-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-newspaper-o{--fa:"\f1ea"}.fa.fa-paypal{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-google-wallet{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-cc-visa{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-cc-mastercard{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-cc-discover{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-cc-amex{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-cc-paypal{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-cc-stripe{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-bell-slash-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-bell-slash-o{--fa:"\f1f6"}.fa.fa-trash{--fa:"\f2ed"}.fa.fa-copyright{font-family:'font awesome 6 free';font-weight:400}.fa.fa-eyedropper{--fa:"\f1fb"}.fa.fa-area-chart{--fa:"\f1fe"}.fa.fa-pie-chart{--fa:"\f200"}.fa.fa-line-chart{--fa:"\f201"}.fa.fa-lastfm{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-lastfm-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-lastfm-square{--fa:"\f203"}.fa.fa-ioxhost{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-angellist{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-cc{font-family:'font awesome 6 free';font-weight:400}.fa.fa-cc{--fa:"\f20a"}.fa.fa-ils{--fa:"\f20b"}.fa.fa-shekel{--fa:"\f20b"}.fa.fa-sheqel{--fa:"\f20b"}.fa.fa-buysellads{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-connectdevelop{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-dashcube{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-forumbee{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-leanpub{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-sellsy{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-shirtsinbulk{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-simplybuilt{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-skyatlas{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-diamond{font-family:'font awesome 6 free';font-weight:400}.fa.fa-diamond{--fa:"\f3a5"}.fa.fa-transgender{--fa:"\f224"}.fa.fa-intersex{--fa:"\f224"}.fa.fa-transgender-alt{--fa:"\f225"}.fa.fa-facebook-official{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-facebook-official{--fa:"\f09a"}.fa.fa-pinterest-p{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-whatsapp{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-hotel{--fa:"\f236"}.fa.fa-viacoin{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-medium{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-y-combinator{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-yc{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-yc{--fa:"\f23b"}.fa.fa-optin-monster{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-opencart{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-expeditedssl{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-battery-4{--fa:"\f240"}.fa.fa-battery{--fa:"\f240"}.fa.fa-battery-3{--fa:"\f241"}.fa.fa-battery-2{--fa:"\f242"}.fa.fa-battery-1{--fa:"\f243"}.fa.fa-battery-0{--fa:"\f244"}.fa.fa-object-group{font-family:'font awesome 6 free';font-weight:400}.fa.fa-object-ungroup{font-family:'font awesome 6 free';font-weight:400}.fa.fa-sticky-note-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-sticky-note-o{--fa:"\f249"}.fa.fa-cc-jcb{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-cc-diners-club{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-clone{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hourglass-o{--fa:"\f254"}.fa.fa-hourglass-1{--fa:"\f251"}.fa.fa-hourglass-2{--fa:"\f252"}.fa.fa-hourglass-3{--fa:"\f253"}.fa.fa-hand-rock-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-rock-o{--fa:"\f255"}.fa.fa-hand-grab-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-grab-o{--fa:"\f255"}.fa.fa-hand-paper-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-paper-o{--fa:"\f256"}.fa.fa-hand-stop-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-stop-o{--fa:"\f256"}.fa.fa-hand-scissors-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-scissors-o{--fa:"\f257"}.fa.fa-hand-lizard-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-lizard-o{--fa:"\f258"}.fa.fa-hand-spock-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-spock-o{--fa:"\f259"}.fa.fa-hand-pointer-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-pointer-o{--fa:"\f25a"}.fa.fa-hand-peace-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-peace-o{--fa:"\f25b"}.fa.fa-registered{font-family:'font awesome 6 free';font-weight:400}.fa.fa-creative-commons{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-gg{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-gg-circle{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-odnoklassniki{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-odnoklassniki-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-odnoklassniki-square{--fa:"\f264"}.fa.fa-get-pocket{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-wikipedia-w{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-safari{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-chrome{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-firefox{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-opera{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-internet-explorer{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-television{--fa:"\f26c"}.fa.fa-contao{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-500px{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-amazon{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-calendar-plus-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-calendar-plus-o{--fa:"\f271"}.fa.fa-calendar-minus-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-calendar-minus-o{--fa:"\f272"}.fa.fa-calendar-times-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-calendar-times-o{--fa:"\f273"}.fa.fa-calendar-check-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-calendar-check-o{--fa:"\f274"}.fa.fa-map-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-map-o{--fa:"\f279"}.fa.fa-commenting{--fa:"\f4ad"}.fa.fa-commenting-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-commenting-o{--fa:"\f4ad"}.fa.fa-houzz{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-vimeo{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-vimeo{--fa:"\f27d"}.fa.fa-black-tie{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-fonticons{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-reddit-alien{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-edge{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-credit-card-alt{--fa:"\f09d"}.fa.fa-codiepie{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-modx{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-fort-awesome{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-usb{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-product-hunt{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-mixcloud{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-scribd{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-pause-circle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-pause-circle-o{--fa:"\f28b"}.fa.fa-stop-circle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-stop-circle-o{--fa:"\f28d"}.fa.fa-bluetooth{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-bluetooth-b{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-gitlab{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-wpbeginner{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-wpforms{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-envira{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-wheelchair-alt{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-wheelchair-alt{--fa:"\f368"}.fa.fa-question-circle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-question-circle-o{--fa:"\f059"}.fa.fa-volume-control-phone{--fa:"\f2a0"}.fa.fa-asl-interpreting{--fa:"\f2a3"}.fa.fa-deafness{--fa:"\f2a4"}.fa.fa-hard-of-hearing{--fa:"\f2a4"}.fa.fa-glide{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-glide-g{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-signing{--fa:"\f2a7"}.fa.fa-viadeo{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-viadeo-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-viadeo-square{--fa:"\f2aa"}.fa.fa-snapchat{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-snapchat-ghost{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-snapchat-ghost{--fa:"\f2ab"}.fa.fa-snapchat-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-snapchat-square{--fa:"\f2ad"}.fa.fa-pied-piper{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-first-order{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-yoast{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-themeisle{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-google-plus-official{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-google-plus-official{--fa:"\f2b3"}.fa.fa-google-plus-circle{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-google-plus-circle{--fa:"\f2b3"}.fa.fa-font-awesome{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-fa{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-fa{--fa:"\f2b4"}.fa.fa-handshake-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-handshake-o{--fa:"\f2b5"}.fa.fa-envelope-open-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-envelope-open-o{--fa:"\f2b6"}.fa.fa-linode{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-address-book-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-address-book-o{--fa:"\f2b9"}.fa.fa-vcard{--fa:"\f2bb"}.fa.fa-address-card-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-address-card-o{--fa:"\f2bb"}.fa.fa-vcard-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-vcard-o{--fa:"\f2bb"}.fa.fa-user-circle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-user-circle-o{--fa:"\f2bd"}.fa.fa-user-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-user-o{--fa:"\f007"}.fa.fa-id-badge{font-family:'font awesome 6 free';font-weight:400}.fa.fa-drivers-license{--fa:"\f2c2"}.fa.fa-id-card-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-id-card-o{--fa:"\f2c2"}.fa.fa-drivers-license-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-drivers-license-o{--fa:"\f2c2"}.fa.fa-quora{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-free-code-camp{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-telegram{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-thermometer-4{--fa:"\f2c7"}.fa.fa-thermometer{--fa:"\f2c7"}.fa.fa-thermometer-3{--fa:"\f2c8"}.fa.fa-thermometer-2{--fa:"\f2c9"}.fa.fa-thermometer-1{--fa:"\f2ca"}.fa.fa-thermometer-0{--fa:"\f2cb"}.fa.fa-bathtub{--fa:"\f2cd"}.fa.fa-s15{--fa:"\f2cd"}.fa.fa-window-maximize{font-family:'font awesome 6 free';font-weight:400}.fa.fa-window-restore{font-family:'font awesome 6 free';font-weight:400}.fa.fa-times-rectangle{--fa:"\f410"}.fa.fa-window-close-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-window-close-o{--fa:"\f410"}.fa.fa-times-rectangle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-times-rectangle-o{--fa:"\f410"}.fa.fa-bandcamp{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-grav{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-etsy{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-imdb{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-ravelry{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-eercast{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-eercast{--fa:"\f2da"}.fa.fa-snowflake-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-snowflake-o{--fa:"\f2dc"}.fa.fa-superpowers{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-wpexplorer{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-meetup{font-family:'font awesome 6 brands';font-weight:400}*,*:after,*:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#212121;background-color:#fafafa;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,Helvetica,游ゴシック,pingfang sc,STXihei,华文细黑,microsoft yahei,微软雅黑,SimSun,宋体,Heiti,黑体,sans-serif;font-size:1.8em;font-weight:400;line-height:1.8em}@media only screen and (max-width:768px){body{font-size:1.6em;line-height:1.6em}}iframe[src*=disqus]{color-scheme:light}a{font-weight:500;color:#1565c0;text-decoration:none;transition:all .25s ease-in}a:focus,a:hover{text-decoration:underline}p{margin:2rem 0}@media only screen and (max-width:768px){p{margin:1.5rem 0}}h1,h2,h3,h4,h5,h6{font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,Helvetica,游ゴシック,pingfang sc,STXihei,华文细黑,microsoft yahei,微软雅黑,SimSun,宋体,Heiti,黑体,sans-serif;font-weight:600;color:#000;margin:4rem 0 2.5rem}h1:hover .heading-link,h2:hover .heading-link,h3:hover .heading-link,h4:hover .heading-link,h5:hover .heading-link,h6:hover .heading-link{visibility:visible}h1 .heading-link,h2 .heading-link,h3 .heading-link,h4 .heading-link,h5 .heading-link,h6 .heading-link{color:#1565c0;font-weight:inherit;text-decoration:none;font-size:80%;visibility:hidden}h1 .title-link,h2 .title-link,h3 .title-link,h4 .title-link,h5 .title-link,h6 .title-link{color:inherit;font-weight:inherit;text-decoration:none}h1{font-size:3.2rem;line-height:3.6rem}@media only screen and (max-width:768px){h1{font-size:3rem;line-height:3.4rem}}h2{font-size:2.8rem;line-height:3.2rem}@media only screen and (max-width:768px){h2{font-size:2.6rem;line-height:3rem}}h3{font-size:2.4rem;line-height:2.8rem}@media only screen and (max-width:768px){h3{font-size:2.2rem;line-height:2.6rem}}h4{font-size:2.2rem;line-height:2.6rem}@media only screen and (max-width:768px){h4{font-size:2rem;line-height:2.4rem}}h5{font-size:2rem;line-height:2.4rem}@media only screen and (max-width:768px){h5{font-size:1.8rem;line-height:2.2rem}}h6{font-size:1.8rem;line-height:2.2rem}@media only screen and (max-width:768px){h6{font-size:1.6rem;line-height:2rem}}b,strong{font-weight:700}.highlight div,.highlight pre{margin:2rem 0;padding:1rem;border-radius:1rem;overflow-x:auto}pre{display:block;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1.6rem;font-weight:400;line-height:2.6rem;overflow-x:auto;margin:2rem 0;padding:1rem;border-radius:1rem}pre code{display:inline-block;background-color:inherit;color:inherit}code{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1.6rem;font-weight:400;border-radius:.6rem;padding:.3rem .6rem;background-color:#ccc;color:#212121}@media only screen and (max-width:768px){code{font-size:1.5rem}}blockquote{border-left:2px solid #e0e0e0;padding-left:2rem;line-height:2.2rem;font-weight:400;font-style:italic}*{-webkit-tap-highlight-color:transparent}th,td{padding:1.6rem}table{border-collapse:collapse}table td,table th{border:2px solid #000}table tr:first-child th{border-top:0}table tr:last-child td{border-bottom:0}table tr td:first-child,table tr th:first-child{border-left:0}table tr td:last-child,table tr th:last-child{border-right:0}img{max-width:100%}figure{text-align:center}.footnotes ol li p{margin:0}.preload-transitions *{-webkit-transition:none!important;-moz-transition:none!important;-ms-transition:none!important;-o-transition:none!important;transition:none!important}.wrapper{display:flex;flex-direction:column;min-height:100vh;width:100%}.container{margin:1rem auto;max-width:90rem;width:100%;padding-left:2rem;padding-right:2rem}.fab{font-weight:400}.fas{font-weight:700}.float-right{float:right}.float-left{float:left}.fab{font-weight:400}.fas{font-weight:900}.content{flex:1;display:flex;margin-top:1.6rem;margin-bottom:3.2rem}@media only screen and (max-width:768px){.content{margin-top:1rem;margin-bottom:1.6rem}}.content header{margin-top:6.4rem;margin-bottom:3.2rem}.content header h1{font-size:4.2rem;line-height:4.6rem;margin:0}@media only screen and (max-width:768px){.content header h1{font-size:4rem;line-height:4.4rem}}.content article a:where(.external-link):not(:has(img)):after{content:"\f08e";padding-left:.5em;font-size:.75em;display:inline}.content article details summary{cursor:pointer}.content article footer{margin-top:4rem}.content article footer .see-also{margin:3.2rem 0}.content article footer .see-also h3{margin:3.2rem 0}.content article p{text-align:justify;text-justify:auto;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.content .post .post-title{margin-bottom:.75em}.content .post .post-meta i{text-align:center;width:1.6rem;margin-left:0;margin-right:.5rem}.content .post .post-meta .date .posted-on{margin-left:0;margin-right:1.5rem}.content .post .post-meta .tags .tag{display:inline-block;padding:.3rem .6rem;background-color:#e0e0e0;border-radius:.6rem;line-height:1.5em}.content .post .post-meta .tags .tag a{color:#212121}.content .post .post-meta .tags .tag a:active{color:#212121}.content figure{margin:0;padding:0}.content figcaption p{text-align:center;font-style:italic;font-size:1.6rem;margin:0}.avatar img{width:20rem;height:auto;border-radius:50%}@media only screen and (max-width:768px){.avatar img{width:17rem}}.list ul{margin:3.2rem 0;list-style:none;padding:0}.list ul li{font-size:1.8rem}@media only screen and (max-width:768px){.list ul li{margin:1.6rem 0}}.list ul li .date{display:inline-block;flex:1;width:20rem;text-align:right;margin-right:3rem}@media only screen and (max-width:768px){.list ul li .date{display:block;text-align:left}}.list ul li .title{font-size:1.8rem;flex:2;color:#212121;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,Helvetica,游ゴシック,pingfang sc,STXihei,华文细黑,microsoft yahei,微软雅黑,SimSun,宋体,Heiti,黑体,sans-serif;font-weight:700}.list ul li .title:hover,.list ul li .title:focus{color:#1565c0}@media only screen and (min-width:768.1px){.list ul:not(.pagination) li{display:flex}}.centered{display:flex;align-items:center;justify-content:center}.centered .about{text-align:center}.centered .about h1{margin-top:2rem;margin-bottom:.5rem}.centered .about h2{margin-top:1rem;margin-bottom:.5rem;font-size:2.4rem}@media only screen and (max-width:768px){.centered .about h2{font-size:2rem}}.centered .about ul{list-style:none;margin:3rem 0 1rem;padding:0;cursor:pointer}.centered .about ul li{display:inline-block;position:relative}.centered .about ul li a{color:#212121;text-transform:uppercase;margin-left:1rem;margin-right:1rem;font-size:1.6rem}.centered .about ul li a:hover,.centered .about ul li a:focus{color:#1565c0}@media only screen and (max-width:768px){.centered .about ul li a{font-size:1.5rem}}.centered .error{text-align:center}.centered .error h1{margin-top:2rem;margin-bottom:.5rem;font-size:4.6rem}@media only screen and (max-width:768px){.centered .error h1{font-size:3.2rem}}.centered .error h2{margin-top:2rem;margin-bottom:3.2rem;font-size:3.2rem}@media only screen and (max-width:768px){.centered .error h2{font-size:2.8rem}}.notice{border-radius:.2rem;position:relative;margin:2rem 0;padding:0 .75rem;overflow:auto}.notice .notice-title{position:relative;font-weight:700;margin:0 -.75rem;padding:.2rem 3.5rem;border-bottom:1px solid #fafafa}.notice .notice-title i{position:absolute;top:50%;left:1.8rem;transform:translate(-50%,-50%)}.notice .notice-content{display:block;margin:2rem}.notice.note{background-color:#7e57c21a}.notice.note .notice-title{background-color:#673ab71a}.notice.note .notice-title i{color:#5e35b1}.notice.tip{background-color:#26a69a1a}.notice.tip .notice-title{background-color:#0096881a}.notice.tip .notice-title i{color:#00897b}.notice.example{background-color:#8d6e631a}.notice.example .notice-title{background-color:#7955481a}.notice.example .notice-title i{color:#6d4c41}.notice.question{background-color:#9ccc651a}.notice.question .notice-title{background-color:#8bc34a1a}.notice.question .notice-title i{color:#7cb342}.notice.info{background-color:#42a5f51a}.notice.info .notice-title{background-color:#2196f31a}.notice.info .notice-title i{color:#1e88e5}.notice.warning{background-color:#ffca281a}.notice.warning .notice-title{background-color:#ffc1071a}.notice.warning .notice-title i{color:#ffb300}.notice.error{background-color:#ef53501a}.notice.error .notice-title{background-color:#f443361a}.notice.error .notice-title i{color:#e53935}.navigation{height:6rem;width:100%}.navigation a,.navigation span{display:inline;font-size:1.7rem;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,Helvetica,游ゴシック,pingfang sc,STXihei,华文细黑,microsoft yahei,微软雅黑,SimSun,宋体,Heiti,黑体,sans-serif;font-weight:600;color:#212121}.navigation a:hover,.navigation a:focus{color:#1565c0}.navigation .navigation-title{letter-spacing:.1rem;text-transform:uppercase}.navigation .navigation-list{float:right;list-style:none;margin-bottom:0;margin-top:0}@media only screen and (max-width:768px){.navigation .navigation-list{position:relative;top:2rem;right:0;z-index:5;visibility:hidden;opacity:0;padding:0;max-height:0;width:100%;background-color:#fafafa;border-top:solid 2px #e0e0e0;border-bottom:solid 2px #e0e0e0;transition:opacity .25s,max-height .15s linear}}.navigation .navigation-list .navigation-item{float:left;margin:0;position:relative}@media only screen and (max-width:768px){.navigation .navigation-list .navigation-item{float:none!important;text-align:center}.navigation .navigation-list .navigation-item a,.navigation .navigation-list .navigation-item span{line-height:5rem}}.navigation .navigation-list .navigation-item a,.navigation .navigation-list .navigation-item span{margin-left:1rem;margin-right:1rem}@media only screen and (max-width:768px){.navigation .navigation-list .separator{display:none}}@media only screen and (max-width:768px){.navigation .navigation-list .menu-separator{border-top:2px solid #212121;margin:0 8rem}.navigation .navigation-list .menu-separator span{display:none}}.navigation #dark-mode-toggle{margin:1.7rem 0;font-size:2.4rem;line-height:inherit;bottom:2rem;left:2rem;z-index:100;position:fixed}.navigation #menu-toggle{display:none}@media only screen and (max-width:768px){.navigation #menu-toggle{display:initial;position:relative;visibility:hidden}.navigation #menu-toggle:checked+label>i{color:#e0e0e0}.navigation #menu-toggle:checked+label+ul{visibility:visible;opacity:1;max-height:100rem}.navigation #menu-toggle:focus-visible+label{outline-style:auto}}.navigation .menu-button{display:none}@media only screen and (max-width:768px){.navigation .menu-button{position:relative;display:block;font-size:2.4rem;font-weight:400}}.navigation .menu-button i:hover,.navigation .menu-button i:focus{color:#000}.navigation i{color:#212121;cursor:pointer}.navigation i:hover,.navigation i:focus{color:#1565c0}.pagination{display:flex;justify-content:center;margin-top:6rem;text-align:center;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,Helvetica,游ゴシック,pingfang sc,STXihei,华文细黑,microsoft yahei,微软雅黑,SimSun,宋体,Heiti,黑体,sans-serif}.pagination li{display:inline;text-align:center;font-weight:700;padding:0 5px;margin:0;text-align:center;width:2.2rem}.pagination li a{font-weight:300}.tabs{display:flex;flex-wrap:wrap;margin:2rem 0;position:relative}.tabs.tabs-left{justify-content:flex-start}.tabs.tabs-left label.tab-label{margin-right:.5rem}.tabs.tabs-left .tab-content{border-radius:0 4px 4px 4px}.tabs.tabs-right{justify-content:flex-end}.tabs.tabs-right label.tab-label{margin-left:.5rem}.tabs.tabs-right .tab-content{border-radius:4px 0 4px 4px}.tabs input.tab-input{display:none}.tabs label.tab-label{background-color:#e0e0e0;border-color:#ccc;border-radius:4px 4px 0 0;border-style:solid;border-bottom-style:hidden;border-width:1px;cursor:pointer;display:inline-block;order:1;padding:.3rem .6rem;position:relative;top:1px;user-select:none}.tabs input.tab-input:checked+label.tab-label{background-color:#fafafa}.tabs .tab-content{background-color:#fafafa;border-color:#ccc;border-style:solid;border-width:1px;display:none;order:2;padding:1rem;width:100%}.tabs.tabs-code .tab-content{padding:.5rem}.tabs.tabs-code .tab-content pre{margin:0}.taxonomy li{display:inline-block;margin:.9rem}.taxonomy .taxonomy-element{display:block;padding:.3rem .9rem;background-color:#e0e0e0;border-radius:.6rem}.taxonomy .taxonomy-element a{color:#212121}.taxonomy .taxonomy-element a:active{color:#212121}.footer{width:100%;text-align:center;font-size:1.6rem;line-height:2rem;margin-bottom:1rem}@media only screen and (max-width:768px){.footer{font-size:1.5rem}}.footer a{color:#1565c0}.float-container{bottom:2rem;right:2rem;z-index:100;position:fixed;font-size:1.6em}.float-container a{position:relative;display:inline-block;width:3rem;height:3rem;font-size:2rem;color:#000;background-color:#e0e0e0;border-radius:.2rem;opacity:.5;transition:all .25s ease-in}.float-container a:hover,.float-container a:focus{color:#1565c0;opacity:1}@media only screen and (max-width:768px){.float-container a:hover,.float-container a:focus{color:#000;opacity:.5}}.float-container a i{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.mastodon-wrapper{display:flex;gap:3rem;flex-direction:row}.comment-level{max-width:3rem;min-width:3rem}.reply-original{display:none}.mastodon-comment{background-color:var(--body-background);border-radius:var(--card-border-radius);padding:var(--card-padding);margin-bottom:1rem;display:flex;gap:1rem;flex-direction:column;flex-grow:2}.mastodon-comment .comment{display:flex;flex-direction:row;gap:1rem;flex-wrap:true}.mastodon-comment .comment-avatar img{width:6rem}.mastodon-comment .content{flex-grow:2}.mastodon-comment .comment-author{display:flex;flex-direction:column}.mastodon-comment .comment-author-name{font-weight:700}.mastodon-comment .comment-author-name a{display:flex;align-items:center}.mastodon-comment .comment-author-date{margin-left:auto}.mastodon-comment .disabled{color:var(--accent-color)}.mastodon-comment-content p:first-child{margin-top:0}.mastodon{--dlg-bg:#282c37;--dlg-w:600px;--dlg-color:#9baec8;--dlg-button-p:0.75em 2em;--dlg-outline-c:#00D9F5}.bg{background-color:#fff}.chroma{background-color:#fff}.chroma .err{color:#a61717;background-color:#e3d2d2}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#ffc}.chroma .lnt{white-space:pre;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{white-space:pre;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .line{display:flex}.chroma .k{color:#000;font-weight:700}.chroma .kc{color:#000;font-weight:700}.chroma .kd{color:#000;font-weight:700}.chroma .kn{color:#000;font-weight:700}.chroma .kp{color:#000;font-weight:700}.chroma .kr{color:#000;font-weight:700}.chroma .kt{color:#458;font-weight:700}.chroma .na{color:teal}.chroma .nb{color:#0086b3}.chroma .bp{color:#999}.chroma .nc{color:#458;font-weight:700}.chroma .no{color:teal}.chroma .nd{color:#3c5d5d;font-weight:700}.chroma .ni{color:purple}.chroma .ne{color:#900;font-weight:700}.chroma .nf{color:#900;font-weight:700}.chroma .nl{color:#900;font-weight:700}.chroma .nn{color:#555}.chroma .nt{color:navy}.chroma .nv{color:teal}.chroma .vc{color:teal}.chroma .vg{color:teal}.chroma .vi{color:teal}.chroma .s{color:#d14}.chroma .sa{color:#d14}.chroma .sb{color:#d14}.chroma .sc{color:#d14}.chroma .dl{color:#d14}.chroma .sd{color:#d14}.chroma .s2{color:#d14}.chroma .se{color:#d14}.chroma .sh{color:#d14}.chroma .si{color:#d14}.chroma .sx{color:#d14}.chroma .sr{color:#009926}.chroma .s1{color:#d14}.chroma .ss{color:#990073}.chroma .m{color:#099}.chroma .mb{color:#099}.chroma .mf{color:#099}.chroma .mh{color:#099}.chroma .mi{color:#099}.chroma .il{color:#099}.chroma .mo{color:#099}.chroma .o{color:#000;font-weight:700}.chroma .ow{color:#000;font-weight:700}.chroma .c{color:#998;font-style:italic}.chroma .ch{color:#998;font-style:italic}.chroma .cm{color:#998;font-style:italic}.chroma .c1{color:#998;font-style:italic}.chroma .cs{color:#999;font-weight:700;font-style:italic}.chroma .cp{color:#999;font-weight:700;font-style:italic}.chroma .cpf{color:#999;font-weight:700;font-style:italic}.chroma .gd{color:#000;background-color:#fdd}.chroma .ge{color:#000;font-style:italic}.chroma .gr{color:#a00}.chroma .gh{color:#999}.chroma .gi{color:#000;background-color:#dfd}.chroma .go{color:#888}.chroma .gp{color:#555}.chroma .gs{font-weight:700}.chroma .gu{color:#aaa}.chroma .gt{color:#a00}.chroma .gl{text-decoration:underline}.chroma .w{color:#bbb} \ No newline at end of file +* Copyright 2024 Fonticons, Inc.*/.fa.fa-glass{--fa:"\f000"}.fa.fa-envelope-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-envelope-o{--fa:"\f0e0"}.fa.fa-star-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-star-o{--fa:"\f005"}.fa.fa-remove{--fa:"\f00d"}.fa.fa-close{--fa:"\f00d"}.fa.fa-gear{--fa:"\f013"}.fa.fa-trash-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-trash-o{--fa:"\f2ed"}.fa.fa-home{--fa:"\f015"}.fa.fa-file-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-o{--fa:"\f15b"}.fa.fa-clock-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-clock-o{--fa:"\f017"}.fa.fa-arrow-circle-o-down{font-family:'font awesome 6 free';font-weight:400}.fa.fa-arrow-circle-o-down{--fa:"\f358"}.fa.fa-arrow-circle-o-up{font-family:'font awesome 6 free';font-weight:400}.fa.fa-arrow-circle-o-up{--fa:"\f35b"}.fa.fa-play-circle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-play-circle-o{--fa:"\f144"}.fa.fa-repeat{--fa:"\f01e"}.fa.fa-rotate-right{--fa:"\f01e"}.fa.fa-refresh{--fa:"\f021"}.fa.fa-list-alt{font-family:'font awesome 6 free';font-weight:400}.fa.fa-list-alt{--fa:"\f022"}.fa.fa-dedent{--fa:"\f03b"}.fa.fa-video-camera{--fa:"\f03d"}.fa.fa-picture-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-picture-o{--fa:"\f03e"}.fa.fa-photo{font-family:'font awesome 6 free';font-weight:400}.fa.fa-photo{--fa:"\f03e"}.fa.fa-image{font-family:'font awesome 6 free';font-weight:400}.fa.fa-image{--fa:"\f03e"}.fa.fa-map-marker{--fa:"\f3c5"}.fa.fa-pencil-square-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-pencil-square-o{--fa:"\f044"}.fa.fa-edit{font-family:'font awesome 6 free';font-weight:400}.fa.fa-edit{--fa:"\f044"}.fa.fa-share-square-o{--fa:"\f14d"}.fa.fa-check-square-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-check-square-o{--fa:"\f14a"}.fa.fa-arrows{--fa:"\f0b2"}.fa.fa-times-circle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-times-circle-o{--fa:"\f057"}.fa.fa-check-circle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-check-circle-o{--fa:"\f058"}.fa.fa-mail-forward{--fa:"\f064"}.fa.fa-expand{--fa:"\f424"}.fa.fa-compress{--fa:"\f422"}.fa.fa-eye{font-family:'font awesome 6 free';font-weight:400}.fa.fa-eye-slash{font-family:'font awesome 6 free';font-weight:400}.fa.fa-warning{--fa:"\f071"}.fa.fa-calendar{--fa:"\f073"}.fa.fa-arrows-v{--fa:"\f338"}.fa.fa-arrows-h{--fa:"\f337"}.fa.fa-bar-chart{--fa:"\e0e3"}.fa.fa-bar-chart-o{--fa:"\e0e3"}.fa.fa-twitter-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-twitter-square{--fa:"\f081"}.fa.fa-facebook-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-facebook-square{--fa:"\f082"}.fa.fa-gears{--fa:"\f085"}.fa.fa-thumbs-o-up{font-family:'font awesome 6 free';font-weight:400}.fa.fa-thumbs-o-up{--fa:"\f164"}.fa.fa-thumbs-o-down{font-family:'font awesome 6 free';font-weight:400}.fa.fa-thumbs-o-down{--fa:"\f165"}.fa.fa-heart-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-heart-o{--fa:"\f004"}.fa.fa-sign-out{--fa:"\f2f5"}.fa.fa-linkedin-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-linkedin-square{--fa:"\f08c"}.fa.fa-thumb-tack{--fa:"\f08d"}.fa.fa-external-link{--fa:"\f35d"}.fa.fa-sign-in{--fa:"\f2f6"}.fa.fa-github-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-github-square{--fa:"\f092"}.fa.fa-lemon-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-lemon-o{--fa:"\f094"}.fa.fa-square-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-square-o{--fa:"\f0c8"}.fa.fa-bookmark-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-bookmark-o{--fa:"\f02e"}.fa.fa-twitter{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-facebook{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-facebook{--fa:"\f39e"}.fa.fa-facebook-f{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-facebook-f{--fa:"\f39e"}.fa.fa-github{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-credit-card{font-family:'font awesome 6 free';font-weight:400}.fa.fa-feed{--fa:"\f09e"}.fa.fa-hdd-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hdd-o{--fa:"\f0a0"}.fa.fa-hand-o-right{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-o-right{--fa:"\f0a4"}.fa.fa-hand-o-left{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-o-left{--fa:"\f0a5"}.fa.fa-hand-o-up{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-o-up{--fa:"\f0a6"}.fa.fa-hand-o-down{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-o-down{--fa:"\f0a7"}.fa.fa-globe{--fa:"\f57d"}.fa.fa-tasks{--fa:"\f828"}.fa.fa-arrows-alt{--fa:"\f31e"}.fa.fa-group{--fa:"\f0c0"}.fa.fa-chain{--fa:"\f0c1"}.fa.fa-cut{--fa:"\f0c4"}.fa.fa-files-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-files-o{--fa:"\f0c5"}.fa.fa-floppy-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-floppy-o{--fa:"\f0c7"}.fa.fa-save{font-family:'font awesome 6 free';font-weight:400}.fa.fa-save{--fa:"\f0c7"}.fa.fa-navicon{--fa:"\f0c9"}.fa.fa-reorder{--fa:"\f0c9"}.fa.fa-magic{--fa:"\e2ca"}.fa.fa-pinterest{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-pinterest-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-pinterest-square{--fa:"\f0d3"}.fa.fa-google-plus-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-google-plus-square{--fa:"\f0d4"}.fa.fa-google-plus{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-google-plus{--fa:"\f0d5"}.fa.fa-money{--fa:"\f3d1"}.fa.fa-unsorted{--fa:"\f0dc"}.fa.fa-sort-desc{--fa:"\f0dd"}.fa.fa-sort-asc{--fa:"\f0de"}.fa.fa-linkedin{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-linkedin{--fa:"\f0e1"}.fa.fa-rotate-left{--fa:"\f0e2"}.fa.fa-legal{--fa:"\f0e3"}.fa.fa-tachometer{--fa:"\f625"}.fa.fa-dashboard{--fa:"\f625"}.fa.fa-comment-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-comment-o{--fa:"\f075"}.fa.fa-comments-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-comments-o{--fa:"\f086"}.fa.fa-flash{--fa:"\f0e7"}.fa.fa-clipboard{--fa:"\f0ea"}.fa.fa-lightbulb-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-lightbulb-o{--fa:"\f0eb"}.fa.fa-exchange{--fa:"\f362"}.fa.fa-cloud-download{--fa:"\f0ed"}.fa.fa-cloud-upload{--fa:"\f0ee"}.fa.fa-bell-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-bell-o{--fa:"\f0f3"}.fa.fa-cutlery{--fa:"\f2e7"}.fa.fa-file-text-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-text-o{--fa:"\f15c"}.fa.fa-building-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-building-o{--fa:"\f1ad"}.fa.fa-hospital-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hospital-o{--fa:"\f0f8"}.fa.fa-tablet{--fa:"\f3fa"}.fa.fa-mobile{--fa:"\f3cd"}.fa.fa-mobile-phone{--fa:"\f3cd"}.fa.fa-circle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-circle-o{--fa:"\f111"}.fa.fa-mail-reply{--fa:"\f3e5"}.fa.fa-github-alt{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-folder-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-folder-o{--fa:"\f07b"}.fa.fa-folder-open-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-folder-open-o{--fa:"\f07c"}.fa.fa-smile-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-smile-o{--fa:"\f118"}.fa.fa-frown-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-frown-o{--fa:"\f119"}.fa.fa-meh-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-meh-o{--fa:"\f11a"}.fa.fa-keyboard-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-keyboard-o{--fa:"\f11c"}.fa.fa-flag-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-flag-o{--fa:"\f024"}.fa.fa-mail-reply-all{--fa:"\f122"}.fa.fa-star-half-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-star-half-o{--fa:"\f5c0"}.fa.fa-star-half-empty{font-family:'font awesome 6 free';font-weight:400}.fa.fa-star-half-empty{--fa:"\f5c0"}.fa.fa-star-half-full{font-family:'font awesome 6 free';font-weight:400}.fa.fa-star-half-full{--fa:"\f5c0"}.fa.fa-code-fork{--fa:"\f126"}.fa.fa-chain-broken{--fa:"\f127"}.fa.fa-unlink{--fa:"\f127"}.fa.fa-calendar-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-calendar-o{--fa:"\f133"}.fa.fa-maxcdn{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-html5{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-css3{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-unlock-alt{--fa:"\f09c"}.fa.fa-minus-square-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-minus-square-o{--fa:"\f146"}.fa.fa-level-up{--fa:"\f3bf"}.fa.fa-level-down{--fa:"\f3be"}.fa.fa-pencil-square{--fa:"\f14b"}.fa.fa-external-link-square{--fa:"\f360"}.fa.fa-compass{font-family:'font awesome 6 free';font-weight:400}.fa.fa-caret-square-o-down{font-family:'font awesome 6 free';font-weight:400}.fa.fa-caret-square-o-down{--fa:"\f150"}.fa.fa-toggle-down{font-family:'font awesome 6 free';font-weight:400}.fa.fa-toggle-down{--fa:"\f150"}.fa.fa-caret-square-o-up{font-family:'font awesome 6 free';font-weight:400}.fa.fa-caret-square-o-up{--fa:"\f151"}.fa.fa-toggle-up{font-family:'font awesome 6 free';font-weight:400}.fa.fa-toggle-up{--fa:"\f151"}.fa.fa-caret-square-o-right{font-family:'font awesome 6 free';font-weight:400}.fa.fa-caret-square-o-right{--fa:"\f152"}.fa.fa-toggle-right{font-family:'font awesome 6 free';font-weight:400}.fa.fa-toggle-right{--fa:"\f152"}.fa.fa-eur{--fa:"\f153"}.fa.fa-euro{--fa:"\f153"}.fa.fa-gbp{--fa:"\f154"}.fa.fa-usd{--fa:"\24"}.fa.fa-dollar{--fa:"\24"}.fa.fa-inr{--fa:"\e1bc"}.fa.fa-rupee{--fa:"\e1bc"}.fa.fa-jpy{--fa:"\f157"}.fa.fa-cny{--fa:"\f157"}.fa.fa-rmb{--fa:"\f157"}.fa.fa-yen{--fa:"\f157"}.fa.fa-rub{--fa:"\f158"}.fa.fa-ruble{--fa:"\f158"}.fa.fa-rouble{--fa:"\f158"}.fa.fa-krw{--fa:"\f159"}.fa.fa-won{--fa:"\f159"}.fa.fa-btc{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-bitcoin{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-bitcoin{--fa:"\f15a"}.fa.fa-file-text{--fa:"\f15c"}.fa.fa-sort-alpha-asc{--fa:"\f15d"}.fa.fa-sort-alpha-desc{--fa:"\f881"}.fa.fa-sort-amount-asc{--fa:"\f884"}.fa.fa-sort-amount-desc{--fa:"\f160"}.fa.fa-sort-numeric-asc{--fa:"\f162"}.fa.fa-sort-numeric-desc{--fa:"\f886"}.fa.fa-youtube-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-youtube-square{--fa:"\f431"}.fa.fa-youtube{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-xing{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-xing-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-xing-square{--fa:"\f169"}.fa.fa-youtube-play{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-youtube-play{--fa:"\f167"}.fa.fa-dropbox{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-stack-overflow{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-instagram{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-flickr{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-adn{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-bitbucket{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-bitbucket-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-bitbucket-square{--fa:"\f171"}.fa.fa-tumblr{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-tumblr-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-tumblr-square{--fa:"\f174"}.fa.fa-long-arrow-down{--fa:"\f309"}.fa.fa-long-arrow-up{--fa:"\f30c"}.fa.fa-long-arrow-left{--fa:"\f30a"}.fa.fa-long-arrow-right{--fa:"\f30b"}.fa.fa-apple{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-windows{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-android{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-linux{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-dribbble{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-skype{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-foursquare{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-trello{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-gratipay{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-gittip{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-gittip{--fa:"\f184"}.fa.fa-sun-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-sun-o{--fa:"\f185"}.fa.fa-moon-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-moon-o{--fa:"\f186"}.fa.fa-vk{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-weibo{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-renren{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-pagelines{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-stack-exchange{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-arrow-circle-o-right{font-family:'font awesome 6 free';font-weight:400}.fa.fa-arrow-circle-o-right{--fa:"\f35a"}.fa.fa-arrow-circle-o-left{font-family:'font awesome 6 free';font-weight:400}.fa.fa-arrow-circle-o-left{--fa:"\f359"}.fa.fa-caret-square-o-left{font-family:'font awesome 6 free';font-weight:400}.fa.fa-caret-square-o-left{--fa:"\f191"}.fa.fa-toggle-left{font-family:'font awesome 6 free';font-weight:400}.fa.fa-toggle-left{--fa:"\f191"}.fa.fa-dot-circle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-dot-circle-o{--fa:"\f192"}.fa.fa-vimeo-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-vimeo-square{--fa:"\f194"}.fa.fa-try{--fa:"\e2bb"}.fa.fa-turkish-lira{--fa:"\e2bb"}.fa.fa-plus-square-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-plus-square-o{--fa:"\f0fe"}.fa.fa-slack{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-wordpress{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-openid{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-institution{--fa:"\f19c"}.fa.fa-bank{--fa:"\f19c"}.fa.fa-mortar-board{--fa:"\f19d"}.fa.fa-yahoo{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-google{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-reddit{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-reddit-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-reddit-square{--fa:"\f1a2"}.fa.fa-stumbleupon-circle{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-stumbleupon{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-delicious{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-digg{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-pied-piper-pp{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-pied-piper-alt{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-drupal{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-joomla{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-behance{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-behance-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-behance-square{--fa:"\f1b5"}.fa.fa-steam{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-steam-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-steam-square{--fa:"\f1b7"}.fa.fa-automobile{--fa:"\f1b9"}.fa.fa-cab{--fa:"\f1ba"}.fa.fa-spotify{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-deviantart{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-soundcloud{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-file-pdf-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-pdf-o{--fa:"\f1c1"}.fa.fa-file-word-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-word-o{--fa:"\f1c2"}.fa.fa-file-excel-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-excel-o{--fa:"\f1c3"}.fa.fa-file-powerpoint-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-powerpoint-o{--fa:"\f1c4"}.fa.fa-file-image-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-image-o{--fa:"\f1c5"}.fa.fa-file-photo-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-photo-o{--fa:"\f1c5"}.fa.fa-file-picture-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-picture-o{--fa:"\f1c5"}.fa.fa-file-archive-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-archive-o{--fa:"\f1c6"}.fa.fa-file-zip-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-zip-o{--fa:"\f1c6"}.fa.fa-file-audio-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-audio-o{--fa:"\f1c7"}.fa.fa-file-sound-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-sound-o{--fa:"\f1c7"}.fa.fa-file-video-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-video-o{--fa:"\f1c8"}.fa.fa-file-movie-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-movie-o{--fa:"\f1c8"}.fa.fa-file-code-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-file-code-o{--fa:"\f1c9"}.fa.fa-vine{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-codepen{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-jsfiddle{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-life-bouy{--fa:"\f1cd"}.fa.fa-life-buoy{--fa:"\f1cd"}.fa.fa-life-saver{--fa:"\f1cd"}.fa.fa-support{--fa:"\f1cd"}.fa.fa-circle-o-notch{--fa:"\f1ce"}.fa.fa-rebel{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-ra{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-ra{--fa:"\f1d0"}.fa.fa-resistance{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-resistance{--fa:"\f1d0"}.fa.fa-empire{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-ge{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-ge{--fa:"\f1d1"}.fa.fa-git-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-git-square{--fa:"\f1d2"}.fa.fa-git{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-hacker-news{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-y-combinator-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-y-combinator-square{--fa:"\f1d4"}.fa.fa-yc-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-yc-square{--fa:"\f1d4"}.fa.fa-tencent-weibo{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-qq{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-weixin{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-wechat{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-wechat{--fa:"\f1d7"}.fa.fa-send{--fa:"\f1d8"}.fa.fa-paper-plane-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-paper-plane-o{--fa:"\f1d8"}.fa.fa-send-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-send-o{--fa:"\f1d8"}.fa.fa-circle-thin{font-family:'font awesome 6 free';font-weight:400}.fa.fa-circle-thin{--fa:"\f111"}.fa.fa-header{--fa:"\f1dc"}.fa.fa-futbol-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-futbol-o{--fa:"\f1e3"}.fa.fa-soccer-ball-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-soccer-ball-o{--fa:"\f1e3"}.fa.fa-slideshare{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-twitch{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-yelp{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-newspaper-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-newspaper-o{--fa:"\f1ea"}.fa.fa-paypal{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-google-wallet{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-cc-visa{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-cc-mastercard{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-cc-discover{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-cc-amex{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-cc-paypal{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-cc-stripe{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-bell-slash-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-bell-slash-o{--fa:"\f1f6"}.fa.fa-trash{--fa:"\f2ed"}.fa.fa-copyright{font-family:'font awesome 6 free';font-weight:400}.fa.fa-eyedropper{--fa:"\f1fb"}.fa.fa-area-chart{--fa:"\f1fe"}.fa.fa-pie-chart{--fa:"\f200"}.fa.fa-line-chart{--fa:"\f201"}.fa.fa-lastfm{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-lastfm-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-lastfm-square{--fa:"\f203"}.fa.fa-ioxhost{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-angellist{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-cc{font-family:'font awesome 6 free';font-weight:400}.fa.fa-cc{--fa:"\f20a"}.fa.fa-ils{--fa:"\f20b"}.fa.fa-shekel{--fa:"\f20b"}.fa.fa-sheqel{--fa:"\f20b"}.fa.fa-buysellads{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-connectdevelop{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-dashcube{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-forumbee{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-leanpub{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-sellsy{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-shirtsinbulk{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-simplybuilt{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-skyatlas{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-diamond{font-family:'font awesome 6 free';font-weight:400}.fa.fa-diamond{--fa:"\f3a5"}.fa.fa-transgender{--fa:"\f224"}.fa.fa-intersex{--fa:"\f224"}.fa.fa-transgender-alt{--fa:"\f225"}.fa.fa-facebook-official{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-facebook-official{--fa:"\f09a"}.fa.fa-pinterest-p{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-whatsapp{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-hotel{--fa:"\f236"}.fa.fa-viacoin{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-medium{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-y-combinator{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-yc{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-yc{--fa:"\f23b"}.fa.fa-optin-monster{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-opencart{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-expeditedssl{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-battery-4{--fa:"\f240"}.fa.fa-battery{--fa:"\f240"}.fa.fa-battery-3{--fa:"\f241"}.fa.fa-battery-2{--fa:"\f242"}.fa.fa-battery-1{--fa:"\f243"}.fa.fa-battery-0{--fa:"\f244"}.fa.fa-object-group{font-family:'font awesome 6 free';font-weight:400}.fa.fa-object-ungroup{font-family:'font awesome 6 free';font-weight:400}.fa.fa-sticky-note-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-sticky-note-o{--fa:"\f249"}.fa.fa-cc-jcb{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-cc-diners-club{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-clone{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hourglass-o{--fa:"\f254"}.fa.fa-hourglass-1{--fa:"\f251"}.fa.fa-hourglass-2{--fa:"\f252"}.fa.fa-hourglass-3{--fa:"\f253"}.fa.fa-hand-rock-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-rock-o{--fa:"\f255"}.fa.fa-hand-grab-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-grab-o{--fa:"\f255"}.fa.fa-hand-paper-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-paper-o{--fa:"\f256"}.fa.fa-hand-stop-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-stop-o{--fa:"\f256"}.fa.fa-hand-scissors-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-scissors-o{--fa:"\f257"}.fa.fa-hand-lizard-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-lizard-o{--fa:"\f258"}.fa.fa-hand-spock-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-spock-o{--fa:"\f259"}.fa.fa-hand-pointer-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-pointer-o{--fa:"\f25a"}.fa.fa-hand-peace-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-hand-peace-o{--fa:"\f25b"}.fa.fa-registered{font-family:'font awesome 6 free';font-weight:400}.fa.fa-creative-commons{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-gg{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-gg-circle{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-odnoklassniki{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-odnoklassniki-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-odnoklassniki-square{--fa:"\f264"}.fa.fa-get-pocket{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-wikipedia-w{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-safari{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-chrome{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-firefox{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-opera{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-internet-explorer{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-television{--fa:"\f26c"}.fa.fa-contao{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-500px{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-amazon{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-calendar-plus-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-calendar-plus-o{--fa:"\f271"}.fa.fa-calendar-minus-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-calendar-minus-o{--fa:"\f272"}.fa.fa-calendar-times-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-calendar-times-o{--fa:"\f273"}.fa.fa-calendar-check-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-calendar-check-o{--fa:"\f274"}.fa.fa-map-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-map-o{--fa:"\f279"}.fa.fa-commenting{--fa:"\f4ad"}.fa.fa-commenting-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-commenting-o{--fa:"\f4ad"}.fa.fa-houzz{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-vimeo{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-vimeo{--fa:"\f27d"}.fa.fa-black-tie{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-fonticons{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-reddit-alien{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-edge{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-credit-card-alt{--fa:"\f09d"}.fa.fa-codiepie{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-modx{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-fort-awesome{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-usb{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-product-hunt{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-mixcloud{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-scribd{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-pause-circle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-pause-circle-o{--fa:"\f28b"}.fa.fa-stop-circle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-stop-circle-o{--fa:"\f28d"}.fa.fa-bluetooth{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-bluetooth-b{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-gitlab{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-wpbeginner{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-wpforms{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-envira{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-wheelchair-alt{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-wheelchair-alt{--fa:"\f368"}.fa.fa-question-circle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-question-circle-o{--fa:"\f059"}.fa.fa-volume-control-phone{--fa:"\f2a0"}.fa.fa-asl-interpreting{--fa:"\f2a3"}.fa.fa-deafness{--fa:"\f2a4"}.fa.fa-hard-of-hearing{--fa:"\f2a4"}.fa.fa-glide{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-glide-g{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-signing{--fa:"\f2a7"}.fa.fa-viadeo{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-viadeo-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-viadeo-square{--fa:"\f2aa"}.fa.fa-snapchat{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-snapchat-ghost{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-snapchat-ghost{--fa:"\f2ab"}.fa.fa-snapchat-square{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-snapchat-square{--fa:"\f2ad"}.fa.fa-pied-piper{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-first-order{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-yoast{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-themeisle{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-google-plus-official{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-google-plus-official{--fa:"\f2b3"}.fa.fa-google-plus-circle{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-google-plus-circle{--fa:"\f2b3"}.fa.fa-font-awesome{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-fa{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-fa{--fa:"\f2b4"}.fa.fa-handshake-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-handshake-o{--fa:"\f2b5"}.fa.fa-envelope-open-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-envelope-open-o{--fa:"\f2b6"}.fa.fa-linode{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-address-book-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-address-book-o{--fa:"\f2b9"}.fa.fa-vcard{--fa:"\f2bb"}.fa.fa-address-card-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-address-card-o{--fa:"\f2bb"}.fa.fa-vcard-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-vcard-o{--fa:"\f2bb"}.fa.fa-user-circle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-user-circle-o{--fa:"\f2bd"}.fa.fa-user-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-user-o{--fa:"\f007"}.fa.fa-id-badge{font-family:'font awesome 6 free';font-weight:400}.fa.fa-drivers-license{--fa:"\f2c2"}.fa.fa-id-card-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-id-card-o{--fa:"\f2c2"}.fa.fa-drivers-license-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-drivers-license-o{--fa:"\f2c2"}.fa.fa-quora{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-free-code-camp{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-telegram{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-thermometer-4{--fa:"\f2c7"}.fa.fa-thermometer{--fa:"\f2c7"}.fa.fa-thermometer-3{--fa:"\f2c8"}.fa.fa-thermometer-2{--fa:"\f2c9"}.fa.fa-thermometer-1{--fa:"\f2ca"}.fa.fa-thermometer-0{--fa:"\f2cb"}.fa.fa-bathtub{--fa:"\f2cd"}.fa.fa-s15{--fa:"\f2cd"}.fa.fa-window-maximize{font-family:'font awesome 6 free';font-weight:400}.fa.fa-window-restore{font-family:'font awesome 6 free';font-weight:400}.fa.fa-times-rectangle{--fa:"\f410"}.fa.fa-window-close-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-window-close-o{--fa:"\f410"}.fa.fa-times-rectangle-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-times-rectangle-o{--fa:"\f410"}.fa.fa-bandcamp{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-grav{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-etsy{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-imdb{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-ravelry{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-eercast{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-eercast{--fa:"\f2da"}.fa.fa-snowflake-o{font-family:'font awesome 6 free';font-weight:400}.fa.fa-snowflake-o{--fa:"\f2dc"}.fa.fa-superpowers{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-wpexplorer{font-family:'font awesome 6 brands';font-weight:400}.fa.fa-meetup{font-family:'font awesome 6 brands';font-weight:400}*,*:after,*:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#212121;background-color:#fafafa;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,Helvetica,游ゴシック,pingfang sc,STXihei,华文细黑,microsoft yahei,微软雅黑,SimSun,宋体,Heiti,黑体,sans-serif;font-size:1.8em;font-weight:400;line-height:1.8em}@media only screen and (max-width:768px){body{font-size:1.6em;line-height:1.6em}}iframe[src*=disqus]{color-scheme:light}a{font-weight:500;color:#1565c0;text-decoration:none;transition:all .25s ease-in}a:focus,a:hover{text-decoration:underline}p{margin:2rem 0}@media only screen and (max-width:768px){p{margin:1.5rem 0}}h1,h2,h3,h4,h5,h6{font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,Helvetica,游ゴシック,pingfang sc,STXihei,华文细黑,microsoft yahei,微软雅黑,SimSun,宋体,Heiti,黑体,sans-serif;font-weight:600;color:#000;margin:4rem 0 2.5rem}h1:hover .heading-link,h2:hover .heading-link,h3:hover .heading-link,h4:hover .heading-link,h5:hover .heading-link,h6:hover .heading-link{visibility:visible}h1 .heading-link,h2 .heading-link,h3 .heading-link,h4 .heading-link,h5 .heading-link,h6 .heading-link{color:#1565c0;font-weight:inherit;text-decoration:none;font-size:80%;visibility:hidden}h1 .title-link,h2 .title-link,h3 .title-link,h4 .title-link,h5 .title-link,h6 .title-link{color:inherit;font-weight:inherit;text-decoration:none}h1{font-size:3.2rem;line-height:3.6rem}@media only screen and (max-width:768px){h1{font-size:3rem;line-height:3.4rem}}h2{font-size:2.8rem;line-height:3.2rem}@media only screen and (max-width:768px){h2{font-size:2.6rem;line-height:3rem}}h3{font-size:2.4rem;line-height:2.8rem}@media only screen and (max-width:768px){h3{font-size:2.2rem;line-height:2.6rem}}h4{font-size:2.2rem;line-height:2.6rem}@media only screen and (max-width:768px){h4{font-size:2rem;line-height:2.4rem}}h5{font-size:2rem;line-height:2.4rem}@media only screen and (max-width:768px){h5{font-size:1.8rem;line-height:2.2rem}}h6{font-size:1.8rem;line-height:2.2rem}@media only screen and (max-width:768px){h6{font-size:1.6rem;line-height:2rem}}b,strong{font-weight:700}.highlight div,.highlight pre{margin:2rem 0;padding:1rem;border-radius:1rem;overflow-x:auto}pre{display:block;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1.6rem;font-weight:400;line-height:2.6rem;overflow-x:auto;margin:2rem 0;padding:1rem;border-radius:1rem}pre code{display:inline-block;background-color:inherit;color:inherit}code{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1.6rem;font-weight:400;border-radius:.6rem;padding:.3rem .6rem;background-color:#ccc;color:#212121}@media only screen and (max-width:768px){code{font-size:1.5rem}}blockquote{border-left:2px solid #e0e0e0;padding-left:2rem;line-height:2.2rem;font-weight:400;font-style:italic}*{-webkit-tap-highlight-color:transparent}th,td{padding:1.6rem}table{border-collapse:collapse}table td,table th{border:2px solid #000}table tr:first-child th{border-top:0}table tr:last-child td{border-bottom:0}table tr td:first-child,table tr th:first-child{border-left:0}table tr td:last-child,table tr th:last-child{border-right:0}img{max-width:100%}figure{text-align:center}.footnotes ol li p{margin:0}.preload-transitions *{-webkit-transition:none!important;-moz-transition:none!important;-ms-transition:none!important;-o-transition:none!important;transition:none!important}.wrapper{display:flex;flex-direction:column;min-height:100vh;width:100%}.container{margin:1rem auto;max-width:90rem;width:100%;padding-left:2rem;padding-right:2rem}.fab{font-weight:400}.fas{font-weight:700}.float-right{float:right}.float-left{float:left}.fab{font-weight:400}.fas{font-weight:900}.content{flex:1;display:flex;margin-top:1.6rem;margin-bottom:3.2rem}@media only screen and (max-width:768px){.content{margin-top:1rem;margin-bottom:1.6rem}}.content header{margin-top:6.4rem;margin-bottom:3.2rem}.content header h1{font-size:4.2rem;line-height:4.6rem;margin:0}@media only screen and (max-width:768px){.content header h1{font-size:4rem;line-height:4.4rem}}.content article a:where(.external-link):not(:has(img)):after{content:"\f08e";padding-left:.5em;font-size:.75em;display:inline}.content article details summary{cursor:pointer}.content article footer{margin-top:4rem}.content article footer .see-also{margin:3.2rem 0}.content article footer .see-also h3{margin:3.2rem 0}.content article p{text-align:justify;text-justify:auto;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.content .post .post-title{margin-bottom:.75em}.content .post .post-meta i{text-align:center;width:1.6rem;margin-left:0;margin-right:.5rem}.content .post .post-meta .date .posted-on{margin-left:0;margin-right:1.5rem}.content .post .post-meta .tags .tag{display:inline-block;padding:.3rem .6rem;background-color:#e0e0e0;border-radius:.6rem;line-height:1.5em}.content .post .post-meta .tags .tag a{color:#212121}.content .post .post-meta .tags .tag a:active{color:#212121}.content figure{margin:0;padding:0}.content figcaption p{text-align:center;font-style:italic;font-size:1.6rem;margin:0}.avatar img{width:20rem;height:auto;border-radius:50%}@media only screen and (max-width:768px){.avatar img{width:17rem}}.list ul{margin:3.2rem 0;list-style:none;padding:0}.list ul li{font-size:1.8rem}@media only screen and (max-width:768px){.list ul li{margin:1.6rem 0}}.list ul li .date{display:inline-block;flex:1;width:20rem;text-align:right;margin-right:3rem}@media only screen and (max-width:768px){.list ul li .date{display:block;text-align:left}}.list ul li .title{font-size:1.8rem;flex:2;color:#212121;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,Helvetica,游ゴシック,pingfang sc,STXihei,华文细黑,microsoft yahei,微软雅黑,SimSun,宋体,Heiti,黑体,sans-serif;font-weight:700}.list ul li .title:hover,.list ul li .title:focus{color:#1565c0}@media only screen and (min-width:768.1px){.list ul:not(.pagination) li{display:flex}}.centered{display:flex;align-items:center;justify-content:center}.centered .about{text-align:center}.centered .about h1{margin-top:2rem;margin-bottom:.5rem}.centered .about h2{margin-top:1rem;margin-bottom:.5rem;font-size:2.4rem}@media only screen and (max-width:768px){.centered .about h2{font-size:2rem}}.centered .about ul{list-style:none;margin:3rem 0 1rem;padding:0;cursor:pointer}.centered .about ul li{display:inline-block;position:relative}.centered .about ul li a{color:#212121;text-transform:uppercase;margin-left:1rem;margin-right:1rem;font-size:1.6rem}.centered .about ul li a:hover,.centered .about ul li a:focus{color:#1565c0}@media only screen and (max-width:768px){.centered .about ul li a{font-size:1.5rem}}.centered .error{text-align:center}.centered .error h1{margin-top:2rem;margin-bottom:.5rem;font-size:4.6rem}@media only screen and (max-width:768px){.centered .error h1{font-size:3.2rem}}.centered .error h2{margin-top:2rem;margin-bottom:3.2rem;font-size:3.2rem}@media only screen and (max-width:768px){.centered .error h2{font-size:2.8rem}}.notice{border-radius:.2rem;position:relative;margin:2rem 0;padding:0 .75rem;overflow:auto}.notice .notice-title{position:relative;font-weight:700;margin:0 -.75rem;padding:.2rem 3.5rem;border-bottom:1px solid #fafafa}.notice .notice-title i{position:absolute;top:50%;left:1.8rem;transform:translate(-50%,-50%)}.notice .notice-content{display:block;margin:2rem}.notice.note{background-color:#7e57c21a}.notice.note .notice-title{background-color:#673ab71a}.notice.note .notice-title i{color:#5e35b1}.notice.tip{background-color:#26a69a1a}.notice.tip .notice-title{background-color:#0096881a}.notice.tip .notice-title i{color:#00897b}.notice.example{background-color:#8d6e631a}.notice.example .notice-title{background-color:#7955481a}.notice.example .notice-title i{color:#6d4c41}.notice.question{background-color:#9ccc651a}.notice.question .notice-title{background-color:#8bc34a1a}.notice.question .notice-title i{color:#7cb342}.notice.info{background-color:#42a5f51a}.notice.info .notice-title{background-color:#2196f31a}.notice.info .notice-title i{color:#1e88e5}.notice.warning{background-color:#ffca281a}.notice.warning .notice-title{background-color:#ffc1071a}.notice.warning .notice-title i{color:#ffb300}.notice.error{background-color:#ef53501a}.notice.error .notice-title{background-color:#f443361a}.notice.error .notice-title i{color:#e53935}.navigation{height:6rem;width:100%}.navigation a,.navigation span{display:inline;font-size:1.7rem;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,Helvetica,游ゴシック,pingfang sc,STXihei,华文细黑,microsoft yahei,微软雅黑,SimSun,宋体,Heiti,黑体,sans-serif;font-weight:600;color:#212121}.navigation a:hover,.navigation a:focus{color:#1565c0}.navigation .navigation-title{letter-spacing:.1rem;text-transform:uppercase}.navigation .navigation-list{float:right;list-style:none;margin-bottom:0;margin-top:0}@media only screen and (max-width:768px){.navigation .navigation-list{position:relative;top:2rem;right:0;z-index:5;visibility:hidden;opacity:0;padding:0;max-height:0;width:100%;background-color:#fafafa;border-top:solid 2px #e0e0e0;border-bottom:solid 2px #e0e0e0;transition:opacity .25s,max-height .15s linear}}.navigation .navigation-list .navigation-item{float:left;margin:0;position:relative}@media only screen and (max-width:768px){.navigation .navigation-list .navigation-item{float:none!important;text-align:center}.navigation .navigation-list .navigation-item a,.navigation .navigation-list .navigation-item span{line-height:5rem}}.navigation .navigation-list .navigation-item a,.navigation .navigation-list .navigation-item span{margin-left:1rem;margin-right:1rem}@media only screen and (max-width:768px){.navigation .navigation-list .separator{display:none}}@media only screen and (max-width:768px){.navigation .navigation-list .menu-separator{border-top:2px solid #212121;margin:0 8rem}.navigation .navigation-list .menu-separator span{display:none}}.navigation #dark-mode-toggle{margin:1.7rem 0;font-size:2.4rem;line-height:inherit;bottom:2rem;left:2rem;z-index:100;position:fixed}.navigation #menu-toggle{display:none}@media only screen and (max-width:768px){.navigation #menu-toggle{display:initial;position:relative;visibility:hidden}.navigation #menu-toggle:checked+label>i{color:#e0e0e0}.navigation #menu-toggle:checked+label+ul{visibility:visible;opacity:1;max-height:100rem}.navigation #menu-toggle:focus-visible+label{outline-style:auto}}.navigation .menu-button{display:none}@media only screen and (max-width:768px){.navigation .menu-button{position:relative;display:block;font-size:2.4rem;font-weight:400}}.navigation .menu-button i:hover,.navigation .menu-button i:focus{color:#000}.navigation i{color:#212121;cursor:pointer}.navigation i:hover,.navigation i:focus{color:#1565c0}.pagination{display:flex;justify-content:center;margin-top:6rem;text-align:center;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,Helvetica,游ゴシック,pingfang sc,STXihei,华文细黑,microsoft yahei,微软雅黑,SimSun,宋体,Heiti,黑体,sans-serif}.pagination li{display:inline;text-align:center;font-weight:700;margin:0 2px;text-align:center;width:2.2rem}.pagination li a{font-weight:300}.tabs{display:flex;flex-wrap:wrap;margin:2rem 0;position:relative}.tabs.tabs-left{justify-content:flex-start}.tabs.tabs-left label.tab-label{margin-right:.5rem}.tabs.tabs-left .tab-content{border-radius:0 4px 4px 4px}.tabs.tabs-right{justify-content:flex-end}.tabs.tabs-right label.tab-label{margin-left:.5rem}.tabs.tabs-right .tab-content{border-radius:4px 0 4px 4px}.tabs input.tab-input{display:none}.tabs label.tab-label{background-color:#e0e0e0;border-color:#ccc;border-radius:4px 4px 0 0;border-style:solid;border-bottom-style:hidden;border-width:1px;cursor:pointer;display:inline-block;order:1;padding:.3rem .6rem;position:relative;top:1px;user-select:none}.tabs input.tab-input:checked+label.tab-label{background-color:#fafafa}.tabs .tab-content{background-color:#fafafa;border-color:#ccc;border-style:solid;border-width:1px;display:none;order:2;padding:1rem;width:100%}.tabs.tabs-code .tab-content{padding:.5rem}.tabs.tabs-code .tab-content pre{margin:0}.taxonomy li{display:inline-block;margin:.9rem}.taxonomy .taxonomy-element{display:block;padding:.3rem .9rem;background-color:#e0e0e0;border-radius:.6rem}.taxonomy .taxonomy-element a{color:#212121}.taxonomy .taxonomy-element a:active{color:#212121}.footer{width:100%;text-align:center;font-size:1.6rem;line-height:2rem;margin-bottom:1rem}@media only screen and (max-width:768px){.footer{font-size:1.5rem}}.footer a{color:#1565c0}.float-container{bottom:2rem;right:2rem;z-index:100;position:fixed;font-size:1.6em}.float-container a{position:relative;display:inline-block;width:3rem;height:3rem;font-size:2rem;color:#000;background-color:#e0e0e0;border-radius:.2rem;opacity:.5;transition:all .25s ease-in}.float-container a:hover,.float-container a:focus{color:#1565c0;opacity:1}@media only screen and (max-width:768px){.float-container a:hover,.float-container a:focus{color:#000;opacity:.5}}.float-container a i{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.mastodon-wrapper{display:flex;gap:3rem;flex-direction:row}.comment-level{max-width:3rem;min-width:3rem}.reply-original{display:none}.mastodon-comment{background-color:var(--body-background);border-radius:var(--card-border-radius);padding:var(--card-padding);margin-bottom:1rem;display:flex;gap:1rem;flex-direction:column;flex-grow:2}.mastodon-comment .comment{display:flex;flex-direction:row;gap:1rem;flex-wrap:true}.mastodon-comment .comment-avatar img{width:6rem}.mastodon-comment .content{flex-grow:2}.mastodon-comment .comment-author{display:flex;flex-direction:column}.mastodon-comment .comment-author-name{font-weight:700}.mastodon-comment .comment-author-name a{display:flex;align-items:center}.mastodon-comment .comment-author-date{margin-left:auto}.mastodon-comment .disabled{color:var(--accent-color)}.mastodon-comment-content p:first-child{margin-top:0}.mastodon{--dlg-bg:#282c37;--dlg-w:600px;--dlg-color:#9baec8;--dlg-button-p:0.75em 2em;--dlg-outline-c:#00D9F5}.bg{background-color:#fff}.chroma{background-color:#fff}.chroma .err{color:#a61717;background-color:#e3d2d2}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#ffc}.chroma .lnt{white-space:pre;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{white-space:pre;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .line{display:flex}.chroma .k{color:#000;font-weight:700}.chroma .kc{color:#000;font-weight:700}.chroma .kd{color:#000;font-weight:700}.chroma .kn{color:#000;font-weight:700}.chroma .kp{color:#000;font-weight:700}.chroma .kr{color:#000;font-weight:700}.chroma .kt{color:#458;font-weight:700}.chroma .na{color:teal}.chroma .nb{color:#0086b3}.chroma .bp{color:#999}.chroma .nc{color:#458;font-weight:700}.chroma .no{color:teal}.chroma .nd{color:#3c5d5d;font-weight:700}.chroma .ni{color:purple}.chroma .ne{color:#900;font-weight:700}.chroma .nf{color:#900;font-weight:700}.chroma .nl{color:#900;font-weight:700}.chroma .nn{color:#555}.chroma .nt{color:navy}.chroma .nv{color:teal}.chroma .vc{color:teal}.chroma .vg{color:teal}.chroma .vi{color:teal}.chroma .s{color:#d14}.chroma .sa{color:#d14}.chroma .sb{color:#d14}.chroma .sc{color:#d14}.chroma .dl{color:#d14}.chroma .sd{color:#d14}.chroma .s2{color:#d14}.chroma .se{color:#d14}.chroma .sh{color:#d14}.chroma .si{color:#d14}.chroma .sx{color:#d14}.chroma .sr{color:#009926}.chroma .s1{color:#d14}.chroma .ss{color:#990073}.chroma .m{color:#099}.chroma .mb{color:#099}.chroma .mf{color:#099}.chroma .mh{color:#099}.chroma .mi{color:#099}.chroma .il{color:#099}.chroma .mo{color:#099}.chroma .o{color:#000;font-weight:700}.chroma .ow{color:#000;font-weight:700}.chroma .c{color:#998;font-style:italic}.chroma .ch{color:#998;font-style:italic}.chroma .cm{color:#998;font-style:italic}.chroma .c1{color:#998;font-style:italic}.chroma .cs{color:#999;font-weight:700;font-style:italic}.chroma .cp{color:#999;font-weight:700;font-style:italic}.chroma .cpf{color:#999;font-weight:700;font-style:italic}.chroma .gd{color:#000;background-color:#fdd}.chroma .ge{color:#000;font-style:italic}.chroma .gr{color:#a00}.chroma .gh{color:#999}.chroma .gi{color:#000;background-color:#dfd}.chroma .go{color:#888}.chroma .gp{color:#555}.chroma .gs{font-weight:700}.chroma .gu{color:#aaa}.chroma .gt{color:#a00}.chroma .gl{text-decoration:underline}.chroma .w{color:#bbb} \ No newline at end of file diff --git a/index.html b/index.html index 0f58b9e..c4739b2 100644 --- a/index.html +++ b/index.html @@ -1,7 +1,7 @@ -Eric X. Liu's Personal Page
      Eric X. Liu's Personal Page +Eric X. Liu's Personal Page
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in
      avatar

      Eric X. Liu

      Software & Performance Engineer @Google

      © 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/benchmarking-llms-on-jetson-orin-nano/index.html b/posts/benchmarking-llms-on-jetson-orin-nano/index.html index 171c4f0..9e49bb8 100644 --- a/posts/benchmarking-llms-on-jetson-orin-nano/index.html +++ b/posts/benchmarking-llms-on-jetson-orin-nano/index.html @@ -8,7 +8,7 @@ NVIDIA’s Jetson Orin Nano promises impressive specs: 1024 CUDA cores, 32 Tensor Cores, and 40 TOPS of INT8 compute performance packed into a compact, power-efficient edge device. On paper, it looks like a capable platform for running Large Language Models locally. But there’s a catch—one that reveals a fundamental tension in modern edge AI hardware design. After running 66 inference tests across seven different language models ranging from 0.5B to 5.4B parameters, I discovered something counterintuitive: the device’s computational muscle sits largely idle during single-stream LLM inference. The bottleneck isn’t computation—it’s memory bandwidth. This isn’t just a quirk of one device; it’s a fundamental characteristic of single-user, autoregressive token generation on edge hardware—a reality that shapes how we should approach local LLM deployment.">
      Eric X. Liu's Personal Page +After running 66 inference tests across seven different language models ranging from 0.5B to 5.4B parameters, I discovered something counterintuitive: the device’s computational muscle sits largely idle during single-stream LLM inference. The bottleneck isn’t computation—it’s memory bandwidth. This isn’t just a quirk of one device; it’s a fundamental characteristic of single-user, autoregressive token generation on edge hardware—a reality that shapes how we should approach local LLM deployment.">
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      Why Your Jetson Orin Nano's 40 TOPS Goes Unused (And What That Means for Edge AI)

      October 4, 2025 @@ -62,4 +62,4 @@ After running 66 inference tests across seven different language models ranging 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/breville-barista-pro-maintenance/index.html b/posts/breville-barista-pro-maintenance/index.html index b34e86b..e2ba0d8 100644 --- a/posts/breville-barista-pro-maintenance/index.html +++ b/posts/breville-barista-pro-maintenance/index.html @@ -8,7 +8,7 @@ The Breville Barista Pro has two distinct, automated maintenance procedures: the Cleaning (Flush) Cycle and the Descale Cycle. It is important to understand that these are not interchangeable, as they address different types of buildup within the machine.">
      Eric X. Liu's Personal Page +Understanding the Two Primary Maintenance Cycles Link to heading The Breville Barista Pro has two distinct, automated maintenance procedures: the Cleaning (Flush) Cycle and the Descale Cycle. It is important to understand that these are not interchangeable, as they address different types of buildup within the machine.">
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      Breville Barista Pro Maintenance

      August 16, 2025 @@ -25,4 +25,4 @@ Understanding the Two Primary Maintenance Cycles Link to heading The Breville Ba 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/espresso-theory-application-a-guide-for-the-breville-barista-pro/index.html b/posts/espresso-theory-application-a-guide-for-the-breville-barista-pro/index.html index fab9e91..b241d82 100644 --- a/posts/espresso-theory-application-a-guide-for-the-breville-barista-pro/index.html +++ b/posts/espresso-theory-application-a-guide-for-the-breville-barista-pro/index.html @@ -1,7 +1,7 @@ Mastering Your Breville Barista Pro: The Ultimate Guide to Dialing In Espresso · Eric X. Liu's Personal Page
      Eric X. Liu's Personal Page +Our overarching philosophy is simple: isolate and change only one variable at a time. While numbers are crucial, your palate is the ultimate judge. Dose, ratio, and time are interconnected, but your grind size is your most powerful lever.">
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      Mastering Your Breville Barista Pro: The Ultimate Guide to Dialing In Espresso

      May 1, 2025 @@ -20,4 +20,4 @@ Our overarching philosophy is simple: isolate and change only one variable at a 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/flashing-jetson-orin-nano-in-virtualized-environments/index.html b/posts/flashing-jetson-orin-nano-in-virtualized-environments/index.html index 843ce8f..a6cd79d 100644 --- a/posts/flashing-jetson-orin-nano-in-virtualized-environments/index.html +++ b/posts/flashing-jetson-orin-nano-in-virtualized-environments/index.html @@ -12,7 +12,7 @@ Link to heading -Flashing NVIDIA Jetson devices remotely presents unique challenges when the host machine is virtualized. This article documents the technical challenges, failures, and eventual success of flashing a Jetson Orin Nano Super developer kit using NVIDIA SDK Manager in various virtualized environments, specifically focusing on QEMU/KVM virtual machines and LXC containers on Proxmox VE.">
      Eric X. Liu's Personal Page +Flashing NVIDIA Jetson devices remotely presents unique challenges when the host machine is virtualized. This article documents the technical challenges, failures, and eventual success of flashing a Jetson Orin Nano Super developer kit using NVIDIA SDK Manager in various virtualized environments, specifically focusing on QEMU/KVM virtual machines and LXC containers on Proxmox VE.">
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      Flashing Jetson Orin Nano in Virtualized Environments

      October 2, 2025 @@ -168,4 +168,4 @@ Flashing NVIDIA Jetson devices remotely presents unique challenges when the host 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/how-rvq-teaches-llms-to-see-and-hear/index.html b/posts/how-rvq-teaches-llms-to-see-and-hear/index.html index 7424c27..9ab635b 100644 --- a/posts/how-rvq-teaches-llms-to-see-and-hear/index.html +++ b/posts/how-rvq-teaches-llms-to-see-and-hear/index.html @@ -1,7 +1,7 @@ Beyond Words: How RVQ Teaches LLMs to See and Hear · Eric X. Liu's Personal Page
      Eric X. Liu's Personal Page +The answer lies in creating a universal language—a bridge between the continuous, messy world of pixels and audio waves and the discrete, structured world of language tokens. One of the most elegant and powerful tools for building this bridge is Residual Vector Quantization (RVQ).">
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      Beyond Words: How RVQ Teaches LLMs to See and Hear

      August 7, 2025 @@ -18,4 +18,4 @@ The answer lies in creating a universal language—a bridge between the continuo 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/index.html b/posts/index.html index 3122128..0ff210b 100644 --- a/posts/index.html +++ b/posts/index.html @@ -1,4 +1,4 @@ -Posts · Eric X. Liu's Personal Page
      Eric X. Liu's Personal Page +Posts · Eric X. Liu's Personal Page
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      Posts

      • December 19, 2025 The Convergence of Fast Weights, Linear Attention, and State Space Models
      • December 8, 2025 @@ -14,4 +14,4 @@ 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/mixture-of-experts-moe-models-challenges-solutions-in-practice/index.html b/posts/mixture-of-experts-moe-models-challenges-solutions-in-practice/index.html index 7cc9a6d..b797409 100644 --- a/posts/mixture-of-experts-moe-models-challenges-solutions-in-practice/index.html +++ b/posts/mixture-of-experts-moe-models-challenges-solutions-in-practice/index.html @@ -9,7 +9,7 @@ The Problem: Many routing mechanisms, especially “Top-K routing,” involve a discrete, hard selection process. A common function is KeepTopK(v, k), which selects the top k scoring elements from a vector v and sets others to $-\infty$ or $0$.">
      Eric X. Liu's Personal Page +1. Challenge: Non-Differentiability of Routing Functions Link to heading The Problem: Many routing mechanisms, especially “Top-K routing,” involve a discrete, hard selection process. A common function is KeepTopK(v, k), which selects the top k scoring elements from a vector v and sets others to $-\infty$ or $0$.">
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      Mixture-of-Experts (MoE) Models Challenges & Solutions in Practice

      July 2, 2025 @@ -44,4 +44,4 @@ The Top-K routing mechanism, as illustrated in the provided ima 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/openwrt-mwan3-wireguard-endpoint-exclusion/index.html b/posts/openwrt-mwan3-wireguard-endpoint-exclusion/index.html index f1a069c..e91e086 100644 --- a/posts/openwrt-mwan3-wireguard-endpoint-exclusion/index.html +++ b/posts/openwrt-mwan3-wireguard-endpoint-exclusion/index.html @@ -5,7 +5,7 @@ Link to heading -When using WireGuard together with MWAN3 on OpenWrt, the tunnel can fail to establish or flap when the peer’s IP is routed into the tunnel itself. This is a classic routing bootstrap problem: WireGuard wants to route 0.0.0.0/0 into the tunnel, but the UDP packets to the peer’s public endpoint also get captured, so they never reach the Internet to bring the tunnel up.">
      Eric X. Liu's Personal Page +When using WireGuard together with MWAN3 on OpenWrt, the tunnel can fail to establish or flap when the peer’s IP is routed into the tunnel itself. This is a classic routing bootstrap problem: WireGuard wants to route 0.0.0.0/0 into the tunnel, but the UDP packets to the peer’s public endpoint also get captured, so they never reach the Internet to bring the tunnel up.">
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      OpenWrt: Fix WireGuard Connectivity with MWAN3 by Excluding the VPN Endpoint

      September 28, 2025 @@ -98,4 +98,4 @@ When using WireGuard together with MWAN3 on OpenWrt, the tunnel can fail to esta 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/page/2/index.html b/posts/page/2/index.html index 15992e4..036202b 100644 --- a/posts/page/2/index.html +++ b/posts/page/2/index.html @@ -1,4 +1,4 @@ -Posts · Eric X. Liu's Personal Page
      Eric X. Liu's Personal Page +Posts · Eric X. Liu's Personal Page
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      Posts

      • August 3, 2025 Supabase Deep Dive: It's Not Magic, It's Just Postgres
      • August 2, 2025 @@ -11,4 +11,4 @@ 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/ppo-for-language-models/index.html b/posts/ppo-for-language-models/index.html index f4384d6..ea1e7b4 100644 --- a/posts/ppo-for-language-models/index.html +++ b/posts/ppo-for-language-models/index.html @@ -2,7 +2,7 @@ You may have seen diagrams like the one below, which outlines the RLHF training process. It can look intimidating, with a web of interconnected models, losses, and data flows. ">
      Eric X. Liu's Personal Page +You may have seen diagrams like the one below, which outlines the RLHF training process. It can look intimidating, with a web of interconnected models, losses, and data flows.">
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      A Deep Dive into PPO for Language Models

      August 2, 2025 @@ -25,4 +25,4 @@ where δ_t = r_t + γV(s_{t+1}) - V(s_t)

      • γ (gam 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/quantization-in-llms/index.html b/posts/quantization-in-llms/index.html index 784232c..a9b637b 100644 --- a/posts/quantization-in-llms/index.html +++ b/posts/quantization-in-llms/index.html @@ -1,4 +1,4 @@ -Quantization in LLMs · Eric X. Liu's Personal Page
      Eric X. Liu's Personal Page +Quantization in LLMs · Eric X. Liu's Personal Page
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      Quantization in LLMs

      August 19, 2025 @@ -7,4 +7,4 @@ 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/secure-boot-dkms-and-mok-on-proxmox-debian/index.html b/posts/secure-boot-dkms-and-mok-on-proxmox-debian/index.html index 95f1d1c..fe00131 100644 --- a/posts/secure-boot-dkms-and-mok-on-proxmox-debian/index.html +++ b/posts/secure-boot-dkms-and-mok-on-proxmox-debian/index.html @@ -5,7 +5,7 @@ modprobe nvidia → “Key was rejected by service” That message is the tell: Secure Boot is enabled and the kernel refuses to load modules not signed by a trusted key.">
      Eric X. Liu's Personal Page +nvidia-smi failed to communicate with the NVIDIA driver modprobe nvidia → “Key was rejected by service” That message is the tell: Secure Boot is enabled and the kernel refuses to load modules not signed by a trusted key.">
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      Fixing GPU Operator Pods Stuck in Init: Secure Boot, DKMS, and MOK on Proxmox + Debian

      August 9, 2025 @@ -59,4 +59,4 @@ nvidia-smi failed to communicate with the NVIDIA driver modprobe nvidia → “K 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/supabase-deep-dive/index.html b/posts/supabase-deep-dive/index.html index ad9cf2a..4c734ce 100644 --- a/posts/supabase-deep-dive/index.html +++ b/posts/supabase-deep-dive/index.html @@ -1,7 +1,7 @@ Supabase Deep Dive: It's Not Magic, It's Just Postgres · Eric X. Liu's Personal Page
      Eric X. Liu's Personal Page +Supabase enters this space with a radically different philosophy: transparency. It provides the convenience of a BaaS, but it’s built on the world’s most trusted relational database: PostgreSQL. The “magic” isn’t a proprietary black box; it’s a carefully assembled suite of open-source tools that enhance Postgres, not hide it.">
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      Supabase Deep Dive: It's Not Magic, It's Just Postgres

      August 3, 2025 @@ -90,4 +90,4 @@ Supabase enters this space with a radically different philosophy: transparency. 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/t5-the-transformer-that-zigged-when-others-zagged-an-architectural-deep-dive/index.html b/posts/t5-the-transformer-that-zigged-when-others-zagged-an-architectural-deep-dive/index.html index 11be618..8650dd6 100644 --- a/posts/t5-the-transformer-that-zigged-when-others-zagged-an-architectural-deep-dive/index.html +++ b/posts/t5-the-transformer-that-zigged-when-others-zagged-an-architectural-deep-dive/index.html @@ -1,7 +1,7 @@ An Architectural Deep Dive of T5 · Eric X. Liu's Personal Page
      Eric X. Liu's Personal Page +But to truly understand the field, we must look at the pivotal models that explored different paths. Google’s T5, or Text-to-Text Transfer Transformer, stands out as one of the most influential. It didn’t just introduce a new model; it proposed a new philosophy. This article dives deep into the architecture of T5, how it fundamentally differs from modern LLMs, and the lasting legacy of its unique design choices.">
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      An Architectural Deep Dive of T5

      June 1, 2025 @@ -30,4 +30,4 @@ But to truly understand the field, we must look at the pivotal models that explo 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/the-convergence-of-fast-weights-linear-attention-and-state-space-models/index.html b/posts/the-convergence-of-fast-weights-linear-attention-and-state-space-models/index.html index 7230385..16447b4 100644 --- a/posts/the-convergence-of-fast-weights-linear-attention-and-state-space-models/index.html +++ b/posts/the-convergence-of-fast-weights-linear-attention-and-state-space-models/index.html @@ -1,7 +1,7 @@ The Convergence of Fast Weights, Linear Attention, and State Space Models · Eric X. Liu's Personal Page
      Eric X. Liu's Personal Page +This article explores the mathematical equivalence between Hinton’s concept of Fast Weights as Associative Memory and the recurrence mechanisms found in models such as Mamba and RWKV.">
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      The Convergence of Fast Weights, Linear Attention, and State Space Models

      December 19, 2025 @@ -26,4 +26,4 @@ This article explores the mathematical equivalence between Hinton’s concept of 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/transformer-s-core-mechanics/index.html b/posts/transformer-s-core-mechanics/index.html index 3c3c745..3be3f1f 100644 --- a/posts/transformer-s-core-mechanics/index.html +++ b/posts/transformer-s-core-mechanics/index.html @@ -8,7 +8,7 @@ In deep learning, a “channel” can be thought of as a feature dimension. While this term is common in Convolutional Neural Networks for images (e.g., Red, Green, Blue channels), in LLMs, the analogous concept is the model’s primary embedding dimension, commonly referred to as d_model.">
      Eric X. Liu's Personal Page +1. The “Channel”: A Foundational View of d_model Link to heading In deep learning, a “channel” can be thought of as a feature dimension. While this term is common in Convolutional Neural Networks for images (e.g., Red, Green, Blue channels), in LLMs, the analogous concept is the model’s primary embedding dimension, commonly referred to as d_model.">
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      Transformer's Core Mechanics

      April 1, 2025 @@ -36,4 +36,4 @@ In deep learning, a “channel” can be thought of as a feature dimensi 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/unifi-vlan-migration-to-zone-based-architecture/index.html b/posts/unifi-vlan-migration-to-zone-based-architecture/index.html index 5053d81..5959aeb 100644 --- a/posts/unifi-vlan-migration-to-zone-based-architecture/index.html +++ b/posts/unifi-vlan-migration-to-zone-based-architecture/index.html @@ -1,7 +1,7 @@ UniFi VLAN Migration to Zone-Based Architecture · Eric X. Liu's Personal Page
      Eric X. Liu's Personal Page +This article documents that journey. It details the pitfalls encountered, the core networking concepts that were essential to understand, and the best practices that ultimately led to a stable, secure, and logical network design built on a zone-based firewall model.">
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      UniFi VLAN Migration to Zone-Based Architecture

      September 22, 2025 @@ -28,4 +28,4 @@ This article documents that journey. It details the pitfalls encountered, the co 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/useful/index.html b/posts/useful/index.html index cdec06c..5986a18 100644 --- a/posts/useful/index.html +++ b/posts/useful/index.html @@ -1,6 +1,6 @@ Some useful files · Eric X. Liu's Personal Page
      Eric X. Liu's Personal Page +">
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      Some useful files

      October 26, 2020 @@ -9,4 +9,4 @@ One-minute read
      • [de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/posts/vattention/index.html b/posts/vattention/index.html index ba2f2f4..df9e513 100644 --- a/posts/vattention/index.html +++ b/posts/vattention/index.html @@ -8,7 +8,7 @@ Prior to PagedAttention, systems allocated contiguous memory for the maximum possible context length, leading to severe fragmentation and wasted memory. PagedAttention addressed this by chunking the KV cache into non-contiguous blocks, managed by a software-defined “page table” (the Block Table) [1].">
      Eric X. Liu's Personal Page +The Status Quo: PagedAttention and Software Tables Link to heading Prior to PagedAttention, systems allocated contiguous memory for the maximum possible context length, leading to severe fragmentation and wasted memory. PagedAttention addressed this by chunking the KV cache into non-contiguous blocks, managed by a software-defined “page table” (the Block Table) [1].">
      Eric X. Liu's Personal Page
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      vAttention

      December 8, 2025 @@ -31,4 +31,4 @@ The GPU TLB hierarchy is sensitive to page sizes.

      • 4KB Pages:< 2016 - 2025 Eric X. Liu -[de8df55]
      \ No newline at end of file +[f374ada]
      \ No newline at end of file diff --git a/tags/index.html b/tags/index.html index 9cb7370..db23c2d 100644 --- a/tags/index.html +++ b/tags/index.html @@ -1,7 +1,7 @@ -Tags · Eric X. Liu's Personal Page
      Eric X. Liu's Personal Page +Tags · Eric X. Liu's Personal Page
      Eric X. Liu's Personal Page -
      • Posts
      • Chat
      • Git
      • Coder
      • About
      • |
      • Sign in

      Tags

        © +
        • Posts
        • Chat
        • Git
        • Coder
        • About
        • |
        • Sign in

        Tags

          © 2016 - 2025 Eric X. Liu -[de8df55]
          \ No newline at end of file +[f374ada] \ No newline at end of file diff --git a/tags/page/1/index.html b/tags/page/1/index.html new file mode 100644 index 0000000..5d6dd93 --- /dev/null +++ b/tags/page/1/index.html @@ -0,0 +1 @@ +https://ericxliu.me/tags/ \ No newline at end of file