From 21b341b09a4c2e15869f09cd345fbba14bdb2094 Mon Sep 17 00:00:00 2001 From: blurryhumanface Date: Wed, 24 Nov 2021 00:53:10 +0000 Subject: [PATCH] jekyll build from Action bf464adc8d977081801241087a1c4d7df83bfe4b --- .nojekyll | 0 10G-reg-form.html | 126 + 2021/07/15/NetFPGA.html | 1 + 2021/07/16/IIsy.html | 1 + .../07/16/In-Network-Computing-on-Demand.html | 1 + 2021/07/16/MTPSA.html | 1 + 2021/07/16/OSNT.html | 1 + 2021/07/16/P4DNS.html | 1 + 2021/07/16/PTA.html | 1 + About.html | 319 + CML-reg-form.html | 121 + CNAME | 1 + NetFPGA-10G.html | 331 + NetFPGA-1G.html | 501 + NetFPGA-CML.html | 271 + NetFPGA-PLUS.html | 259 + NetFPGA-SUME.html | 272 + Publications.html | 734 + README.md | 141 + SUME-reg-form.html | 121 + _pages/10G-License.html | 154 + _pages/1G-License.html | 128 + ...2007-08-24-Hot-Interconnects-Tutorial.html | 295 + .../2008-02-06-NetFPGA-Sydney-Tutorial.html | 329 + .../2008-04-23-NetFPGA-Beijing-Tutorial.html | 170 + ...2008-05-15-NetFPGA-Bangalore-Tutorial.html | 297 + .../2008-08-04-NetFPGA-Summer-Camp-2008.html | 358 + _pages/2008-08-17-SIGCOMM-2008-Tutorial.html | 303 + ...08-13-NetFPGA-Developers-Worshop-2009.html | 188 + ...2010-03-21-IETF-Tutorial-2010-Anaheim.html | 292 + .../2010-07-02-NetFPGA-Summer-Camp-2010.html | 316 + ...-American-NetFPGA-Developers-Workshop.html | 183 + .../2011-08-01-NetFPGA-Summer-Camp-2011.html | 342 + _pages/2011-08-19-Toronto-Tutorial-2011.html | 239 + _pages/2011-12-05-Tokyo-Tutorial-2011.html | 249 + .../2012-07-30-NetFPGA-Summer-Camp-2012.html | 349 + ...-29-NetFPGA-Summer-Camp-2013-Stanford.html | 347 + assets/css/main.css | 3 + assets/css/main.css.map | 188 + assets/fontawesome/LICENSE.txt | 34 + assets/fontawesome/attribution.js | 3 + assets/fontawesome/css/all.css | 4619 ++ assets/fontawesome/css/all.min.css | 5 + assets/fontawesome/css/brands.css | 15 + assets/fontawesome/css/brands.min.css | 5 + assets/fontawesome/css/fontawesome.css | 4585 ++ assets/fontawesome/css/fontawesome.min.css | 5 + assets/fontawesome/css/regular.css | 15 + assets/fontawesome/css/regular.min.css | 5 + assets/fontawesome/css/solid.css | 16 + assets/fontawesome/css/solid.min.css | 5 + assets/fontawesome/css/svg-with-js.css | 371 + assets/fontawesome/css/svg-with-js.min.css | 5 + assets/fontawesome/css/v4-shims.css | 2172 + assets/fontawesome/css/v4-shims.min.css | 5 + assets/fontawesome/js/all.js | 4467 ++ assets/fontawesome/js/all.min.js | 5 + assets/fontawesome/js/brands.js | 586 + assets/fontawesome/js/brands.min.js | 5 + assets/fontawesome/js/conflict-detection.js | 998 + .../fontawesome/js/conflict-detection.min.js | 5 + assets/fontawesome/js/fontawesome.js | 2483 + assets/fontawesome/js/fontawesome.min.js | 5 + assets/fontawesome/js/regular.js | 280 + assets/fontawesome/js/regular.min.js | 5 + assets/fontawesome/js/solid.js | 1130 + assets/fontawesome/js/solid.min.js | 5 + assets/fontawesome/js/v4-shims.js | 68 + assets/fontawesome/js/v4-shims.min.js | 5 + assets/fontawesome/less/brands.less | 23 + assets/fontawesome/less/fontawesome.less | 16 + assets/fontawesome/less/regular.less | 23 + assets/fontawesome/less/solid.less | 24 + assets/fontawesome/less/v4-shims.less | 6 + assets/fontawesome/metadata/categories.yml | 2572 + assets/fontawesome/metadata/icons.json | 58547 ++++++++++++++++ assets/fontawesome/metadata/icons.yml | 21782 ++++++ assets/fontawesome/metadata/shims.json | 2317 + assets/fontawesome/metadata/shims.yml | 298 + assets/fontawesome/metadata/sponsors.yml | 744 + assets/fontawesome/scss/brands.scss | 23 + assets/fontawesome/scss/fontawesome.scss | 16 + assets/fontawesome/scss/regular.scss | 23 + assets/fontawesome/scss/solid.scss | 24 + assets/fontawesome/scss/v4-shims.scss | 6 + assets/fontawesome/sprites/brands.svg | 1381 + assets/fontawesome/sprites/regular.svg | 463 + assets/fontawesome/sprites/solid.svg | 3013 + assets/fontawesome/svgs/brands/500px.svg | 1 + .../svgs/brands/accessible-icon.svg | 1 + assets/fontawesome/svgs/brands/accusoft.svg | 1 + .../svgs/brands/acquisitions-incorporated.svg | 1 + assets/fontawesome/svgs/brands/adn.svg | 1 + assets/fontawesome/svgs/brands/adversal.svg | 1 + .../svgs/brands/affiliatetheme.svg | 1 + assets/fontawesome/svgs/brands/airbnb.svg | 1 + assets/fontawesome/svgs/brands/algolia.svg | 1 + assets/fontawesome/svgs/brands/alipay.svg | 1 + assets/fontawesome/svgs/brands/amazon-pay.svg | 1 + assets/fontawesome/svgs/brands/amazon.svg | 1 + assets/fontawesome/svgs/brands/amilia.svg | 1 + assets/fontawesome/svgs/brands/android.svg | 1 + assets/fontawesome/svgs/brands/angellist.svg | 1 + .../fontawesome/svgs/brands/angrycreative.svg | 1 + assets/fontawesome/svgs/brands/angular.svg | 1 + .../fontawesome/svgs/brands/app-store-ios.svg | 1 + assets/fontawesome/svgs/brands/app-store.svg | 1 + assets/fontawesome/svgs/brands/apper.svg | 1 + assets/fontawesome/svgs/brands/apple-pay.svg | 1 + assets/fontawesome/svgs/brands/apple.svg | 1 + assets/fontawesome/svgs/brands/artstation.svg | 1 + assets/fontawesome/svgs/brands/asymmetrik.svg | 1 + assets/fontawesome/svgs/brands/atlassian.svg | 1 + assets/fontawesome/svgs/brands/audible.svg | 1 + .../fontawesome/svgs/brands/autoprefixer.svg | 1 + assets/fontawesome/svgs/brands/avianex.svg | 1 + assets/fontawesome/svgs/brands/aviato.svg | 1 + assets/fontawesome/svgs/brands/aws.svg | 1 + assets/fontawesome/svgs/brands/bandcamp.svg | 1 + assets/fontawesome/svgs/brands/battle-net.svg | 1 + .../svgs/brands/behance-square.svg | 1 + assets/fontawesome/svgs/brands/behance.svg | 1 + assets/fontawesome/svgs/brands/bimobject.svg | 1 + assets/fontawesome/svgs/brands/bitbucket.svg | 1 + assets/fontawesome/svgs/brands/bitcoin.svg | 1 + assets/fontawesome/svgs/brands/bity.svg | 1 + assets/fontawesome/svgs/brands/black-tie.svg | 1 + assets/fontawesome/svgs/brands/blackberry.svg | 1 + assets/fontawesome/svgs/brands/blogger-b.svg | 1 + assets/fontawesome/svgs/brands/blogger.svg | 1 + .../fontawesome/svgs/brands/bluetooth-b.svg | 1 + assets/fontawesome/svgs/brands/bluetooth.svg | 1 + assets/fontawesome/svgs/brands/bootstrap.svg | 1 + assets/fontawesome/svgs/brands/btc.svg | 1 + assets/fontawesome/svgs/brands/buffer.svg | 1 + .../svgs/brands/buromobelexperte.svg | 1 + .../fontawesome/svgs/brands/buy-n-large.svg | 1 + assets/fontawesome/svgs/brands/buysellads.svg | 1 + .../svgs/brands/canadian-maple-leaf.svg | 1 + .../fontawesome/svgs/brands/cc-amazon-pay.svg | 1 + assets/fontawesome/svgs/brands/cc-amex.svg | 1 + .../fontawesome/svgs/brands/cc-apple-pay.svg | 1 + .../svgs/brands/cc-diners-club.svg | 1 + .../fontawesome/svgs/brands/cc-discover.svg | 1 + assets/fontawesome/svgs/brands/cc-jcb.svg | 1 + .../fontawesome/svgs/brands/cc-mastercard.svg | 1 + assets/fontawesome/svgs/brands/cc-paypal.svg | 1 + assets/fontawesome/svgs/brands/cc-stripe.svg | 1 + assets/fontawesome/svgs/brands/cc-visa.svg | 1 + assets/fontawesome/svgs/brands/centercode.svg | 1 + assets/fontawesome/svgs/brands/centos.svg | 1 + assets/fontawesome/svgs/brands/chrome.svg | 1 + assets/fontawesome/svgs/brands/chromecast.svg | 1 + assets/fontawesome/svgs/brands/cloudflare.svg | 1 + assets/fontawesome/svgs/brands/cloudscale.svg | 1 + assets/fontawesome/svgs/brands/cloudsmith.svg | 1 + .../fontawesome/svgs/brands/cloudversify.svg | 1 + assets/fontawesome/svgs/brands/codepen.svg | 1 + assets/fontawesome/svgs/brands/codiepie.svg | 1 + assets/fontawesome/svgs/brands/confluence.svg | 1 + .../svgs/brands/connectdevelop.svg | 1 + assets/fontawesome/svgs/brands/contao.svg | 1 + .../fontawesome/svgs/brands/cotton-bureau.svg | 1 + assets/fontawesome/svgs/brands/cpanel.svg | 1 + .../svgs/brands/creative-commons-by.svg | 1 + .../svgs/brands/creative-commons-nc-eu.svg | 1 + .../svgs/brands/creative-commons-nc-jp.svg | 1 + .../svgs/brands/creative-commons-nc.svg | 1 + .../svgs/brands/creative-commons-nd.svg | 1 + .../svgs/brands/creative-commons-pd-alt.svg | 1 + .../svgs/brands/creative-commons-pd.svg | 1 + .../svgs/brands/creative-commons-remix.svg | 1 + .../svgs/brands/creative-commons-sa.svg | 1 + .../brands/creative-commons-sampling-plus.svg | 1 + .../svgs/brands/creative-commons-sampling.svg | 1 + .../svgs/brands/creative-commons-share.svg | 1 + .../svgs/brands/creative-commons-zero.svg | 1 + .../svgs/brands/creative-commons.svg | 1 + .../fontawesome/svgs/brands/critical-role.svg | 1 + assets/fontawesome/svgs/brands/css3-alt.svg | 1 + assets/fontawesome/svgs/brands/css3.svg | 1 + assets/fontawesome/svgs/brands/cuttlefish.svg | 1 + .../svgs/brands/d-and-d-beyond.svg | 1 + assets/fontawesome/svgs/brands/d-and-d.svg | 1 + .../fontawesome/svgs/brands/dailymotion.svg | 1 + assets/fontawesome/svgs/brands/dashcube.svg | 1 + assets/fontawesome/svgs/brands/deezer.svg | 1 + assets/fontawesome/svgs/brands/delicious.svg | 1 + assets/fontawesome/svgs/brands/deploydog.svg | 1 + assets/fontawesome/svgs/brands/deskpro.svg | 1 + assets/fontawesome/svgs/brands/dev.svg | 1 + assets/fontawesome/svgs/brands/deviantart.svg | 1 + assets/fontawesome/svgs/brands/dhl.svg | 1 + assets/fontawesome/svgs/brands/diaspora.svg | 1 + assets/fontawesome/svgs/brands/digg.svg | 1 + .../fontawesome/svgs/brands/digital-ocean.svg | 1 + assets/fontawesome/svgs/brands/discord.svg | 1 + assets/fontawesome/svgs/brands/discourse.svg | 1 + assets/fontawesome/svgs/brands/dochub.svg | 1 + assets/fontawesome/svgs/brands/docker.svg | 1 + .../fontawesome/svgs/brands/draft2digital.svg | 1 + .../svgs/brands/dribbble-square.svg | 1 + assets/fontawesome/svgs/brands/dribbble.svg | 1 + assets/fontawesome/svgs/brands/dropbox.svg | 1 + assets/fontawesome/svgs/brands/drupal.svg | 1 + assets/fontawesome/svgs/brands/dyalog.svg | 1 + assets/fontawesome/svgs/brands/earlybirds.svg | 1 + assets/fontawesome/svgs/brands/ebay.svg | 1 + .../fontawesome/svgs/brands/edge-legacy.svg | 1 + assets/fontawesome/svgs/brands/edge.svg | 1 + assets/fontawesome/svgs/brands/elementor.svg | 1 + assets/fontawesome/svgs/brands/ello.svg | 1 + assets/fontawesome/svgs/brands/ember.svg | 1 + assets/fontawesome/svgs/brands/empire.svg | 1 + assets/fontawesome/svgs/brands/envira.svg | 1 + assets/fontawesome/svgs/brands/erlang.svg | 1 + assets/fontawesome/svgs/brands/ethereum.svg | 1 + assets/fontawesome/svgs/brands/etsy.svg | 1 + assets/fontawesome/svgs/brands/evernote.svg | 1 + .../fontawesome/svgs/brands/expeditedssl.svg | 1 + assets/fontawesome/svgs/brands/facebook-f.svg | 1 + .../svgs/brands/facebook-messenger.svg | 1 + .../svgs/brands/facebook-square.svg | 1 + assets/fontawesome/svgs/brands/facebook.svg | 1 + .../svgs/brands/fantasy-flight-games.svg | 1 + assets/fontawesome/svgs/brands/fedex.svg | 1 + assets/fontawesome/svgs/brands/fedora.svg | 1 + assets/fontawesome/svgs/brands/figma.svg | 1 + .../svgs/brands/firefox-browser.svg | 1 + assets/fontawesome/svgs/brands/firefox.svg | 1 + .../svgs/brands/first-order-alt.svg | 1 + .../fontawesome/svgs/brands/first-order.svg | 1 + assets/fontawesome/svgs/brands/firstdraft.svg | 1 + assets/fontawesome/svgs/brands/flickr.svg | 1 + assets/fontawesome/svgs/brands/flipboard.svg | 1 + assets/fontawesome/svgs/brands/fly.svg | 1 + .../svgs/brands/font-awesome-alt.svg | 1 + .../svgs/brands/font-awesome-flag.svg | 1 + .../svgs/brands/font-awesome-logo-full.svg | 1 + .../fontawesome/svgs/brands/font-awesome.svg | 1 + .../fontawesome/svgs/brands/fonticons-fi.svg | 1 + assets/fontawesome/svgs/brands/fonticons.svg | 1 + .../svgs/brands/fort-awesome-alt.svg | 1 + .../fontawesome/svgs/brands/fort-awesome.svg | 1 + assets/fontawesome/svgs/brands/forumbee.svg | 1 + assets/fontawesome/svgs/brands/foursquare.svg | 1 + .../svgs/brands/free-code-camp.svg | 1 + assets/fontawesome/svgs/brands/freebsd.svg | 1 + assets/fontawesome/svgs/brands/fulcrum.svg | 1 + .../svgs/brands/galactic-republic.svg | 1 + .../svgs/brands/galactic-senate.svg | 1 + assets/fontawesome/svgs/brands/get-pocket.svg | 1 + assets/fontawesome/svgs/brands/gg-circle.svg | 1 + assets/fontawesome/svgs/brands/gg.svg | 1 + assets/fontawesome/svgs/brands/git-alt.svg | 1 + assets/fontawesome/svgs/brands/git-square.svg | 1 + assets/fontawesome/svgs/brands/git.svg | 1 + assets/fontawesome/svgs/brands/github-alt.svg | 1 + .../fontawesome/svgs/brands/github-square.svg | 1 + assets/fontawesome/svgs/brands/github.svg | 1 + assets/fontawesome/svgs/brands/gitkraken.svg | 1 + assets/fontawesome/svgs/brands/gitlab.svg | 1 + assets/fontawesome/svgs/brands/gitter.svg | 1 + assets/fontawesome/svgs/brands/glide-g.svg | 1 + assets/fontawesome/svgs/brands/glide.svg | 1 + assets/fontawesome/svgs/brands/gofore.svg | 1 + .../fontawesome/svgs/brands/goodreads-g.svg | 1 + assets/fontawesome/svgs/brands/goodreads.svg | 1 + .../fontawesome/svgs/brands/google-drive.svg | 1 + assets/fontawesome/svgs/brands/google-pay.svg | 1 + .../fontawesome/svgs/brands/google-play.svg | 1 + .../fontawesome/svgs/brands/google-plus-g.svg | 1 + .../svgs/brands/google-plus-square.svg | 1 + .../fontawesome/svgs/brands/google-plus.svg | 1 + .../fontawesome/svgs/brands/google-wallet.svg | 1 + assets/fontawesome/svgs/brands/google.svg | 1 + assets/fontawesome/svgs/brands/gratipay.svg | 1 + assets/fontawesome/svgs/brands/grav.svg | 1 + assets/fontawesome/svgs/brands/gripfire.svg | 1 + assets/fontawesome/svgs/brands/grunt.svg | 1 + assets/fontawesome/svgs/brands/guilded.svg | 1 + assets/fontawesome/svgs/brands/gulp.svg | 1 + .../svgs/brands/hacker-news-square.svg | 1 + .../fontawesome/svgs/brands/hacker-news.svg | 1 + assets/fontawesome/svgs/brands/hackerrank.svg | 1 + assets/fontawesome/svgs/brands/hips.svg | 1 + .../fontawesome/svgs/brands/hire-a-helper.svg | 1 + assets/fontawesome/svgs/brands/hive.svg | 1 + assets/fontawesome/svgs/brands/hooli.svg | 1 + assets/fontawesome/svgs/brands/hornbill.svg | 1 + assets/fontawesome/svgs/brands/hotjar.svg | 1 + assets/fontawesome/svgs/brands/houzz.svg | 1 + assets/fontawesome/svgs/brands/html5.svg | 1 + assets/fontawesome/svgs/brands/hubspot.svg | 1 + assets/fontawesome/svgs/brands/ideal.svg | 1 + assets/fontawesome/svgs/brands/imdb.svg | 1 + assets/fontawesome/svgs/brands/innosoft.svg | 1 + .../svgs/brands/instagram-square.svg | 1 + assets/fontawesome/svgs/brands/instagram.svg | 1 + assets/fontawesome/svgs/brands/instalod.svg | 1 + assets/fontawesome/svgs/brands/intercom.svg | 1 + .../svgs/brands/internet-explorer.svg | 1 + assets/fontawesome/svgs/brands/invision.svg | 1 + assets/fontawesome/svgs/brands/ioxhost.svg | 1 + assets/fontawesome/svgs/brands/itch-io.svg | 1 + .../fontawesome/svgs/brands/itunes-note.svg | 1 + assets/fontawesome/svgs/brands/itunes.svg | 1 + assets/fontawesome/svgs/brands/java.svg | 1 + assets/fontawesome/svgs/brands/jedi-order.svg | 1 + assets/fontawesome/svgs/brands/jenkins.svg | 1 + assets/fontawesome/svgs/brands/jira.svg | 1 + assets/fontawesome/svgs/brands/joget.svg | 1 + assets/fontawesome/svgs/brands/joomla.svg | 1 + assets/fontawesome/svgs/brands/js-square.svg | 1 + assets/fontawesome/svgs/brands/js.svg | 1 + assets/fontawesome/svgs/brands/jsfiddle.svg | 1 + assets/fontawesome/svgs/brands/kaggle.svg | 1 + assets/fontawesome/svgs/brands/keybase.svg | 1 + assets/fontawesome/svgs/brands/keycdn.svg | 1 + .../fontawesome/svgs/brands/kickstarter-k.svg | 1 + .../fontawesome/svgs/brands/kickstarter.svg | 1 + assets/fontawesome/svgs/brands/korvue.svg | 1 + assets/fontawesome/svgs/brands/laravel.svg | 1 + .../fontawesome/svgs/brands/lastfm-square.svg | 1 + assets/fontawesome/svgs/brands/lastfm.svg | 1 + assets/fontawesome/svgs/brands/leanpub.svg | 1 + assets/fontawesome/svgs/brands/less.svg | 1 + assets/fontawesome/svgs/brands/line.svg | 1 + .../fontawesome/svgs/brands/linkedin-in.svg | 1 + assets/fontawesome/svgs/brands/linkedin.svg | 1 + assets/fontawesome/svgs/brands/linode.svg | 1 + assets/fontawesome/svgs/brands/linux.svg | 1 + assets/fontawesome/svgs/brands/lyft.svg | 1 + assets/fontawesome/svgs/brands/magento.svg | 1 + assets/fontawesome/svgs/brands/mailchimp.svg | 1 + .../fontawesome/svgs/brands/mandalorian.svg | 1 + assets/fontawesome/svgs/brands/markdown.svg | 1 + assets/fontawesome/svgs/brands/mastodon.svg | 1 + assets/fontawesome/svgs/brands/maxcdn.svg | 1 + assets/fontawesome/svgs/brands/mdb.svg | 1 + assets/fontawesome/svgs/brands/medapps.svg | 1 + assets/fontawesome/svgs/brands/medium-m.svg | 1 + assets/fontawesome/svgs/brands/medium.svg | 1 + assets/fontawesome/svgs/brands/medrt.svg | 1 + assets/fontawesome/svgs/brands/meetup.svg | 1 + assets/fontawesome/svgs/brands/megaport.svg | 1 + assets/fontawesome/svgs/brands/mendeley.svg | 1 + assets/fontawesome/svgs/brands/microblog.svg | 1 + assets/fontawesome/svgs/brands/microsoft.svg | 1 + assets/fontawesome/svgs/brands/mix.svg | 1 + assets/fontawesome/svgs/brands/mixcloud.svg | 1 + assets/fontawesome/svgs/brands/mixer.svg | 1 + assets/fontawesome/svgs/brands/mizuni.svg | 1 + assets/fontawesome/svgs/brands/modx.svg | 1 + assets/fontawesome/svgs/brands/monero.svg | 1 + assets/fontawesome/svgs/brands/napster.svg | 1 + assets/fontawesome/svgs/brands/neos.svg | 1 + assets/fontawesome/svgs/brands/nimblr.svg | 1 + assets/fontawesome/svgs/brands/node-js.svg | 1 + assets/fontawesome/svgs/brands/node.svg | 1 + assets/fontawesome/svgs/brands/npm.svg | 1 + assets/fontawesome/svgs/brands/ns8.svg | 1 + .../fontawesome/svgs/brands/nutritionix.svg | 1 + .../svgs/brands/octopus-deploy.svg | 1 + .../svgs/brands/odnoklassniki-square.svg | 1 + .../fontawesome/svgs/brands/odnoklassniki.svg | 1 + .../fontawesome/svgs/brands/old-republic.svg | 1 + assets/fontawesome/svgs/brands/opencart.svg | 1 + assets/fontawesome/svgs/brands/openid.svg | 1 + assets/fontawesome/svgs/brands/opera.svg | 1 + .../fontawesome/svgs/brands/optin-monster.svg | 1 + assets/fontawesome/svgs/brands/orcid.svg | 1 + assets/fontawesome/svgs/brands/osi.svg | 1 + assets/fontawesome/svgs/brands/page4.svg | 1 + assets/fontawesome/svgs/brands/pagelines.svg | 1 + assets/fontawesome/svgs/brands/palfed.svg | 1 + assets/fontawesome/svgs/brands/patreon.svg | 1 + assets/fontawesome/svgs/brands/paypal.svg | 1 + .../fontawesome/svgs/brands/penny-arcade.svg | 1 + assets/fontawesome/svgs/brands/perbyte.svg | 1 + assets/fontawesome/svgs/brands/periscope.svg | 1 + .../fontawesome/svgs/brands/phabricator.svg | 1 + .../svgs/brands/phoenix-framework.svg | 1 + .../svgs/brands/phoenix-squadron.svg | 1 + assets/fontawesome/svgs/brands/php.svg | 1 + .../svgs/brands/pied-piper-alt.svg | 1 + .../svgs/brands/pied-piper-hat.svg | 1 + .../fontawesome/svgs/brands/pied-piper-pp.svg | 1 + .../svgs/brands/pied-piper-square.svg | 1 + assets/fontawesome/svgs/brands/pied-piper.svg | 1 + .../fontawesome/svgs/brands/pinterest-p.svg | 1 + .../svgs/brands/pinterest-square.svg | 1 + assets/fontawesome/svgs/brands/pinterest.svg | 1 + .../fontawesome/svgs/brands/playstation.svg | 1 + .../fontawesome/svgs/brands/product-hunt.svg | 1 + assets/fontawesome/svgs/brands/pushed.svg | 1 + assets/fontawesome/svgs/brands/python.svg | 1 + assets/fontawesome/svgs/brands/qq.svg | 1 + assets/fontawesome/svgs/brands/quinscape.svg | 1 + assets/fontawesome/svgs/brands/quora.svg | 1 + assets/fontawesome/svgs/brands/r-project.svg | 1 + .../fontawesome/svgs/brands/raspberry-pi.svg | 1 + assets/fontawesome/svgs/brands/ravelry.svg | 1 + assets/fontawesome/svgs/brands/react.svg | 1 + .../fontawesome/svgs/brands/reacteurope.svg | 1 + assets/fontawesome/svgs/brands/readme.svg | 1 + assets/fontawesome/svgs/brands/rebel.svg | 1 + assets/fontawesome/svgs/brands/red-river.svg | 1 + .../fontawesome/svgs/brands/reddit-alien.svg | 1 + .../fontawesome/svgs/brands/reddit-square.svg | 1 + assets/fontawesome/svgs/brands/reddit.svg | 1 + assets/fontawesome/svgs/brands/redhat.svg | 1 + assets/fontawesome/svgs/brands/renren.svg | 1 + assets/fontawesome/svgs/brands/replyd.svg | 1 + .../fontawesome/svgs/brands/researchgate.svg | 1 + assets/fontawesome/svgs/brands/resolving.svg | 1 + assets/fontawesome/svgs/brands/rev.svg | 1 + assets/fontawesome/svgs/brands/rocketchat.svg | 1 + assets/fontawesome/svgs/brands/rockrms.svg | 1 + assets/fontawesome/svgs/brands/rust.svg | 1 + assets/fontawesome/svgs/brands/safari.svg | 1 + assets/fontawesome/svgs/brands/salesforce.svg | 1 + assets/fontawesome/svgs/brands/sass.svg | 1 + assets/fontawesome/svgs/brands/schlix.svg | 1 + assets/fontawesome/svgs/brands/scribd.svg | 1 + .../fontawesome/svgs/brands/searchengin.svg | 1 + assets/fontawesome/svgs/brands/sellcast.svg | 1 + assets/fontawesome/svgs/brands/sellsy.svg | 1 + .../fontawesome/svgs/brands/servicestack.svg | 1 + .../fontawesome/svgs/brands/shirtsinbulk.svg | 1 + assets/fontawesome/svgs/brands/shopify.svg | 1 + assets/fontawesome/svgs/brands/shopware.svg | 1 + .../fontawesome/svgs/brands/simplybuilt.svg | 1 + assets/fontawesome/svgs/brands/sistrix.svg | 1 + assets/fontawesome/svgs/brands/sith.svg | 1 + assets/fontawesome/svgs/brands/sketch.svg | 1 + assets/fontawesome/svgs/brands/skyatlas.svg | 1 + assets/fontawesome/svgs/brands/skype.svg | 1 + assets/fontawesome/svgs/brands/slack-hash.svg | 1 + assets/fontawesome/svgs/brands/slack.svg | 1 + assets/fontawesome/svgs/brands/slideshare.svg | 1 + .../svgs/brands/snapchat-ghost.svg | 1 + .../svgs/brands/snapchat-square.svg | 1 + assets/fontawesome/svgs/brands/snapchat.svg | 1 + assets/fontawesome/svgs/brands/soundcloud.svg | 1 + assets/fontawesome/svgs/brands/sourcetree.svg | 1 + assets/fontawesome/svgs/brands/speakap.svg | 1 + .../fontawesome/svgs/brands/speaker-deck.svg | 1 + assets/fontawesome/svgs/brands/spotify.svg | 1 + .../fontawesome/svgs/brands/squarespace.svg | 1 + .../svgs/brands/stack-exchange.svg | 1 + .../svgs/brands/stack-overflow.svg | 1 + assets/fontawesome/svgs/brands/stackpath.svg | 1 + assets/fontawesome/svgs/brands/staylinked.svg | 1 + .../fontawesome/svgs/brands/steam-square.svg | 1 + .../fontawesome/svgs/brands/steam-symbol.svg | 1 + assets/fontawesome/svgs/brands/steam.svg | 1 + .../fontawesome/svgs/brands/sticker-mule.svg | 1 + assets/fontawesome/svgs/brands/strava.svg | 1 + assets/fontawesome/svgs/brands/stripe-s.svg | 1 + assets/fontawesome/svgs/brands/stripe.svg | 1 + .../fontawesome/svgs/brands/studiovinari.svg | 1 + .../svgs/brands/stumbleupon-circle.svg | 1 + .../fontawesome/svgs/brands/stumbleupon.svg | 1 + .../fontawesome/svgs/brands/superpowers.svg | 1 + assets/fontawesome/svgs/brands/supple.svg | 1 + assets/fontawesome/svgs/brands/suse.svg | 1 + assets/fontawesome/svgs/brands/swift.svg | 1 + assets/fontawesome/svgs/brands/symfony.svg | 1 + assets/fontawesome/svgs/brands/teamspeak.svg | 1 + .../svgs/brands/telegram-plane.svg | 1 + assets/fontawesome/svgs/brands/telegram.svg | 1 + .../fontawesome/svgs/brands/tencent-weibo.svg | 1 + .../fontawesome/svgs/brands/the-red-yeti.svg | 1 + assets/fontawesome/svgs/brands/themeco.svg | 1 + assets/fontawesome/svgs/brands/themeisle.svg | 1 + .../fontawesome/svgs/brands/think-peaks.svg | 1 + assets/fontawesome/svgs/brands/tiktok.svg | 1 + .../svgs/brands/trade-federation.svg | 1 + assets/fontawesome/svgs/brands/trello.svg | 1 + .../fontawesome/svgs/brands/tripadvisor.svg | 1 + .../fontawesome/svgs/brands/tumblr-square.svg | 1 + assets/fontawesome/svgs/brands/tumblr.svg | 1 + assets/fontawesome/svgs/brands/twitch.svg | 1 + .../svgs/brands/twitter-square.svg | 1 + assets/fontawesome/svgs/brands/twitter.svg | 1 + assets/fontawesome/svgs/brands/typo3.svg | 1 + assets/fontawesome/svgs/brands/uber.svg | 1 + assets/fontawesome/svgs/brands/ubuntu.svg | 1 + assets/fontawesome/svgs/brands/uikit.svg | 1 + assets/fontawesome/svgs/brands/umbraco.svg | 1 + assets/fontawesome/svgs/brands/uncharted.svg | 1 + .../fontawesome/svgs/brands/uniregistry.svg | 1 + assets/fontawesome/svgs/brands/unity.svg | 1 + assets/fontawesome/svgs/brands/unsplash.svg | 1 + assets/fontawesome/svgs/brands/untappd.svg | 1 + assets/fontawesome/svgs/brands/ups.svg | 1 + assets/fontawesome/svgs/brands/usb.svg | 1 + assets/fontawesome/svgs/brands/usps.svg | 1 + assets/fontawesome/svgs/brands/ussunnah.svg | 1 + assets/fontawesome/svgs/brands/vaadin.svg | 1 + assets/fontawesome/svgs/brands/viacoin.svg | 1 + .../fontawesome/svgs/brands/viadeo-square.svg | 1 + assets/fontawesome/svgs/brands/viadeo.svg | 1 + assets/fontawesome/svgs/brands/viber.svg | 1 + .../fontawesome/svgs/brands/vimeo-square.svg | 1 + assets/fontawesome/svgs/brands/vimeo-v.svg | 1 + assets/fontawesome/svgs/brands/vimeo.svg | 1 + assets/fontawesome/svgs/brands/vine.svg | 1 + assets/fontawesome/svgs/brands/vk.svg | 1 + assets/fontawesome/svgs/brands/vnv.svg | 1 + assets/fontawesome/svgs/brands/vuejs.svg | 1 + .../svgs/brands/watchman-monitoring.svg | 1 + assets/fontawesome/svgs/brands/waze.svg | 1 + assets/fontawesome/svgs/brands/weebly.svg | 1 + assets/fontawesome/svgs/brands/weibo.svg | 1 + assets/fontawesome/svgs/brands/weixin.svg | 1 + .../svgs/brands/whatsapp-square.svg | 1 + assets/fontawesome/svgs/brands/whatsapp.svg | 1 + assets/fontawesome/svgs/brands/whmcs.svg | 1 + .../fontawesome/svgs/brands/wikipedia-w.svg | 1 + assets/fontawesome/svgs/brands/windows.svg | 1 + assets/fontawesome/svgs/brands/wix.svg | 1 + .../svgs/brands/wizards-of-the-coast.svg | 1 + assets/fontawesome/svgs/brands/wodu.svg | 1 + .../svgs/brands/wolf-pack-battalion.svg | 1 + .../svgs/brands/wordpress-simple.svg | 1 + assets/fontawesome/svgs/brands/wordpress.svg | 1 + assets/fontawesome/svgs/brands/wpbeginner.svg | 1 + assets/fontawesome/svgs/brands/wpexplorer.svg | 1 + assets/fontawesome/svgs/brands/wpforms.svg | 1 + assets/fontawesome/svgs/brands/wpressr.svg | 1 + assets/fontawesome/svgs/brands/xbox.svg | 1 + .../fontawesome/svgs/brands/xing-square.svg | 1 + assets/fontawesome/svgs/brands/xing.svg | 1 + .../fontawesome/svgs/brands/y-combinator.svg | 1 + assets/fontawesome/svgs/brands/yahoo.svg | 1 + assets/fontawesome/svgs/brands/yammer.svg | 1 + .../svgs/brands/yandex-international.svg | 1 + assets/fontawesome/svgs/brands/yandex.svg | 1 + assets/fontawesome/svgs/brands/yarn.svg | 1 + assets/fontawesome/svgs/brands/yelp.svg | 1 + assets/fontawesome/svgs/brands/yoast.svg | 1 + .../svgs/brands/youtube-square.svg | 1 + assets/fontawesome/svgs/brands/youtube.svg | 1 + assets/fontawesome/svgs/brands/zhihu.svg | 1 + .../fontawesome/svgs/regular/address-book.svg | 1 + .../fontawesome/svgs/regular/address-card.svg | 1 + assets/fontawesome/svgs/regular/angry.svg | 1 + .../svgs/regular/arrow-alt-circle-down.svg | 1 + .../svgs/regular/arrow-alt-circle-left.svg | 1 + .../svgs/regular/arrow-alt-circle-right.svg | 1 + .../svgs/regular/arrow-alt-circle-up.svg | 1 + .../fontawesome/svgs/regular/bell-slash.svg | 1 + assets/fontawesome/svgs/regular/bell.svg | 1 + assets/fontawesome/svgs/regular/bookmark.svg | 1 + assets/fontawesome/svgs/regular/building.svg | 1 + .../fontawesome/svgs/regular/calendar-alt.svg | 1 + .../svgs/regular/calendar-check.svg | 1 + .../svgs/regular/calendar-minus.svg | 1 + .../svgs/regular/calendar-plus.svg | 1 + .../svgs/regular/calendar-times.svg | 1 + assets/fontawesome/svgs/regular/calendar.svg | 1 + .../svgs/regular/caret-square-down.svg | 1 + .../svgs/regular/caret-square-left.svg | 1 + .../svgs/regular/caret-square-right.svg | 1 + .../svgs/regular/caret-square-up.svg | 1 + assets/fontawesome/svgs/regular/chart-bar.svg | 1 + .../fontawesome/svgs/regular/check-circle.svg | 1 + .../fontawesome/svgs/regular/check-square.svg | 1 + assets/fontawesome/svgs/regular/circle.svg | 1 + assets/fontawesome/svgs/regular/clipboard.svg | 1 + assets/fontawesome/svgs/regular/clock.svg | 1 + assets/fontawesome/svgs/regular/clone.svg | 1 + .../svgs/regular/closed-captioning.svg | 1 + .../fontawesome/svgs/regular/comment-alt.svg | 1 + .../fontawesome/svgs/regular/comment-dots.svg | 1 + assets/fontawesome/svgs/regular/comment.svg | 1 + assets/fontawesome/svgs/regular/comments.svg | 1 + assets/fontawesome/svgs/regular/compass.svg | 1 + assets/fontawesome/svgs/regular/copy.svg | 1 + assets/fontawesome/svgs/regular/copyright.svg | 1 + .../fontawesome/svgs/regular/credit-card.svg | 1 + assets/fontawesome/svgs/regular/dizzy.svg | 1 + .../fontawesome/svgs/regular/dot-circle.svg | 1 + assets/fontawesome/svgs/regular/edit.svg | 1 + .../svgs/regular/envelope-open.svg | 1 + assets/fontawesome/svgs/regular/envelope.svg | 1 + assets/fontawesome/svgs/regular/eye-slash.svg | 1 + assets/fontawesome/svgs/regular/eye.svg | 1 + assets/fontawesome/svgs/regular/file-alt.svg | 1 + .../fontawesome/svgs/regular/file-archive.svg | 1 + .../fontawesome/svgs/regular/file-audio.svg | 1 + assets/fontawesome/svgs/regular/file-code.svg | 1 + .../fontawesome/svgs/regular/file-excel.svg | 1 + .../fontawesome/svgs/regular/file-image.svg | 1 + assets/fontawesome/svgs/regular/file-pdf.svg | 1 + .../svgs/regular/file-powerpoint.svg | 1 + .../fontawesome/svgs/regular/file-video.svg | 1 + assets/fontawesome/svgs/regular/file-word.svg | 1 + assets/fontawesome/svgs/regular/file.svg | 1 + assets/fontawesome/svgs/regular/flag.svg | 1 + assets/fontawesome/svgs/regular/flushed.svg | 1 + .../fontawesome/svgs/regular/folder-open.svg | 1 + assets/fontawesome/svgs/regular/folder.svg | 1 + .../svgs/regular/font-awesome-logo-full.svg | 1 + .../fontawesome/svgs/regular/frown-open.svg | 1 + assets/fontawesome/svgs/regular/frown.svg | 1 + assets/fontawesome/svgs/regular/futbol.svg | 1 + assets/fontawesome/svgs/regular/gem.svg | 1 + assets/fontawesome/svgs/regular/grimace.svg | 1 + assets/fontawesome/svgs/regular/grin-alt.svg | 1 + .../svgs/regular/grin-beam-sweat.svg | 1 + assets/fontawesome/svgs/regular/grin-beam.svg | 1 + .../fontawesome/svgs/regular/grin-hearts.svg | 1 + .../svgs/regular/grin-squint-tears.svg | 1 + .../fontawesome/svgs/regular/grin-squint.svg | 1 + .../fontawesome/svgs/regular/grin-stars.svg | 1 + .../fontawesome/svgs/regular/grin-tears.svg | 1 + .../svgs/regular/grin-tongue-squint.svg | 1 + .../svgs/regular/grin-tongue-wink.svg | 1 + .../fontawesome/svgs/regular/grin-tongue.svg | 1 + assets/fontawesome/svgs/regular/grin-wink.svg | 1 + assets/fontawesome/svgs/regular/grin.svg | 1 + .../fontawesome/svgs/regular/hand-lizard.svg | 1 + .../fontawesome/svgs/regular/hand-paper.svg | 1 + .../fontawesome/svgs/regular/hand-peace.svg | 1 + .../svgs/regular/hand-point-down.svg | 1 + .../svgs/regular/hand-point-left.svg | 1 + .../svgs/regular/hand-point-right.svg | 1 + .../svgs/regular/hand-point-up.svg | 1 + .../fontawesome/svgs/regular/hand-pointer.svg | 1 + assets/fontawesome/svgs/regular/hand-rock.svg | 1 + .../svgs/regular/hand-scissors.svg | 1 + .../fontawesome/svgs/regular/hand-spock.svg | 1 + assets/fontawesome/svgs/regular/handshake.svg | 1 + assets/fontawesome/svgs/regular/hdd.svg | 1 + assets/fontawesome/svgs/regular/heart.svg | 1 + assets/fontawesome/svgs/regular/hospital.svg | 1 + assets/fontawesome/svgs/regular/hourglass.svg | 1 + assets/fontawesome/svgs/regular/id-badge.svg | 1 + assets/fontawesome/svgs/regular/id-card.svg | 1 + assets/fontawesome/svgs/regular/image.svg | 1 + assets/fontawesome/svgs/regular/images.svg | 1 + assets/fontawesome/svgs/regular/keyboard.svg | 1 + assets/fontawesome/svgs/regular/kiss-beam.svg | 1 + .../svgs/regular/kiss-wink-heart.svg | 1 + assets/fontawesome/svgs/regular/kiss.svg | 1 + .../fontawesome/svgs/regular/laugh-beam.svg | 1 + .../fontawesome/svgs/regular/laugh-squint.svg | 1 + .../fontawesome/svgs/regular/laugh-wink.svg | 1 + assets/fontawesome/svgs/regular/laugh.svg | 1 + assets/fontawesome/svgs/regular/lemon.svg | 1 + assets/fontawesome/svgs/regular/life-ring.svg | 1 + assets/fontawesome/svgs/regular/lightbulb.svg | 1 + assets/fontawesome/svgs/regular/list-alt.svg | 1 + assets/fontawesome/svgs/regular/map.svg | 1 + assets/fontawesome/svgs/regular/meh-blank.svg | 1 + .../svgs/regular/meh-rolling-eyes.svg | 1 + assets/fontawesome/svgs/regular/meh.svg | 1 + .../fontawesome/svgs/regular/minus-square.svg | 1 + .../svgs/regular/money-bill-alt.svg | 1 + assets/fontawesome/svgs/regular/moon.svg | 1 + assets/fontawesome/svgs/regular/newspaper.svg | 1 + .../fontawesome/svgs/regular/object-group.svg | 1 + .../svgs/regular/object-ungroup.svg | 1 + .../fontawesome/svgs/regular/paper-plane.svg | 1 + .../fontawesome/svgs/regular/pause-circle.svg | 1 + .../fontawesome/svgs/regular/play-circle.svg | 1 + .../fontawesome/svgs/regular/plus-square.svg | 1 + .../svgs/regular/question-circle.svg | 1 + .../fontawesome/svgs/regular/registered.svg | 1 + assets/fontawesome/svgs/regular/sad-cry.svg | 1 + assets/fontawesome/svgs/regular/sad-tear.svg | 1 + assets/fontawesome/svgs/regular/save.svg | 1 + .../fontawesome/svgs/regular/share-square.svg | 1 + .../fontawesome/svgs/regular/smile-beam.svg | 1 + .../fontawesome/svgs/regular/smile-wink.svg | 1 + assets/fontawesome/svgs/regular/smile.svg | 1 + assets/fontawesome/svgs/regular/snowflake.svg | 1 + assets/fontawesome/svgs/regular/square.svg | 1 + assets/fontawesome/svgs/regular/star-half.svg | 1 + assets/fontawesome/svgs/regular/star.svg | 1 + .../fontawesome/svgs/regular/sticky-note.svg | 1 + .../fontawesome/svgs/regular/stop-circle.svg | 1 + assets/fontawesome/svgs/regular/sun.svg | 1 + assets/fontawesome/svgs/regular/surprise.svg | 1 + .../fontawesome/svgs/regular/thumbs-down.svg | 1 + assets/fontawesome/svgs/regular/thumbs-up.svg | 1 + .../fontawesome/svgs/regular/times-circle.svg | 1 + assets/fontawesome/svgs/regular/tired.svg | 1 + assets/fontawesome/svgs/regular/trash-alt.svg | 1 + .../fontawesome/svgs/regular/user-circle.svg | 1 + assets/fontawesome/svgs/regular/user.svg | 1 + .../fontawesome/svgs/regular/window-close.svg | 1 + .../svgs/regular/window-maximize.svg | 1 + .../svgs/regular/window-minimize.svg | 1 + .../svgs/regular/window-restore.svg | 1 + assets/fontawesome/svgs/solid/ad.svg | 1 + .../fontawesome/svgs/solid/address-book.svg | 1 + .../fontawesome/svgs/solid/address-card.svg | 1 + assets/fontawesome/svgs/solid/adjust.svg | 1 + .../fontawesome/svgs/solid/air-freshener.svg | 1 + .../fontawesome/svgs/solid/align-center.svg | 1 + .../fontawesome/svgs/solid/align-justify.svg | 1 + assets/fontawesome/svgs/solid/align-left.svg | 1 + assets/fontawesome/svgs/solid/align-right.svg | 1 + assets/fontawesome/svgs/solid/allergies.svg | 1 + assets/fontawesome/svgs/solid/ambulance.svg | 1 + .../american-sign-language-interpreting.svg | 1 + assets/fontawesome/svgs/solid/anchor.svg | 1 + .../svgs/solid/angle-double-down.svg | 1 + .../svgs/solid/angle-double-left.svg | 1 + .../svgs/solid/angle-double-right.svg | 1 + .../svgs/solid/angle-double-up.svg | 1 + assets/fontawesome/svgs/solid/angle-down.svg | 1 + assets/fontawesome/svgs/solid/angle-left.svg | 1 + assets/fontawesome/svgs/solid/angle-right.svg | 1 + assets/fontawesome/svgs/solid/angle-up.svg | 1 + assets/fontawesome/svgs/solid/angry.svg | 1 + assets/fontawesome/svgs/solid/ankh.svg | 1 + assets/fontawesome/svgs/solid/apple-alt.svg | 1 + assets/fontawesome/svgs/solid/archive.svg | 1 + assets/fontawesome/svgs/solid/archway.svg | 1 + .../svgs/solid/arrow-alt-circle-down.svg | 1 + .../svgs/solid/arrow-alt-circle-left.svg | 1 + .../svgs/solid/arrow-alt-circle-right.svg | 1 + .../svgs/solid/arrow-alt-circle-up.svg | 1 + .../svgs/solid/arrow-circle-down.svg | 1 + .../svgs/solid/arrow-circle-left.svg | 1 + .../svgs/solid/arrow-circle-right.svg | 1 + .../svgs/solid/arrow-circle-up.svg | 1 + assets/fontawesome/svgs/solid/arrow-down.svg | 1 + assets/fontawesome/svgs/solid/arrow-left.svg | 1 + assets/fontawesome/svgs/solid/arrow-right.svg | 1 + assets/fontawesome/svgs/solid/arrow-up.svg | 1 + .../fontawesome/svgs/solid/arrows-alt-h.svg | 1 + .../fontawesome/svgs/solid/arrows-alt-v.svg | 1 + assets/fontawesome/svgs/solid/arrows-alt.svg | 1 + .../solid/assistive-listening-systems.svg | 1 + assets/fontawesome/svgs/solid/asterisk.svg | 1 + assets/fontawesome/svgs/solid/at.svg | 1 + assets/fontawesome/svgs/solid/atlas.svg | 1 + assets/fontawesome/svgs/solid/atom.svg | 1 + .../svgs/solid/audio-description.svg | 1 + assets/fontawesome/svgs/solid/award.svg | 1 + .../fontawesome/svgs/solid/baby-carriage.svg | 1 + assets/fontawesome/svgs/solid/baby.svg | 1 + assets/fontawesome/svgs/solid/backspace.svg | 1 + assets/fontawesome/svgs/solid/backward.svg | 1 + assets/fontawesome/svgs/solid/bacon.svg | 1 + assets/fontawesome/svgs/solid/bacteria.svg | 1 + assets/fontawesome/svgs/solid/bacterium.svg | 1 + assets/fontawesome/svgs/solid/bahai.svg | 1 + .../svgs/solid/balance-scale-left.svg | 1 + .../svgs/solid/balance-scale-right.svg | 1 + .../fontawesome/svgs/solid/balance-scale.svg | 1 + assets/fontawesome/svgs/solid/ban.svg | 1 + assets/fontawesome/svgs/solid/band-aid.svg | 1 + assets/fontawesome/svgs/solid/barcode.svg | 1 + assets/fontawesome/svgs/solid/bars.svg | 1 + .../fontawesome/svgs/solid/baseball-ball.svg | 1 + .../svgs/solid/basketball-ball.svg | 1 + assets/fontawesome/svgs/solid/bath.svg | 1 + .../fontawesome/svgs/solid/battery-empty.svg | 1 + .../fontawesome/svgs/solid/battery-full.svg | 1 + .../fontawesome/svgs/solid/battery-half.svg | 1 + .../svgs/solid/battery-quarter.svg | 1 + .../svgs/solid/battery-three-quarters.svg | 1 + assets/fontawesome/svgs/solid/bed.svg | 1 + assets/fontawesome/svgs/solid/beer.svg | 1 + assets/fontawesome/svgs/solid/bell-slash.svg | 1 + assets/fontawesome/svgs/solid/bell.svg | 1 + .../fontawesome/svgs/solid/bezier-curve.svg | 1 + assets/fontawesome/svgs/solid/bible.svg | 1 + assets/fontawesome/svgs/solid/bicycle.svg | 1 + assets/fontawesome/svgs/solid/biking.svg | 1 + assets/fontawesome/svgs/solid/binoculars.svg | 1 + assets/fontawesome/svgs/solid/biohazard.svg | 1 + .../fontawesome/svgs/solid/birthday-cake.svg | 1 + .../fontawesome/svgs/solid/blender-phone.svg | 1 + assets/fontawesome/svgs/solid/blender.svg | 1 + assets/fontawesome/svgs/solid/blind.svg | 1 + assets/fontawesome/svgs/solid/blog.svg | 1 + assets/fontawesome/svgs/solid/bold.svg | 1 + assets/fontawesome/svgs/solid/bolt.svg | 1 + assets/fontawesome/svgs/solid/bomb.svg | 1 + assets/fontawesome/svgs/solid/bone.svg | 1 + assets/fontawesome/svgs/solid/bong.svg | 1 + assets/fontawesome/svgs/solid/book-dead.svg | 1 + .../fontawesome/svgs/solid/book-medical.svg | 1 + assets/fontawesome/svgs/solid/book-open.svg | 1 + assets/fontawesome/svgs/solid/book-reader.svg | 1 + assets/fontawesome/svgs/solid/book.svg | 1 + assets/fontawesome/svgs/solid/bookmark.svg | 1 + assets/fontawesome/svgs/solid/border-all.svg | 1 + assets/fontawesome/svgs/solid/border-none.svg | 1 + .../fontawesome/svgs/solid/border-style.svg | 1 + .../fontawesome/svgs/solid/bowling-ball.svg | 1 + assets/fontawesome/svgs/solid/box-open.svg | 1 + assets/fontawesome/svgs/solid/box-tissue.svg | 1 + assets/fontawesome/svgs/solid/box.svg | 1 + assets/fontawesome/svgs/solid/boxes.svg | 1 + assets/fontawesome/svgs/solid/braille.svg | 1 + assets/fontawesome/svgs/solid/brain.svg | 1 + assets/fontawesome/svgs/solid/bread-slice.svg | 1 + .../svgs/solid/briefcase-medical.svg | 1 + assets/fontawesome/svgs/solid/briefcase.svg | 1 + .../svgs/solid/broadcast-tower.svg | 1 + assets/fontawesome/svgs/solid/broom.svg | 1 + assets/fontawesome/svgs/solid/brush.svg | 1 + assets/fontawesome/svgs/solid/bug.svg | 1 + assets/fontawesome/svgs/solid/building.svg | 1 + assets/fontawesome/svgs/solid/bullhorn.svg | 1 + assets/fontawesome/svgs/solid/bullseye.svg | 1 + assets/fontawesome/svgs/solid/burn.svg | 1 + assets/fontawesome/svgs/solid/bus-alt.svg | 1 + assets/fontawesome/svgs/solid/bus.svg | 1 + .../fontawesome/svgs/solid/business-time.svg | 1 + assets/fontawesome/svgs/solid/calculator.svg | 1 + .../fontawesome/svgs/solid/calendar-alt.svg | 1 + .../fontawesome/svgs/solid/calendar-check.svg | 1 + .../fontawesome/svgs/solid/calendar-day.svg | 1 + .../fontawesome/svgs/solid/calendar-minus.svg | 1 + .../fontawesome/svgs/solid/calendar-plus.svg | 1 + .../fontawesome/svgs/solid/calendar-times.svg | 1 + .../fontawesome/svgs/solid/calendar-week.svg | 1 + assets/fontawesome/svgs/solid/calendar.svg | 1 + .../fontawesome/svgs/solid/camera-retro.svg | 1 + assets/fontawesome/svgs/solid/camera.svg | 1 + assets/fontawesome/svgs/solid/campground.svg | 1 + assets/fontawesome/svgs/solid/candy-cane.svg | 1 + assets/fontawesome/svgs/solid/cannabis.svg | 1 + assets/fontawesome/svgs/solid/capsules.svg | 1 + assets/fontawesome/svgs/solid/car-alt.svg | 1 + assets/fontawesome/svgs/solid/car-battery.svg | 1 + assets/fontawesome/svgs/solid/car-crash.svg | 1 + assets/fontawesome/svgs/solid/car-side.svg | 1 + assets/fontawesome/svgs/solid/car.svg | 1 + assets/fontawesome/svgs/solid/caravan.svg | 1 + assets/fontawesome/svgs/solid/caret-down.svg | 1 + assets/fontawesome/svgs/solid/caret-left.svg | 1 + assets/fontawesome/svgs/solid/caret-right.svg | 1 + .../svgs/solid/caret-square-down.svg | 1 + .../svgs/solid/caret-square-left.svg | 1 + .../svgs/solid/caret-square-right.svg | 1 + .../svgs/solid/caret-square-up.svg | 1 + assets/fontawesome/svgs/solid/caret-up.svg | 1 + assets/fontawesome/svgs/solid/carrot.svg | 1 + .../svgs/solid/cart-arrow-down.svg | 1 + assets/fontawesome/svgs/solid/cart-plus.svg | 1 + .../fontawesome/svgs/solid/cash-register.svg | 1 + assets/fontawesome/svgs/solid/cat.svg | 1 + assets/fontawesome/svgs/solid/certificate.svg | 1 + assets/fontawesome/svgs/solid/chair.svg | 1 + .../svgs/solid/chalkboard-teacher.svg | 1 + assets/fontawesome/svgs/solid/chalkboard.svg | 1 + .../svgs/solid/charging-station.svg | 1 + assets/fontawesome/svgs/solid/chart-area.svg | 1 + assets/fontawesome/svgs/solid/chart-bar.svg | 1 + assets/fontawesome/svgs/solid/chart-line.svg | 1 + assets/fontawesome/svgs/solid/chart-pie.svg | 1 + .../fontawesome/svgs/solid/check-circle.svg | 1 + .../fontawesome/svgs/solid/check-double.svg | 1 + .../fontawesome/svgs/solid/check-square.svg | 1 + assets/fontawesome/svgs/solid/check.svg | 1 + assets/fontawesome/svgs/solid/cheese.svg | 1 + .../fontawesome/svgs/solid/chess-bishop.svg | 1 + assets/fontawesome/svgs/solid/chess-board.svg | 1 + assets/fontawesome/svgs/solid/chess-king.svg | 1 + .../fontawesome/svgs/solid/chess-knight.svg | 1 + assets/fontawesome/svgs/solid/chess-pawn.svg | 1 + assets/fontawesome/svgs/solid/chess-queen.svg | 1 + assets/fontawesome/svgs/solid/chess-rook.svg | 1 + assets/fontawesome/svgs/solid/chess.svg | 1 + .../svgs/solid/chevron-circle-down.svg | 1 + .../svgs/solid/chevron-circle-left.svg | 1 + .../svgs/solid/chevron-circle-right.svg | 1 + .../svgs/solid/chevron-circle-up.svg | 1 + .../fontawesome/svgs/solid/chevron-down.svg | 1 + .../fontawesome/svgs/solid/chevron-left.svg | 1 + .../fontawesome/svgs/solid/chevron-right.svg | 1 + assets/fontawesome/svgs/solid/chevron-up.svg | 1 + assets/fontawesome/svgs/solid/child.svg | 1 + assets/fontawesome/svgs/solid/church.svg | 1 + .../fontawesome/svgs/solid/circle-notch.svg | 1 + assets/fontawesome/svgs/solid/circle.svg | 1 + assets/fontawesome/svgs/solid/city.svg | 1 + .../fontawesome/svgs/solid/clinic-medical.svg | 1 + .../svgs/solid/clipboard-check.svg | 1 + .../fontawesome/svgs/solid/clipboard-list.svg | 1 + assets/fontawesome/svgs/solid/clipboard.svg | 1 + assets/fontawesome/svgs/solid/clock.svg | 1 + assets/fontawesome/svgs/solid/clone.svg | 1 + .../svgs/solid/closed-captioning.svg | 1 + .../svgs/solid/cloud-download-alt.svg | 1 + .../fontawesome/svgs/solid/cloud-meatball.svg | 1 + .../svgs/solid/cloud-moon-rain.svg | 1 + assets/fontawesome/svgs/solid/cloud-moon.svg | 1 + assets/fontawesome/svgs/solid/cloud-rain.svg | 1 + .../svgs/solid/cloud-showers-heavy.svg | 1 + .../fontawesome/svgs/solid/cloud-sun-rain.svg | 1 + assets/fontawesome/svgs/solid/cloud-sun.svg | 1 + .../svgs/solid/cloud-upload-alt.svg | 1 + assets/fontawesome/svgs/solid/cloud.svg | 1 + assets/fontawesome/svgs/solid/cocktail.svg | 1 + assets/fontawesome/svgs/solid/code-branch.svg | 1 + assets/fontawesome/svgs/solid/code.svg | 1 + assets/fontawesome/svgs/solid/coffee.svg | 1 + assets/fontawesome/svgs/solid/cog.svg | 1 + assets/fontawesome/svgs/solid/cogs.svg | 1 + assets/fontawesome/svgs/solid/coins.svg | 1 + assets/fontawesome/svgs/solid/columns.svg | 1 + assets/fontawesome/svgs/solid/comment-alt.svg | 1 + .../fontawesome/svgs/solid/comment-dollar.svg | 1 + .../fontawesome/svgs/solid/comment-dots.svg | 1 + .../svgs/solid/comment-medical.svg | 1 + .../fontawesome/svgs/solid/comment-slash.svg | 1 + assets/fontawesome/svgs/solid/comment.svg | 1 + .../svgs/solid/comments-dollar.svg | 1 + assets/fontawesome/svgs/solid/comments.svg | 1 + .../fontawesome/svgs/solid/compact-disc.svg | 1 + assets/fontawesome/svgs/solid/compass.svg | 1 + .../fontawesome/svgs/solid/compress-alt.svg | 1 + .../svgs/solid/compress-arrows-alt.svg | 1 + assets/fontawesome/svgs/solid/compress.svg | 1 + .../fontawesome/svgs/solid/concierge-bell.svg | 1 + assets/fontawesome/svgs/solid/cookie-bite.svg | 1 + assets/fontawesome/svgs/solid/cookie.svg | 1 + assets/fontawesome/svgs/solid/copy.svg | 1 + assets/fontawesome/svgs/solid/copyright.svg | 1 + assets/fontawesome/svgs/solid/couch.svg | 1 + assets/fontawesome/svgs/solid/credit-card.svg | 1 + assets/fontawesome/svgs/solid/crop-alt.svg | 1 + assets/fontawesome/svgs/solid/crop.svg | 1 + assets/fontawesome/svgs/solid/cross.svg | 1 + assets/fontawesome/svgs/solid/crosshairs.svg | 1 + assets/fontawesome/svgs/solid/crow.svg | 1 + assets/fontawesome/svgs/solid/crown.svg | 1 + assets/fontawesome/svgs/solid/crutch.svg | 1 + assets/fontawesome/svgs/solid/cube.svg | 1 + assets/fontawesome/svgs/solid/cubes.svg | 1 + assets/fontawesome/svgs/solid/cut.svg | 1 + assets/fontawesome/svgs/solid/database.svg | 1 + assets/fontawesome/svgs/solid/deaf.svg | 1 + assets/fontawesome/svgs/solid/democrat.svg | 1 + assets/fontawesome/svgs/solid/desktop.svg | 1 + .../fontawesome/svgs/solid/dharmachakra.svg | 1 + assets/fontawesome/svgs/solid/diagnoses.svg | 1 + assets/fontawesome/svgs/solid/dice-d20.svg | 1 + assets/fontawesome/svgs/solid/dice-d6.svg | 1 + assets/fontawesome/svgs/solid/dice-five.svg | 1 + assets/fontawesome/svgs/solid/dice-four.svg | 1 + assets/fontawesome/svgs/solid/dice-one.svg | 1 + assets/fontawesome/svgs/solid/dice-six.svg | 1 + assets/fontawesome/svgs/solid/dice-three.svg | 1 + assets/fontawesome/svgs/solid/dice-two.svg | 1 + assets/fontawesome/svgs/solid/dice.svg | 1 + .../svgs/solid/digital-tachograph.svg | 1 + assets/fontawesome/svgs/solid/directions.svg | 1 + assets/fontawesome/svgs/solid/disease.svg | 1 + assets/fontawesome/svgs/solid/divide.svg | 1 + assets/fontawesome/svgs/solid/dizzy.svg | 1 + assets/fontawesome/svgs/solid/dna.svg | 1 + assets/fontawesome/svgs/solid/dog.svg | 1 + assets/fontawesome/svgs/solid/dollar-sign.svg | 1 + .../fontawesome/svgs/solid/dolly-flatbed.svg | 1 + assets/fontawesome/svgs/solid/dolly.svg | 1 + assets/fontawesome/svgs/solid/donate.svg | 1 + assets/fontawesome/svgs/solid/door-closed.svg | 1 + assets/fontawesome/svgs/solid/door-open.svg | 1 + assets/fontawesome/svgs/solid/dot-circle.svg | 1 + assets/fontawesome/svgs/solid/dove.svg | 1 + assets/fontawesome/svgs/solid/download.svg | 1 + .../svgs/solid/drafting-compass.svg | 1 + assets/fontawesome/svgs/solid/dragon.svg | 1 + .../fontawesome/svgs/solid/draw-polygon.svg | 1 + .../fontawesome/svgs/solid/drum-steelpan.svg | 1 + assets/fontawesome/svgs/solid/drum.svg | 1 + .../fontawesome/svgs/solid/drumstick-bite.svg | 1 + assets/fontawesome/svgs/solid/dumbbell.svg | 1 + .../fontawesome/svgs/solid/dumpster-fire.svg | 1 + assets/fontawesome/svgs/solid/dumpster.svg | 1 + assets/fontawesome/svgs/solid/dungeon.svg | 1 + assets/fontawesome/svgs/solid/edit.svg | 1 + assets/fontawesome/svgs/solid/egg.svg | 1 + assets/fontawesome/svgs/solid/eject.svg | 1 + assets/fontawesome/svgs/solid/ellipsis-h.svg | 1 + assets/fontawesome/svgs/solid/ellipsis-v.svg | 1 + .../svgs/solid/envelope-open-text.svg | 1 + .../fontawesome/svgs/solid/envelope-open.svg | 1 + .../svgs/solid/envelope-square.svg | 1 + assets/fontawesome/svgs/solid/envelope.svg | 1 + assets/fontawesome/svgs/solid/equals.svg | 1 + assets/fontawesome/svgs/solid/eraser.svg | 1 + assets/fontawesome/svgs/solid/ethernet.svg | 1 + assets/fontawesome/svgs/solid/euro-sign.svg | 1 + .../fontawesome/svgs/solid/exchange-alt.svg | 1 + .../svgs/solid/exclamation-circle.svg | 1 + .../svgs/solid/exclamation-triangle.svg | 1 + assets/fontawesome/svgs/solid/exclamation.svg | 1 + assets/fontawesome/svgs/solid/expand-alt.svg | 1 + .../svgs/solid/expand-arrows-alt.svg | 1 + assets/fontawesome/svgs/solid/expand.svg | 1 + .../svgs/solid/external-link-alt.svg | 1 + .../svgs/solid/external-link-square-alt.svg | 1 + assets/fontawesome/svgs/solid/eye-dropper.svg | 1 + assets/fontawesome/svgs/solid/eye-slash.svg | 1 + assets/fontawesome/svgs/solid/eye.svg | 1 + assets/fontawesome/svgs/solid/fan.svg | 1 + .../fontawesome/svgs/solid/fast-backward.svg | 1 + .../fontawesome/svgs/solid/fast-forward.svg | 1 + assets/fontawesome/svgs/solid/faucet.svg | 1 + assets/fontawesome/svgs/solid/fax.svg | 1 + assets/fontawesome/svgs/solid/feather-alt.svg | 1 + assets/fontawesome/svgs/solid/feather.svg | 1 + assets/fontawesome/svgs/solid/female.svg | 1 + assets/fontawesome/svgs/solid/fighter-jet.svg | 1 + assets/fontawesome/svgs/solid/file-alt.svg | 1 + .../fontawesome/svgs/solid/file-archive.svg | 1 + assets/fontawesome/svgs/solid/file-audio.svg | 1 + assets/fontawesome/svgs/solid/file-code.svg | 1 + .../fontawesome/svgs/solid/file-contract.svg | 1 + assets/fontawesome/svgs/solid/file-csv.svg | 1 + .../fontawesome/svgs/solid/file-download.svg | 1 + assets/fontawesome/svgs/solid/file-excel.svg | 1 + assets/fontawesome/svgs/solid/file-export.svg | 1 + assets/fontawesome/svgs/solid/file-image.svg | 1 + assets/fontawesome/svgs/solid/file-import.svg | 1 + .../svgs/solid/file-invoice-dollar.svg | 1 + .../fontawesome/svgs/solid/file-invoice.svg | 1 + .../svgs/solid/file-medical-alt.svg | 1 + .../fontawesome/svgs/solid/file-medical.svg | 1 + assets/fontawesome/svgs/solid/file-pdf.svg | 1 + .../svgs/solid/file-powerpoint.svg | 1 + .../svgs/solid/file-prescription.svg | 1 + .../fontawesome/svgs/solid/file-signature.svg | 1 + assets/fontawesome/svgs/solid/file-upload.svg | 1 + assets/fontawesome/svgs/solid/file-video.svg | 1 + assets/fontawesome/svgs/solid/file-word.svg | 1 + assets/fontawesome/svgs/solid/file.svg | 1 + assets/fontawesome/svgs/solid/fill-drip.svg | 1 + assets/fontawesome/svgs/solid/fill.svg | 1 + assets/fontawesome/svgs/solid/film.svg | 1 + assets/fontawesome/svgs/solid/filter.svg | 1 + assets/fontawesome/svgs/solid/fingerprint.svg | 1 + assets/fontawesome/svgs/solid/fire-alt.svg | 1 + .../svgs/solid/fire-extinguisher.svg | 1 + assets/fontawesome/svgs/solid/fire.svg | 1 + assets/fontawesome/svgs/solid/first-aid.svg | 1 + assets/fontawesome/svgs/solid/fish.svg | 1 + assets/fontawesome/svgs/solid/fist-raised.svg | 1 + .../fontawesome/svgs/solid/flag-checkered.svg | 1 + assets/fontawesome/svgs/solid/flag-usa.svg | 1 + assets/fontawesome/svgs/solid/flag.svg | 1 + assets/fontawesome/svgs/solid/flask.svg | 1 + assets/fontawesome/svgs/solid/flushed.svg | 1 + .../fontawesome/svgs/solid/folder-minus.svg | 1 + assets/fontawesome/svgs/solid/folder-open.svg | 1 + assets/fontawesome/svgs/solid/folder-plus.svg | 1 + assets/fontawesome/svgs/solid/folder.svg | 1 + .../svgs/solid/font-awesome-logo-full.svg | 1 + assets/fontawesome/svgs/solid/font.svg | 1 + .../fontawesome/svgs/solid/football-ball.svg | 1 + assets/fontawesome/svgs/solid/forward.svg | 1 + assets/fontawesome/svgs/solid/frog.svg | 1 + assets/fontawesome/svgs/solid/frown-open.svg | 1 + assets/fontawesome/svgs/solid/frown.svg | 1 + .../fontawesome/svgs/solid/funnel-dollar.svg | 1 + assets/fontawesome/svgs/solid/futbol.svg | 1 + assets/fontawesome/svgs/solid/gamepad.svg | 1 + assets/fontawesome/svgs/solid/gas-pump.svg | 1 + assets/fontawesome/svgs/solid/gavel.svg | 1 + assets/fontawesome/svgs/solid/gem.svg | 1 + assets/fontawesome/svgs/solid/genderless.svg | 1 + assets/fontawesome/svgs/solid/ghost.svg | 1 + assets/fontawesome/svgs/solid/gift.svg | 1 + assets/fontawesome/svgs/solid/gifts.svg | 1 + .../fontawesome/svgs/solid/glass-cheers.svg | 1 + .../svgs/solid/glass-martini-alt.svg | 1 + .../fontawesome/svgs/solid/glass-martini.svg | 1 + .../fontawesome/svgs/solid/glass-whiskey.svg | 1 + assets/fontawesome/svgs/solid/glasses.svg | 1 + .../fontawesome/svgs/solid/globe-africa.svg | 1 + .../fontawesome/svgs/solid/globe-americas.svg | 1 + assets/fontawesome/svgs/solid/globe-asia.svg | 1 + .../fontawesome/svgs/solid/globe-europe.svg | 1 + assets/fontawesome/svgs/solid/globe.svg | 1 + assets/fontawesome/svgs/solid/golf-ball.svg | 1 + assets/fontawesome/svgs/solid/gopuram.svg | 1 + .../fontawesome/svgs/solid/graduation-cap.svg | 1 + .../svgs/solid/greater-than-equal.svg | 1 + .../fontawesome/svgs/solid/greater-than.svg | 1 + assets/fontawesome/svgs/solid/grimace.svg | 1 + assets/fontawesome/svgs/solid/grin-alt.svg | 1 + .../svgs/solid/grin-beam-sweat.svg | 1 + assets/fontawesome/svgs/solid/grin-beam.svg | 1 + assets/fontawesome/svgs/solid/grin-hearts.svg | 1 + .../svgs/solid/grin-squint-tears.svg | 1 + assets/fontawesome/svgs/solid/grin-squint.svg | 1 + assets/fontawesome/svgs/solid/grin-stars.svg | 1 + assets/fontawesome/svgs/solid/grin-tears.svg | 1 + .../svgs/solid/grin-tongue-squint.svg | 1 + .../svgs/solid/grin-tongue-wink.svg | 1 + assets/fontawesome/svgs/solid/grin-tongue.svg | 1 + assets/fontawesome/svgs/solid/grin-wink.svg | 1 + assets/fontawesome/svgs/solid/grin.svg | 1 + .../svgs/solid/grip-horizontal.svg | 1 + .../svgs/solid/grip-lines-vertical.svg | 1 + assets/fontawesome/svgs/solid/grip-lines.svg | 1 + .../fontawesome/svgs/solid/grip-vertical.svg | 1 + assets/fontawesome/svgs/solid/guitar.svg | 1 + assets/fontawesome/svgs/solid/h-square.svg | 1 + assets/fontawesome/svgs/solid/hamburger.svg | 1 + assets/fontawesome/svgs/solid/hammer.svg | 1 + assets/fontawesome/svgs/solid/hamsa.svg | 1 + .../svgs/solid/hand-holding-heart.svg | 1 + .../svgs/solid/hand-holding-medical.svg | 1 + .../svgs/solid/hand-holding-usd.svg | 1 + .../svgs/solid/hand-holding-water.svg | 1 + .../fontawesome/svgs/solid/hand-holding.svg | 1 + assets/fontawesome/svgs/solid/hand-lizard.svg | 1 + .../svgs/solid/hand-middle-finger.svg | 1 + assets/fontawesome/svgs/solid/hand-paper.svg | 1 + assets/fontawesome/svgs/solid/hand-peace.svg | 1 + .../svgs/solid/hand-point-down.svg | 1 + .../svgs/solid/hand-point-left.svg | 1 + .../svgs/solid/hand-point-right.svg | 1 + .../fontawesome/svgs/solid/hand-point-up.svg | 1 + .../fontawesome/svgs/solid/hand-pointer.svg | 1 + assets/fontawesome/svgs/solid/hand-rock.svg | 1 + .../fontawesome/svgs/solid/hand-scissors.svg | 1 + .../fontawesome/svgs/solid/hand-sparkles.svg | 1 + assets/fontawesome/svgs/solid/hand-spock.svg | 1 + .../fontawesome/svgs/solid/hands-helping.svg | 1 + assets/fontawesome/svgs/solid/hands-wash.svg | 1 + assets/fontawesome/svgs/solid/hands.svg | 1 + .../svgs/solid/handshake-alt-slash.svg | 1 + .../svgs/solid/handshake-slash.svg | 1 + assets/fontawesome/svgs/solid/handshake.svg | 1 + assets/fontawesome/svgs/solid/hanukiah.svg | 1 + assets/fontawesome/svgs/solid/hard-hat.svg | 1 + assets/fontawesome/svgs/solid/hashtag.svg | 1 + .../svgs/solid/hat-cowboy-side.svg | 1 + assets/fontawesome/svgs/solid/hat-cowboy.svg | 1 + assets/fontawesome/svgs/solid/hat-wizard.svg | 1 + assets/fontawesome/svgs/solid/hdd.svg | 1 + .../svgs/solid/head-side-cough-slash.svg | 1 + .../svgs/solid/head-side-cough.svg | 1 + .../fontawesome/svgs/solid/head-side-mask.svg | 1 + .../svgs/solid/head-side-virus.svg | 1 + assets/fontawesome/svgs/solid/heading.svg | 1 + .../fontawesome/svgs/solid/headphones-alt.svg | 1 + assets/fontawesome/svgs/solid/headphones.svg | 1 + assets/fontawesome/svgs/solid/headset.svg | 1 + .../fontawesome/svgs/solid/heart-broken.svg | 1 + assets/fontawesome/svgs/solid/heart.svg | 1 + assets/fontawesome/svgs/solid/heartbeat.svg | 1 + assets/fontawesome/svgs/solid/helicopter.svg | 1 + assets/fontawesome/svgs/solid/highlighter.svg | 1 + assets/fontawesome/svgs/solid/hiking.svg | 1 + assets/fontawesome/svgs/solid/hippo.svg | 1 + assets/fontawesome/svgs/solid/history.svg | 1 + assets/fontawesome/svgs/solid/hockey-puck.svg | 1 + assets/fontawesome/svgs/solid/holly-berry.svg | 1 + assets/fontawesome/svgs/solid/home.svg | 1 + assets/fontawesome/svgs/solid/horse-head.svg | 1 + assets/fontawesome/svgs/solid/horse.svg | 1 + .../fontawesome/svgs/solid/hospital-alt.svg | 1 + .../svgs/solid/hospital-symbol.svg | 1 + .../fontawesome/svgs/solid/hospital-user.svg | 1 + assets/fontawesome/svgs/solid/hospital.svg | 1 + assets/fontawesome/svgs/solid/hot-tub.svg | 1 + assets/fontawesome/svgs/solid/hotdog.svg | 1 + assets/fontawesome/svgs/solid/hotel.svg | 1 + .../fontawesome/svgs/solid/hourglass-end.svg | 1 + .../fontawesome/svgs/solid/hourglass-half.svg | 1 + .../svgs/solid/hourglass-start.svg | 1 + assets/fontawesome/svgs/solid/hourglass.svg | 1 + .../fontawesome/svgs/solid/house-damage.svg | 1 + assets/fontawesome/svgs/solid/house-user.svg | 1 + assets/fontawesome/svgs/solid/hryvnia.svg | 1 + assets/fontawesome/svgs/solid/i-cursor.svg | 1 + assets/fontawesome/svgs/solid/ice-cream.svg | 1 + assets/fontawesome/svgs/solid/icicles.svg | 1 + assets/fontawesome/svgs/solid/icons.svg | 1 + assets/fontawesome/svgs/solid/id-badge.svg | 1 + assets/fontawesome/svgs/solid/id-card-alt.svg | 1 + assets/fontawesome/svgs/solid/id-card.svg | 1 + assets/fontawesome/svgs/solid/igloo.svg | 1 + assets/fontawesome/svgs/solid/image.svg | 1 + assets/fontawesome/svgs/solid/images.svg | 1 + assets/fontawesome/svgs/solid/inbox.svg | 1 + assets/fontawesome/svgs/solid/indent.svg | 1 + assets/fontawesome/svgs/solid/industry.svg | 1 + assets/fontawesome/svgs/solid/infinity.svg | 1 + assets/fontawesome/svgs/solid/info-circle.svg | 1 + assets/fontawesome/svgs/solid/info.svg | 1 + assets/fontawesome/svgs/solid/italic.svg | 1 + assets/fontawesome/svgs/solid/jedi.svg | 1 + assets/fontawesome/svgs/solid/joint.svg | 1 + .../fontawesome/svgs/solid/journal-whills.svg | 1 + assets/fontawesome/svgs/solid/kaaba.svg | 1 + assets/fontawesome/svgs/solid/key.svg | 1 + assets/fontawesome/svgs/solid/keyboard.svg | 1 + assets/fontawesome/svgs/solid/khanda.svg | 1 + assets/fontawesome/svgs/solid/kiss-beam.svg | 1 + .../svgs/solid/kiss-wink-heart.svg | 1 + assets/fontawesome/svgs/solid/kiss.svg | 1 + assets/fontawesome/svgs/solid/kiwi-bird.svg | 1 + assets/fontawesome/svgs/solid/landmark.svg | 1 + assets/fontawesome/svgs/solid/language.svg | 1 + assets/fontawesome/svgs/solid/laptop-code.svg | 1 + .../fontawesome/svgs/solid/laptop-house.svg | 1 + .../fontawesome/svgs/solid/laptop-medical.svg | 1 + assets/fontawesome/svgs/solid/laptop.svg | 1 + assets/fontawesome/svgs/solid/laugh-beam.svg | 1 + .../fontawesome/svgs/solid/laugh-squint.svg | 1 + assets/fontawesome/svgs/solid/laugh-wink.svg | 1 + assets/fontawesome/svgs/solid/laugh.svg | 1 + assets/fontawesome/svgs/solid/layer-group.svg | 1 + assets/fontawesome/svgs/solid/leaf.svg | 1 + assets/fontawesome/svgs/solid/lemon.svg | 1 + .../svgs/solid/less-than-equal.svg | 1 + assets/fontawesome/svgs/solid/less-than.svg | 1 + .../fontawesome/svgs/solid/level-down-alt.svg | 1 + .../fontawesome/svgs/solid/level-up-alt.svg | 1 + assets/fontawesome/svgs/solid/life-ring.svg | 1 + assets/fontawesome/svgs/solid/lightbulb.svg | 1 + assets/fontawesome/svgs/solid/link.svg | 1 + assets/fontawesome/svgs/solid/lira-sign.svg | 1 + assets/fontawesome/svgs/solid/list-alt.svg | 1 + assets/fontawesome/svgs/solid/list-ol.svg | 1 + assets/fontawesome/svgs/solid/list-ul.svg | 1 + assets/fontawesome/svgs/solid/list.svg | 1 + .../fontawesome/svgs/solid/location-arrow.svg | 1 + assets/fontawesome/svgs/solid/lock-open.svg | 1 + assets/fontawesome/svgs/solid/lock.svg | 1 + .../svgs/solid/long-arrow-alt-down.svg | 1 + .../svgs/solid/long-arrow-alt-left.svg | 1 + .../svgs/solid/long-arrow-alt-right.svg | 1 + .../svgs/solid/long-arrow-alt-up.svg | 1 + assets/fontawesome/svgs/solid/low-vision.svg | 1 + .../fontawesome/svgs/solid/luggage-cart.svg | 1 + assets/fontawesome/svgs/solid/lungs-virus.svg | 1 + assets/fontawesome/svgs/solid/lungs.svg | 1 + assets/fontawesome/svgs/solid/magic.svg | 1 + assets/fontawesome/svgs/solid/magnet.svg | 1 + assets/fontawesome/svgs/solid/mail-bulk.svg | 1 + assets/fontawesome/svgs/solid/male.svg | 1 + .../fontawesome/svgs/solid/map-marked-alt.svg | 1 + assets/fontawesome/svgs/solid/map-marked.svg | 1 + .../fontawesome/svgs/solid/map-marker-alt.svg | 1 + assets/fontawesome/svgs/solid/map-marker.svg | 1 + assets/fontawesome/svgs/solid/map-pin.svg | 1 + assets/fontawesome/svgs/solid/map-signs.svg | 1 + assets/fontawesome/svgs/solid/map.svg | 1 + assets/fontawesome/svgs/solid/marker.svg | 1 + assets/fontawesome/svgs/solid/mars-double.svg | 1 + .../fontawesome/svgs/solid/mars-stroke-h.svg | 1 + .../fontawesome/svgs/solid/mars-stroke-v.svg | 1 + assets/fontawesome/svgs/solid/mars-stroke.svg | 1 + assets/fontawesome/svgs/solid/mars.svg | 1 + assets/fontawesome/svgs/solid/mask.svg | 1 + assets/fontawesome/svgs/solid/medal.svg | 1 + assets/fontawesome/svgs/solid/medkit.svg | 1 + assets/fontawesome/svgs/solid/meh-blank.svg | 1 + .../svgs/solid/meh-rolling-eyes.svg | 1 + assets/fontawesome/svgs/solid/meh.svg | 1 + assets/fontawesome/svgs/solid/memory.svg | 1 + assets/fontawesome/svgs/solid/menorah.svg | 1 + assets/fontawesome/svgs/solid/mercury.svg | 1 + assets/fontawesome/svgs/solid/meteor.svg | 1 + assets/fontawesome/svgs/solid/microchip.svg | 1 + .../svgs/solid/microphone-alt-slash.svg | 1 + .../fontawesome/svgs/solid/microphone-alt.svg | 1 + .../svgs/solid/microphone-slash.svg | 1 + assets/fontawesome/svgs/solid/microphone.svg | 1 + assets/fontawesome/svgs/solid/microscope.svg | 1 + .../fontawesome/svgs/solid/minus-circle.svg | 1 + .../fontawesome/svgs/solid/minus-square.svg | 1 + assets/fontawesome/svgs/solid/minus.svg | 1 + assets/fontawesome/svgs/solid/mitten.svg | 1 + assets/fontawesome/svgs/solid/mobile-alt.svg | 1 + assets/fontawesome/svgs/solid/mobile.svg | 1 + .../fontawesome/svgs/solid/money-bill-alt.svg | 1 + .../svgs/solid/money-bill-wave-alt.svg | 1 + .../svgs/solid/money-bill-wave.svg | 1 + assets/fontawesome/svgs/solid/money-bill.svg | 1 + .../svgs/solid/money-check-alt.svg | 1 + assets/fontawesome/svgs/solid/money-check.svg | 1 + assets/fontawesome/svgs/solid/monument.svg | 1 + assets/fontawesome/svgs/solid/moon.svg | 1 + .../fontawesome/svgs/solid/mortar-pestle.svg | 1 + assets/fontawesome/svgs/solid/mosque.svg | 1 + assets/fontawesome/svgs/solid/motorcycle.svg | 1 + assets/fontawesome/svgs/solid/mountain.svg | 1 + .../fontawesome/svgs/solid/mouse-pointer.svg | 1 + assets/fontawesome/svgs/solid/mouse.svg | 1 + assets/fontawesome/svgs/solid/mug-hot.svg | 1 + assets/fontawesome/svgs/solid/music.svg | 1 + .../fontawesome/svgs/solid/network-wired.svg | 1 + assets/fontawesome/svgs/solid/neuter.svg | 1 + assets/fontawesome/svgs/solid/newspaper.svg | 1 + assets/fontawesome/svgs/solid/not-equal.svg | 1 + .../fontawesome/svgs/solid/notes-medical.svg | 1 + .../fontawesome/svgs/solid/object-group.svg | 1 + .../fontawesome/svgs/solid/object-ungroup.svg | 1 + assets/fontawesome/svgs/solid/oil-can.svg | 1 + assets/fontawesome/svgs/solid/om.svg | 1 + assets/fontawesome/svgs/solid/otter.svg | 1 + assets/fontawesome/svgs/solid/outdent.svg | 1 + assets/fontawesome/svgs/solid/pager.svg | 1 + assets/fontawesome/svgs/solid/paint-brush.svg | 1 + .../fontawesome/svgs/solid/paint-roller.svg | 1 + assets/fontawesome/svgs/solid/palette.svg | 1 + assets/fontawesome/svgs/solid/pallet.svg | 1 + assets/fontawesome/svgs/solid/paper-plane.svg | 1 + assets/fontawesome/svgs/solid/paperclip.svg | 1 + .../fontawesome/svgs/solid/parachute-box.svg | 1 + assets/fontawesome/svgs/solid/paragraph.svg | 1 + assets/fontawesome/svgs/solid/parking.svg | 1 + assets/fontawesome/svgs/solid/passport.svg | 1 + .../fontawesome/svgs/solid/pastafarianism.svg | 1 + assets/fontawesome/svgs/solid/paste.svg | 1 + .../fontawesome/svgs/solid/pause-circle.svg | 1 + assets/fontawesome/svgs/solid/pause.svg | 1 + assets/fontawesome/svgs/solid/paw.svg | 1 + assets/fontawesome/svgs/solid/peace.svg | 1 + assets/fontawesome/svgs/solid/pen-alt.svg | 1 + assets/fontawesome/svgs/solid/pen-fancy.svg | 1 + assets/fontawesome/svgs/solid/pen-nib.svg | 1 + assets/fontawesome/svgs/solid/pen-square.svg | 1 + assets/fontawesome/svgs/solid/pen.svg | 1 + assets/fontawesome/svgs/solid/pencil-alt.svg | 1 + .../fontawesome/svgs/solid/pencil-ruler.svg | 1 + .../fontawesome/svgs/solid/people-arrows.svg | 1 + .../fontawesome/svgs/solid/people-carry.svg | 1 + assets/fontawesome/svgs/solid/pepper-hot.svg | 1 + assets/fontawesome/svgs/solid/percent.svg | 1 + assets/fontawesome/svgs/solid/percentage.svg | 1 + .../fontawesome/svgs/solid/person-booth.svg | 1 + assets/fontawesome/svgs/solid/phone-alt.svg | 1 + assets/fontawesome/svgs/solid/phone-slash.svg | 1 + .../svgs/solid/phone-square-alt.svg | 1 + .../fontawesome/svgs/solid/phone-square.svg | 1 + .../fontawesome/svgs/solid/phone-volume.svg | 1 + assets/fontawesome/svgs/solid/phone.svg | 1 + assets/fontawesome/svgs/solid/photo-video.svg | 1 + assets/fontawesome/svgs/solid/piggy-bank.svg | 1 + assets/fontawesome/svgs/solid/pills.svg | 1 + assets/fontawesome/svgs/solid/pizza-slice.svg | 1 + .../svgs/solid/place-of-worship.svg | 1 + .../fontawesome/svgs/solid/plane-arrival.svg | 1 + .../svgs/solid/plane-departure.svg | 1 + assets/fontawesome/svgs/solid/plane-slash.svg | 1 + assets/fontawesome/svgs/solid/plane.svg | 1 + assets/fontawesome/svgs/solid/play-circle.svg | 1 + assets/fontawesome/svgs/solid/play.svg | 1 + assets/fontawesome/svgs/solid/plug.svg | 1 + assets/fontawesome/svgs/solid/plus-circle.svg | 1 + assets/fontawesome/svgs/solid/plus-square.svg | 1 + assets/fontawesome/svgs/solid/plus.svg | 1 + assets/fontawesome/svgs/solid/podcast.svg | 1 + assets/fontawesome/svgs/solid/poll-h.svg | 1 + assets/fontawesome/svgs/solid/poll.svg | 1 + assets/fontawesome/svgs/solid/poo-storm.svg | 1 + assets/fontawesome/svgs/solid/poo.svg | 1 + assets/fontawesome/svgs/solid/poop.svg | 1 + assets/fontawesome/svgs/solid/portrait.svg | 1 + assets/fontawesome/svgs/solid/pound-sign.svg | 1 + assets/fontawesome/svgs/solid/power-off.svg | 1 + assets/fontawesome/svgs/solid/pray.svg | 1 + .../fontawesome/svgs/solid/praying-hands.svg | 1 + .../svgs/solid/prescription-bottle-alt.svg | 1 + .../svgs/solid/prescription-bottle.svg | 1 + .../fontawesome/svgs/solid/prescription.svg | 1 + assets/fontawesome/svgs/solid/print.svg | 1 + assets/fontawesome/svgs/solid/procedures.svg | 1 + .../svgs/solid/project-diagram.svg | 1 + .../fontawesome/svgs/solid/pump-medical.svg | 1 + assets/fontawesome/svgs/solid/pump-soap.svg | 1 + .../fontawesome/svgs/solid/puzzle-piece.svg | 1 + assets/fontawesome/svgs/solid/qrcode.svg | 1 + .../svgs/solid/question-circle.svg | 1 + assets/fontawesome/svgs/solid/question.svg | 1 + assets/fontawesome/svgs/solid/quidditch.svg | 1 + assets/fontawesome/svgs/solid/quote-left.svg | 1 + assets/fontawesome/svgs/solid/quote-right.svg | 1 + assets/fontawesome/svgs/solid/quran.svg | 1 + .../fontawesome/svgs/solid/radiation-alt.svg | 1 + assets/fontawesome/svgs/solid/radiation.svg | 1 + assets/fontawesome/svgs/solid/rainbow.svg | 1 + assets/fontawesome/svgs/solid/random.svg | 1 + assets/fontawesome/svgs/solid/receipt.svg | 1 + .../fontawesome/svgs/solid/record-vinyl.svg | 1 + assets/fontawesome/svgs/solid/recycle.svg | 1 + assets/fontawesome/svgs/solid/redo-alt.svg | 1 + assets/fontawesome/svgs/solid/redo.svg | 1 + assets/fontawesome/svgs/solid/registered.svg | 1 + .../fontawesome/svgs/solid/remove-format.svg | 1 + assets/fontawesome/svgs/solid/reply-all.svg | 1 + assets/fontawesome/svgs/solid/reply.svg | 1 + assets/fontawesome/svgs/solid/republican.svg | 1 + assets/fontawesome/svgs/solid/restroom.svg | 1 + assets/fontawesome/svgs/solid/retweet.svg | 1 + assets/fontawesome/svgs/solid/ribbon.svg | 1 + assets/fontawesome/svgs/solid/ring.svg | 1 + assets/fontawesome/svgs/solid/road.svg | 1 + assets/fontawesome/svgs/solid/robot.svg | 1 + assets/fontawesome/svgs/solid/rocket.svg | 1 + assets/fontawesome/svgs/solid/route.svg | 1 + assets/fontawesome/svgs/solid/rss-square.svg | 1 + assets/fontawesome/svgs/solid/rss.svg | 1 + assets/fontawesome/svgs/solid/ruble-sign.svg | 1 + .../fontawesome/svgs/solid/ruler-combined.svg | 1 + .../svgs/solid/ruler-horizontal.svg | 1 + .../fontawesome/svgs/solid/ruler-vertical.svg | 1 + assets/fontawesome/svgs/solid/ruler.svg | 1 + assets/fontawesome/svgs/solid/running.svg | 1 + assets/fontawesome/svgs/solid/rupee-sign.svg | 1 + assets/fontawesome/svgs/solid/sad-cry.svg | 1 + assets/fontawesome/svgs/solid/sad-tear.svg | 1 + .../fontawesome/svgs/solid/satellite-dish.svg | 1 + assets/fontawesome/svgs/solid/satellite.svg | 1 + assets/fontawesome/svgs/solid/save.svg | 1 + assets/fontawesome/svgs/solid/school.svg | 1 + assets/fontawesome/svgs/solid/screwdriver.svg | 1 + assets/fontawesome/svgs/solid/scroll.svg | 1 + assets/fontawesome/svgs/solid/sd-card.svg | 1 + .../fontawesome/svgs/solid/search-dollar.svg | 1 + .../svgs/solid/search-location.svg | 1 + .../fontawesome/svgs/solid/search-minus.svg | 1 + assets/fontawesome/svgs/solid/search-plus.svg | 1 + assets/fontawesome/svgs/solid/search.svg | 1 + assets/fontawesome/svgs/solid/seedling.svg | 1 + assets/fontawesome/svgs/solid/server.svg | 1 + assets/fontawesome/svgs/solid/shapes.svg | 1 + .../svgs/solid/share-alt-square.svg | 1 + assets/fontawesome/svgs/solid/share-alt.svg | 1 + .../fontawesome/svgs/solid/share-square.svg | 1 + assets/fontawesome/svgs/solid/share.svg | 1 + assets/fontawesome/svgs/solid/shekel-sign.svg | 1 + assets/fontawesome/svgs/solid/shield-alt.svg | 1 + .../fontawesome/svgs/solid/shield-virus.svg | 1 + assets/fontawesome/svgs/solid/ship.svg | 1 + .../fontawesome/svgs/solid/shipping-fast.svg | 1 + assets/fontawesome/svgs/solid/shoe-prints.svg | 1 + .../fontawesome/svgs/solid/shopping-bag.svg | 1 + .../svgs/solid/shopping-basket.svg | 1 + .../fontawesome/svgs/solid/shopping-cart.svg | 1 + assets/fontawesome/svgs/solid/shower.svg | 1 + assets/fontawesome/svgs/solid/shuttle-van.svg | 1 + assets/fontawesome/svgs/solid/sign-in-alt.svg | 1 + .../fontawesome/svgs/solid/sign-language.svg | 1 + .../fontawesome/svgs/solid/sign-out-alt.svg | 1 + assets/fontawesome/svgs/solid/sign.svg | 1 + assets/fontawesome/svgs/solid/signal.svg | 1 + assets/fontawesome/svgs/solid/signature.svg | 1 + assets/fontawesome/svgs/solid/sim-card.svg | 1 + assets/fontawesome/svgs/solid/sink.svg | 1 + assets/fontawesome/svgs/solid/sitemap.svg | 1 + assets/fontawesome/svgs/solid/skating.svg | 1 + .../fontawesome/svgs/solid/skiing-nordic.svg | 1 + assets/fontawesome/svgs/solid/skiing.svg | 1 + .../svgs/solid/skull-crossbones.svg | 1 + assets/fontawesome/svgs/solid/skull.svg | 1 + assets/fontawesome/svgs/solid/slash.svg | 1 + assets/fontawesome/svgs/solid/sleigh.svg | 1 + assets/fontawesome/svgs/solid/sliders-h.svg | 1 + assets/fontawesome/svgs/solid/smile-beam.svg | 1 + assets/fontawesome/svgs/solid/smile-wink.svg | 1 + assets/fontawesome/svgs/solid/smile.svg | 1 + assets/fontawesome/svgs/solid/smog.svg | 1 + assets/fontawesome/svgs/solid/smoking-ban.svg | 1 + assets/fontawesome/svgs/solid/smoking.svg | 1 + assets/fontawesome/svgs/solid/sms.svg | 1 + .../fontawesome/svgs/solid/snowboarding.svg | 1 + assets/fontawesome/svgs/solid/snowflake.svg | 1 + assets/fontawesome/svgs/solid/snowman.svg | 1 + assets/fontawesome/svgs/solid/snowplow.svg | 1 + assets/fontawesome/svgs/solid/soap.svg | 1 + assets/fontawesome/svgs/solid/socks.svg | 1 + assets/fontawesome/svgs/solid/solar-panel.svg | 1 + .../svgs/solid/sort-alpha-down-alt.svg | 1 + .../svgs/solid/sort-alpha-down.svg | 1 + .../svgs/solid/sort-alpha-up-alt.svg | 1 + .../fontawesome/svgs/solid/sort-alpha-up.svg | 1 + .../svgs/solid/sort-amount-down-alt.svg | 1 + .../svgs/solid/sort-amount-down.svg | 1 + .../svgs/solid/sort-amount-up-alt.svg | 1 + .../fontawesome/svgs/solid/sort-amount-up.svg | 1 + assets/fontawesome/svgs/solid/sort-down.svg | 1 + .../svgs/solid/sort-numeric-down-alt.svg | 1 + .../svgs/solid/sort-numeric-down.svg | 1 + .../svgs/solid/sort-numeric-up-alt.svg | 1 + .../svgs/solid/sort-numeric-up.svg | 1 + assets/fontawesome/svgs/solid/sort-up.svg | 1 + assets/fontawesome/svgs/solid/sort.svg | 1 + assets/fontawesome/svgs/solid/spa.svg | 1 + .../fontawesome/svgs/solid/space-shuttle.svg | 1 + assets/fontawesome/svgs/solid/spell-check.svg | 1 + assets/fontawesome/svgs/solid/spider.svg | 1 + assets/fontawesome/svgs/solid/spinner.svg | 1 + assets/fontawesome/svgs/solid/splotch.svg | 1 + assets/fontawesome/svgs/solid/spray-can.svg | 1 + assets/fontawesome/svgs/solid/square-full.svg | 1 + .../svgs/solid/square-root-alt.svg | 1 + assets/fontawesome/svgs/solid/square.svg | 1 + assets/fontawesome/svgs/solid/stamp.svg | 1 + .../svgs/solid/star-and-crescent.svg | 1 + .../fontawesome/svgs/solid/star-half-alt.svg | 1 + assets/fontawesome/svgs/solid/star-half.svg | 1 + .../fontawesome/svgs/solid/star-of-david.svg | 1 + .../fontawesome/svgs/solid/star-of-life.svg | 1 + assets/fontawesome/svgs/solid/star.svg | 1 + .../fontawesome/svgs/solid/step-backward.svg | 1 + .../fontawesome/svgs/solid/step-forward.svg | 1 + assets/fontawesome/svgs/solid/stethoscope.svg | 1 + assets/fontawesome/svgs/solid/sticky-note.svg | 1 + assets/fontawesome/svgs/solid/stop-circle.svg | 1 + assets/fontawesome/svgs/solid/stop.svg | 1 + .../fontawesome/svgs/solid/stopwatch-20.svg | 1 + assets/fontawesome/svgs/solid/stopwatch.svg | 1 + .../svgs/solid/store-alt-slash.svg | 1 + assets/fontawesome/svgs/solid/store-alt.svg | 1 + assets/fontawesome/svgs/solid/store-slash.svg | 1 + assets/fontawesome/svgs/solid/store.svg | 1 + assets/fontawesome/svgs/solid/stream.svg | 1 + assets/fontawesome/svgs/solid/street-view.svg | 1 + .../fontawesome/svgs/solid/strikethrough.svg | 1 + assets/fontawesome/svgs/solid/stroopwafel.svg | 1 + assets/fontawesome/svgs/solid/subscript.svg | 1 + assets/fontawesome/svgs/solid/subway.svg | 1 + .../svgs/solid/suitcase-rolling.svg | 1 + assets/fontawesome/svgs/solid/suitcase.svg | 1 + assets/fontawesome/svgs/solid/sun.svg | 1 + assets/fontawesome/svgs/solid/superscript.svg | 1 + assets/fontawesome/svgs/solid/surprise.svg | 1 + assets/fontawesome/svgs/solid/swatchbook.svg | 1 + assets/fontawesome/svgs/solid/swimmer.svg | 1 + .../fontawesome/svgs/solid/swimming-pool.svg | 1 + assets/fontawesome/svgs/solid/synagogue.svg | 1 + assets/fontawesome/svgs/solid/sync-alt.svg | 1 + assets/fontawesome/svgs/solid/sync.svg | 1 + assets/fontawesome/svgs/solid/syringe.svg | 1 + .../fontawesome/svgs/solid/table-tennis.svg | 1 + assets/fontawesome/svgs/solid/table.svg | 1 + assets/fontawesome/svgs/solid/tablet-alt.svg | 1 + assets/fontawesome/svgs/solid/tablet.svg | 1 + assets/fontawesome/svgs/solid/tablets.svg | 1 + .../fontawesome/svgs/solid/tachometer-alt.svg | 1 + assets/fontawesome/svgs/solid/tag.svg | 1 + assets/fontawesome/svgs/solid/tags.svg | 1 + assets/fontawesome/svgs/solid/tape.svg | 1 + assets/fontawesome/svgs/solid/tasks.svg | 1 + assets/fontawesome/svgs/solid/taxi.svg | 1 + assets/fontawesome/svgs/solid/teeth-open.svg | 1 + assets/fontawesome/svgs/solid/teeth.svg | 1 + .../svgs/solid/temperature-high.svg | 1 + .../svgs/solid/temperature-low.svg | 1 + assets/fontawesome/svgs/solid/tenge.svg | 1 + assets/fontawesome/svgs/solid/terminal.svg | 1 + assets/fontawesome/svgs/solid/text-height.svg | 1 + assets/fontawesome/svgs/solid/text-width.svg | 1 + assets/fontawesome/svgs/solid/th-large.svg | 1 + assets/fontawesome/svgs/solid/th-list.svg | 1 + assets/fontawesome/svgs/solid/th.svg | 1 + .../fontawesome/svgs/solid/theater-masks.svg | 1 + .../svgs/solid/thermometer-empty.svg | 1 + .../svgs/solid/thermometer-full.svg | 1 + .../svgs/solid/thermometer-half.svg | 1 + .../svgs/solid/thermometer-quarter.svg | 1 + .../svgs/solid/thermometer-three-quarters.svg | 1 + assets/fontawesome/svgs/solid/thermometer.svg | 1 + assets/fontawesome/svgs/solid/thumbs-down.svg | 1 + assets/fontawesome/svgs/solid/thumbs-up.svg | 1 + assets/fontawesome/svgs/solid/thumbtack.svg | 1 + assets/fontawesome/svgs/solid/ticket-alt.svg | 1 + .../fontawesome/svgs/solid/times-circle.svg | 1 + assets/fontawesome/svgs/solid/times.svg | 1 + assets/fontawesome/svgs/solid/tint-slash.svg | 1 + assets/fontawesome/svgs/solid/tint.svg | 1 + assets/fontawesome/svgs/solid/tired.svg | 1 + assets/fontawesome/svgs/solid/toggle-off.svg | 1 + assets/fontawesome/svgs/solid/toggle-on.svg | 1 + .../svgs/solid/toilet-paper-slash.svg | 1 + .../fontawesome/svgs/solid/toilet-paper.svg | 1 + assets/fontawesome/svgs/solid/toilet.svg | 1 + assets/fontawesome/svgs/solid/toolbox.svg | 1 + assets/fontawesome/svgs/solid/tools.svg | 1 + assets/fontawesome/svgs/solid/tooth.svg | 1 + assets/fontawesome/svgs/solid/torah.svg | 1 + assets/fontawesome/svgs/solid/torii-gate.svg | 1 + assets/fontawesome/svgs/solid/tractor.svg | 1 + assets/fontawesome/svgs/solid/trademark.svg | 1 + .../fontawesome/svgs/solid/traffic-light.svg | 1 + assets/fontawesome/svgs/solid/trailer.svg | 1 + assets/fontawesome/svgs/solid/train.svg | 1 + assets/fontawesome/svgs/solid/tram.svg | 1 + .../svgs/solid/transgender-alt.svg | 1 + assets/fontawesome/svgs/solid/transgender.svg | 1 + assets/fontawesome/svgs/solid/trash-alt.svg | 1 + .../svgs/solid/trash-restore-alt.svg | 1 + .../fontawesome/svgs/solid/trash-restore.svg | 1 + assets/fontawesome/svgs/solid/trash.svg | 1 + assets/fontawesome/svgs/solid/tree.svg | 1 + assets/fontawesome/svgs/solid/trophy.svg | 1 + .../fontawesome/svgs/solid/truck-loading.svg | 1 + .../fontawesome/svgs/solid/truck-monster.svg | 1 + .../fontawesome/svgs/solid/truck-moving.svg | 1 + .../fontawesome/svgs/solid/truck-pickup.svg | 1 + assets/fontawesome/svgs/solid/truck.svg | 1 + assets/fontawesome/svgs/solid/tshirt.svg | 1 + assets/fontawesome/svgs/solid/tty.svg | 1 + assets/fontawesome/svgs/solid/tv.svg | 1 + .../fontawesome/svgs/solid/umbrella-beach.svg | 1 + assets/fontawesome/svgs/solid/umbrella.svg | 1 + assets/fontawesome/svgs/solid/underline.svg | 1 + assets/fontawesome/svgs/solid/undo-alt.svg | 1 + assets/fontawesome/svgs/solid/undo.svg | 1 + .../svgs/solid/universal-access.svg | 1 + assets/fontawesome/svgs/solid/university.svg | 1 + assets/fontawesome/svgs/solid/unlink.svg | 1 + assets/fontawesome/svgs/solid/unlock-alt.svg | 1 + assets/fontawesome/svgs/solid/unlock.svg | 1 + assets/fontawesome/svgs/solid/upload.svg | 1 + .../fontawesome/svgs/solid/user-alt-slash.svg | 1 + assets/fontawesome/svgs/solid/user-alt.svg | 1 + .../fontawesome/svgs/solid/user-astronaut.svg | 1 + assets/fontawesome/svgs/solid/user-check.svg | 1 + assets/fontawesome/svgs/solid/user-circle.svg | 1 + assets/fontawesome/svgs/solid/user-clock.svg | 1 + assets/fontawesome/svgs/solid/user-cog.svg | 1 + assets/fontawesome/svgs/solid/user-edit.svg | 1 + .../fontawesome/svgs/solid/user-friends.svg | 1 + .../fontawesome/svgs/solid/user-graduate.svg | 1 + .../fontawesome/svgs/solid/user-injured.svg | 1 + assets/fontawesome/svgs/solid/user-lock.svg | 1 + assets/fontawesome/svgs/solid/user-md.svg | 1 + assets/fontawesome/svgs/solid/user-minus.svg | 1 + assets/fontawesome/svgs/solid/user-ninja.svg | 1 + assets/fontawesome/svgs/solid/user-nurse.svg | 1 + assets/fontawesome/svgs/solid/user-plus.svg | 1 + assets/fontawesome/svgs/solid/user-secret.svg | 1 + assets/fontawesome/svgs/solid/user-shield.svg | 1 + assets/fontawesome/svgs/solid/user-slash.svg | 1 + assets/fontawesome/svgs/solid/user-tag.svg | 1 + assets/fontawesome/svgs/solid/user-tie.svg | 1 + assets/fontawesome/svgs/solid/user-times.svg | 1 + assets/fontawesome/svgs/solid/user.svg | 1 + assets/fontawesome/svgs/solid/users-cog.svg | 1 + assets/fontawesome/svgs/solid/users-slash.svg | 1 + assets/fontawesome/svgs/solid/users.svg | 1 + .../fontawesome/svgs/solid/utensil-spoon.svg | 1 + assets/fontawesome/svgs/solid/utensils.svg | 1 + .../fontawesome/svgs/solid/vector-square.svg | 1 + .../fontawesome/svgs/solid/venus-double.svg | 1 + assets/fontawesome/svgs/solid/venus-mars.svg | 1 + assets/fontawesome/svgs/solid/venus.svg | 1 + .../fontawesome/svgs/solid/vest-patches.svg | 1 + assets/fontawesome/svgs/solid/vest.svg | 1 + assets/fontawesome/svgs/solid/vial.svg | 1 + assets/fontawesome/svgs/solid/vials.svg | 1 + assets/fontawesome/svgs/solid/video-slash.svg | 1 + assets/fontawesome/svgs/solid/video.svg | 1 + assets/fontawesome/svgs/solid/vihara.svg | 1 + assets/fontawesome/svgs/solid/virus-slash.svg | 1 + assets/fontawesome/svgs/solid/virus.svg | 1 + assets/fontawesome/svgs/solid/viruses.svg | 1 + assets/fontawesome/svgs/solid/voicemail.svg | 1 + .../svgs/solid/volleyball-ball.svg | 1 + assets/fontawesome/svgs/solid/volume-down.svg | 1 + assets/fontawesome/svgs/solid/volume-mute.svg | 1 + assets/fontawesome/svgs/solid/volume-off.svg | 1 + assets/fontawesome/svgs/solid/volume-up.svg | 1 + assets/fontawesome/svgs/solid/vote-yea.svg | 1 + .../fontawesome/svgs/solid/vr-cardboard.svg | 1 + assets/fontawesome/svgs/solid/walking.svg | 1 + assets/fontawesome/svgs/solid/wallet.svg | 1 + assets/fontawesome/svgs/solid/warehouse.svg | 1 + assets/fontawesome/svgs/solid/water.svg | 1 + assets/fontawesome/svgs/solid/wave-square.svg | 1 + .../fontawesome/svgs/solid/weight-hanging.svg | 1 + assets/fontawesome/svgs/solid/weight.svg | 1 + assets/fontawesome/svgs/solid/wheelchair.svg | 1 + assets/fontawesome/svgs/solid/wifi.svg | 1 + assets/fontawesome/svgs/solid/wind.svg | 1 + .../fontawesome/svgs/solid/window-close.svg | 1 + .../svgs/solid/window-maximize.svg | 1 + .../svgs/solid/window-minimize.svg | 1 + .../fontawesome/svgs/solid/window-restore.svg | 1 + assets/fontawesome/svgs/solid/wine-bottle.svg | 1 + .../fontawesome/svgs/solid/wine-glass-alt.svg | 1 + assets/fontawesome/svgs/solid/wine-glass.svg | 1 + assets/fontawesome/svgs/solid/won-sign.svg | 1 + assets/fontawesome/svgs/solid/wrench.svg | 1 + assets/fontawesome/svgs/solid/x-ray.svg | 1 + assets/fontawesome/svgs/solid/yen-sign.svg | 1 + assets/fontawesome/svgs/solid/yin-yang.svg | 1 + assets/fontawesome/webfonts/fa-brands-400.eot | Bin 0 -> 136822 bytes assets/fontawesome/webfonts/fa-brands-400.svg | 3717 + assets/fontawesome/webfonts/fa-brands-400.ttf | Bin 0 -> 136516 bytes .../fontawesome/webfonts/fa-brands-400.woff | Bin 0 -> 92136 bytes .../fontawesome/webfonts/fa-brands-400.woff2 | Bin 0 -> 78472 bytes .../fontawesome/webfonts/fa-regular-400.eot | Bin 0 -> 34350 bytes .../fontawesome/webfonts/fa-regular-400.svg | 801 + .../fontawesome/webfonts/fa-regular-400.ttf | Bin 0 -> 34052 bytes .../fontawesome/webfonts/fa-regular-400.woff | Bin 0 -> 16776 bytes .../fontawesome/webfonts/fa-regular-400.woff2 | Bin 0 -> 13588 bytes assets/fontawesome/webfonts/fa-solid-900.eot | Bin 0 -> 204814 bytes assets/fontawesome/webfonts/fa-solid-900.svg | 5028 ++ assets/fontawesome/webfonts/fa-solid-900.ttf | Bin 0 -> 204528 bytes assets/fontawesome/webfonts/fa-solid-900.woff | Bin 0 -> 104280 bytes .../fontawesome/webfonts/fa-solid-900.woff2 | Bin 0 -> 80252 bytes assets/images/Boards/NetFPGA-CML-1G.png | Bin 0 -> 346907 bytes assets/images/Boards/NetFPGA-PLUS.jpeg | Bin 0 -> 1530068 bytes assets/images/Boards/NetFPGA-SUME.jpg | Bin 0 -> 204839 bytes assets/images/Boards/NetFPGA10G_web.jpg | Bin 0 -> 204625 bytes assets/images/Boards/NetFPGA1G_v1.jpg | Bin 0 -> 194905 bytes assets/images/Boards/netfpgacmllandscape.jpg | Bin 0 -> 33582 bytes .../CIMG6252-NetFPGA_Summercamp_2008a.jpeg | Bin 0 -> 86996 bytes .../CIMG6253-NetFPGA_Summercamp_2008b.jpeg | Bin 0 -> 52224 bytes assets/images/Logos/Hosts/bju.jpg | Bin 0 -> 7658 bytes assets/images/Logos/Hosts/brno.jpg | Bin 0 -> 7760 bytes assets/images/Logos/Hosts/delaware.jpg | Bin 0 -> 11006 bytes assets/images/Logos/Hosts/forth.jpg | Bin 0 -> 7728 bytes assets/images/Logos/Hosts/ietf.jpg | Bin 0 -> 4513 bytes assets/images/Logos/Hosts/iis.jpg | Bin 0 -> 8070 bytes assets/images/Logos/Hosts/indiana.jpg | Bin 0 -> 10957 bytes assets/images/Logos/Hosts/kentucky.jpg | Bin 0 -> 9242 bytes assets/images/Logos/Hosts/melbourne.jpg | Bin 0 -> 9391 bytes assets/images/Logos/Hosts/ofelia.jpg | Bin 0 -> 8808 bytes assets/images/Logos/Hosts/pursuit.jpg | Bin 0 -> 6894 bytes assets/images/Logos/Hosts/put.jpg | Bin 0 -> 10120 bytes assets/images/Logos/Hosts/sigmetrics.jpg | Bin 0 -> 3789 bytes assets/images/Logos/Hosts/snu.jpg | Bin 0 -> 10214 bytes assets/images/Logos/Hosts/tsinghua.jpg | Bin 0 -> 10284 bytes assets/images/Logos/Hosts/tu.jpg | Bin 0 -> 6557 bytes assets/images/Logos/Hosts/unsw.jpg | Bin 0 -> 8985 bytes .../Logos/Supporters/Current/cambridge.jpg | Bin 0 -> 10439 bytes .../images/Logos/Supporters/Current/epsrc.jpg | Bin 0 -> 11731 bytes .../images/Logos/Supporters/Current/nsf.jpg | Bin 0 -> 10861 bytes .../Logos/Supporters/Current/oxford.gif | Bin 0 -> 3680 bytes .../Logos/Supporters/Current/stanford.jpg | Bin 0 -> 9163 bytes .../Logos/Supporters/Current/xilinx.jpg | Bin 0 -> 8934 bytes .../images/Logos/Supporters/Past/agilent.jpg | Bin 0 -> 8374 bytes .../Logos/Supporters/Past/algologic.jpg | Bin 0 -> 6085 bytes .../images/Logos/Supporters/Past/broadcom.jpg | Bin 0 -> 8918 bytes assets/images/Logos/Supporters/Past/cisco.jpg | Bin 0 -> 10319 bytes assets/images/Logos/Supporters/Past/cml.jpg | Bin 0 -> 8556 bytes .../images/Logos/Supporters/Past/cypress.jpg | Bin 0 -> 9846 bytes .../images/Logos/Supporters/Past/digilent.jpg | Bin 0 -> 10258 bytes .../images/Logos/Supporters/Past/huawei.jpg | Bin 0 -> 9543 bytes .../images/Logos/Supporters/Past/juniper.jpg | Bin 0 -> 11537 bytes .../images/Logos/Supporters/Past/linear.jpg | Bin 0 -> 9064 bytes .../images/Logos/Supporters/Past/micron.jpg | Bin 0 -> 9971 bytes .../images/Logos/Supporters/Past/netlogic.jpg | Bin 0 -> 6171 bytes .../Logos/Supporters/Past/solarflare.jpg | Bin 0 -> 9503 bytes .../Logos/Supporters/Past/synplicity.jpg | Bin 0 -> 8152 bytes assets/images/devworkshop.gif | Bin 0 -> 33217 bytes assets/images/netfpga-summer-camp-2010-1.jpeg | Bin 0 -> 59649 bytes assets/images/netfpga-summer-camp-2013-1.jpeg | Bin 0 -> 43080 bytes assets/images/netfpga-summer-camp-2013-2.jpeg | Bin 0 -> 53545 bytes assets/images/netfpga_tutorial.jpeg | Bin 0 -> 79503 bytes assets/images/netfpga_tutorial_2007.jpeg | Bin 0 -> 125499 bytes assets/images/netfpga_tutorial_beijing_1.jpeg | Bin 0 -> 91001 bytes assets/images/netfpga_tutorial_beijing_2.jpeg | Bin 0 -> 96795 bytes assets/images/netfpgasumelandscape.jpg | Bin 0 -> 27642 bytes assets/images/thumbnail.png | Bin 0 -> 13395 bytes assets/js/filter-script.js | 179 + ...A_Developers_Workshop_2009_Proceedings.pdf | Bin 0 -> 6537842 bytes .../Thamarakuzhi_Chandy_Jan_2011.pdf | Bin 0 -> 179679 bytes .../vendor/bootstrap/js/bootstrap.bundle.js | 7013 ++ .../bootstrap/js/bootstrap.bundle.js.map | 1 + .../bootstrap/js/bootstrap.bundle.min.js | 7 + .../bootstrap/js/bootstrap.bundle.min.js.map | 1 + assets/vendor/bootstrap/js/bootstrap.js | 4435 ++ assets/vendor/bootstrap/js/bootstrap.js.map | 1 + assets/vendor/bootstrap/js/bootstrap.min.js | 7 + .../vendor/bootstrap/js/bootstrap.min.js.map | 1 + assets/vendor/jquery/jquery.js | 10881 +++ assets/vendor/jquery/jquery.min.js | 2 + assets/vendor/jquery/jquery.min.map | 1 + assets/vendor/jquery/jquery.slim.js | 8495 +++ assets/vendor/jquery/jquery.slim.min.js | 2 + assets/vendor/jquery/jquery.slim.min.map | 1 + ecosystem.html | 706 + events/2007/06/12/ACM-SigMetrics-2007.html | 6 + events/2007/08/24/Hot-Interconnects.html | 6 + events/2008/02/06/Sydney-Australia.html | 6 + events/2008/03/31/EuroSys-2008.html | 6 + events/2008/04/23/Beijing-China.html | 6 + events/2008/05/15/Bangalore-India.html | 6 + events/2008/08/04/Summer-Camp-2008.html | 1 + events/2008/08/17/SIGCOMM-2008.html | 1 + events/2008/09/05/Bruno-Czech-Republic.html | 6 + events/2008/09/16/Cambridge-UK.html | 7 + events/2009/02/25/Seoul-South-Korea.html | 1 + ...-American-NetFPGA-Developers-Workshop.html | 1 + events/2009/09/03/FPL-19.html | 1 + .../02/09/NetFPGA-Design-Challenge-2010.html | 1 + events/2010/03/15/Spring-Camp-2010.html | 7 + events/2010/03/21/IETF-77.html | 6 + events/2010/04/14/Kentucky-USA.html | 1 + events/2010/05/15/Beijing-China.html | 7 + events/2010/06/02/Delaware-USA.html | 6 + ...1st-Asian-NetFPGA-Developers-Workshop.html | 1 + ...-European-NetFPGA-Developers-Workshop.html | 1 + events/2010/08/09/Summer-Camp-2010.html | 1 + ...-American-NetFPGA-Developers-Workshop.html | 1 + events/2010/09/16/Crete-Greece.html | 7 + events/2010/11/04/Melbourne-Australia.html | 7 + events/2010/11/06/Beijing-China.html | 1 + events/2011/08/01/Summer-Camp-2011.html | 1 + events/2011/08/19/Toronto-2011.html | 6 + events/2011/09/01/EU-PURSUIT.html | 6 + events/2011/11/10/EU-OFELIA.html | 1 + .../2011/12/05/Tokyo-Japan-near-CoNext.html | 6 + .../06/15/Sigmetrics-Performance-2012.html | 1 + .../06/18/Indiana-Hands-on-Tutorial-2012.html | 7 + events/2012/07/30/Summer-Camp-2012.html | 7 + events/2012/10/10/LATINCOM-2012.html | 6 + .../University-of-Massachusetts-Amherst.html | 1 + events/2013/04/09/RENCI.html | 6 + events/2013/04/10/Princeton-University.html | 1 + .../11/Case-Western-Reserve-University.html | 6 + .../04/11/University-of-Pennsylvania.html | 1 + .../04/12/Carnegie-Mellon-University.html | 6 + .../2013/05/20/European-Spring-Camp-2013.html | 1 + .../06/05/Microsoft-Research-Cambridge.html | 1 + .../2013/07/29/Stanford-Summer-Camp-2013.html | 6 + .../09/02/Cambridge-Summer-Camp-2013.html | 1 + .../2013/11/25/Long-Island-University-NY.html | 1 + events/2013/12/12/University-of-Bochum.html | 1 + events/2014/02/07/Aston-University.html | 1 + events/2014/04/07/Tel-Aviv-University.html | 6 + events/2014/04/08/Technion.html | 6 + events/2014/04/29/Univesity-of-Bristol.html | 6 + .../07/25/Indian-Institute-of-Science.html | 1 + events/2015/03/12/DATE-2015.html | 1 + events/2015/04/13/NetSoft.html | 1 + events/2015/04/14/NetSoft.html | 1 + events/2015/05/20/SBRC-2015.html | 1 + events/2015/08/02/Technion.html | 10 + events/2015/08/17/SIGCOMM-demo.html | 3 + events/2015/08/17/SIGCOMM-tutorial.html | 8 + events/2015/08/31/FPL-2015.html | 3 + events/2017/02/23/Aston-University.html | 1 + events/2017/03/27/DATE-2017.html | 1 + .../04/18/NetFPGA-Design-Challenge-2017.html | 1 + .../04/20/NetFPGA-Developers-Summit-2017.html | 1 + .../07/25/NetFPGA-Summer-School-2017.html | 1 + events/2017/08/25/SIGCOMM-2017.html | 1 + events/2018/08/20/SIGCOMM-2018.html | 1 + events/2019/02/24/FPGA-2019.html | 1 + ...t-generation-of-the-NetFPGA-platforms.html | 1 + index.html | 230 + news-and-events.html | 3994 ++ ...etFPGA-Demo-wins-2nd-place-at-SIGCOMM.html | 1 + .../03/29/NetFPGA-Design-Contest-2010.html | 7 + .../2010/03/29/NetFPGA-Kentucky-Tutorial.html | 7 + news/2010/07/02/NetFPGA-Summer-Camp.html | 3 + news/2011/01/21/NetFPGA-Release-2-2-0.html | 49 + news/2011/03/07/NetFPGA-Summer-camp-2011.html | 3 + ...-Summer-camp-2011-registration-online.html | 9 + news/2012/03/15/NetFPGA-10G-Public-Beta.html | 15 + .../02/University-of-Wisconsin-Madison.html | 1 + ...n-source-network-tester-release-1-0-0.html | 21 + news/2014/07/04/OSNT-1-5-0.html | 20 + news/2014/07/23/NetFPGA-publication-list.html | 9 + .../2014/07/30/NetFPGA-10G-Release-5-0-4.html | 19 + news/2014/10/13/OSNT-release-2-0-0.html | 20 + news/2014/10/15/Announcing-NetFPGA-SUME.html | 13 + .../2014/10/21/NetFPGA-10G-Release-5-0-5.html | 18 + .../22/NetFPGA-Newsletter-December-2014.html | 50 + .../2015/01/13/NetFPGA-10G-Release-5-0-6.html | 16 + news/2015/02/28/OSNT-2-1-0.html | 22 + .../2015/04/08/NetFPGA-10G-Release-5-0-7.html | 29 + news/2015/05/26/CML-Release-5-0-5.html | 26 + news/2015/06/15/Newsletter.html | 145 + .../10/12/NetFPGA-SUME-Release-1-0-0.html | 32 + news/2015/12/16/NetFPGA-SUME-1-1-0.html | 44 + .../2016/01/29/NetFPGA-SUME-Release1-2-0.html | 38 + .../01/NetFPGA-Newsletter-February-2016.html | 65 + .../05/24/NetFPGA-SUME-Release-1-3-0.html | 68 + .../10/04/NetFPGA-SUME-Release-1-4-0.html | 42 + ...FPGA-Development-Challenge-April-2017.html | 24 + .../12/13/NetFPGA-SUME-Release-1-5-0.html | 36 + .../NetFPGA-Design-Challenge-April-2017.html | 13 + news/2017/03/22/Meet-NetFPGA.html | 18 + .../03/22/OSNT-on-SUME-now-available.html | 31 + .../07/13/NetFPGA-SUME-Release-1-6-0.html | 70 + .../08/03/NetFPGA-SUME-Release-1-6-1.html | 30 + .../10/13/NetFPGA-SUME-Release-1-7-0.html | 42 + .../12/14/NetFPGA-SUME-Release-1-7-1.html | 30 + .../01/30/NetFPGA-SUME-Release-1-8-0.html | 41 + .../04/01/NetFPGA-SUME-Release-1-9-0.html | 48 + ...etFPGA-project-wins-SOSR-System-Award.html | 19 + news/2020/10/02/NetFPGA-SUME-Release.html | 45 + news/2021/09/24/NetFPGA-PLUS-Release-1.0.html | 32 + why-NetFPGA.html | 120 + 1902 files changed, 169884 insertions(+) create mode 100644 .nojekyll create mode 100644 10G-reg-form.html create mode 100644 2021/07/15/NetFPGA.html create mode 100644 2021/07/16/IIsy.html create mode 100644 2021/07/16/In-Network-Computing-on-Demand.html create mode 100644 2021/07/16/MTPSA.html create mode 100644 2021/07/16/OSNT.html create mode 100644 2021/07/16/P4DNS.html create mode 100644 2021/07/16/PTA.html create mode 100644 About.html create mode 100644 CML-reg-form.html create mode 100644 CNAME create mode 100644 NetFPGA-10G.html create mode 100644 NetFPGA-1G.html create mode 100644 NetFPGA-CML.html create mode 100644 NetFPGA-PLUS.html create mode 100644 NetFPGA-SUME.html create mode 100644 Publications.html create mode 100644 README.md create mode 100644 SUME-reg-form.html create mode 100644 _pages/10G-License.html create mode 100644 _pages/1G-License.html create mode 100644 _pages/2007-08-24-Hot-Interconnects-Tutorial.html create mode 100644 _pages/2008-02-06-NetFPGA-Sydney-Tutorial.html create mode 100644 _pages/2008-04-23-NetFPGA-Beijing-Tutorial.html create mode 100644 _pages/2008-05-15-NetFPGA-Bangalore-Tutorial.html create mode 100644 _pages/2008-08-04-NetFPGA-Summer-Camp-2008.html create mode 100644 _pages/2008-08-17-SIGCOMM-2008-Tutorial.html create mode 100644 _pages/2009-08-13-NetFPGA-Developers-Worshop-2009.html create mode 100644 _pages/2010-03-21-IETF-Tutorial-2010-Anaheim.html create mode 100644 _pages/2010-07-02-NetFPGA-Summer-Camp-2010.html create mode 100644 _pages/2010-09-12-2nd-North-American-NetFPGA-Developers-Workshop.html create mode 100644 _pages/2011-08-01-NetFPGA-Summer-Camp-2011.html create mode 100644 _pages/2011-08-19-Toronto-Tutorial-2011.html create mode 100644 _pages/2011-12-05-Tokyo-Tutorial-2011.html create mode 100644 _pages/2012-07-30-NetFPGA-Summer-Camp-2012.html create mode 100644 _pages/2013-07-29-NetFPGA-Summer-Camp-2013-Stanford.html create mode 100644 assets/css/main.css create mode 100644 assets/css/main.css.map create mode 100644 assets/fontawesome/LICENSE.txt create mode 100644 assets/fontawesome/attribution.js create mode 100644 assets/fontawesome/css/all.css create mode 100644 assets/fontawesome/css/all.min.css create mode 100644 assets/fontawesome/css/brands.css create mode 100644 assets/fontawesome/css/brands.min.css create mode 100644 assets/fontawesome/css/fontawesome.css create mode 100644 assets/fontawesome/css/fontawesome.min.css create mode 100644 assets/fontawesome/css/regular.css create mode 100644 assets/fontawesome/css/regular.min.css create mode 100644 assets/fontawesome/css/solid.css create mode 100644 assets/fontawesome/css/solid.min.css create mode 100644 assets/fontawesome/css/svg-with-js.css create mode 100644 assets/fontawesome/css/svg-with-js.min.css create mode 100644 assets/fontawesome/css/v4-shims.css create mode 100644 assets/fontawesome/css/v4-shims.min.css create mode 100644 assets/fontawesome/js/all.js create mode 100644 assets/fontawesome/js/all.min.js create mode 100644 assets/fontawesome/js/brands.js create mode 100644 assets/fontawesome/js/brands.min.js create mode 100644 assets/fontawesome/js/conflict-detection.js create mode 100644 assets/fontawesome/js/conflict-detection.min.js create mode 100644 assets/fontawesome/js/fontawesome.js create mode 100644 assets/fontawesome/js/fontawesome.min.js create mode 100644 assets/fontawesome/js/regular.js create mode 100644 assets/fontawesome/js/regular.min.js create mode 100644 assets/fontawesome/js/solid.js create mode 100644 assets/fontawesome/js/solid.min.js create mode 100644 assets/fontawesome/js/v4-shims.js create mode 100644 assets/fontawesome/js/v4-shims.min.js create mode 100644 assets/fontawesome/less/brands.less create mode 100644 assets/fontawesome/less/fontawesome.less create mode 100644 assets/fontawesome/less/regular.less create mode 100644 assets/fontawesome/less/solid.less create mode 100644 assets/fontawesome/less/v4-shims.less create mode 100644 assets/fontawesome/metadata/categories.yml create mode 100644 assets/fontawesome/metadata/icons.json create mode 100644 assets/fontawesome/metadata/icons.yml create mode 100644 assets/fontawesome/metadata/shims.json create mode 100644 assets/fontawesome/metadata/shims.yml create mode 100644 assets/fontawesome/metadata/sponsors.yml create mode 100644 assets/fontawesome/scss/brands.scss create mode 100644 assets/fontawesome/scss/fontawesome.scss create mode 100644 assets/fontawesome/scss/regular.scss create mode 100644 assets/fontawesome/scss/solid.scss create mode 100644 assets/fontawesome/scss/v4-shims.scss create mode 100644 assets/fontawesome/sprites/brands.svg create mode 100644 assets/fontawesome/sprites/regular.svg create mode 100644 assets/fontawesome/sprites/solid.svg create mode 100644 assets/fontawesome/svgs/brands/500px.svg create mode 100644 assets/fontawesome/svgs/brands/accessible-icon.svg create mode 100644 assets/fontawesome/svgs/brands/accusoft.svg create mode 100644 assets/fontawesome/svgs/brands/acquisitions-incorporated.svg create mode 100644 assets/fontawesome/svgs/brands/adn.svg create mode 100644 assets/fontawesome/svgs/brands/adversal.svg create mode 100644 assets/fontawesome/svgs/brands/affiliatetheme.svg create mode 100644 assets/fontawesome/svgs/brands/airbnb.svg create mode 100644 assets/fontawesome/svgs/brands/algolia.svg create mode 100644 assets/fontawesome/svgs/brands/alipay.svg create mode 100644 assets/fontawesome/svgs/brands/amazon-pay.svg create mode 100644 assets/fontawesome/svgs/brands/amazon.svg create mode 100644 assets/fontawesome/svgs/brands/amilia.svg create mode 100644 assets/fontawesome/svgs/brands/android.svg create mode 100644 assets/fontawesome/svgs/brands/angellist.svg create mode 100644 assets/fontawesome/svgs/brands/angrycreative.svg create mode 100644 assets/fontawesome/svgs/brands/angular.svg create mode 100644 assets/fontawesome/svgs/brands/app-store-ios.svg create mode 100644 assets/fontawesome/svgs/brands/app-store.svg create mode 100644 assets/fontawesome/svgs/brands/apper.svg create mode 100644 assets/fontawesome/svgs/brands/apple-pay.svg create mode 100644 assets/fontawesome/svgs/brands/apple.svg create mode 100644 assets/fontawesome/svgs/brands/artstation.svg create mode 100644 assets/fontawesome/svgs/brands/asymmetrik.svg create mode 100644 assets/fontawesome/svgs/brands/atlassian.svg create mode 100644 assets/fontawesome/svgs/brands/audible.svg create mode 100644 assets/fontawesome/svgs/brands/autoprefixer.svg create mode 100644 assets/fontawesome/svgs/brands/avianex.svg create mode 100644 assets/fontawesome/svgs/brands/aviato.svg create mode 100644 assets/fontawesome/svgs/brands/aws.svg create mode 100644 assets/fontawesome/svgs/brands/bandcamp.svg create mode 100644 assets/fontawesome/svgs/brands/battle-net.svg create mode 100644 assets/fontawesome/svgs/brands/behance-square.svg create mode 100644 assets/fontawesome/svgs/brands/behance.svg create mode 100644 assets/fontawesome/svgs/brands/bimobject.svg create mode 100644 assets/fontawesome/svgs/brands/bitbucket.svg create mode 100644 assets/fontawesome/svgs/brands/bitcoin.svg create mode 100644 assets/fontawesome/svgs/brands/bity.svg create mode 100644 assets/fontawesome/svgs/brands/black-tie.svg create mode 100644 assets/fontawesome/svgs/brands/blackberry.svg create mode 100644 assets/fontawesome/svgs/brands/blogger-b.svg create mode 100644 assets/fontawesome/svgs/brands/blogger.svg create mode 100644 assets/fontawesome/svgs/brands/bluetooth-b.svg create mode 100644 assets/fontawesome/svgs/brands/bluetooth.svg create mode 100644 assets/fontawesome/svgs/brands/bootstrap.svg create mode 100644 assets/fontawesome/svgs/brands/btc.svg create mode 100644 assets/fontawesome/svgs/brands/buffer.svg create mode 100644 assets/fontawesome/svgs/brands/buromobelexperte.svg create mode 100644 assets/fontawesome/svgs/brands/buy-n-large.svg create mode 100644 assets/fontawesome/svgs/brands/buysellads.svg create mode 100644 assets/fontawesome/svgs/brands/canadian-maple-leaf.svg create mode 100644 assets/fontawesome/svgs/brands/cc-amazon-pay.svg create mode 100644 assets/fontawesome/svgs/brands/cc-amex.svg create mode 100644 assets/fontawesome/svgs/brands/cc-apple-pay.svg create mode 100644 assets/fontawesome/svgs/brands/cc-diners-club.svg create mode 100644 assets/fontawesome/svgs/brands/cc-discover.svg create mode 100644 assets/fontawesome/svgs/brands/cc-jcb.svg create mode 100644 assets/fontawesome/svgs/brands/cc-mastercard.svg create mode 100644 assets/fontawesome/svgs/brands/cc-paypal.svg create mode 100644 assets/fontawesome/svgs/brands/cc-stripe.svg create mode 100644 assets/fontawesome/svgs/brands/cc-visa.svg create mode 100644 assets/fontawesome/svgs/brands/centercode.svg create mode 100644 assets/fontawesome/svgs/brands/centos.svg create mode 100644 assets/fontawesome/svgs/brands/chrome.svg create mode 100644 assets/fontawesome/svgs/brands/chromecast.svg create mode 100644 assets/fontawesome/svgs/brands/cloudflare.svg create mode 100644 assets/fontawesome/svgs/brands/cloudscale.svg create mode 100644 assets/fontawesome/svgs/brands/cloudsmith.svg create mode 100644 assets/fontawesome/svgs/brands/cloudversify.svg create mode 100644 assets/fontawesome/svgs/brands/codepen.svg create mode 100644 assets/fontawesome/svgs/brands/codiepie.svg create mode 100644 assets/fontawesome/svgs/brands/confluence.svg create mode 100644 assets/fontawesome/svgs/brands/connectdevelop.svg create mode 100644 assets/fontawesome/svgs/brands/contao.svg create mode 100644 assets/fontawesome/svgs/brands/cotton-bureau.svg create mode 100644 assets/fontawesome/svgs/brands/cpanel.svg create mode 100644 assets/fontawesome/svgs/brands/creative-commons-by.svg create mode 100644 assets/fontawesome/svgs/brands/creative-commons-nc-eu.svg create mode 100644 assets/fontawesome/svgs/brands/creative-commons-nc-jp.svg create mode 100644 assets/fontawesome/svgs/brands/creative-commons-nc.svg create mode 100644 assets/fontawesome/svgs/brands/creative-commons-nd.svg create mode 100644 assets/fontawesome/svgs/brands/creative-commons-pd-alt.svg create mode 100644 assets/fontawesome/svgs/brands/creative-commons-pd.svg create mode 100644 assets/fontawesome/svgs/brands/creative-commons-remix.svg create mode 100644 assets/fontawesome/svgs/brands/creative-commons-sa.svg create mode 100644 assets/fontawesome/svgs/brands/creative-commons-sampling-plus.svg create mode 100644 assets/fontawesome/svgs/brands/creative-commons-sampling.svg create mode 100644 assets/fontawesome/svgs/brands/creative-commons-share.svg create mode 100644 assets/fontawesome/svgs/brands/creative-commons-zero.svg create mode 100644 assets/fontawesome/svgs/brands/creative-commons.svg create mode 100644 assets/fontawesome/svgs/brands/critical-role.svg create mode 100644 assets/fontawesome/svgs/brands/css3-alt.svg create mode 100644 assets/fontawesome/svgs/brands/css3.svg create mode 100644 assets/fontawesome/svgs/brands/cuttlefish.svg create mode 100644 assets/fontawesome/svgs/brands/d-and-d-beyond.svg create mode 100644 assets/fontawesome/svgs/brands/d-and-d.svg create mode 100644 assets/fontawesome/svgs/brands/dailymotion.svg create mode 100644 assets/fontawesome/svgs/brands/dashcube.svg create mode 100644 assets/fontawesome/svgs/brands/deezer.svg create mode 100644 assets/fontawesome/svgs/brands/delicious.svg create mode 100644 assets/fontawesome/svgs/brands/deploydog.svg create mode 100644 assets/fontawesome/svgs/brands/deskpro.svg create mode 100644 assets/fontawesome/svgs/brands/dev.svg create mode 100644 assets/fontawesome/svgs/brands/deviantart.svg create mode 100644 assets/fontawesome/svgs/brands/dhl.svg create mode 100644 assets/fontawesome/svgs/brands/diaspora.svg create mode 100644 assets/fontawesome/svgs/brands/digg.svg create mode 100644 assets/fontawesome/svgs/brands/digital-ocean.svg create mode 100644 assets/fontawesome/svgs/brands/discord.svg create mode 100644 assets/fontawesome/svgs/brands/discourse.svg create mode 100644 assets/fontawesome/svgs/brands/dochub.svg create mode 100644 assets/fontawesome/svgs/brands/docker.svg create mode 100644 assets/fontawesome/svgs/brands/draft2digital.svg create mode 100644 assets/fontawesome/svgs/brands/dribbble-square.svg create mode 100644 assets/fontawesome/svgs/brands/dribbble.svg create mode 100644 assets/fontawesome/svgs/brands/dropbox.svg create mode 100644 assets/fontawesome/svgs/brands/drupal.svg create mode 100644 assets/fontawesome/svgs/brands/dyalog.svg create mode 100644 assets/fontawesome/svgs/brands/earlybirds.svg create mode 100644 assets/fontawesome/svgs/brands/ebay.svg create mode 100644 assets/fontawesome/svgs/brands/edge-legacy.svg create mode 100644 assets/fontawesome/svgs/brands/edge.svg create mode 100644 assets/fontawesome/svgs/brands/elementor.svg create mode 100644 assets/fontawesome/svgs/brands/ello.svg create mode 100644 assets/fontawesome/svgs/brands/ember.svg create mode 100644 assets/fontawesome/svgs/brands/empire.svg create mode 100644 assets/fontawesome/svgs/brands/envira.svg create mode 100644 assets/fontawesome/svgs/brands/erlang.svg create mode 100644 assets/fontawesome/svgs/brands/ethereum.svg create mode 100644 assets/fontawesome/svgs/brands/etsy.svg create mode 100644 assets/fontawesome/svgs/brands/evernote.svg create mode 100644 assets/fontawesome/svgs/brands/expeditedssl.svg create mode 100644 assets/fontawesome/svgs/brands/facebook-f.svg create mode 100644 assets/fontawesome/svgs/brands/facebook-messenger.svg create mode 100644 assets/fontawesome/svgs/brands/facebook-square.svg create mode 100644 assets/fontawesome/svgs/brands/facebook.svg create mode 100644 assets/fontawesome/svgs/brands/fantasy-flight-games.svg create mode 100644 assets/fontawesome/svgs/brands/fedex.svg create mode 100644 assets/fontawesome/svgs/brands/fedora.svg create mode 100644 assets/fontawesome/svgs/brands/figma.svg create mode 100644 assets/fontawesome/svgs/brands/firefox-browser.svg create mode 100644 assets/fontawesome/svgs/brands/firefox.svg create mode 100644 assets/fontawesome/svgs/brands/first-order-alt.svg create mode 100644 assets/fontawesome/svgs/brands/first-order.svg create mode 100644 assets/fontawesome/svgs/brands/firstdraft.svg create mode 100644 assets/fontawesome/svgs/brands/flickr.svg create mode 100644 assets/fontawesome/svgs/brands/flipboard.svg create mode 100644 assets/fontawesome/svgs/brands/fly.svg create mode 100644 assets/fontawesome/svgs/brands/font-awesome-alt.svg create mode 100644 assets/fontawesome/svgs/brands/font-awesome-flag.svg create mode 100644 assets/fontawesome/svgs/brands/font-awesome-logo-full.svg create mode 100644 assets/fontawesome/svgs/brands/font-awesome.svg create mode 100644 assets/fontawesome/svgs/brands/fonticons-fi.svg create mode 100644 assets/fontawesome/svgs/brands/fonticons.svg create mode 100644 assets/fontawesome/svgs/brands/fort-awesome-alt.svg create mode 100644 assets/fontawesome/svgs/brands/fort-awesome.svg create mode 100644 assets/fontawesome/svgs/brands/forumbee.svg create mode 100644 assets/fontawesome/svgs/brands/foursquare.svg create mode 100644 assets/fontawesome/svgs/brands/free-code-camp.svg create mode 100644 assets/fontawesome/svgs/brands/freebsd.svg create mode 100644 assets/fontawesome/svgs/brands/fulcrum.svg create mode 100644 assets/fontawesome/svgs/brands/galactic-republic.svg create mode 100644 assets/fontawesome/svgs/brands/galactic-senate.svg create mode 100644 assets/fontawesome/svgs/brands/get-pocket.svg create mode 100644 assets/fontawesome/svgs/brands/gg-circle.svg create mode 100644 assets/fontawesome/svgs/brands/gg.svg create mode 100644 assets/fontawesome/svgs/brands/git-alt.svg create mode 100644 assets/fontawesome/svgs/brands/git-square.svg create mode 100644 assets/fontawesome/svgs/brands/git.svg create mode 100644 assets/fontawesome/svgs/brands/github-alt.svg create mode 100644 assets/fontawesome/svgs/brands/github-square.svg create mode 100644 assets/fontawesome/svgs/brands/github.svg create mode 100644 assets/fontawesome/svgs/brands/gitkraken.svg create mode 100644 assets/fontawesome/svgs/brands/gitlab.svg create mode 100644 assets/fontawesome/svgs/brands/gitter.svg create mode 100644 assets/fontawesome/svgs/brands/glide-g.svg create mode 100644 assets/fontawesome/svgs/brands/glide.svg create mode 100644 assets/fontawesome/svgs/brands/gofore.svg create mode 100644 assets/fontawesome/svgs/brands/goodreads-g.svg create mode 100644 assets/fontawesome/svgs/brands/goodreads.svg create mode 100644 assets/fontawesome/svgs/brands/google-drive.svg create mode 100644 assets/fontawesome/svgs/brands/google-pay.svg create mode 100644 assets/fontawesome/svgs/brands/google-play.svg create mode 100644 assets/fontawesome/svgs/brands/google-plus-g.svg create mode 100644 assets/fontawesome/svgs/brands/google-plus-square.svg create mode 100644 assets/fontawesome/svgs/brands/google-plus.svg create mode 100644 assets/fontawesome/svgs/brands/google-wallet.svg create mode 100644 assets/fontawesome/svgs/brands/google.svg create mode 100644 assets/fontawesome/svgs/brands/gratipay.svg create mode 100644 assets/fontawesome/svgs/brands/grav.svg create mode 100644 assets/fontawesome/svgs/brands/gripfire.svg create mode 100644 assets/fontawesome/svgs/brands/grunt.svg create mode 100644 assets/fontawesome/svgs/brands/guilded.svg create mode 100644 assets/fontawesome/svgs/brands/gulp.svg create mode 100644 assets/fontawesome/svgs/brands/hacker-news-square.svg create mode 100644 assets/fontawesome/svgs/brands/hacker-news.svg create mode 100644 assets/fontawesome/svgs/brands/hackerrank.svg create mode 100644 assets/fontawesome/svgs/brands/hips.svg create mode 100644 assets/fontawesome/svgs/brands/hire-a-helper.svg create mode 100644 assets/fontawesome/svgs/brands/hive.svg create mode 100644 assets/fontawesome/svgs/brands/hooli.svg create mode 100644 assets/fontawesome/svgs/brands/hornbill.svg create mode 100644 assets/fontawesome/svgs/brands/hotjar.svg create mode 100644 assets/fontawesome/svgs/brands/houzz.svg create mode 100644 assets/fontawesome/svgs/brands/html5.svg create mode 100644 assets/fontawesome/svgs/brands/hubspot.svg create mode 100644 assets/fontawesome/svgs/brands/ideal.svg create mode 100644 assets/fontawesome/svgs/brands/imdb.svg create mode 100644 assets/fontawesome/svgs/brands/innosoft.svg create mode 100644 assets/fontawesome/svgs/brands/instagram-square.svg create mode 100644 assets/fontawesome/svgs/brands/instagram.svg create mode 100644 assets/fontawesome/svgs/brands/instalod.svg create mode 100644 assets/fontawesome/svgs/brands/intercom.svg create mode 100644 assets/fontawesome/svgs/brands/internet-explorer.svg create mode 100644 assets/fontawesome/svgs/brands/invision.svg create mode 100644 assets/fontawesome/svgs/brands/ioxhost.svg create mode 100644 assets/fontawesome/svgs/brands/itch-io.svg create mode 100644 assets/fontawesome/svgs/brands/itunes-note.svg create mode 100644 assets/fontawesome/svgs/brands/itunes.svg create mode 100644 assets/fontawesome/svgs/brands/java.svg create mode 100644 assets/fontawesome/svgs/brands/jedi-order.svg create mode 100644 assets/fontawesome/svgs/brands/jenkins.svg create mode 100644 assets/fontawesome/svgs/brands/jira.svg create mode 100644 assets/fontawesome/svgs/brands/joget.svg create mode 100644 assets/fontawesome/svgs/brands/joomla.svg create mode 100644 assets/fontawesome/svgs/brands/js-square.svg create mode 100644 assets/fontawesome/svgs/brands/js.svg create mode 100644 assets/fontawesome/svgs/brands/jsfiddle.svg create mode 100644 assets/fontawesome/svgs/brands/kaggle.svg create mode 100644 assets/fontawesome/svgs/brands/keybase.svg create mode 100644 assets/fontawesome/svgs/brands/keycdn.svg create mode 100644 assets/fontawesome/svgs/brands/kickstarter-k.svg create mode 100644 assets/fontawesome/svgs/brands/kickstarter.svg create mode 100644 assets/fontawesome/svgs/brands/korvue.svg create mode 100644 assets/fontawesome/svgs/brands/laravel.svg create mode 100644 assets/fontawesome/svgs/brands/lastfm-square.svg create mode 100644 assets/fontawesome/svgs/brands/lastfm.svg create mode 100644 assets/fontawesome/svgs/brands/leanpub.svg create mode 100644 assets/fontawesome/svgs/brands/less.svg create mode 100644 assets/fontawesome/svgs/brands/line.svg create mode 100644 assets/fontawesome/svgs/brands/linkedin-in.svg create mode 100644 assets/fontawesome/svgs/brands/linkedin.svg create mode 100644 assets/fontawesome/svgs/brands/linode.svg create mode 100644 assets/fontawesome/svgs/brands/linux.svg create mode 100644 assets/fontawesome/svgs/brands/lyft.svg create mode 100644 assets/fontawesome/svgs/brands/magento.svg create mode 100644 assets/fontawesome/svgs/brands/mailchimp.svg create mode 100644 assets/fontawesome/svgs/brands/mandalorian.svg create mode 100644 assets/fontawesome/svgs/brands/markdown.svg create mode 100644 assets/fontawesome/svgs/brands/mastodon.svg create mode 100644 assets/fontawesome/svgs/brands/maxcdn.svg create mode 100644 assets/fontawesome/svgs/brands/mdb.svg create mode 100644 assets/fontawesome/svgs/brands/medapps.svg create mode 100644 assets/fontawesome/svgs/brands/medium-m.svg create mode 100644 assets/fontawesome/svgs/brands/medium.svg create mode 100644 assets/fontawesome/svgs/brands/medrt.svg create mode 100644 assets/fontawesome/svgs/brands/meetup.svg create mode 100644 assets/fontawesome/svgs/brands/megaport.svg create mode 100644 assets/fontawesome/svgs/brands/mendeley.svg create mode 100644 assets/fontawesome/svgs/brands/microblog.svg create mode 100644 assets/fontawesome/svgs/brands/microsoft.svg create mode 100644 assets/fontawesome/svgs/brands/mix.svg create mode 100644 assets/fontawesome/svgs/brands/mixcloud.svg create mode 100644 assets/fontawesome/svgs/brands/mixer.svg create mode 100644 assets/fontawesome/svgs/brands/mizuni.svg create mode 100644 assets/fontawesome/svgs/brands/modx.svg create mode 100644 assets/fontawesome/svgs/brands/monero.svg create mode 100644 assets/fontawesome/svgs/brands/napster.svg create mode 100644 assets/fontawesome/svgs/brands/neos.svg create mode 100644 assets/fontawesome/svgs/brands/nimblr.svg create mode 100644 assets/fontawesome/svgs/brands/node-js.svg create mode 100644 assets/fontawesome/svgs/brands/node.svg create mode 100644 assets/fontawesome/svgs/brands/npm.svg create mode 100644 assets/fontawesome/svgs/brands/ns8.svg create mode 100644 assets/fontawesome/svgs/brands/nutritionix.svg create mode 100644 assets/fontawesome/svgs/brands/octopus-deploy.svg create mode 100644 assets/fontawesome/svgs/brands/odnoklassniki-square.svg create mode 100644 assets/fontawesome/svgs/brands/odnoklassniki.svg create mode 100644 assets/fontawesome/svgs/brands/old-republic.svg create mode 100644 assets/fontawesome/svgs/brands/opencart.svg create mode 100644 assets/fontawesome/svgs/brands/openid.svg create mode 100644 assets/fontawesome/svgs/brands/opera.svg create mode 100644 assets/fontawesome/svgs/brands/optin-monster.svg create mode 100644 assets/fontawesome/svgs/brands/orcid.svg create mode 100644 assets/fontawesome/svgs/brands/osi.svg create mode 100644 assets/fontawesome/svgs/brands/page4.svg create mode 100644 assets/fontawesome/svgs/brands/pagelines.svg create mode 100644 assets/fontawesome/svgs/brands/palfed.svg create mode 100644 assets/fontawesome/svgs/brands/patreon.svg create mode 100644 assets/fontawesome/svgs/brands/paypal.svg create mode 100644 assets/fontawesome/svgs/brands/penny-arcade.svg create mode 100644 assets/fontawesome/svgs/brands/perbyte.svg create mode 100644 assets/fontawesome/svgs/brands/periscope.svg create mode 100644 assets/fontawesome/svgs/brands/phabricator.svg create mode 100644 assets/fontawesome/svgs/brands/phoenix-framework.svg create mode 100644 assets/fontawesome/svgs/brands/phoenix-squadron.svg create mode 100644 assets/fontawesome/svgs/brands/php.svg create mode 100644 assets/fontawesome/svgs/brands/pied-piper-alt.svg create mode 100644 assets/fontawesome/svgs/brands/pied-piper-hat.svg create mode 100644 assets/fontawesome/svgs/brands/pied-piper-pp.svg create mode 100644 assets/fontawesome/svgs/brands/pied-piper-square.svg create mode 100644 assets/fontawesome/svgs/brands/pied-piper.svg create mode 100644 assets/fontawesome/svgs/brands/pinterest-p.svg create mode 100644 assets/fontawesome/svgs/brands/pinterest-square.svg create mode 100644 assets/fontawesome/svgs/brands/pinterest.svg create mode 100644 assets/fontawesome/svgs/brands/playstation.svg create mode 100644 assets/fontawesome/svgs/brands/product-hunt.svg create mode 100644 assets/fontawesome/svgs/brands/pushed.svg create mode 100644 assets/fontawesome/svgs/brands/python.svg create mode 100644 assets/fontawesome/svgs/brands/qq.svg create mode 100644 assets/fontawesome/svgs/brands/quinscape.svg create mode 100644 assets/fontawesome/svgs/brands/quora.svg create mode 100644 assets/fontawesome/svgs/brands/r-project.svg create mode 100644 assets/fontawesome/svgs/brands/raspberry-pi.svg create mode 100644 assets/fontawesome/svgs/brands/ravelry.svg create mode 100644 assets/fontawesome/svgs/brands/react.svg create mode 100644 assets/fontawesome/svgs/brands/reacteurope.svg create mode 100644 assets/fontawesome/svgs/brands/readme.svg create mode 100644 assets/fontawesome/svgs/brands/rebel.svg create mode 100644 assets/fontawesome/svgs/brands/red-river.svg create mode 100644 assets/fontawesome/svgs/brands/reddit-alien.svg create mode 100644 assets/fontawesome/svgs/brands/reddit-square.svg create mode 100644 assets/fontawesome/svgs/brands/reddit.svg create mode 100644 assets/fontawesome/svgs/brands/redhat.svg create mode 100644 assets/fontawesome/svgs/brands/renren.svg create mode 100644 assets/fontawesome/svgs/brands/replyd.svg create mode 100644 assets/fontawesome/svgs/brands/researchgate.svg create mode 100644 assets/fontawesome/svgs/brands/resolving.svg create mode 100644 assets/fontawesome/svgs/brands/rev.svg create mode 100644 assets/fontawesome/svgs/brands/rocketchat.svg create mode 100644 assets/fontawesome/svgs/brands/rockrms.svg create mode 100644 assets/fontawesome/svgs/brands/rust.svg create mode 100644 assets/fontawesome/svgs/brands/safari.svg create mode 100644 assets/fontawesome/svgs/brands/salesforce.svg create mode 100644 assets/fontawesome/svgs/brands/sass.svg create mode 100644 assets/fontawesome/svgs/brands/schlix.svg create mode 100644 assets/fontawesome/svgs/brands/scribd.svg create mode 100644 assets/fontawesome/svgs/brands/searchengin.svg create mode 100644 assets/fontawesome/svgs/brands/sellcast.svg create mode 100644 assets/fontawesome/svgs/brands/sellsy.svg create mode 100644 assets/fontawesome/svgs/brands/servicestack.svg create mode 100644 assets/fontawesome/svgs/brands/shirtsinbulk.svg create mode 100644 assets/fontawesome/svgs/brands/shopify.svg create mode 100644 assets/fontawesome/svgs/brands/shopware.svg create mode 100644 assets/fontawesome/svgs/brands/simplybuilt.svg create mode 100644 assets/fontawesome/svgs/brands/sistrix.svg create mode 100644 assets/fontawesome/svgs/brands/sith.svg create mode 100644 assets/fontawesome/svgs/brands/sketch.svg create mode 100644 assets/fontawesome/svgs/brands/skyatlas.svg create mode 100644 assets/fontawesome/svgs/brands/skype.svg create mode 100644 assets/fontawesome/svgs/brands/slack-hash.svg create mode 100644 assets/fontawesome/svgs/brands/slack.svg create mode 100644 assets/fontawesome/svgs/brands/slideshare.svg create mode 100644 assets/fontawesome/svgs/brands/snapchat-ghost.svg create mode 100644 assets/fontawesome/svgs/brands/snapchat-square.svg create mode 100644 assets/fontawesome/svgs/brands/snapchat.svg create mode 100644 assets/fontawesome/svgs/brands/soundcloud.svg create mode 100644 assets/fontawesome/svgs/brands/sourcetree.svg create mode 100644 assets/fontawesome/svgs/brands/speakap.svg create mode 100644 assets/fontawesome/svgs/brands/speaker-deck.svg create mode 100644 assets/fontawesome/svgs/brands/spotify.svg create mode 100644 assets/fontawesome/svgs/brands/squarespace.svg create mode 100644 assets/fontawesome/svgs/brands/stack-exchange.svg create mode 100644 assets/fontawesome/svgs/brands/stack-overflow.svg create mode 100644 assets/fontawesome/svgs/brands/stackpath.svg create mode 100644 assets/fontawesome/svgs/brands/staylinked.svg create mode 100644 assets/fontawesome/svgs/brands/steam-square.svg create mode 100644 assets/fontawesome/svgs/brands/steam-symbol.svg create mode 100644 assets/fontawesome/svgs/brands/steam.svg create mode 100644 assets/fontawesome/svgs/brands/sticker-mule.svg create mode 100644 assets/fontawesome/svgs/brands/strava.svg create mode 100644 assets/fontawesome/svgs/brands/stripe-s.svg create mode 100644 assets/fontawesome/svgs/brands/stripe.svg create mode 100644 assets/fontawesome/svgs/brands/studiovinari.svg create mode 100644 assets/fontawesome/svgs/brands/stumbleupon-circle.svg create mode 100644 assets/fontawesome/svgs/brands/stumbleupon.svg create mode 100644 assets/fontawesome/svgs/brands/superpowers.svg create mode 100644 assets/fontawesome/svgs/brands/supple.svg create mode 100644 assets/fontawesome/svgs/brands/suse.svg create mode 100644 assets/fontawesome/svgs/brands/swift.svg create mode 100644 assets/fontawesome/svgs/brands/symfony.svg create mode 100644 assets/fontawesome/svgs/brands/teamspeak.svg create mode 100644 assets/fontawesome/svgs/brands/telegram-plane.svg create mode 100644 assets/fontawesome/svgs/brands/telegram.svg create mode 100644 assets/fontawesome/svgs/brands/tencent-weibo.svg create mode 100644 assets/fontawesome/svgs/brands/the-red-yeti.svg create mode 100644 assets/fontawesome/svgs/brands/themeco.svg create mode 100644 assets/fontawesome/svgs/brands/themeisle.svg create mode 100644 assets/fontawesome/svgs/brands/think-peaks.svg create mode 100644 assets/fontawesome/svgs/brands/tiktok.svg create mode 100644 assets/fontawesome/svgs/brands/trade-federation.svg create mode 100644 assets/fontawesome/svgs/brands/trello.svg create mode 100644 assets/fontawesome/svgs/brands/tripadvisor.svg create mode 100644 assets/fontawesome/svgs/brands/tumblr-square.svg create mode 100644 assets/fontawesome/svgs/brands/tumblr.svg create mode 100644 assets/fontawesome/svgs/brands/twitch.svg create mode 100644 assets/fontawesome/svgs/brands/twitter-square.svg create mode 100644 assets/fontawesome/svgs/brands/twitter.svg create mode 100644 assets/fontawesome/svgs/brands/typo3.svg create mode 100644 assets/fontawesome/svgs/brands/uber.svg create mode 100644 assets/fontawesome/svgs/brands/ubuntu.svg create mode 100644 assets/fontawesome/svgs/brands/uikit.svg create mode 100644 assets/fontawesome/svgs/brands/umbraco.svg create mode 100644 assets/fontawesome/svgs/brands/uncharted.svg create mode 100644 assets/fontawesome/svgs/brands/uniregistry.svg create mode 100644 assets/fontawesome/svgs/brands/unity.svg create mode 100644 assets/fontawesome/svgs/brands/unsplash.svg create mode 100644 assets/fontawesome/svgs/brands/untappd.svg create mode 100644 assets/fontawesome/svgs/brands/ups.svg create mode 100644 assets/fontawesome/svgs/brands/usb.svg create mode 100644 assets/fontawesome/svgs/brands/usps.svg create mode 100644 assets/fontawesome/svgs/brands/ussunnah.svg create mode 100644 assets/fontawesome/svgs/brands/vaadin.svg create mode 100644 assets/fontawesome/svgs/brands/viacoin.svg create mode 100644 assets/fontawesome/svgs/brands/viadeo-square.svg create mode 100644 assets/fontawesome/svgs/brands/viadeo.svg create mode 100644 assets/fontawesome/svgs/brands/viber.svg create mode 100644 assets/fontawesome/svgs/brands/vimeo-square.svg create mode 100644 assets/fontawesome/svgs/brands/vimeo-v.svg create mode 100644 assets/fontawesome/svgs/brands/vimeo.svg create mode 100644 assets/fontawesome/svgs/brands/vine.svg create mode 100644 assets/fontawesome/svgs/brands/vk.svg create mode 100644 assets/fontawesome/svgs/brands/vnv.svg create mode 100644 assets/fontawesome/svgs/brands/vuejs.svg create mode 100644 assets/fontawesome/svgs/brands/watchman-monitoring.svg create mode 100644 assets/fontawesome/svgs/brands/waze.svg create mode 100644 assets/fontawesome/svgs/brands/weebly.svg create mode 100644 assets/fontawesome/svgs/brands/weibo.svg create mode 100644 assets/fontawesome/svgs/brands/weixin.svg create mode 100644 assets/fontawesome/svgs/brands/whatsapp-square.svg create mode 100644 assets/fontawesome/svgs/brands/whatsapp.svg create mode 100644 assets/fontawesome/svgs/brands/whmcs.svg create mode 100644 assets/fontawesome/svgs/brands/wikipedia-w.svg create mode 100644 assets/fontawesome/svgs/brands/windows.svg create mode 100644 assets/fontawesome/svgs/brands/wix.svg create mode 100644 assets/fontawesome/svgs/brands/wizards-of-the-coast.svg create mode 100644 assets/fontawesome/svgs/brands/wodu.svg create mode 100644 assets/fontawesome/svgs/brands/wolf-pack-battalion.svg create mode 100644 assets/fontawesome/svgs/brands/wordpress-simple.svg create mode 100644 assets/fontawesome/svgs/brands/wordpress.svg create mode 100644 assets/fontawesome/svgs/brands/wpbeginner.svg create mode 100644 assets/fontawesome/svgs/brands/wpexplorer.svg create mode 100644 assets/fontawesome/svgs/brands/wpforms.svg create mode 100644 assets/fontawesome/svgs/brands/wpressr.svg create mode 100644 assets/fontawesome/svgs/brands/xbox.svg create mode 100644 assets/fontawesome/svgs/brands/xing-square.svg create mode 100644 assets/fontawesome/svgs/brands/xing.svg create mode 100644 assets/fontawesome/svgs/brands/y-combinator.svg create mode 100644 assets/fontawesome/svgs/brands/yahoo.svg create mode 100644 assets/fontawesome/svgs/brands/yammer.svg create mode 100644 assets/fontawesome/svgs/brands/yandex-international.svg create mode 100644 assets/fontawesome/svgs/brands/yandex.svg create mode 100644 assets/fontawesome/svgs/brands/yarn.svg create mode 100644 assets/fontawesome/svgs/brands/yelp.svg create mode 100644 assets/fontawesome/svgs/brands/yoast.svg create mode 100644 assets/fontawesome/svgs/brands/youtube-square.svg create mode 100644 assets/fontawesome/svgs/brands/youtube.svg create mode 100644 assets/fontawesome/svgs/brands/zhihu.svg create mode 100644 assets/fontawesome/svgs/regular/address-book.svg create mode 100644 assets/fontawesome/svgs/regular/address-card.svg create mode 100644 assets/fontawesome/svgs/regular/angry.svg create mode 100644 assets/fontawesome/svgs/regular/arrow-alt-circle-down.svg create mode 100644 assets/fontawesome/svgs/regular/arrow-alt-circle-left.svg create mode 100644 assets/fontawesome/svgs/regular/arrow-alt-circle-right.svg create mode 100644 assets/fontawesome/svgs/regular/arrow-alt-circle-up.svg create mode 100644 assets/fontawesome/svgs/regular/bell-slash.svg create mode 100644 assets/fontawesome/svgs/regular/bell.svg create mode 100644 assets/fontawesome/svgs/regular/bookmark.svg create mode 100644 assets/fontawesome/svgs/regular/building.svg create mode 100644 assets/fontawesome/svgs/regular/calendar-alt.svg create mode 100644 assets/fontawesome/svgs/regular/calendar-check.svg create mode 100644 assets/fontawesome/svgs/regular/calendar-minus.svg create mode 100644 assets/fontawesome/svgs/regular/calendar-plus.svg create mode 100644 assets/fontawesome/svgs/regular/calendar-times.svg create mode 100644 assets/fontawesome/svgs/regular/calendar.svg create mode 100644 assets/fontawesome/svgs/regular/caret-square-down.svg create mode 100644 assets/fontawesome/svgs/regular/caret-square-left.svg create mode 100644 assets/fontawesome/svgs/regular/caret-square-right.svg create mode 100644 assets/fontawesome/svgs/regular/caret-square-up.svg create mode 100644 assets/fontawesome/svgs/regular/chart-bar.svg create mode 100644 assets/fontawesome/svgs/regular/check-circle.svg create mode 100644 assets/fontawesome/svgs/regular/check-square.svg create mode 100644 assets/fontawesome/svgs/regular/circle.svg create mode 100644 assets/fontawesome/svgs/regular/clipboard.svg create mode 100644 assets/fontawesome/svgs/regular/clock.svg create mode 100644 assets/fontawesome/svgs/regular/clone.svg create mode 100644 assets/fontawesome/svgs/regular/closed-captioning.svg create mode 100644 assets/fontawesome/svgs/regular/comment-alt.svg create mode 100644 assets/fontawesome/svgs/regular/comment-dots.svg create mode 100644 assets/fontawesome/svgs/regular/comment.svg create mode 100644 assets/fontawesome/svgs/regular/comments.svg create mode 100644 assets/fontawesome/svgs/regular/compass.svg create mode 100644 assets/fontawesome/svgs/regular/copy.svg create mode 100644 assets/fontawesome/svgs/regular/copyright.svg create mode 100644 assets/fontawesome/svgs/regular/credit-card.svg create mode 100644 assets/fontawesome/svgs/regular/dizzy.svg create mode 100644 assets/fontawesome/svgs/regular/dot-circle.svg create mode 100644 assets/fontawesome/svgs/regular/edit.svg create mode 100644 assets/fontawesome/svgs/regular/envelope-open.svg create mode 100644 assets/fontawesome/svgs/regular/envelope.svg create mode 100644 assets/fontawesome/svgs/regular/eye-slash.svg create mode 100644 assets/fontawesome/svgs/regular/eye.svg create mode 100644 assets/fontawesome/svgs/regular/file-alt.svg create mode 100644 assets/fontawesome/svgs/regular/file-archive.svg create mode 100644 assets/fontawesome/svgs/regular/file-audio.svg create mode 100644 assets/fontawesome/svgs/regular/file-code.svg create mode 100644 assets/fontawesome/svgs/regular/file-excel.svg create mode 100644 assets/fontawesome/svgs/regular/file-image.svg create mode 100644 assets/fontawesome/svgs/regular/file-pdf.svg create mode 100644 assets/fontawesome/svgs/regular/file-powerpoint.svg create mode 100644 assets/fontawesome/svgs/regular/file-video.svg create mode 100644 assets/fontawesome/svgs/regular/file-word.svg create mode 100644 assets/fontawesome/svgs/regular/file.svg create mode 100644 assets/fontawesome/svgs/regular/flag.svg create mode 100644 assets/fontawesome/svgs/regular/flushed.svg create mode 100644 assets/fontawesome/svgs/regular/folder-open.svg create mode 100644 assets/fontawesome/svgs/regular/folder.svg create mode 100644 assets/fontawesome/svgs/regular/font-awesome-logo-full.svg create mode 100644 assets/fontawesome/svgs/regular/frown-open.svg create mode 100644 assets/fontawesome/svgs/regular/frown.svg create mode 100644 assets/fontawesome/svgs/regular/futbol.svg create mode 100644 assets/fontawesome/svgs/regular/gem.svg create mode 100644 assets/fontawesome/svgs/regular/grimace.svg create mode 100644 assets/fontawesome/svgs/regular/grin-alt.svg create mode 100644 assets/fontawesome/svgs/regular/grin-beam-sweat.svg create mode 100644 assets/fontawesome/svgs/regular/grin-beam.svg create mode 100644 assets/fontawesome/svgs/regular/grin-hearts.svg create mode 100644 assets/fontawesome/svgs/regular/grin-squint-tears.svg create mode 100644 assets/fontawesome/svgs/regular/grin-squint.svg create mode 100644 assets/fontawesome/svgs/regular/grin-stars.svg create mode 100644 assets/fontawesome/svgs/regular/grin-tears.svg create mode 100644 assets/fontawesome/svgs/regular/grin-tongue-squint.svg create mode 100644 assets/fontawesome/svgs/regular/grin-tongue-wink.svg create mode 100644 assets/fontawesome/svgs/regular/grin-tongue.svg create mode 100644 assets/fontawesome/svgs/regular/grin-wink.svg create mode 100644 assets/fontawesome/svgs/regular/grin.svg create mode 100644 assets/fontawesome/svgs/regular/hand-lizard.svg create mode 100644 assets/fontawesome/svgs/regular/hand-paper.svg create mode 100644 assets/fontawesome/svgs/regular/hand-peace.svg create mode 100644 assets/fontawesome/svgs/regular/hand-point-down.svg create mode 100644 assets/fontawesome/svgs/regular/hand-point-left.svg create mode 100644 assets/fontawesome/svgs/regular/hand-point-right.svg create mode 100644 assets/fontawesome/svgs/regular/hand-point-up.svg create mode 100644 assets/fontawesome/svgs/regular/hand-pointer.svg create mode 100644 assets/fontawesome/svgs/regular/hand-rock.svg create mode 100644 assets/fontawesome/svgs/regular/hand-scissors.svg create mode 100644 assets/fontawesome/svgs/regular/hand-spock.svg create mode 100644 assets/fontawesome/svgs/regular/handshake.svg create mode 100644 assets/fontawesome/svgs/regular/hdd.svg create mode 100644 assets/fontawesome/svgs/regular/heart.svg create mode 100644 assets/fontawesome/svgs/regular/hospital.svg create mode 100644 assets/fontawesome/svgs/regular/hourglass.svg create mode 100644 assets/fontawesome/svgs/regular/id-badge.svg create mode 100644 assets/fontawesome/svgs/regular/id-card.svg create mode 100644 assets/fontawesome/svgs/regular/image.svg create mode 100644 assets/fontawesome/svgs/regular/images.svg create mode 100644 assets/fontawesome/svgs/regular/keyboard.svg create mode 100644 assets/fontawesome/svgs/regular/kiss-beam.svg create mode 100644 assets/fontawesome/svgs/regular/kiss-wink-heart.svg create mode 100644 assets/fontawesome/svgs/regular/kiss.svg create mode 100644 assets/fontawesome/svgs/regular/laugh-beam.svg create mode 100644 assets/fontawesome/svgs/regular/laugh-squint.svg create mode 100644 assets/fontawesome/svgs/regular/laugh-wink.svg create mode 100644 assets/fontawesome/svgs/regular/laugh.svg create mode 100644 assets/fontawesome/svgs/regular/lemon.svg create mode 100644 assets/fontawesome/svgs/regular/life-ring.svg create mode 100644 assets/fontawesome/svgs/regular/lightbulb.svg create mode 100644 assets/fontawesome/svgs/regular/list-alt.svg create mode 100644 assets/fontawesome/svgs/regular/map.svg create mode 100644 assets/fontawesome/svgs/regular/meh-blank.svg create mode 100644 assets/fontawesome/svgs/regular/meh-rolling-eyes.svg create mode 100644 assets/fontawesome/svgs/regular/meh.svg create mode 100644 assets/fontawesome/svgs/regular/minus-square.svg create mode 100644 assets/fontawesome/svgs/regular/money-bill-alt.svg create mode 100644 assets/fontawesome/svgs/regular/moon.svg create mode 100644 assets/fontawesome/svgs/regular/newspaper.svg create mode 100644 assets/fontawesome/svgs/regular/object-group.svg create mode 100644 assets/fontawesome/svgs/regular/object-ungroup.svg create mode 100644 assets/fontawesome/svgs/regular/paper-plane.svg create mode 100644 assets/fontawesome/svgs/regular/pause-circle.svg create mode 100644 assets/fontawesome/svgs/regular/play-circle.svg create mode 100644 assets/fontawesome/svgs/regular/plus-square.svg create mode 100644 assets/fontawesome/svgs/regular/question-circle.svg create mode 100644 assets/fontawesome/svgs/regular/registered.svg create mode 100644 assets/fontawesome/svgs/regular/sad-cry.svg create mode 100644 assets/fontawesome/svgs/regular/sad-tear.svg create mode 100644 assets/fontawesome/svgs/regular/save.svg create mode 100644 assets/fontawesome/svgs/regular/share-square.svg create mode 100644 assets/fontawesome/svgs/regular/smile-beam.svg create mode 100644 assets/fontawesome/svgs/regular/smile-wink.svg create mode 100644 assets/fontawesome/svgs/regular/smile.svg create mode 100644 assets/fontawesome/svgs/regular/snowflake.svg create mode 100644 assets/fontawesome/svgs/regular/square.svg create mode 100644 assets/fontawesome/svgs/regular/star-half.svg create mode 100644 assets/fontawesome/svgs/regular/star.svg create mode 100644 assets/fontawesome/svgs/regular/sticky-note.svg create mode 100644 assets/fontawesome/svgs/regular/stop-circle.svg create mode 100644 assets/fontawesome/svgs/regular/sun.svg create mode 100644 assets/fontawesome/svgs/regular/surprise.svg create mode 100644 assets/fontawesome/svgs/regular/thumbs-down.svg create mode 100644 assets/fontawesome/svgs/regular/thumbs-up.svg create mode 100644 assets/fontawesome/svgs/regular/times-circle.svg create mode 100644 assets/fontawesome/svgs/regular/tired.svg create mode 100644 assets/fontawesome/svgs/regular/trash-alt.svg create mode 100644 assets/fontawesome/svgs/regular/user-circle.svg create mode 100644 assets/fontawesome/svgs/regular/user.svg create mode 100644 assets/fontawesome/svgs/regular/window-close.svg create mode 100644 assets/fontawesome/svgs/regular/window-maximize.svg create mode 100644 assets/fontawesome/svgs/regular/window-minimize.svg create mode 100644 assets/fontawesome/svgs/regular/window-restore.svg create mode 100644 assets/fontawesome/svgs/solid/ad.svg create mode 100644 assets/fontawesome/svgs/solid/address-book.svg create mode 100644 assets/fontawesome/svgs/solid/address-card.svg create mode 100644 assets/fontawesome/svgs/solid/adjust.svg create mode 100644 assets/fontawesome/svgs/solid/air-freshener.svg create mode 100644 assets/fontawesome/svgs/solid/align-center.svg create mode 100644 assets/fontawesome/svgs/solid/align-justify.svg create mode 100644 assets/fontawesome/svgs/solid/align-left.svg create mode 100644 assets/fontawesome/svgs/solid/align-right.svg create mode 100644 assets/fontawesome/svgs/solid/allergies.svg create mode 100644 assets/fontawesome/svgs/solid/ambulance.svg create mode 100644 assets/fontawesome/svgs/solid/american-sign-language-interpreting.svg create mode 100644 assets/fontawesome/svgs/solid/anchor.svg create mode 100644 assets/fontawesome/svgs/solid/angle-double-down.svg create mode 100644 assets/fontawesome/svgs/solid/angle-double-left.svg create mode 100644 assets/fontawesome/svgs/solid/angle-double-right.svg create mode 100644 assets/fontawesome/svgs/solid/angle-double-up.svg create mode 100644 assets/fontawesome/svgs/solid/angle-down.svg create mode 100644 assets/fontawesome/svgs/solid/angle-left.svg create mode 100644 assets/fontawesome/svgs/solid/angle-right.svg create mode 100644 assets/fontawesome/svgs/solid/angle-up.svg create mode 100644 assets/fontawesome/svgs/solid/angry.svg create mode 100644 assets/fontawesome/svgs/solid/ankh.svg create mode 100644 assets/fontawesome/svgs/solid/apple-alt.svg create mode 100644 assets/fontawesome/svgs/solid/archive.svg create mode 100644 assets/fontawesome/svgs/solid/archway.svg create mode 100644 assets/fontawesome/svgs/solid/arrow-alt-circle-down.svg create mode 100644 assets/fontawesome/svgs/solid/arrow-alt-circle-left.svg create mode 100644 assets/fontawesome/svgs/solid/arrow-alt-circle-right.svg create mode 100644 assets/fontawesome/svgs/solid/arrow-alt-circle-up.svg create mode 100644 assets/fontawesome/svgs/solid/arrow-circle-down.svg create mode 100644 assets/fontawesome/svgs/solid/arrow-circle-left.svg create mode 100644 assets/fontawesome/svgs/solid/arrow-circle-right.svg create mode 100644 assets/fontawesome/svgs/solid/arrow-circle-up.svg create mode 100644 assets/fontawesome/svgs/solid/arrow-down.svg create mode 100644 assets/fontawesome/svgs/solid/arrow-left.svg create mode 100644 assets/fontawesome/svgs/solid/arrow-right.svg create mode 100644 assets/fontawesome/svgs/solid/arrow-up.svg create mode 100644 assets/fontawesome/svgs/solid/arrows-alt-h.svg create mode 100644 assets/fontawesome/svgs/solid/arrows-alt-v.svg create mode 100644 assets/fontawesome/svgs/solid/arrows-alt.svg create mode 100644 assets/fontawesome/svgs/solid/assistive-listening-systems.svg create mode 100644 assets/fontawesome/svgs/solid/asterisk.svg create mode 100644 assets/fontawesome/svgs/solid/at.svg create mode 100644 assets/fontawesome/svgs/solid/atlas.svg create mode 100644 assets/fontawesome/svgs/solid/atom.svg create mode 100644 assets/fontawesome/svgs/solid/audio-description.svg create mode 100644 assets/fontawesome/svgs/solid/award.svg create mode 100644 assets/fontawesome/svgs/solid/baby-carriage.svg create mode 100644 assets/fontawesome/svgs/solid/baby.svg create mode 100644 assets/fontawesome/svgs/solid/backspace.svg create mode 100644 assets/fontawesome/svgs/solid/backward.svg create mode 100644 assets/fontawesome/svgs/solid/bacon.svg create mode 100644 assets/fontawesome/svgs/solid/bacteria.svg create mode 100644 assets/fontawesome/svgs/solid/bacterium.svg create mode 100644 assets/fontawesome/svgs/solid/bahai.svg create mode 100644 assets/fontawesome/svgs/solid/balance-scale-left.svg create mode 100644 assets/fontawesome/svgs/solid/balance-scale-right.svg create mode 100644 assets/fontawesome/svgs/solid/balance-scale.svg create mode 100644 assets/fontawesome/svgs/solid/ban.svg create mode 100644 assets/fontawesome/svgs/solid/band-aid.svg create mode 100644 assets/fontawesome/svgs/solid/barcode.svg create mode 100644 assets/fontawesome/svgs/solid/bars.svg create mode 100644 assets/fontawesome/svgs/solid/baseball-ball.svg create mode 100644 assets/fontawesome/svgs/solid/basketball-ball.svg create mode 100644 assets/fontawesome/svgs/solid/bath.svg create mode 100644 assets/fontawesome/svgs/solid/battery-empty.svg create mode 100644 assets/fontawesome/svgs/solid/battery-full.svg create mode 100644 assets/fontawesome/svgs/solid/battery-half.svg create mode 100644 assets/fontawesome/svgs/solid/battery-quarter.svg create mode 100644 assets/fontawesome/svgs/solid/battery-three-quarters.svg create mode 100644 assets/fontawesome/svgs/solid/bed.svg create mode 100644 assets/fontawesome/svgs/solid/beer.svg create mode 100644 assets/fontawesome/svgs/solid/bell-slash.svg create mode 100644 assets/fontawesome/svgs/solid/bell.svg create mode 100644 assets/fontawesome/svgs/solid/bezier-curve.svg create mode 100644 assets/fontawesome/svgs/solid/bible.svg create mode 100644 assets/fontawesome/svgs/solid/bicycle.svg create mode 100644 assets/fontawesome/svgs/solid/biking.svg create mode 100644 assets/fontawesome/svgs/solid/binoculars.svg create mode 100644 assets/fontawesome/svgs/solid/biohazard.svg create mode 100644 assets/fontawesome/svgs/solid/birthday-cake.svg create mode 100644 assets/fontawesome/svgs/solid/blender-phone.svg create mode 100644 assets/fontawesome/svgs/solid/blender.svg create mode 100644 assets/fontawesome/svgs/solid/blind.svg create mode 100644 assets/fontawesome/svgs/solid/blog.svg create mode 100644 assets/fontawesome/svgs/solid/bold.svg create mode 100644 assets/fontawesome/svgs/solid/bolt.svg create mode 100644 assets/fontawesome/svgs/solid/bomb.svg create mode 100644 assets/fontawesome/svgs/solid/bone.svg create mode 100644 assets/fontawesome/svgs/solid/bong.svg create mode 100644 assets/fontawesome/svgs/solid/book-dead.svg create mode 100644 assets/fontawesome/svgs/solid/book-medical.svg create mode 100644 assets/fontawesome/svgs/solid/book-open.svg create mode 100644 assets/fontawesome/svgs/solid/book-reader.svg create mode 100644 assets/fontawesome/svgs/solid/book.svg create mode 100644 assets/fontawesome/svgs/solid/bookmark.svg create mode 100644 assets/fontawesome/svgs/solid/border-all.svg create mode 100644 assets/fontawesome/svgs/solid/border-none.svg create mode 100644 assets/fontawesome/svgs/solid/border-style.svg create mode 100644 assets/fontawesome/svgs/solid/bowling-ball.svg create mode 100644 assets/fontawesome/svgs/solid/box-open.svg create mode 100644 assets/fontawesome/svgs/solid/box-tissue.svg create mode 100644 assets/fontawesome/svgs/solid/box.svg create mode 100644 assets/fontawesome/svgs/solid/boxes.svg create mode 100644 assets/fontawesome/svgs/solid/braille.svg create mode 100644 assets/fontawesome/svgs/solid/brain.svg create mode 100644 assets/fontawesome/svgs/solid/bread-slice.svg create mode 100644 assets/fontawesome/svgs/solid/briefcase-medical.svg create mode 100644 assets/fontawesome/svgs/solid/briefcase.svg create mode 100644 assets/fontawesome/svgs/solid/broadcast-tower.svg create mode 100644 assets/fontawesome/svgs/solid/broom.svg create mode 100644 assets/fontawesome/svgs/solid/brush.svg create mode 100644 assets/fontawesome/svgs/solid/bug.svg create mode 100644 assets/fontawesome/svgs/solid/building.svg create mode 100644 assets/fontawesome/svgs/solid/bullhorn.svg create mode 100644 assets/fontawesome/svgs/solid/bullseye.svg create mode 100644 assets/fontawesome/svgs/solid/burn.svg create mode 100644 assets/fontawesome/svgs/solid/bus-alt.svg create mode 100644 assets/fontawesome/svgs/solid/bus.svg create mode 100644 assets/fontawesome/svgs/solid/business-time.svg create mode 100644 assets/fontawesome/svgs/solid/calculator.svg create mode 100644 assets/fontawesome/svgs/solid/calendar-alt.svg create mode 100644 assets/fontawesome/svgs/solid/calendar-check.svg create mode 100644 assets/fontawesome/svgs/solid/calendar-day.svg create mode 100644 assets/fontawesome/svgs/solid/calendar-minus.svg create mode 100644 assets/fontawesome/svgs/solid/calendar-plus.svg create mode 100644 assets/fontawesome/svgs/solid/calendar-times.svg create mode 100644 assets/fontawesome/svgs/solid/calendar-week.svg create mode 100644 assets/fontawesome/svgs/solid/calendar.svg create mode 100644 assets/fontawesome/svgs/solid/camera-retro.svg create mode 100644 assets/fontawesome/svgs/solid/camera.svg create mode 100644 assets/fontawesome/svgs/solid/campground.svg create mode 100644 assets/fontawesome/svgs/solid/candy-cane.svg create mode 100644 assets/fontawesome/svgs/solid/cannabis.svg create mode 100644 assets/fontawesome/svgs/solid/capsules.svg create mode 100644 assets/fontawesome/svgs/solid/car-alt.svg create mode 100644 assets/fontawesome/svgs/solid/car-battery.svg create mode 100644 assets/fontawesome/svgs/solid/car-crash.svg create mode 100644 assets/fontawesome/svgs/solid/car-side.svg create mode 100644 assets/fontawesome/svgs/solid/car.svg create mode 100644 assets/fontawesome/svgs/solid/caravan.svg create mode 100644 assets/fontawesome/svgs/solid/caret-down.svg create mode 100644 assets/fontawesome/svgs/solid/caret-left.svg create mode 100644 assets/fontawesome/svgs/solid/caret-right.svg create mode 100644 assets/fontawesome/svgs/solid/caret-square-down.svg create mode 100644 assets/fontawesome/svgs/solid/caret-square-left.svg create mode 100644 assets/fontawesome/svgs/solid/caret-square-right.svg create mode 100644 assets/fontawesome/svgs/solid/caret-square-up.svg create mode 100644 assets/fontawesome/svgs/solid/caret-up.svg create mode 100644 assets/fontawesome/svgs/solid/carrot.svg create mode 100644 assets/fontawesome/svgs/solid/cart-arrow-down.svg create mode 100644 assets/fontawesome/svgs/solid/cart-plus.svg create mode 100644 assets/fontawesome/svgs/solid/cash-register.svg create mode 100644 assets/fontawesome/svgs/solid/cat.svg create mode 100644 assets/fontawesome/svgs/solid/certificate.svg create mode 100644 assets/fontawesome/svgs/solid/chair.svg create mode 100644 assets/fontawesome/svgs/solid/chalkboard-teacher.svg create mode 100644 assets/fontawesome/svgs/solid/chalkboard.svg create mode 100644 assets/fontawesome/svgs/solid/charging-station.svg create mode 100644 assets/fontawesome/svgs/solid/chart-area.svg create mode 100644 assets/fontawesome/svgs/solid/chart-bar.svg create mode 100644 assets/fontawesome/svgs/solid/chart-line.svg create mode 100644 assets/fontawesome/svgs/solid/chart-pie.svg create mode 100644 assets/fontawesome/svgs/solid/check-circle.svg create mode 100644 assets/fontawesome/svgs/solid/check-double.svg create mode 100644 assets/fontawesome/svgs/solid/check-square.svg create mode 100644 assets/fontawesome/svgs/solid/check.svg create mode 100644 assets/fontawesome/svgs/solid/cheese.svg create mode 100644 assets/fontawesome/svgs/solid/chess-bishop.svg create mode 100644 assets/fontawesome/svgs/solid/chess-board.svg create mode 100644 assets/fontawesome/svgs/solid/chess-king.svg create mode 100644 assets/fontawesome/svgs/solid/chess-knight.svg create mode 100644 assets/fontawesome/svgs/solid/chess-pawn.svg create mode 100644 assets/fontawesome/svgs/solid/chess-queen.svg create mode 100644 assets/fontawesome/svgs/solid/chess-rook.svg create mode 100644 assets/fontawesome/svgs/solid/chess.svg create mode 100644 assets/fontawesome/svgs/solid/chevron-circle-down.svg create mode 100644 assets/fontawesome/svgs/solid/chevron-circle-left.svg create mode 100644 assets/fontawesome/svgs/solid/chevron-circle-right.svg create mode 100644 assets/fontawesome/svgs/solid/chevron-circle-up.svg create mode 100644 assets/fontawesome/svgs/solid/chevron-down.svg create mode 100644 assets/fontawesome/svgs/solid/chevron-left.svg create mode 100644 assets/fontawesome/svgs/solid/chevron-right.svg create mode 100644 assets/fontawesome/svgs/solid/chevron-up.svg create mode 100644 assets/fontawesome/svgs/solid/child.svg create mode 100644 assets/fontawesome/svgs/solid/church.svg create mode 100644 assets/fontawesome/svgs/solid/circle-notch.svg create mode 100644 assets/fontawesome/svgs/solid/circle.svg create mode 100644 assets/fontawesome/svgs/solid/city.svg create mode 100644 assets/fontawesome/svgs/solid/clinic-medical.svg create mode 100644 assets/fontawesome/svgs/solid/clipboard-check.svg create mode 100644 assets/fontawesome/svgs/solid/clipboard-list.svg create mode 100644 assets/fontawesome/svgs/solid/clipboard.svg create mode 100644 assets/fontawesome/svgs/solid/clock.svg create mode 100644 assets/fontawesome/svgs/solid/clone.svg create mode 100644 assets/fontawesome/svgs/solid/closed-captioning.svg create mode 100644 assets/fontawesome/svgs/solid/cloud-download-alt.svg create mode 100644 assets/fontawesome/svgs/solid/cloud-meatball.svg create mode 100644 assets/fontawesome/svgs/solid/cloud-moon-rain.svg create mode 100644 assets/fontawesome/svgs/solid/cloud-moon.svg create mode 100644 assets/fontawesome/svgs/solid/cloud-rain.svg create mode 100644 assets/fontawesome/svgs/solid/cloud-showers-heavy.svg create mode 100644 assets/fontawesome/svgs/solid/cloud-sun-rain.svg create mode 100644 assets/fontawesome/svgs/solid/cloud-sun.svg create mode 100644 assets/fontawesome/svgs/solid/cloud-upload-alt.svg create mode 100644 assets/fontawesome/svgs/solid/cloud.svg create mode 100644 assets/fontawesome/svgs/solid/cocktail.svg create mode 100644 assets/fontawesome/svgs/solid/code-branch.svg create mode 100644 assets/fontawesome/svgs/solid/code.svg create mode 100644 assets/fontawesome/svgs/solid/coffee.svg create mode 100644 assets/fontawesome/svgs/solid/cog.svg create mode 100644 assets/fontawesome/svgs/solid/cogs.svg create mode 100644 assets/fontawesome/svgs/solid/coins.svg create mode 100644 assets/fontawesome/svgs/solid/columns.svg create mode 100644 assets/fontawesome/svgs/solid/comment-alt.svg create mode 100644 assets/fontawesome/svgs/solid/comment-dollar.svg create mode 100644 assets/fontawesome/svgs/solid/comment-dots.svg create mode 100644 assets/fontawesome/svgs/solid/comment-medical.svg create mode 100644 assets/fontawesome/svgs/solid/comment-slash.svg create mode 100644 assets/fontawesome/svgs/solid/comment.svg create mode 100644 assets/fontawesome/svgs/solid/comments-dollar.svg create mode 100644 assets/fontawesome/svgs/solid/comments.svg create mode 100644 assets/fontawesome/svgs/solid/compact-disc.svg create mode 100644 assets/fontawesome/svgs/solid/compass.svg create mode 100644 assets/fontawesome/svgs/solid/compress-alt.svg create mode 100644 assets/fontawesome/svgs/solid/compress-arrows-alt.svg create mode 100644 assets/fontawesome/svgs/solid/compress.svg create mode 100644 assets/fontawesome/svgs/solid/concierge-bell.svg create mode 100644 assets/fontawesome/svgs/solid/cookie-bite.svg create mode 100644 assets/fontawesome/svgs/solid/cookie.svg create mode 100644 assets/fontawesome/svgs/solid/copy.svg create mode 100644 assets/fontawesome/svgs/solid/copyright.svg create mode 100644 assets/fontawesome/svgs/solid/couch.svg create mode 100644 assets/fontawesome/svgs/solid/credit-card.svg create mode 100644 assets/fontawesome/svgs/solid/crop-alt.svg create mode 100644 assets/fontawesome/svgs/solid/crop.svg create mode 100644 assets/fontawesome/svgs/solid/cross.svg create mode 100644 assets/fontawesome/svgs/solid/crosshairs.svg create mode 100644 assets/fontawesome/svgs/solid/crow.svg create mode 100644 assets/fontawesome/svgs/solid/crown.svg create mode 100644 assets/fontawesome/svgs/solid/crutch.svg create mode 100644 assets/fontawesome/svgs/solid/cube.svg create mode 100644 assets/fontawesome/svgs/solid/cubes.svg create mode 100644 assets/fontawesome/svgs/solid/cut.svg create mode 100644 assets/fontawesome/svgs/solid/database.svg create mode 100644 assets/fontawesome/svgs/solid/deaf.svg create mode 100644 assets/fontawesome/svgs/solid/democrat.svg create mode 100644 assets/fontawesome/svgs/solid/desktop.svg create mode 100644 assets/fontawesome/svgs/solid/dharmachakra.svg create mode 100644 assets/fontawesome/svgs/solid/diagnoses.svg create mode 100644 assets/fontawesome/svgs/solid/dice-d20.svg create mode 100644 assets/fontawesome/svgs/solid/dice-d6.svg create mode 100644 assets/fontawesome/svgs/solid/dice-five.svg create mode 100644 assets/fontawesome/svgs/solid/dice-four.svg create mode 100644 assets/fontawesome/svgs/solid/dice-one.svg create mode 100644 assets/fontawesome/svgs/solid/dice-six.svg create mode 100644 assets/fontawesome/svgs/solid/dice-three.svg create mode 100644 assets/fontawesome/svgs/solid/dice-two.svg create mode 100644 assets/fontawesome/svgs/solid/dice.svg create mode 100644 assets/fontawesome/svgs/solid/digital-tachograph.svg create mode 100644 assets/fontawesome/svgs/solid/directions.svg create mode 100644 assets/fontawesome/svgs/solid/disease.svg create mode 100644 assets/fontawesome/svgs/solid/divide.svg create mode 100644 assets/fontawesome/svgs/solid/dizzy.svg create mode 100644 assets/fontawesome/svgs/solid/dna.svg create mode 100644 assets/fontawesome/svgs/solid/dog.svg create mode 100644 assets/fontawesome/svgs/solid/dollar-sign.svg create mode 100644 assets/fontawesome/svgs/solid/dolly-flatbed.svg create mode 100644 assets/fontawesome/svgs/solid/dolly.svg create mode 100644 assets/fontawesome/svgs/solid/donate.svg create mode 100644 assets/fontawesome/svgs/solid/door-closed.svg create mode 100644 assets/fontawesome/svgs/solid/door-open.svg create mode 100644 assets/fontawesome/svgs/solid/dot-circle.svg create mode 100644 assets/fontawesome/svgs/solid/dove.svg create mode 100644 assets/fontawesome/svgs/solid/download.svg create mode 100644 assets/fontawesome/svgs/solid/drafting-compass.svg create mode 100644 assets/fontawesome/svgs/solid/dragon.svg create mode 100644 assets/fontawesome/svgs/solid/draw-polygon.svg create mode 100644 assets/fontawesome/svgs/solid/drum-steelpan.svg create mode 100644 assets/fontawesome/svgs/solid/drum.svg create mode 100644 assets/fontawesome/svgs/solid/drumstick-bite.svg create mode 100644 assets/fontawesome/svgs/solid/dumbbell.svg create mode 100644 assets/fontawesome/svgs/solid/dumpster-fire.svg create mode 100644 assets/fontawesome/svgs/solid/dumpster.svg create mode 100644 assets/fontawesome/svgs/solid/dungeon.svg create mode 100644 assets/fontawesome/svgs/solid/edit.svg create mode 100644 assets/fontawesome/svgs/solid/egg.svg create mode 100644 assets/fontawesome/svgs/solid/eject.svg create mode 100644 assets/fontawesome/svgs/solid/ellipsis-h.svg create mode 100644 assets/fontawesome/svgs/solid/ellipsis-v.svg create mode 100644 assets/fontawesome/svgs/solid/envelope-open-text.svg create mode 100644 assets/fontawesome/svgs/solid/envelope-open.svg create mode 100644 assets/fontawesome/svgs/solid/envelope-square.svg create mode 100644 assets/fontawesome/svgs/solid/envelope.svg create mode 100644 assets/fontawesome/svgs/solid/equals.svg create mode 100644 assets/fontawesome/svgs/solid/eraser.svg create mode 100644 assets/fontawesome/svgs/solid/ethernet.svg create mode 100644 assets/fontawesome/svgs/solid/euro-sign.svg create mode 100644 assets/fontawesome/svgs/solid/exchange-alt.svg create mode 100644 assets/fontawesome/svgs/solid/exclamation-circle.svg create mode 100644 assets/fontawesome/svgs/solid/exclamation-triangle.svg create mode 100644 assets/fontawesome/svgs/solid/exclamation.svg create mode 100644 assets/fontawesome/svgs/solid/expand-alt.svg create mode 100644 assets/fontawesome/svgs/solid/expand-arrows-alt.svg create mode 100644 assets/fontawesome/svgs/solid/expand.svg create mode 100644 assets/fontawesome/svgs/solid/external-link-alt.svg create mode 100644 assets/fontawesome/svgs/solid/external-link-square-alt.svg create mode 100644 assets/fontawesome/svgs/solid/eye-dropper.svg create mode 100644 assets/fontawesome/svgs/solid/eye-slash.svg create mode 100644 assets/fontawesome/svgs/solid/eye.svg create mode 100644 assets/fontawesome/svgs/solid/fan.svg create mode 100644 assets/fontawesome/svgs/solid/fast-backward.svg create mode 100644 assets/fontawesome/svgs/solid/fast-forward.svg create mode 100644 assets/fontawesome/svgs/solid/faucet.svg create mode 100644 assets/fontawesome/svgs/solid/fax.svg create mode 100644 assets/fontawesome/svgs/solid/feather-alt.svg create mode 100644 assets/fontawesome/svgs/solid/feather.svg create mode 100644 assets/fontawesome/svgs/solid/female.svg create mode 100644 assets/fontawesome/svgs/solid/fighter-jet.svg create mode 100644 assets/fontawesome/svgs/solid/file-alt.svg create mode 100644 assets/fontawesome/svgs/solid/file-archive.svg create mode 100644 assets/fontawesome/svgs/solid/file-audio.svg create mode 100644 assets/fontawesome/svgs/solid/file-code.svg create mode 100644 assets/fontawesome/svgs/solid/file-contract.svg create mode 100644 assets/fontawesome/svgs/solid/file-csv.svg create mode 100644 assets/fontawesome/svgs/solid/file-download.svg create mode 100644 assets/fontawesome/svgs/solid/file-excel.svg create mode 100644 assets/fontawesome/svgs/solid/file-export.svg create mode 100644 assets/fontawesome/svgs/solid/file-image.svg create mode 100644 assets/fontawesome/svgs/solid/file-import.svg create mode 100644 assets/fontawesome/svgs/solid/file-invoice-dollar.svg create mode 100644 assets/fontawesome/svgs/solid/file-invoice.svg create mode 100644 assets/fontawesome/svgs/solid/file-medical-alt.svg create mode 100644 assets/fontawesome/svgs/solid/file-medical.svg create mode 100644 assets/fontawesome/svgs/solid/file-pdf.svg create mode 100644 assets/fontawesome/svgs/solid/file-powerpoint.svg create mode 100644 assets/fontawesome/svgs/solid/file-prescription.svg create mode 100644 assets/fontawesome/svgs/solid/file-signature.svg create mode 100644 assets/fontawesome/svgs/solid/file-upload.svg create mode 100644 assets/fontawesome/svgs/solid/file-video.svg create mode 100644 assets/fontawesome/svgs/solid/file-word.svg create mode 100644 assets/fontawesome/svgs/solid/file.svg create mode 100644 assets/fontawesome/svgs/solid/fill-drip.svg create mode 100644 assets/fontawesome/svgs/solid/fill.svg create mode 100644 assets/fontawesome/svgs/solid/film.svg create mode 100644 assets/fontawesome/svgs/solid/filter.svg create mode 100644 assets/fontawesome/svgs/solid/fingerprint.svg create mode 100644 assets/fontawesome/svgs/solid/fire-alt.svg create mode 100644 assets/fontawesome/svgs/solid/fire-extinguisher.svg create mode 100644 assets/fontawesome/svgs/solid/fire.svg create mode 100644 assets/fontawesome/svgs/solid/first-aid.svg create mode 100644 assets/fontawesome/svgs/solid/fish.svg create mode 100644 assets/fontawesome/svgs/solid/fist-raised.svg create mode 100644 assets/fontawesome/svgs/solid/flag-checkered.svg create mode 100644 assets/fontawesome/svgs/solid/flag-usa.svg create mode 100644 assets/fontawesome/svgs/solid/flag.svg create mode 100644 assets/fontawesome/svgs/solid/flask.svg create mode 100644 assets/fontawesome/svgs/solid/flushed.svg create mode 100644 assets/fontawesome/svgs/solid/folder-minus.svg create mode 100644 assets/fontawesome/svgs/solid/folder-open.svg create mode 100644 assets/fontawesome/svgs/solid/folder-plus.svg create mode 100644 assets/fontawesome/svgs/solid/folder.svg create mode 100644 assets/fontawesome/svgs/solid/font-awesome-logo-full.svg create mode 100644 assets/fontawesome/svgs/solid/font.svg create mode 100644 assets/fontawesome/svgs/solid/football-ball.svg create mode 100644 assets/fontawesome/svgs/solid/forward.svg create mode 100644 assets/fontawesome/svgs/solid/frog.svg create mode 100644 assets/fontawesome/svgs/solid/frown-open.svg create mode 100644 assets/fontawesome/svgs/solid/frown.svg create mode 100644 assets/fontawesome/svgs/solid/funnel-dollar.svg create mode 100644 assets/fontawesome/svgs/solid/futbol.svg create mode 100644 assets/fontawesome/svgs/solid/gamepad.svg create mode 100644 assets/fontawesome/svgs/solid/gas-pump.svg create mode 100644 assets/fontawesome/svgs/solid/gavel.svg create mode 100644 assets/fontawesome/svgs/solid/gem.svg create mode 100644 assets/fontawesome/svgs/solid/genderless.svg create mode 100644 assets/fontawesome/svgs/solid/ghost.svg create mode 100644 assets/fontawesome/svgs/solid/gift.svg create mode 100644 assets/fontawesome/svgs/solid/gifts.svg create mode 100644 assets/fontawesome/svgs/solid/glass-cheers.svg create mode 100644 assets/fontawesome/svgs/solid/glass-martini-alt.svg create mode 100644 assets/fontawesome/svgs/solid/glass-martini.svg create mode 100644 assets/fontawesome/svgs/solid/glass-whiskey.svg create mode 100644 assets/fontawesome/svgs/solid/glasses.svg create mode 100644 assets/fontawesome/svgs/solid/globe-africa.svg create mode 100644 assets/fontawesome/svgs/solid/globe-americas.svg create mode 100644 assets/fontawesome/svgs/solid/globe-asia.svg create mode 100644 assets/fontawesome/svgs/solid/globe-europe.svg create mode 100644 assets/fontawesome/svgs/solid/globe.svg create mode 100644 assets/fontawesome/svgs/solid/golf-ball.svg create mode 100644 assets/fontawesome/svgs/solid/gopuram.svg create mode 100644 assets/fontawesome/svgs/solid/graduation-cap.svg create mode 100644 assets/fontawesome/svgs/solid/greater-than-equal.svg create mode 100644 assets/fontawesome/svgs/solid/greater-than.svg create mode 100644 assets/fontawesome/svgs/solid/grimace.svg create mode 100644 assets/fontawesome/svgs/solid/grin-alt.svg create mode 100644 assets/fontawesome/svgs/solid/grin-beam-sweat.svg create mode 100644 assets/fontawesome/svgs/solid/grin-beam.svg create mode 100644 assets/fontawesome/svgs/solid/grin-hearts.svg create mode 100644 assets/fontawesome/svgs/solid/grin-squint-tears.svg create mode 100644 assets/fontawesome/svgs/solid/grin-squint.svg create mode 100644 assets/fontawesome/svgs/solid/grin-stars.svg create mode 100644 assets/fontawesome/svgs/solid/grin-tears.svg create mode 100644 assets/fontawesome/svgs/solid/grin-tongue-squint.svg create mode 100644 assets/fontawesome/svgs/solid/grin-tongue-wink.svg create mode 100644 assets/fontawesome/svgs/solid/grin-tongue.svg create mode 100644 assets/fontawesome/svgs/solid/grin-wink.svg create mode 100644 assets/fontawesome/svgs/solid/grin.svg create mode 100644 assets/fontawesome/svgs/solid/grip-horizontal.svg create mode 100644 assets/fontawesome/svgs/solid/grip-lines-vertical.svg create mode 100644 assets/fontawesome/svgs/solid/grip-lines.svg create mode 100644 assets/fontawesome/svgs/solid/grip-vertical.svg create mode 100644 assets/fontawesome/svgs/solid/guitar.svg create mode 100644 assets/fontawesome/svgs/solid/h-square.svg create mode 100644 assets/fontawesome/svgs/solid/hamburger.svg create mode 100644 assets/fontawesome/svgs/solid/hammer.svg create mode 100644 assets/fontawesome/svgs/solid/hamsa.svg create mode 100644 assets/fontawesome/svgs/solid/hand-holding-heart.svg create mode 100644 assets/fontawesome/svgs/solid/hand-holding-medical.svg create mode 100644 assets/fontawesome/svgs/solid/hand-holding-usd.svg create mode 100644 assets/fontawesome/svgs/solid/hand-holding-water.svg create mode 100644 assets/fontawesome/svgs/solid/hand-holding.svg create mode 100644 assets/fontawesome/svgs/solid/hand-lizard.svg create mode 100644 assets/fontawesome/svgs/solid/hand-middle-finger.svg create mode 100644 assets/fontawesome/svgs/solid/hand-paper.svg create mode 100644 assets/fontawesome/svgs/solid/hand-peace.svg create mode 100644 assets/fontawesome/svgs/solid/hand-point-down.svg create mode 100644 assets/fontawesome/svgs/solid/hand-point-left.svg create mode 100644 assets/fontawesome/svgs/solid/hand-point-right.svg create mode 100644 assets/fontawesome/svgs/solid/hand-point-up.svg create mode 100644 assets/fontawesome/svgs/solid/hand-pointer.svg create mode 100644 assets/fontawesome/svgs/solid/hand-rock.svg create mode 100644 assets/fontawesome/svgs/solid/hand-scissors.svg create mode 100644 assets/fontawesome/svgs/solid/hand-sparkles.svg create mode 100644 assets/fontawesome/svgs/solid/hand-spock.svg create mode 100644 assets/fontawesome/svgs/solid/hands-helping.svg create mode 100644 assets/fontawesome/svgs/solid/hands-wash.svg create mode 100644 assets/fontawesome/svgs/solid/hands.svg create mode 100644 assets/fontawesome/svgs/solid/handshake-alt-slash.svg create mode 100644 assets/fontawesome/svgs/solid/handshake-slash.svg create mode 100644 assets/fontawesome/svgs/solid/handshake.svg create mode 100644 assets/fontawesome/svgs/solid/hanukiah.svg create mode 100644 assets/fontawesome/svgs/solid/hard-hat.svg create mode 100644 assets/fontawesome/svgs/solid/hashtag.svg create mode 100644 assets/fontawesome/svgs/solid/hat-cowboy-side.svg create mode 100644 assets/fontawesome/svgs/solid/hat-cowboy.svg create mode 100644 assets/fontawesome/svgs/solid/hat-wizard.svg create mode 100644 assets/fontawesome/svgs/solid/hdd.svg create mode 100644 assets/fontawesome/svgs/solid/head-side-cough-slash.svg create mode 100644 assets/fontawesome/svgs/solid/head-side-cough.svg create mode 100644 assets/fontawesome/svgs/solid/head-side-mask.svg create mode 100644 assets/fontawesome/svgs/solid/head-side-virus.svg create mode 100644 assets/fontawesome/svgs/solid/heading.svg create mode 100644 assets/fontawesome/svgs/solid/headphones-alt.svg create mode 100644 assets/fontawesome/svgs/solid/headphones.svg create mode 100644 assets/fontawesome/svgs/solid/headset.svg create mode 100644 assets/fontawesome/svgs/solid/heart-broken.svg create mode 100644 assets/fontawesome/svgs/solid/heart.svg create mode 100644 assets/fontawesome/svgs/solid/heartbeat.svg create mode 100644 assets/fontawesome/svgs/solid/helicopter.svg create mode 100644 assets/fontawesome/svgs/solid/highlighter.svg create mode 100644 assets/fontawesome/svgs/solid/hiking.svg create mode 100644 assets/fontawesome/svgs/solid/hippo.svg create mode 100644 assets/fontawesome/svgs/solid/history.svg create mode 100644 assets/fontawesome/svgs/solid/hockey-puck.svg create mode 100644 assets/fontawesome/svgs/solid/holly-berry.svg create mode 100644 assets/fontawesome/svgs/solid/home.svg create mode 100644 assets/fontawesome/svgs/solid/horse-head.svg create mode 100644 assets/fontawesome/svgs/solid/horse.svg create mode 100644 assets/fontawesome/svgs/solid/hospital-alt.svg create mode 100644 assets/fontawesome/svgs/solid/hospital-symbol.svg create mode 100644 assets/fontawesome/svgs/solid/hospital-user.svg create mode 100644 assets/fontawesome/svgs/solid/hospital.svg create mode 100644 assets/fontawesome/svgs/solid/hot-tub.svg create mode 100644 assets/fontawesome/svgs/solid/hotdog.svg create mode 100644 assets/fontawesome/svgs/solid/hotel.svg create mode 100644 assets/fontawesome/svgs/solid/hourglass-end.svg create mode 100644 assets/fontawesome/svgs/solid/hourglass-half.svg create mode 100644 assets/fontawesome/svgs/solid/hourglass-start.svg create mode 100644 assets/fontawesome/svgs/solid/hourglass.svg create mode 100644 assets/fontawesome/svgs/solid/house-damage.svg create mode 100644 assets/fontawesome/svgs/solid/house-user.svg create mode 100644 assets/fontawesome/svgs/solid/hryvnia.svg create mode 100644 assets/fontawesome/svgs/solid/i-cursor.svg create mode 100644 assets/fontawesome/svgs/solid/ice-cream.svg create mode 100644 assets/fontawesome/svgs/solid/icicles.svg create mode 100644 assets/fontawesome/svgs/solid/icons.svg create mode 100644 assets/fontawesome/svgs/solid/id-badge.svg create mode 100644 assets/fontawesome/svgs/solid/id-card-alt.svg create mode 100644 assets/fontawesome/svgs/solid/id-card.svg create mode 100644 assets/fontawesome/svgs/solid/igloo.svg create mode 100644 assets/fontawesome/svgs/solid/image.svg create mode 100644 assets/fontawesome/svgs/solid/images.svg create mode 100644 assets/fontawesome/svgs/solid/inbox.svg create mode 100644 assets/fontawesome/svgs/solid/indent.svg create mode 100644 assets/fontawesome/svgs/solid/industry.svg create mode 100644 assets/fontawesome/svgs/solid/infinity.svg create mode 100644 assets/fontawesome/svgs/solid/info-circle.svg create mode 100644 assets/fontawesome/svgs/solid/info.svg create mode 100644 assets/fontawesome/svgs/solid/italic.svg create mode 100644 assets/fontawesome/svgs/solid/jedi.svg create mode 100644 assets/fontawesome/svgs/solid/joint.svg create mode 100644 assets/fontawesome/svgs/solid/journal-whills.svg create mode 100644 assets/fontawesome/svgs/solid/kaaba.svg create mode 100644 assets/fontawesome/svgs/solid/key.svg create mode 100644 assets/fontawesome/svgs/solid/keyboard.svg create mode 100644 assets/fontawesome/svgs/solid/khanda.svg create mode 100644 assets/fontawesome/svgs/solid/kiss-beam.svg create mode 100644 assets/fontawesome/svgs/solid/kiss-wink-heart.svg create mode 100644 assets/fontawesome/svgs/solid/kiss.svg create mode 100644 assets/fontawesome/svgs/solid/kiwi-bird.svg create mode 100644 assets/fontawesome/svgs/solid/landmark.svg create mode 100644 assets/fontawesome/svgs/solid/language.svg create mode 100644 assets/fontawesome/svgs/solid/laptop-code.svg create mode 100644 assets/fontawesome/svgs/solid/laptop-house.svg create mode 100644 assets/fontawesome/svgs/solid/laptop-medical.svg create mode 100644 assets/fontawesome/svgs/solid/laptop.svg create mode 100644 assets/fontawesome/svgs/solid/laugh-beam.svg create mode 100644 assets/fontawesome/svgs/solid/laugh-squint.svg create mode 100644 assets/fontawesome/svgs/solid/laugh-wink.svg create mode 100644 assets/fontawesome/svgs/solid/laugh.svg create mode 100644 assets/fontawesome/svgs/solid/layer-group.svg create mode 100644 assets/fontawesome/svgs/solid/leaf.svg create mode 100644 assets/fontawesome/svgs/solid/lemon.svg create mode 100644 assets/fontawesome/svgs/solid/less-than-equal.svg create mode 100644 assets/fontawesome/svgs/solid/less-than.svg create mode 100644 assets/fontawesome/svgs/solid/level-down-alt.svg create mode 100644 assets/fontawesome/svgs/solid/level-up-alt.svg create mode 100644 assets/fontawesome/svgs/solid/life-ring.svg create mode 100644 assets/fontawesome/svgs/solid/lightbulb.svg create mode 100644 assets/fontawesome/svgs/solid/link.svg create mode 100644 assets/fontawesome/svgs/solid/lira-sign.svg create mode 100644 assets/fontawesome/svgs/solid/list-alt.svg create mode 100644 assets/fontawesome/svgs/solid/list-ol.svg create mode 100644 assets/fontawesome/svgs/solid/list-ul.svg create mode 100644 assets/fontawesome/svgs/solid/list.svg create mode 100644 assets/fontawesome/svgs/solid/location-arrow.svg create mode 100644 assets/fontawesome/svgs/solid/lock-open.svg create mode 100644 assets/fontawesome/svgs/solid/lock.svg create mode 100644 assets/fontawesome/svgs/solid/long-arrow-alt-down.svg create mode 100644 assets/fontawesome/svgs/solid/long-arrow-alt-left.svg create mode 100644 assets/fontawesome/svgs/solid/long-arrow-alt-right.svg create mode 100644 assets/fontawesome/svgs/solid/long-arrow-alt-up.svg create mode 100644 assets/fontawesome/svgs/solid/low-vision.svg create mode 100644 assets/fontawesome/svgs/solid/luggage-cart.svg create mode 100644 assets/fontawesome/svgs/solid/lungs-virus.svg create mode 100644 assets/fontawesome/svgs/solid/lungs.svg create mode 100644 assets/fontawesome/svgs/solid/magic.svg create mode 100644 assets/fontawesome/svgs/solid/magnet.svg create mode 100644 assets/fontawesome/svgs/solid/mail-bulk.svg create mode 100644 assets/fontawesome/svgs/solid/male.svg create mode 100644 assets/fontawesome/svgs/solid/map-marked-alt.svg create mode 100644 assets/fontawesome/svgs/solid/map-marked.svg create mode 100644 assets/fontawesome/svgs/solid/map-marker-alt.svg create mode 100644 assets/fontawesome/svgs/solid/map-marker.svg create mode 100644 assets/fontawesome/svgs/solid/map-pin.svg create mode 100644 assets/fontawesome/svgs/solid/map-signs.svg create mode 100644 assets/fontawesome/svgs/solid/map.svg create mode 100644 assets/fontawesome/svgs/solid/marker.svg create mode 100644 assets/fontawesome/svgs/solid/mars-double.svg create mode 100644 assets/fontawesome/svgs/solid/mars-stroke-h.svg create mode 100644 assets/fontawesome/svgs/solid/mars-stroke-v.svg create mode 100644 assets/fontawesome/svgs/solid/mars-stroke.svg create mode 100644 assets/fontawesome/svgs/solid/mars.svg create mode 100644 assets/fontawesome/svgs/solid/mask.svg create mode 100644 assets/fontawesome/svgs/solid/medal.svg create mode 100644 assets/fontawesome/svgs/solid/medkit.svg create mode 100644 assets/fontawesome/svgs/solid/meh-blank.svg create mode 100644 assets/fontawesome/svgs/solid/meh-rolling-eyes.svg create mode 100644 assets/fontawesome/svgs/solid/meh.svg create mode 100644 assets/fontawesome/svgs/solid/memory.svg create mode 100644 assets/fontawesome/svgs/solid/menorah.svg create mode 100644 assets/fontawesome/svgs/solid/mercury.svg create mode 100644 assets/fontawesome/svgs/solid/meteor.svg create mode 100644 assets/fontawesome/svgs/solid/microchip.svg create mode 100644 assets/fontawesome/svgs/solid/microphone-alt-slash.svg create mode 100644 assets/fontawesome/svgs/solid/microphone-alt.svg create mode 100644 assets/fontawesome/svgs/solid/microphone-slash.svg create mode 100644 assets/fontawesome/svgs/solid/microphone.svg create mode 100644 assets/fontawesome/svgs/solid/microscope.svg create mode 100644 assets/fontawesome/svgs/solid/minus-circle.svg create mode 100644 assets/fontawesome/svgs/solid/minus-square.svg create mode 100644 assets/fontawesome/svgs/solid/minus.svg create mode 100644 assets/fontawesome/svgs/solid/mitten.svg create mode 100644 assets/fontawesome/svgs/solid/mobile-alt.svg create mode 100644 assets/fontawesome/svgs/solid/mobile.svg create mode 100644 assets/fontawesome/svgs/solid/money-bill-alt.svg create mode 100644 assets/fontawesome/svgs/solid/money-bill-wave-alt.svg create mode 100644 assets/fontawesome/svgs/solid/money-bill-wave.svg create mode 100644 assets/fontawesome/svgs/solid/money-bill.svg create mode 100644 assets/fontawesome/svgs/solid/money-check-alt.svg create mode 100644 assets/fontawesome/svgs/solid/money-check.svg create mode 100644 assets/fontawesome/svgs/solid/monument.svg create mode 100644 assets/fontawesome/svgs/solid/moon.svg create mode 100644 assets/fontawesome/svgs/solid/mortar-pestle.svg create mode 100644 assets/fontawesome/svgs/solid/mosque.svg create mode 100644 assets/fontawesome/svgs/solid/motorcycle.svg create mode 100644 assets/fontawesome/svgs/solid/mountain.svg create mode 100644 assets/fontawesome/svgs/solid/mouse-pointer.svg create mode 100644 assets/fontawesome/svgs/solid/mouse.svg create mode 100644 assets/fontawesome/svgs/solid/mug-hot.svg create mode 100644 assets/fontawesome/svgs/solid/music.svg create mode 100644 assets/fontawesome/svgs/solid/network-wired.svg create mode 100644 assets/fontawesome/svgs/solid/neuter.svg create mode 100644 assets/fontawesome/svgs/solid/newspaper.svg create mode 100644 assets/fontawesome/svgs/solid/not-equal.svg create mode 100644 assets/fontawesome/svgs/solid/notes-medical.svg create mode 100644 assets/fontawesome/svgs/solid/object-group.svg create mode 100644 assets/fontawesome/svgs/solid/object-ungroup.svg create mode 100644 assets/fontawesome/svgs/solid/oil-can.svg create mode 100644 assets/fontawesome/svgs/solid/om.svg create mode 100644 assets/fontawesome/svgs/solid/otter.svg create mode 100644 assets/fontawesome/svgs/solid/outdent.svg create mode 100644 assets/fontawesome/svgs/solid/pager.svg create mode 100644 assets/fontawesome/svgs/solid/paint-brush.svg create mode 100644 assets/fontawesome/svgs/solid/paint-roller.svg create mode 100644 assets/fontawesome/svgs/solid/palette.svg create mode 100644 assets/fontawesome/svgs/solid/pallet.svg create mode 100644 assets/fontawesome/svgs/solid/paper-plane.svg create mode 100644 assets/fontawesome/svgs/solid/paperclip.svg create mode 100644 assets/fontawesome/svgs/solid/parachute-box.svg create mode 100644 assets/fontawesome/svgs/solid/paragraph.svg create mode 100644 assets/fontawesome/svgs/solid/parking.svg create mode 100644 assets/fontawesome/svgs/solid/passport.svg create mode 100644 assets/fontawesome/svgs/solid/pastafarianism.svg create mode 100644 assets/fontawesome/svgs/solid/paste.svg create mode 100644 assets/fontawesome/svgs/solid/pause-circle.svg create mode 100644 assets/fontawesome/svgs/solid/pause.svg create mode 100644 assets/fontawesome/svgs/solid/paw.svg create mode 100644 assets/fontawesome/svgs/solid/peace.svg create mode 100644 assets/fontawesome/svgs/solid/pen-alt.svg create mode 100644 assets/fontawesome/svgs/solid/pen-fancy.svg create mode 100644 assets/fontawesome/svgs/solid/pen-nib.svg create mode 100644 assets/fontawesome/svgs/solid/pen-square.svg create mode 100644 assets/fontawesome/svgs/solid/pen.svg create mode 100644 assets/fontawesome/svgs/solid/pencil-alt.svg create mode 100644 assets/fontawesome/svgs/solid/pencil-ruler.svg create mode 100644 assets/fontawesome/svgs/solid/people-arrows.svg create mode 100644 assets/fontawesome/svgs/solid/people-carry.svg create mode 100644 assets/fontawesome/svgs/solid/pepper-hot.svg create mode 100644 assets/fontawesome/svgs/solid/percent.svg create mode 100644 assets/fontawesome/svgs/solid/percentage.svg create mode 100644 assets/fontawesome/svgs/solid/person-booth.svg create mode 100644 assets/fontawesome/svgs/solid/phone-alt.svg create mode 100644 assets/fontawesome/svgs/solid/phone-slash.svg create mode 100644 assets/fontawesome/svgs/solid/phone-square-alt.svg create mode 100644 assets/fontawesome/svgs/solid/phone-square.svg create mode 100644 assets/fontawesome/svgs/solid/phone-volume.svg create mode 100644 assets/fontawesome/svgs/solid/phone.svg create mode 100644 assets/fontawesome/svgs/solid/photo-video.svg create mode 100644 assets/fontawesome/svgs/solid/piggy-bank.svg create mode 100644 assets/fontawesome/svgs/solid/pills.svg create mode 100644 assets/fontawesome/svgs/solid/pizza-slice.svg create mode 100644 assets/fontawesome/svgs/solid/place-of-worship.svg create mode 100644 assets/fontawesome/svgs/solid/plane-arrival.svg create mode 100644 assets/fontawesome/svgs/solid/plane-departure.svg create mode 100644 assets/fontawesome/svgs/solid/plane-slash.svg create mode 100644 assets/fontawesome/svgs/solid/plane.svg create mode 100644 assets/fontawesome/svgs/solid/play-circle.svg create mode 100644 assets/fontawesome/svgs/solid/play.svg create mode 100644 assets/fontawesome/svgs/solid/plug.svg create mode 100644 assets/fontawesome/svgs/solid/plus-circle.svg create mode 100644 assets/fontawesome/svgs/solid/plus-square.svg create mode 100644 assets/fontawesome/svgs/solid/plus.svg create mode 100644 assets/fontawesome/svgs/solid/podcast.svg create mode 100644 assets/fontawesome/svgs/solid/poll-h.svg create mode 100644 assets/fontawesome/svgs/solid/poll.svg create mode 100644 assets/fontawesome/svgs/solid/poo-storm.svg create mode 100644 assets/fontawesome/svgs/solid/poo.svg create mode 100644 assets/fontawesome/svgs/solid/poop.svg create mode 100644 assets/fontawesome/svgs/solid/portrait.svg create mode 100644 assets/fontawesome/svgs/solid/pound-sign.svg create mode 100644 assets/fontawesome/svgs/solid/power-off.svg create mode 100644 assets/fontawesome/svgs/solid/pray.svg create mode 100644 assets/fontawesome/svgs/solid/praying-hands.svg create mode 100644 assets/fontawesome/svgs/solid/prescription-bottle-alt.svg create mode 100644 assets/fontawesome/svgs/solid/prescription-bottle.svg create mode 100644 assets/fontawesome/svgs/solid/prescription.svg create mode 100644 assets/fontawesome/svgs/solid/print.svg create mode 100644 assets/fontawesome/svgs/solid/procedures.svg create mode 100644 assets/fontawesome/svgs/solid/project-diagram.svg create mode 100644 assets/fontawesome/svgs/solid/pump-medical.svg create mode 100644 assets/fontawesome/svgs/solid/pump-soap.svg create mode 100644 assets/fontawesome/svgs/solid/puzzle-piece.svg create mode 100644 assets/fontawesome/svgs/solid/qrcode.svg create mode 100644 assets/fontawesome/svgs/solid/question-circle.svg create mode 100644 assets/fontawesome/svgs/solid/question.svg create mode 100644 assets/fontawesome/svgs/solid/quidditch.svg create mode 100644 assets/fontawesome/svgs/solid/quote-left.svg create mode 100644 assets/fontawesome/svgs/solid/quote-right.svg create mode 100644 assets/fontawesome/svgs/solid/quran.svg create mode 100644 assets/fontawesome/svgs/solid/radiation-alt.svg create mode 100644 assets/fontawesome/svgs/solid/radiation.svg create mode 100644 assets/fontawesome/svgs/solid/rainbow.svg create mode 100644 assets/fontawesome/svgs/solid/random.svg create mode 100644 assets/fontawesome/svgs/solid/receipt.svg create mode 100644 assets/fontawesome/svgs/solid/record-vinyl.svg create mode 100644 assets/fontawesome/svgs/solid/recycle.svg create mode 100644 assets/fontawesome/svgs/solid/redo-alt.svg create mode 100644 assets/fontawesome/svgs/solid/redo.svg create mode 100644 assets/fontawesome/svgs/solid/registered.svg create mode 100644 assets/fontawesome/svgs/solid/remove-format.svg create mode 100644 assets/fontawesome/svgs/solid/reply-all.svg create mode 100644 assets/fontawesome/svgs/solid/reply.svg create mode 100644 assets/fontawesome/svgs/solid/republican.svg create mode 100644 assets/fontawesome/svgs/solid/restroom.svg create mode 100644 assets/fontawesome/svgs/solid/retweet.svg create mode 100644 assets/fontawesome/svgs/solid/ribbon.svg create mode 100644 assets/fontawesome/svgs/solid/ring.svg create mode 100644 assets/fontawesome/svgs/solid/road.svg create mode 100644 assets/fontawesome/svgs/solid/robot.svg create mode 100644 assets/fontawesome/svgs/solid/rocket.svg create mode 100644 assets/fontawesome/svgs/solid/route.svg create mode 100644 assets/fontawesome/svgs/solid/rss-square.svg create mode 100644 assets/fontawesome/svgs/solid/rss.svg create mode 100644 assets/fontawesome/svgs/solid/ruble-sign.svg create mode 100644 assets/fontawesome/svgs/solid/ruler-combined.svg create mode 100644 assets/fontawesome/svgs/solid/ruler-horizontal.svg create mode 100644 assets/fontawesome/svgs/solid/ruler-vertical.svg create mode 100644 assets/fontawesome/svgs/solid/ruler.svg create mode 100644 assets/fontawesome/svgs/solid/running.svg create mode 100644 assets/fontawesome/svgs/solid/rupee-sign.svg create mode 100644 assets/fontawesome/svgs/solid/sad-cry.svg create mode 100644 assets/fontawesome/svgs/solid/sad-tear.svg create mode 100644 assets/fontawesome/svgs/solid/satellite-dish.svg create mode 100644 assets/fontawesome/svgs/solid/satellite.svg create mode 100644 assets/fontawesome/svgs/solid/save.svg create mode 100644 assets/fontawesome/svgs/solid/school.svg create mode 100644 assets/fontawesome/svgs/solid/screwdriver.svg create mode 100644 assets/fontawesome/svgs/solid/scroll.svg create mode 100644 assets/fontawesome/svgs/solid/sd-card.svg create mode 100644 assets/fontawesome/svgs/solid/search-dollar.svg create mode 100644 assets/fontawesome/svgs/solid/search-location.svg create mode 100644 assets/fontawesome/svgs/solid/search-minus.svg create mode 100644 assets/fontawesome/svgs/solid/search-plus.svg create mode 100644 assets/fontawesome/svgs/solid/search.svg create mode 100644 assets/fontawesome/svgs/solid/seedling.svg create mode 100644 assets/fontawesome/svgs/solid/server.svg create mode 100644 assets/fontawesome/svgs/solid/shapes.svg create mode 100644 assets/fontawesome/svgs/solid/share-alt-square.svg create mode 100644 assets/fontawesome/svgs/solid/share-alt.svg create mode 100644 assets/fontawesome/svgs/solid/share-square.svg create mode 100644 assets/fontawesome/svgs/solid/share.svg create mode 100644 assets/fontawesome/svgs/solid/shekel-sign.svg create mode 100644 assets/fontawesome/svgs/solid/shield-alt.svg create mode 100644 assets/fontawesome/svgs/solid/shield-virus.svg create mode 100644 assets/fontawesome/svgs/solid/ship.svg create mode 100644 assets/fontawesome/svgs/solid/shipping-fast.svg create mode 100644 assets/fontawesome/svgs/solid/shoe-prints.svg create mode 100644 assets/fontawesome/svgs/solid/shopping-bag.svg create mode 100644 assets/fontawesome/svgs/solid/shopping-basket.svg create mode 100644 assets/fontawesome/svgs/solid/shopping-cart.svg create mode 100644 assets/fontawesome/svgs/solid/shower.svg create mode 100644 assets/fontawesome/svgs/solid/shuttle-van.svg create mode 100644 assets/fontawesome/svgs/solid/sign-in-alt.svg create mode 100644 assets/fontawesome/svgs/solid/sign-language.svg create mode 100644 assets/fontawesome/svgs/solid/sign-out-alt.svg create mode 100644 assets/fontawesome/svgs/solid/sign.svg create mode 100644 assets/fontawesome/svgs/solid/signal.svg create mode 100644 assets/fontawesome/svgs/solid/signature.svg create mode 100644 assets/fontawesome/svgs/solid/sim-card.svg create mode 100644 assets/fontawesome/svgs/solid/sink.svg create mode 100644 assets/fontawesome/svgs/solid/sitemap.svg create mode 100644 assets/fontawesome/svgs/solid/skating.svg create mode 100644 assets/fontawesome/svgs/solid/skiing-nordic.svg create mode 100644 assets/fontawesome/svgs/solid/skiing.svg create mode 100644 assets/fontawesome/svgs/solid/skull-crossbones.svg create mode 100644 assets/fontawesome/svgs/solid/skull.svg create mode 100644 assets/fontawesome/svgs/solid/slash.svg create mode 100644 assets/fontawesome/svgs/solid/sleigh.svg create mode 100644 assets/fontawesome/svgs/solid/sliders-h.svg create mode 100644 assets/fontawesome/svgs/solid/smile-beam.svg create mode 100644 assets/fontawesome/svgs/solid/smile-wink.svg create mode 100644 assets/fontawesome/svgs/solid/smile.svg create mode 100644 assets/fontawesome/svgs/solid/smog.svg create mode 100644 assets/fontawesome/svgs/solid/smoking-ban.svg create mode 100644 assets/fontawesome/svgs/solid/smoking.svg create mode 100644 assets/fontawesome/svgs/solid/sms.svg create mode 100644 assets/fontawesome/svgs/solid/snowboarding.svg create mode 100644 assets/fontawesome/svgs/solid/snowflake.svg create mode 100644 assets/fontawesome/svgs/solid/snowman.svg create mode 100644 assets/fontawesome/svgs/solid/snowplow.svg create mode 100644 assets/fontawesome/svgs/solid/soap.svg create mode 100644 assets/fontawesome/svgs/solid/socks.svg create mode 100644 assets/fontawesome/svgs/solid/solar-panel.svg create mode 100644 assets/fontawesome/svgs/solid/sort-alpha-down-alt.svg create mode 100644 assets/fontawesome/svgs/solid/sort-alpha-down.svg create mode 100644 assets/fontawesome/svgs/solid/sort-alpha-up-alt.svg create mode 100644 assets/fontawesome/svgs/solid/sort-alpha-up.svg create mode 100644 assets/fontawesome/svgs/solid/sort-amount-down-alt.svg create mode 100644 assets/fontawesome/svgs/solid/sort-amount-down.svg create mode 100644 assets/fontawesome/svgs/solid/sort-amount-up-alt.svg create mode 100644 assets/fontawesome/svgs/solid/sort-amount-up.svg create mode 100644 assets/fontawesome/svgs/solid/sort-down.svg create mode 100644 assets/fontawesome/svgs/solid/sort-numeric-down-alt.svg create mode 100644 assets/fontawesome/svgs/solid/sort-numeric-down.svg create mode 100644 assets/fontawesome/svgs/solid/sort-numeric-up-alt.svg create mode 100644 assets/fontawesome/svgs/solid/sort-numeric-up.svg create mode 100644 assets/fontawesome/svgs/solid/sort-up.svg create mode 100644 assets/fontawesome/svgs/solid/sort.svg create mode 100644 assets/fontawesome/svgs/solid/spa.svg create mode 100644 assets/fontawesome/svgs/solid/space-shuttle.svg create mode 100644 assets/fontawesome/svgs/solid/spell-check.svg create mode 100644 assets/fontawesome/svgs/solid/spider.svg create mode 100644 assets/fontawesome/svgs/solid/spinner.svg create mode 100644 assets/fontawesome/svgs/solid/splotch.svg create mode 100644 assets/fontawesome/svgs/solid/spray-can.svg create mode 100644 assets/fontawesome/svgs/solid/square-full.svg create mode 100644 assets/fontawesome/svgs/solid/square-root-alt.svg create mode 100644 assets/fontawesome/svgs/solid/square.svg create mode 100644 assets/fontawesome/svgs/solid/stamp.svg create mode 100644 assets/fontawesome/svgs/solid/star-and-crescent.svg create mode 100644 assets/fontawesome/svgs/solid/star-half-alt.svg create mode 100644 assets/fontawesome/svgs/solid/star-half.svg create mode 100644 assets/fontawesome/svgs/solid/star-of-david.svg create mode 100644 assets/fontawesome/svgs/solid/star-of-life.svg create mode 100644 assets/fontawesome/svgs/solid/star.svg create mode 100644 assets/fontawesome/svgs/solid/step-backward.svg create mode 100644 assets/fontawesome/svgs/solid/step-forward.svg create mode 100644 assets/fontawesome/svgs/solid/stethoscope.svg create mode 100644 assets/fontawesome/svgs/solid/sticky-note.svg create mode 100644 assets/fontawesome/svgs/solid/stop-circle.svg create mode 100644 assets/fontawesome/svgs/solid/stop.svg create mode 100644 assets/fontawesome/svgs/solid/stopwatch-20.svg create mode 100644 assets/fontawesome/svgs/solid/stopwatch.svg create mode 100644 assets/fontawesome/svgs/solid/store-alt-slash.svg create mode 100644 assets/fontawesome/svgs/solid/store-alt.svg create mode 100644 assets/fontawesome/svgs/solid/store-slash.svg create mode 100644 assets/fontawesome/svgs/solid/store.svg create mode 100644 assets/fontawesome/svgs/solid/stream.svg create mode 100644 assets/fontawesome/svgs/solid/street-view.svg create mode 100644 assets/fontawesome/svgs/solid/strikethrough.svg create mode 100644 assets/fontawesome/svgs/solid/stroopwafel.svg create mode 100644 assets/fontawesome/svgs/solid/subscript.svg create mode 100644 assets/fontawesome/svgs/solid/subway.svg create mode 100644 assets/fontawesome/svgs/solid/suitcase-rolling.svg create mode 100644 assets/fontawesome/svgs/solid/suitcase.svg create mode 100644 assets/fontawesome/svgs/solid/sun.svg create mode 100644 assets/fontawesome/svgs/solid/superscript.svg create mode 100644 assets/fontawesome/svgs/solid/surprise.svg create mode 100644 assets/fontawesome/svgs/solid/swatchbook.svg create mode 100644 assets/fontawesome/svgs/solid/swimmer.svg create mode 100644 assets/fontawesome/svgs/solid/swimming-pool.svg create mode 100644 assets/fontawesome/svgs/solid/synagogue.svg create mode 100644 assets/fontawesome/svgs/solid/sync-alt.svg create mode 100644 assets/fontawesome/svgs/solid/sync.svg create mode 100644 assets/fontawesome/svgs/solid/syringe.svg create mode 100644 assets/fontawesome/svgs/solid/table-tennis.svg create mode 100644 assets/fontawesome/svgs/solid/table.svg create mode 100644 assets/fontawesome/svgs/solid/tablet-alt.svg create mode 100644 assets/fontawesome/svgs/solid/tablet.svg create mode 100644 assets/fontawesome/svgs/solid/tablets.svg create mode 100644 assets/fontawesome/svgs/solid/tachometer-alt.svg create mode 100644 assets/fontawesome/svgs/solid/tag.svg create mode 100644 assets/fontawesome/svgs/solid/tags.svg create mode 100644 assets/fontawesome/svgs/solid/tape.svg create mode 100644 assets/fontawesome/svgs/solid/tasks.svg create mode 100644 assets/fontawesome/svgs/solid/taxi.svg create mode 100644 assets/fontawesome/svgs/solid/teeth-open.svg create mode 100644 assets/fontawesome/svgs/solid/teeth.svg create mode 100644 assets/fontawesome/svgs/solid/temperature-high.svg create mode 100644 assets/fontawesome/svgs/solid/temperature-low.svg create mode 100644 assets/fontawesome/svgs/solid/tenge.svg create mode 100644 assets/fontawesome/svgs/solid/terminal.svg create mode 100644 assets/fontawesome/svgs/solid/text-height.svg create mode 100644 assets/fontawesome/svgs/solid/text-width.svg create mode 100644 assets/fontawesome/svgs/solid/th-large.svg create mode 100644 assets/fontawesome/svgs/solid/th-list.svg create mode 100644 assets/fontawesome/svgs/solid/th.svg create mode 100644 assets/fontawesome/svgs/solid/theater-masks.svg create mode 100644 assets/fontawesome/svgs/solid/thermometer-empty.svg create mode 100644 assets/fontawesome/svgs/solid/thermometer-full.svg create mode 100644 assets/fontawesome/svgs/solid/thermometer-half.svg create mode 100644 assets/fontawesome/svgs/solid/thermometer-quarter.svg create mode 100644 assets/fontawesome/svgs/solid/thermometer-three-quarters.svg create mode 100644 assets/fontawesome/svgs/solid/thermometer.svg create mode 100644 assets/fontawesome/svgs/solid/thumbs-down.svg create mode 100644 assets/fontawesome/svgs/solid/thumbs-up.svg create mode 100644 assets/fontawesome/svgs/solid/thumbtack.svg create mode 100644 assets/fontawesome/svgs/solid/ticket-alt.svg create mode 100644 assets/fontawesome/svgs/solid/times-circle.svg create mode 100644 assets/fontawesome/svgs/solid/times.svg create mode 100644 assets/fontawesome/svgs/solid/tint-slash.svg create mode 100644 assets/fontawesome/svgs/solid/tint.svg create mode 100644 assets/fontawesome/svgs/solid/tired.svg create mode 100644 assets/fontawesome/svgs/solid/toggle-off.svg create mode 100644 assets/fontawesome/svgs/solid/toggle-on.svg create mode 100644 assets/fontawesome/svgs/solid/toilet-paper-slash.svg create mode 100644 assets/fontawesome/svgs/solid/toilet-paper.svg create mode 100644 assets/fontawesome/svgs/solid/toilet.svg create mode 100644 assets/fontawesome/svgs/solid/toolbox.svg create mode 100644 assets/fontawesome/svgs/solid/tools.svg create mode 100644 assets/fontawesome/svgs/solid/tooth.svg create mode 100644 assets/fontawesome/svgs/solid/torah.svg create mode 100644 assets/fontawesome/svgs/solid/torii-gate.svg create mode 100644 assets/fontawesome/svgs/solid/tractor.svg create mode 100644 assets/fontawesome/svgs/solid/trademark.svg create mode 100644 assets/fontawesome/svgs/solid/traffic-light.svg create mode 100644 assets/fontawesome/svgs/solid/trailer.svg create mode 100644 assets/fontawesome/svgs/solid/train.svg create mode 100644 assets/fontawesome/svgs/solid/tram.svg create mode 100644 assets/fontawesome/svgs/solid/transgender-alt.svg create mode 100644 assets/fontawesome/svgs/solid/transgender.svg create mode 100644 assets/fontawesome/svgs/solid/trash-alt.svg create mode 100644 assets/fontawesome/svgs/solid/trash-restore-alt.svg create mode 100644 assets/fontawesome/svgs/solid/trash-restore.svg create mode 100644 assets/fontawesome/svgs/solid/trash.svg create mode 100644 assets/fontawesome/svgs/solid/tree.svg create mode 100644 assets/fontawesome/svgs/solid/trophy.svg create mode 100644 assets/fontawesome/svgs/solid/truck-loading.svg create mode 100644 assets/fontawesome/svgs/solid/truck-monster.svg create mode 100644 assets/fontawesome/svgs/solid/truck-moving.svg create mode 100644 assets/fontawesome/svgs/solid/truck-pickup.svg create mode 100644 assets/fontawesome/svgs/solid/truck.svg create mode 100644 assets/fontawesome/svgs/solid/tshirt.svg create mode 100644 assets/fontawesome/svgs/solid/tty.svg create mode 100644 assets/fontawesome/svgs/solid/tv.svg create mode 100644 assets/fontawesome/svgs/solid/umbrella-beach.svg create mode 100644 assets/fontawesome/svgs/solid/umbrella.svg create mode 100644 assets/fontawesome/svgs/solid/underline.svg create mode 100644 assets/fontawesome/svgs/solid/undo-alt.svg create mode 100644 assets/fontawesome/svgs/solid/undo.svg create mode 100644 assets/fontawesome/svgs/solid/universal-access.svg create mode 100644 assets/fontawesome/svgs/solid/university.svg create mode 100644 assets/fontawesome/svgs/solid/unlink.svg create mode 100644 assets/fontawesome/svgs/solid/unlock-alt.svg create mode 100644 assets/fontawesome/svgs/solid/unlock.svg create mode 100644 assets/fontawesome/svgs/solid/upload.svg create mode 100644 assets/fontawesome/svgs/solid/user-alt-slash.svg create mode 100644 assets/fontawesome/svgs/solid/user-alt.svg create mode 100644 assets/fontawesome/svgs/solid/user-astronaut.svg create mode 100644 assets/fontawesome/svgs/solid/user-check.svg create mode 100644 assets/fontawesome/svgs/solid/user-circle.svg create mode 100644 assets/fontawesome/svgs/solid/user-clock.svg create mode 100644 assets/fontawesome/svgs/solid/user-cog.svg create mode 100644 assets/fontawesome/svgs/solid/user-edit.svg create mode 100644 assets/fontawesome/svgs/solid/user-friends.svg create mode 100644 assets/fontawesome/svgs/solid/user-graduate.svg create mode 100644 assets/fontawesome/svgs/solid/user-injured.svg create mode 100644 assets/fontawesome/svgs/solid/user-lock.svg create mode 100644 assets/fontawesome/svgs/solid/user-md.svg create mode 100644 assets/fontawesome/svgs/solid/user-minus.svg create mode 100644 assets/fontawesome/svgs/solid/user-ninja.svg create mode 100644 assets/fontawesome/svgs/solid/user-nurse.svg create mode 100644 assets/fontawesome/svgs/solid/user-plus.svg create mode 100644 assets/fontawesome/svgs/solid/user-secret.svg create mode 100644 assets/fontawesome/svgs/solid/user-shield.svg create mode 100644 assets/fontawesome/svgs/solid/user-slash.svg create mode 100644 assets/fontawesome/svgs/solid/user-tag.svg create mode 100644 assets/fontawesome/svgs/solid/user-tie.svg create mode 100644 assets/fontawesome/svgs/solid/user-times.svg create mode 100644 assets/fontawesome/svgs/solid/user.svg create mode 100644 assets/fontawesome/svgs/solid/users-cog.svg create mode 100644 assets/fontawesome/svgs/solid/users-slash.svg create mode 100644 assets/fontawesome/svgs/solid/users.svg create mode 100644 assets/fontawesome/svgs/solid/utensil-spoon.svg create mode 100644 assets/fontawesome/svgs/solid/utensils.svg create mode 100644 assets/fontawesome/svgs/solid/vector-square.svg create mode 100644 assets/fontawesome/svgs/solid/venus-double.svg create mode 100644 assets/fontawesome/svgs/solid/venus-mars.svg create mode 100644 assets/fontawesome/svgs/solid/venus.svg create mode 100644 assets/fontawesome/svgs/solid/vest-patches.svg create mode 100644 assets/fontawesome/svgs/solid/vest.svg create mode 100644 assets/fontawesome/svgs/solid/vial.svg create mode 100644 assets/fontawesome/svgs/solid/vials.svg create mode 100644 assets/fontawesome/svgs/solid/video-slash.svg create mode 100644 assets/fontawesome/svgs/solid/video.svg create mode 100644 assets/fontawesome/svgs/solid/vihara.svg create mode 100644 assets/fontawesome/svgs/solid/virus-slash.svg create mode 100644 assets/fontawesome/svgs/solid/virus.svg create mode 100644 assets/fontawesome/svgs/solid/viruses.svg create mode 100644 assets/fontawesome/svgs/solid/voicemail.svg create mode 100644 assets/fontawesome/svgs/solid/volleyball-ball.svg create mode 100644 assets/fontawesome/svgs/solid/volume-down.svg create mode 100644 assets/fontawesome/svgs/solid/volume-mute.svg create mode 100644 assets/fontawesome/svgs/solid/volume-off.svg create mode 100644 assets/fontawesome/svgs/solid/volume-up.svg create mode 100644 assets/fontawesome/svgs/solid/vote-yea.svg create mode 100644 assets/fontawesome/svgs/solid/vr-cardboard.svg create mode 100644 assets/fontawesome/svgs/solid/walking.svg create mode 100644 assets/fontawesome/svgs/solid/wallet.svg create mode 100644 assets/fontawesome/svgs/solid/warehouse.svg create mode 100644 assets/fontawesome/svgs/solid/water.svg create mode 100644 assets/fontawesome/svgs/solid/wave-square.svg create mode 100644 assets/fontawesome/svgs/solid/weight-hanging.svg create mode 100644 assets/fontawesome/svgs/solid/weight.svg create mode 100644 assets/fontawesome/svgs/solid/wheelchair.svg create mode 100644 assets/fontawesome/svgs/solid/wifi.svg create mode 100644 assets/fontawesome/svgs/solid/wind.svg create mode 100644 assets/fontawesome/svgs/solid/window-close.svg create mode 100644 assets/fontawesome/svgs/solid/window-maximize.svg create mode 100644 assets/fontawesome/svgs/solid/window-minimize.svg create mode 100644 assets/fontawesome/svgs/solid/window-restore.svg create mode 100644 assets/fontawesome/svgs/solid/wine-bottle.svg create mode 100644 assets/fontawesome/svgs/solid/wine-glass-alt.svg create mode 100644 assets/fontawesome/svgs/solid/wine-glass.svg create mode 100644 assets/fontawesome/svgs/solid/won-sign.svg create mode 100644 assets/fontawesome/svgs/solid/wrench.svg create mode 100644 assets/fontawesome/svgs/solid/x-ray.svg create mode 100644 assets/fontawesome/svgs/solid/yen-sign.svg create mode 100644 assets/fontawesome/svgs/solid/yin-yang.svg create mode 100644 assets/fontawesome/webfonts/fa-brands-400.eot create mode 100644 assets/fontawesome/webfonts/fa-brands-400.svg create mode 100644 assets/fontawesome/webfonts/fa-brands-400.ttf create mode 100644 assets/fontawesome/webfonts/fa-brands-400.woff create mode 100644 assets/fontawesome/webfonts/fa-brands-400.woff2 create mode 100644 assets/fontawesome/webfonts/fa-regular-400.eot create mode 100644 assets/fontawesome/webfonts/fa-regular-400.svg create mode 100644 assets/fontawesome/webfonts/fa-regular-400.ttf create mode 100644 assets/fontawesome/webfonts/fa-regular-400.woff create mode 100644 assets/fontawesome/webfonts/fa-regular-400.woff2 create mode 100644 assets/fontawesome/webfonts/fa-solid-900.eot create mode 100644 assets/fontawesome/webfonts/fa-solid-900.svg create mode 100644 assets/fontawesome/webfonts/fa-solid-900.ttf create mode 100644 assets/fontawesome/webfonts/fa-solid-900.woff create mode 100644 assets/fontawesome/webfonts/fa-solid-900.woff2 create mode 100644 assets/images/Boards/NetFPGA-CML-1G.png create mode 100644 assets/images/Boards/NetFPGA-PLUS.jpeg create mode 100644 assets/images/Boards/NetFPGA-SUME.jpg create mode 100644 assets/images/Boards/NetFPGA10G_web.jpg create mode 100644 assets/images/Boards/NetFPGA1G_v1.jpg create mode 100644 assets/images/Boards/netfpgacmllandscape.jpg create mode 100644 assets/images/CIMG6252-NetFPGA_Summercamp_2008a.jpeg create mode 100644 assets/images/CIMG6253-NetFPGA_Summercamp_2008b.jpeg create mode 100644 assets/images/Logos/Hosts/bju.jpg create mode 100644 assets/images/Logos/Hosts/brno.jpg create mode 100644 assets/images/Logos/Hosts/delaware.jpg create mode 100644 assets/images/Logos/Hosts/forth.jpg create mode 100644 assets/images/Logos/Hosts/ietf.jpg create mode 100644 assets/images/Logos/Hosts/iis.jpg create mode 100644 assets/images/Logos/Hosts/indiana.jpg create mode 100644 assets/images/Logos/Hosts/kentucky.jpg create mode 100644 assets/images/Logos/Hosts/melbourne.jpg create mode 100644 assets/images/Logos/Hosts/ofelia.jpg create mode 100644 assets/images/Logos/Hosts/pursuit.jpg create mode 100644 assets/images/Logos/Hosts/put.jpg create mode 100644 assets/images/Logos/Hosts/sigmetrics.jpg create mode 100644 assets/images/Logos/Hosts/snu.jpg create mode 100644 assets/images/Logos/Hosts/tsinghua.jpg create mode 100644 assets/images/Logos/Hosts/tu.jpg create mode 100644 assets/images/Logos/Hosts/unsw.jpg create mode 100644 assets/images/Logos/Supporters/Current/cambridge.jpg create mode 100644 assets/images/Logos/Supporters/Current/epsrc.jpg create mode 100644 assets/images/Logos/Supporters/Current/nsf.jpg create mode 100644 assets/images/Logos/Supporters/Current/oxford.gif create mode 100644 assets/images/Logos/Supporters/Current/stanford.jpg create mode 100644 assets/images/Logos/Supporters/Current/xilinx.jpg create mode 100644 assets/images/Logos/Supporters/Past/agilent.jpg create mode 100644 assets/images/Logos/Supporters/Past/algologic.jpg create mode 100644 assets/images/Logos/Supporters/Past/broadcom.jpg create mode 100644 assets/images/Logos/Supporters/Past/cisco.jpg create mode 100644 assets/images/Logos/Supporters/Past/cml.jpg create mode 100644 assets/images/Logos/Supporters/Past/cypress.jpg create mode 100644 assets/images/Logos/Supporters/Past/digilent.jpg create mode 100644 assets/images/Logos/Supporters/Past/huawei.jpg create mode 100644 assets/images/Logos/Supporters/Past/juniper.jpg create mode 100644 assets/images/Logos/Supporters/Past/linear.jpg create mode 100644 assets/images/Logos/Supporters/Past/micron.jpg create mode 100644 assets/images/Logos/Supporters/Past/netlogic.jpg create mode 100644 assets/images/Logos/Supporters/Past/solarflare.jpg create mode 100644 assets/images/Logos/Supporters/Past/synplicity.jpg create mode 100644 assets/images/devworkshop.gif create mode 100644 assets/images/netfpga-summer-camp-2010-1.jpeg create mode 100644 assets/images/netfpga-summer-camp-2013-1.jpeg create mode 100644 assets/images/netfpga-summer-camp-2013-2.jpeg create mode 100644 assets/images/netfpga_tutorial.jpeg create mode 100644 assets/images/netfpga_tutorial_2007.jpeg create mode 100644 assets/images/netfpga_tutorial_beijing_1.jpeg create mode 100644 assets/images/netfpga_tutorial_beijing_2.jpeg create mode 100644 assets/images/netfpgasumelandscape.jpg create mode 100644 assets/images/thumbnail.png create mode 100644 assets/js/filter-script.js create mode 100644 assets/publications/NetFPGA_Developers_Workshop_2009_Proceedings.pdf create mode 100644 assets/publications/Thamarakuzhi_Chandy_Jan_2011.pdf create mode 100644 assets/vendor/bootstrap/js/bootstrap.bundle.js create mode 100644 assets/vendor/bootstrap/js/bootstrap.bundle.js.map create mode 100644 assets/vendor/bootstrap/js/bootstrap.bundle.min.js create mode 100644 assets/vendor/bootstrap/js/bootstrap.bundle.min.js.map create mode 100644 assets/vendor/bootstrap/js/bootstrap.js create mode 100644 assets/vendor/bootstrap/js/bootstrap.js.map create mode 100644 assets/vendor/bootstrap/js/bootstrap.min.js create mode 100644 assets/vendor/bootstrap/js/bootstrap.min.js.map create mode 100644 assets/vendor/jquery/jquery.js create mode 100644 assets/vendor/jquery/jquery.min.js create mode 100644 assets/vendor/jquery/jquery.min.map create mode 100644 assets/vendor/jquery/jquery.slim.js create mode 100644 assets/vendor/jquery/jquery.slim.min.js create mode 100644 assets/vendor/jquery/jquery.slim.min.map create mode 100644 ecosystem.html create mode 100644 events/2007/06/12/ACM-SigMetrics-2007.html create mode 100644 events/2007/08/24/Hot-Interconnects.html create mode 100644 events/2008/02/06/Sydney-Australia.html create mode 100644 events/2008/03/31/EuroSys-2008.html create mode 100644 events/2008/04/23/Beijing-China.html create mode 100644 events/2008/05/15/Bangalore-India.html create mode 100644 events/2008/08/04/Summer-Camp-2008.html create mode 100644 events/2008/08/17/SIGCOMM-2008.html create mode 100644 events/2008/09/05/Bruno-Czech-Republic.html create mode 100644 events/2008/09/16/Cambridge-UK.html create mode 100644 events/2009/02/25/Seoul-South-Korea.html create mode 100644 events/2009/08/13/1st-North-American-NetFPGA-Developers-Workshop.html create mode 100644 events/2009/09/03/FPL-19.html create mode 100644 events/2010/02/09/NetFPGA-Design-Challenge-2010.html create mode 100644 events/2010/03/15/Spring-Camp-2010.html create mode 100644 events/2010/03/21/IETF-77.html create mode 100644 events/2010/04/14/Kentucky-USA.html create mode 100644 events/2010/05/15/Beijing-China.html create mode 100644 events/2010/06/02/Delaware-USA.html create mode 100644 events/2010/06/14/1st-Asian-NetFPGA-Developers-Workshop.html create mode 100644 events/2010/07/02/1st-European-NetFPGA-Developers-Workshop.html create mode 100644 events/2010/08/09/Summer-Camp-2010.html create mode 100644 events/2010/08/12/2nd-North-American-NetFPGA-Developers-Workshop.html create mode 100644 events/2010/09/16/Crete-Greece.html create mode 100644 events/2010/11/04/Melbourne-Australia.html create mode 100644 events/2010/11/06/Beijing-China.html create mode 100644 events/2011/08/01/Summer-Camp-2011.html create mode 100644 events/2011/08/19/Toronto-2011.html create mode 100644 events/2011/09/01/EU-PURSUIT.html create mode 100644 events/2011/11/10/EU-OFELIA.html create mode 100644 events/2011/12/05/Tokyo-Japan-near-CoNext.html create mode 100644 events/2012/06/15/Sigmetrics-Performance-2012.html create mode 100644 events/2012/06/18/Indiana-Hands-on-Tutorial-2012.html create mode 100644 events/2012/07/30/Summer-Camp-2012.html create mode 100644 events/2012/10/10/LATINCOM-2012.html create mode 100644 events/2013/04/08/University-of-Massachusetts-Amherst.html create mode 100644 events/2013/04/09/RENCI.html create mode 100644 events/2013/04/10/Princeton-University.html create mode 100644 events/2013/04/11/Case-Western-Reserve-University.html create mode 100644 events/2013/04/11/University-of-Pennsylvania.html create mode 100644 events/2013/04/12/Carnegie-Mellon-University.html create mode 100644 events/2013/05/20/European-Spring-Camp-2013.html create mode 100644 events/2013/06/05/Microsoft-Research-Cambridge.html create mode 100644 events/2013/07/29/Stanford-Summer-Camp-2013.html create mode 100644 events/2013/09/02/Cambridge-Summer-Camp-2013.html create mode 100644 events/2013/11/25/Long-Island-University-NY.html create mode 100644 events/2013/12/12/University-of-Bochum.html create mode 100644 events/2014/02/07/Aston-University.html create mode 100644 events/2014/04/07/Tel-Aviv-University.html create mode 100644 events/2014/04/08/Technion.html create mode 100644 events/2014/04/29/Univesity-of-Bristol.html create mode 100644 events/2014/07/25/Indian-Institute-of-Science.html create mode 100644 events/2015/03/12/DATE-2015.html create mode 100644 events/2015/04/13/NetSoft.html create mode 100644 events/2015/04/14/NetSoft.html create mode 100644 events/2015/05/20/SBRC-2015.html create mode 100644 events/2015/08/02/Technion.html create mode 100644 events/2015/08/17/SIGCOMM-demo.html create mode 100644 events/2015/08/17/SIGCOMM-tutorial.html create mode 100644 events/2015/08/31/FPL-2015.html create mode 100644 events/2017/02/23/Aston-University.html create mode 100644 events/2017/03/27/DATE-2017.html create mode 100644 events/2017/04/18/NetFPGA-Design-Challenge-2017.html create mode 100644 events/2017/04/20/NetFPGA-Developers-Summit-2017.html create mode 100644 events/2017/07/25/NetFPGA-Summer-School-2017.html create mode 100644 events/2017/08/25/SIGCOMM-2017.html create mode 100644 events/2018/08/20/SIGCOMM-2018.html create mode 100644 events/2019/02/24/FPGA-2019.html create mode 100644 events/2021/06/17/Yuta-Tokusashi-Cambridge-NetFPGA-Plus-the-next-generation-of-the-NetFPGA-platforms.html create mode 100644 index.html create mode 100644 news-and-events.html create mode 100644 news/2008/08/21/NetFPGA-Demo-wins-2nd-place-at-SIGCOMM.html create mode 100644 news/2010/03/29/NetFPGA-Design-Contest-2010.html create mode 100644 news/2010/03/29/NetFPGA-Kentucky-Tutorial.html create mode 100644 news/2010/07/02/NetFPGA-Summer-Camp.html create mode 100644 news/2011/01/21/NetFPGA-Release-2-2-0.html create mode 100644 news/2011/03/07/NetFPGA-Summer-camp-2011.html create mode 100644 news/2011/05/02/NetFPGA-Summer-camp-2011-registration-online.html create mode 100644 news/2012/03/15/NetFPGA-10G-Public-Beta.html create mode 100644 news/2013/04/02/University-of-Wisconsin-Madison.html create mode 100644 news/2014/05/06/open-source-network-tester-release-1-0-0.html create mode 100644 news/2014/07/04/OSNT-1-5-0.html create mode 100644 news/2014/07/23/NetFPGA-publication-list.html create mode 100644 news/2014/07/30/NetFPGA-10G-Release-5-0-4.html create mode 100644 news/2014/10/13/OSNT-release-2-0-0.html create mode 100644 news/2014/10/15/Announcing-NetFPGA-SUME.html create mode 100644 news/2014/10/21/NetFPGA-10G-Release-5-0-5.html create mode 100644 news/2014/12/22/NetFPGA-Newsletter-December-2014.html create mode 100644 news/2015/01/13/NetFPGA-10G-Release-5-0-6.html create mode 100644 news/2015/02/28/OSNT-2-1-0.html create mode 100644 news/2015/04/08/NetFPGA-10G-Release-5-0-7.html create mode 100644 news/2015/05/26/CML-Release-5-0-5.html create mode 100644 news/2015/06/15/Newsletter.html create mode 100644 news/2015/10/12/NetFPGA-SUME-Release-1-0-0.html create mode 100644 news/2015/12/16/NetFPGA-SUME-1-1-0.html create mode 100644 news/2016/01/29/NetFPGA-SUME-Release1-2-0.html create mode 100644 news/2016/02/01/NetFPGA-Newsletter-February-2016.html create mode 100644 news/2016/05/24/NetFPGA-SUME-Release-1-3-0.html create mode 100644 news/2016/10/04/NetFPGA-SUME-Release-1-4-0.html create mode 100644 news/2016/11/16/NetFPGA-Development-Challenge-April-2017.html create mode 100644 news/2016/12/13/NetFPGA-SUME-Release-1-5-0.html create mode 100644 news/2017/03/21/NetFPGA-Design-Challenge-April-2017.html create mode 100644 news/2017/03/22/Meet-NetFPGA.html create mode 100644 news/2017/03/22/OSNT-on-SUME-now-available.html create mode 100644 news/2017/07/13/NetFPGA-SUME-Release-1-6-0.html create mode 100644 news/2017/08/03/NetFPGA-SUME-Release-1-6-1.html create mode 100644 news/2017/10/13/NetFPGA-SUME-Release-1-7-0.html create mode 100644 news/2017/12/14/NetFPGA-SUME-Release-1-7-1.html create mode 100644 news/2018/01/30/NetFPGA-SUME-Release-1-8-0.html create mode 100644 news/2019/04/01/NetFPGA-SUME-Release-1-9-0.html create mode 100644 news/2019/04/02/NetFPGA-project-wins-SOSR-System-Award.html create mode 100644 news/2020/10/02/NetFPGA-SUME-Release.html create mode 100644 news/2021/09/24/NetFPGA-PLUS-Release-1.0.html create mode 100644 why-NetFPGA.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/10G-reg-form.html b/10G-reg-form.html new file mode 100644 index 0000000..253a9af --- /dev/null +++ b/10G-reg-form.html @@ -0,0 +1,126 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
+
+
+
+

NetFPGA

+
+
+
+
+ + +
+
+
+

NetFPGA 10G Beta program Registration

+
+
+

+ A more comprehensive Getting Started page will be available once you have registered.
+ The code base is available as a git repository hosted on GitHub.
+ To access the release, please first fill out this registration form with your GitHub username. The rest of the information helps us learn a little bit about you, and keep in touch with you about NetFPGA updates and news. +



+ + +
+
+ +
+ + + + + + + + + + + diff --git a/2021/07/15/NetFPGA.html b/2021/07/15/NetFPGA.html new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/2021/07/15/NetFPGA.html @@ -0,0 +1 @@ + diff --git a/2021/07/16/IIsy.html b/2021/07/16/IIsy.html new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/2021/07/16/IIsy.html @@ -0,0 +1 @@ + diff --git a/2021/07/16/In-Network-Computing-on-Demand.html b/2021/07/16/In-Network-Computing-on-Demand.html new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/2021/07/16/In-Network-Computing-on-Demand.html @@ -0,0 +1 @@ + diff --git a/2021/07/16/MTPSA.html b/2021/07/16/MTPSA.html new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/2021/07/16/MTPSA.html @@ -0,0 +1 @@ + diff --git a/2021/07/16/OSNT.html b/2021/07/16/OSNT.html new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/2021/07/16/OSNT.html @@ -0,0 +1 @@ + diff --git a/2021/07/16/P4DNS.html b/2021/07/16/P4DNS.html new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/2021/07/16/P4DNS.html @@ -0,0 +1 @@ + diff --git a/2021/07/16/PTA.html b/2021/07/16/PTA.html new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/2021/07/16/PTA.html @@ -0,0 +1 @@ + diff --git a/About.html b/About.html new file mode 100644 index 0000000..90ad708 --- /dev/null +++ b/About.html @@ -0,0 +1,319 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
+
+
+
+

NetFPGA

+
+
+
+
+ + +
+
+
+

About NetFPGA

+

The NetFPGA is an open source hardware and software platform designed for research and teaching. Currently there are two supported platforms: NetFPGA-SUME and NetFPGA-PLUS and three old platforms: NetFPGA-1G-CML, NetFPGA-10G and the NetFPGA-1G. These platforms allow researchers, and students to build prototypes of high-speed, hardware-accelerated networking systems. As of 2019 the NetFPGA platforms have been used in over 400 academic papers. Our platforms are open-source and the hardware is made available at low cost through donations of gifts and silicon chips by sponsors of the NetFPGA project.

+

Tutorials have been held worldwide to teach new users with hands-on experience using the NetFPGA. There are now over 150 groups around the globe that use the NetFPGA.

+ +

Supporters of the NetFPGA project

+
+
+
+
+ Stanford University Logo +
+
+
+
+ University of Cambridge Logo +
+
+
+
+ University of Oxford Logo +
+
+
+
+ National Science Foundation Logo +
+
+
+
+ EPSRC Logo +
+
+
+
+ Xilinx Logo +
+
+
+

Past Supporters

+
+
+
+
+ Agilent Logo +
+
+
+
+ Algo-logic Logo +
+
+
+
+ Broadcom Logo +
+
+
+
+ Cisco Logo +
+
+
+
+ CML Logo +
+
+
+
+ Cypress Logo +
+
+
+
+ Digilent Logo +
+
+
+
+ Huawei Logo +
+
+
+
+ Juniper Logo +
+
+
+
+ Linear Logo +
+
+
+
+ Micron Logo +
+
+
+
+ NetLogic Logo +
+
+
+
+ Solarflare Logo +
+
+
+
+ Synplicity Logo +
+
+
+ +

Past hosts of hands-on tutorials

+
+
+
+
+ Beijing Jiaotong University +
+
+
+
+ BRNO University of Technology +
+
+
+
+ University of Delaware +
+
+
+
+ Forth Institute of Computer Science +
+
+
+
+ Indiana University +
+
+
+
+ IETF +
+
+
+
+ Indian Institute of Science +
+
+
+
+ University of Kentucky +
+
+
+
+ University of Melbourne +
+
+
+
+ Ofelia +
+
+
+
+ Poznen University of Technology +
+
+
+
+ Pursuit +
+
+
+
+ Seoul National University +
+
+
+
+ ACM SIGMETRICS +
+
+
+
+ Technische Universität Berlin +
+
+
+
+ Tsinghua University +
+
+
+
+ UNSW +
+
+
+ +
+
+ +
+ + + + + + + + + + + diff --git a/CML-reg-form.html b/CML-reg-form.html new file mode 100644 index 0000000..a007620 --- /dev/null +++ b/CML-reg-form.html @@ -0,0 +1,121 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
+
+
+
+

NetFPGA

+
+
+
+
+ + +
+
+
+

NetFPGA 1G CML Registration

+
+
+ + +
+
+ +
+ + + + + + + + + + + diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..1de72a1 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +netfpga.org diff --git a/NetFPGA-10G.html b/NetFPGA-10G.html new file mode 100644 index 0000000..0317f06 --- /dev/null +++ b/NetFPGA-10G.html @@ -0,0 +1,331 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
+
+
+
+

NetFPGA

+
+
+
+
+ + +
+
+
+

NetFPGA 10G

+
+
+
+ +
+
+

The NetFPGA-10G is an FPGA-based PCI Express board with 10-Gigabit SFP+ interface, a x8 gen1 PCIe adapter card incorporating Xilinx’s Virtex-5 TX240TFPGA. It is ideal for the high bandwidth applications.

+

Features list:

+
    +
  • Field Programmable Gate Array (FPGA) Logic
  • +
  • 10-Gigabit Ethernet networking ports
      +
    • 4 SFP+ connectors
    • +
    • Connected to the FPGA through four Broadcom’s AEL2005 PHY devices
    • +
    • Supports both 10-Gigabit and 1-Gigabit modes
    • +
  • +
  • Quad Data Rate Static Random Access Memory (QDRII SRAM)
      +
    • Suitable for storing and forwarding table data
    • +
    • 300MHz Quad data rate (1.2 Giga transactions every second), synchronous with the logic
    • +
    • Three parallel banks of 72 MBit QDRII+ memories
    • +
    • Total capacity: 27 MBytes
    • +
    • Cypress: CY7C1515KV18
    • +
  • +
  • Reduced Latency Random Access Memory (RLDRAM II)
      +
    • Suitable for packet buffering
    • +
    • Four x36 RLDRAMII on-board device
    • +
    • 400MHz clock (800MT/s)
    • +
    • 115.2 Gbps peak memory throughput
    • +
    • Total Capacity: 288MByte
    • +
    • Micron: MT49H16M36HT-25
    • +
  • +
  • PCI Express Gen. 1
      +
    • First generation PCI Express interface, 2.5Gbps/lane
    • +
    • 8 lanes (x8)
    • +
    • Hard IP
    • +
    • Provides CPU access to memory-mapped registers and memory on the NetFPGA hardware
    • +
    • x4 Gen.2 PCI Express can be used as a soft core
    • +
  • +
  • Storage
      +
    • Two FLASH devices
    • +
    • Total Capacity: 256Mb
    • +
  • +
  • Expansion Interfaces
      +
    • Two SAMTEC QTH connectors
    • +
    • Allowing to connect additional 20 RocketIO GTX transceivers
    • +
  • +
  • Additional Features
      +
    • DB9 (RS232) Connector
    • +
    • User LEDs & Push Buttons
    • +
  • +
  • Standard PCIe Form Factor
      +
    • Standard PCIe card
    • +
    • 3/4 length, full height
    • +
  • +
  • Flexible, Open-source code
  • +
+
+
+
+
+
+ +
+

To see the NetFPGA-10G repository and Wiki you will need to register.

+

Reference Projects

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TitleOrganisationDocumentation
Production TestStanford UniversityWiki
RLDRAM TestXilinxWiki
10G Ethernet Interface Loopback TestStanford University / University of CambridgeWiki
1G Ethernet Interface Loopback TestStanford University / University of CambridgeWiki
Reference NIC 10GStanford University / University of CambridgeWiki
Reference NIC 1GStanford University / University of CambridgeWiki
Flash ConfigurationUniversity of CambridgeWiki
Learning CAM SwitchUniversity of Pisa / University of CambridgeWiki
+

Contributed Projects

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TitleOrganisationDocumentation
NetFPGA-1G Ported Switch 10GUniversity of Pisa / University of CambridgeWiki
NetFPGA-1G Ported NIC 1GUniversity of Pisa / University of CambridgeWiki
NICStanford University / University of CambridgeWiki
OpenFlow SwitchStanford UniversityWiki
NIC (SRAM)Stanford University / University of CambridgeWiki
Simple 10G SwitchXilinxWiki
NetFlow simple 10G BramUniversidad Autónoma de MadridWiki
FlashUniversity of CambridgeWiki
+
+
+
+
+
+ +
+
+

Where can I buy a NetFPGA 10G Platform?

+ +

It seems that my board is broken, what should I do?

+ +

What if I have Hardware problems with my board?

+ +

What if I have Software problems with my board?

+ +

You can exchange your ideas and questions with the NetFPGA 10G community here.

+

How can I get involved with the NetFPGA project?

+ +

How can I obtain the gateware and software package?

+ +
+

Once you have used the NetFPGA, we hope that you will contribute to the project.

+
+

You can find our Wiki here.

+
+
+
+
+ +
+
+ +
+ + + + + + + + + + + diff --git a/NetFPGA-1G.html b/NetFPGA-1G.html new file mode 100644 index 0000000..9211c46 --- /dev/null +++ b/NetFPGA-1G.html @@ -0,0 +1,501 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
+
+
+
+

NetFPGA

+
+
+
+
+ + +
+
+
+

NetFPGA 1G

+
+
+
+ +
+
+

The NetFPGA is the low-cost reconfigurable hardware platform optimized for high-speed networking. The NetFPGA includes the all fo the logic resources, memory, and Gigabit Ethernet interfaces necessary to build a complete switch, router, and/or security device. Because the entire datapath is implemented in hardware, the system can support back-to-back packets at full Gigabit line rates and has a processing latency measured in only a few clock cycles.

+
    +
  • Field Programmable Gate Array (FPGA) Logic
      +
    • Xilinx Virtex-II Pro 50
    • +
    • 53,136 logic cells
    • +
    • 4,176 Kbit block RAM
    • +
    • up to 738 Kbit distributed RAM
    • +
    • 2 x PowerPC cores
    • +
    • Fully programmable by the user
    • +
  • +
  • Gigabit Ethernet networking ports
      +
    • Connector block on left of PCB interfaces to 4 external RJ45 plugs
    • +
    • Interfaces with standard Cat5E or Cat6 copper network cables using Broadcom PHY
    • +
    • Wire-speed processing on all ports at all time using FPGA logic
        +
      • 1 Gbits * 2 (bi-directional) * 4 (ports) = 8 Gbps throughput
      • +
    • +
  • +
  • Static Random Access Memory (SRAM)
      +
    • Suitable for storing forwarding table data
    • +
    • Zero-bus turnaround (ZBT), synchronous with the logic
    • +
    • Two parallel banks of 18 MBit (2.25 MByte) ZBT memories
    • +
    • Total capacity: 4.5 MBytes
    • +
    • Cypress: CY7C1370D-167AXC
    • +
  • +
  • Double-Date Rate Random Access Memory (DDR2 DRAM)
      +
    • 400 MHz Asynchronous clock
    • +
    • Suitable for packet buffering
    • +
    • 25.6 Gbps peak memory throughput
    • +
    • Total capacity: 64 MBytes
    • +
    • Micron: MT47H16M16BG-5E
    • +
  • +
  • Multi-gigabit I/O
      +
    • Two SATA-style connectors to Multi-Gigabit I/O (MGIO) on right-side of PCB
    • +
    • Allows multiple NetFPGAs within a PC to be chained together
    • +
  • +
  • Standard PCI Form Factor
      +
    • Standard PCI card
    • +
    • Can be used in a PCI-X slot
    • +
    • Enables fast reconfiguration of the FPGA over PCI bus without using JTAG cable
    • +
    • Provides CPU access to memory-mapped registers and memory on the NetFPGA hardware
    • +
  • +
  • Hardware Debugging ports
      +
    • JTAG cable connector can be used to run Xilinx ChipScope Pro
    • +
  • +
  • Flexible, Open-source code
      +
    • BSD-style open-source reference router available from the NetFPGA.org website. Download it, use it, keep it, give back to the community if you choose.
    • +
  • +
+
+
+
+
+
+ +
+

Projects

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TitleOrganisationDocumentation
IPv4 Reference RouterStanford UniversityWiki
Quad-Port Gigabit NICStanford UniversityWiki
Ethernet SwitchStanford UniversityWiki
Buffer Monitoring SystemStanford UniversityWiki
Hardware-Accelerated Linux RouterStanford UniversityWiki
DRAM-RouterStanford UniversityWiki
DRAM-Queue TestStanford UniversityWiki
Packet GeneratorStanford UniversityWiki
OpenFlow SwitchStanford UniversityWiki
NetFlow ProbeBrno UniversityWiki
AirFPGAStanford UniversityWiki
Fast Reroute & Multipath RouterStanford UniversityWiki
NetThreadsUniversity of TorontoWiki
NetThreads-REUniversity of TorontoWiki
NetTMUniversity of TorontoWiki
Precise Traffic GeneratorUniversity of TorontoWiki
URL ExtractionUniv. of New South WalesWiki
zFilter Sprouter (Pub/Sub)EricssonWiki
Windows DriverMicrosoft ResearchWiki
REDStanford UniversityWiki
Open Network LabWashington UniversityWiki
DFAUMass LowellWiki
G/PaXXilinxWiki
RCP RouterStanford UniversityWiki
Deficit Round Robin (DRR)Stanford UniversityWiki
OpenFlow-MPLS SwitchEricssonWiki
PTP-enabled RouterStanford UniversityWiki
Vlan Tag HandlerStanford UniversityWiki
Port AggregatorStanford UniversityWiki
IP Lookup w/Blooming TreeUniversity of PisaWiki
KOREN TestbedChungnam-KoreaWiki
Virtual Data PlaneGeorgia TechWiki
Deficit Round Robin (DRR) Input ArbiterUniversidade Federal do Rio Grande do Sul (Brazil)Wiki
Counter BraidsStanford (Lu, Jianying)Wiki
Ethernet Switch with Real-time supportUniversity of Waterloo and Universidad de ConcepcionWiki
End-to-End Ethernet AuthorizationEuskal Herriko UnibertsitatekoWiki
Ultra-high Speed Congestion-controlUniversity of North CarolinaWiki
Promiscuous Reference RouterUniversity of CataniaWiki
BORPH (Operating System)University of Hong Kong / University of Cape TownWiki
Traffic MonitorUniversity of CataniaWiki
Latency Measurement ModuleAlgo-Logic SystemsWiki
NetFPGA Logic AnalyzerUSC/ISIWiki
Bounded Jitter PolicyUniversity of TorontoWiki
Traffic ClassifierUniversity of TorontoWiki
Network IO FairnessGeorgia TechWiki
Tunneling OpenFlow Switch with ICMPStanford UniversityWiki
zFormation PSrouter (Pub/Sub)EricssonWiki
High Performance Packet ClassifierUniversity of PisaWiki
Flexible RouterUniversity of CataniaWiki
Monitoring SystemUniversity of Pisa / University of CambridgeWiki
Deficit Round Robin Router BackplaneCairo UniversityWiki
NetCoding Project Transmit Node?Download
Router Buffer AdaptationUniversity of New South WalesWiki
+
+
+
+
+
+ +
+
+

Where can I buy a NetFPGA 1G platform

+ +

It seems that my board is broken, what should I do?

+ +

What if I have Hardware problems with my boards?

+ +

What if I have Software problems with my board?

+
    +
  • Register to the NetFPGA Forums.
  • +
+

You can exchange your ideas and questions with the NetFPGA community here.

+

How can I get involved with the NetFPGA project?

+ +

How can I obtain the gateware and software package?

+ +
+

Once you have used the NetFPGA, we hope that you will contribute to the project.

+
+

You can find our Wiki here.

+
+
+
+
+ +
+
+ +
+ + + + + + + + + + + diff --git a/NetFPGA-CML.html b/NetFPGA-CML.html new file mode 100644 index 0000000..fe0db5b --- /dev/null +++ b/NetFPGA-CML.html @@ -0,0 +1,271 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
+
+
+
+

NetFPGA

+
+
+
+
+ + +
+
+
+

NetFPGA CML

+
+
+
+ +
+
+

The NetFPGA-1G-CML is an FPGA-based PCI Express board with Gigabit Ethernet I/O, an x4 gen2 PCIe adapter card incorporating Xilinx’s Kintex-7 325T FPGA. It is ideal for the development of highly complex, low bandwidth applications.

+

Features list:

+
    +
  • Field Programmable Gate Array (FPGA) Logic
      +
    • Xilinx Kintex-7 325T
    • +
    • 326,080 logic cells
    • +
    • 16,020 Kbit block RAM
    • +
    • up to 4,000 Kbit distributed RAM
    • +
    • Fully programmable by the user
    • +
  • +
  • Gigabit Ethernet networking ports
      +
    • Four 10/100/1000 Ethernet PHYs with RGMII
    • +
    • Wire-speed processing on all ports at all time using FPGA logic
    • +
  • +
  • Quad Data Rate Static Random Access Memory (QDRII+ SRAM)
      +
    • Suitable for storing and forwarding table data
    • +
    • 450MHz Quad data rate (1.8 Giga transactions every second), synchronous with the logic
    • +
    • 36 MBit (4.5 MBytes) QDRII+ memory
    • +
    • Cypress: CY7C2263KV18
    • +
  • +
  • Double-Date Rate Random Access Memory (DDR3 DRAM)
      +
    • Suitable for packet buffering
    • +
    • x8 DDR3 on-board device
    • +
    • 800MHz clock (1600MT/s)
    • +
    • 12.8 Gbps peak memory throughput
    • +
    • Capacity: 512MByte
    • +
    • Micron: MT41K512M8
    • +
  • +
  • PCI Express Gen. 2
      +
    • Second generation PCI Express interface, 5Gbps/lane
    • +
    • 4 lanes (x4)
    • +
    • Hard IP
    • +
    • Provides CPU access to memory-mapped registers and memory on the NetFPGA hardware
    • +
  • +
  • Storage
      +
    • SD-card slot
    • +
    • 1Gbit FLASH
    • +
  • +
  • Expansion Interfaces
      +
    • Fully compliant VITA-57 FMC HPC connector, including 4 high-speed serial links (GTX)
    • +
    • Two Digilent PMOD expansion connectors
    • +
  • +
  • Additional Features
      +
    • 32-bit PIC microcontroller
    • +
    • USB microcontroller
    • +
    • Real Time clock
    • +
    • Crypto-authentication chip
    • +
    • User LEDs & Push Buttons
    • +
  • +
  • Standard PCIe Form Factor
      +
    • Standard PCIe card
    • +
    • 3/4 length, full height
    • +
  • +
  • Flexible, Open-source code
  • +
+
+
+
+
+
+ +
+

To see the NetFPGA-1G-CML repository and Wiki you will need to register.

+

Reference Projects

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TitleOrganisationDocumentation
Ethernet Interface Loopback TestCML / University of CambridgeWiki
Reference NICCML / University of CambridgeWiki
Reference FlashCML / University of CambridgeWiki
Learning CAM SwitchCML / University of CambridgeWiki
Learning Switch (Lite)CML / University of CambridgeWiki
Reference RouterCML / University of CambridgeWiki
+
+
+
+
+
+ +
+
+

Where can I buy a NetFPGA 1G CML Platform?

+ +

It seems that my board is broken, what should I do?

+ +

What if I have Hardware problems with my board?

+ +

What if I have Software problems with my board?

+ +

You can exchange your ideas and questions with the NetFPGA CML community here.

+

How can I get involved with the NetFPGA project?

+ +

How can I obtain the gateware and software package?

+
  • Registration
  • +
  • NetFPGA-1G-CML license
  • +
    +

    Once you have used the NetFPGA, we hope that you will contribute to the project.

    +
    +

    You can find our Wiki here.

    +
    +
    +
    +
    + +
    +
    + +
    + + + + + + + + + + + diff --git a/NetFPGA-PLUS.html b/NetFPGA-PLUS.html new file mode 100644 index 0000000..b67d4a1 --- /dev/null +++ b/NetFPGA-PLUS.html @@ -0,0 +1,259 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    NetFPGA PLUS

    +
    +
    +
    + +
    +
    +

    The NetFPGA PLUS is a code base built for the Xilinx Alveo Data Center Accelerator Card based upon Xilinx Virtex Ultrascale+ FPGAs. The code base currently operates on the U200, U250 and U280 as well as the discontinued VCU1525 Acceleration Development Kit.

    +
    +

    A typical Alveo board is an FPGA-based PCI Express board with I/O capabilities for 10 and 100 Gbps operation, an x16 gen3 PCIe adapter card. It can be used as NIC, multiport switch, firewall, test/mesaurement environment, and more.

    +

    Full feature lists are available at the Xilinx Alveo website.

    +

    Example feaures (e.g., U250)

    +
      +
    • Field Programmable Gate Array
    • +
        +
      • Xilinx Ultrascale+ VCU250
      • +
      • 1,728K logic cells
      • +
      • 57MB block RAM
      • +
      • Fully programmable by the user
      • +
      +
    • 100-Gigabit Ethernet networking ports
    • +
        +
      • Connector bloack on left of PCB interfaces to 2 QSFP+ ports
      • +
      • Directly connected to the FPGA.
      • +
      • Wire-speed processing on all ports at all time using FPGA logic.
      • +
      +
    • Double-Data Rate Random Access Memory (DDR4 DRAM)
    • +
        +
      • 4x 16GB 72b DIMM DDR4
      • +
      • 933MHz clock (2400MT/s)
      • +
      • 77 GB/s peak memory throughput
      • +
      +
    • PCI Express Gen. 3
    • +
        +
      • Third generation PCI Express interface, 8Gbps/lane
      • +
      • 16 lanes (x16)
      • +
      • Hard IP
      • +
      • Provides CPU access to memory-mapped registers and memory on the NetFPGA hardware
      • +
      +
    • Storage
    • +
        +
      • FLASH devices
      • +
      +
    • Standard PCIe Form Factor
    • +
        +
      • Standard PCIe card
      • +
      • 3/4 or Full length, full height
      • +
      +
    • Flexible, Open-source code
    • +
    +
    +
    +
    +
    +
    + +
    +

    Reference Projects

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TitleOrganisationDocumentation
    Reference SwitchUniversity of CambridgeWiki
    Reference Switch LiteUniversity of CambridgeWiki
    Reference NICUniversity of CambridgeWiki
    Reference RouterUniversity of CambridgeWiki
    + +
    +
    +
    +
    +
    + +
    + +
    +

    Where can I buy a NetFPGA PLUS Platform?

    +
      +
    • NetFPGA PLUS is initended to run on a range of the Xilinx +Vivado Ultra+ so contact your Xilinx reseller.
    • +
    +

    It seems that my board is broken, what should I do?

    +
      +
    • The Xilinx / Alveo boards have support for hardware repair +andreplacement, contact your Xilinx seller.
    • +
    +

    What if I have Hardware problems with my board?

    +
      +
    • The Xilinx / Alveo boards are no longer bespoke; like any +commodity, consult the people who sold it to you.
    • +
    +

    What if I have Software problems with my board?

    +
      +
    • If the software problem is exclusively related to the +NetFPGA-PLUS codebase, then use the bug-tracking mechaisms on the GitHub +platform associated with the NetFPGA-PLUS repository.
    • +
    +

    How can I get involved with the NetFPGA project?

    +
      +
    • We have a number of mailing lists, unlike SUME, and other previous +boards we no longer require explcit registation. Standby for detals +once we have our new procedures for contribution in place. In the firsst +insntance the issues tracker associated with the PLUS repository is a +great place to start.
    • +
    • Become a fan on Facebook.
    • +
    • Become a fan on twitter.
    • +
    +

    How can I obtain the gateware and software package?

    +
      +
    • Check out the repository link in the Resources tab.
    • +
    +

    Once you have used the NetFPGA, we hope that you will contribute to the project.

    +

    You can find our Wiki here.

    + + +
    +
    +
    +
    + +
    +
    + +
    + + + + + + + + + + + diff --git a/NetFPGA-SUME.html b/NetFPGA-SUME.html new file mode 100644 index 0000000..1aa0b20 --- /dev/null +++ b/NetFPGA-SUME.html @@ -0,0 +1,272 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    NetFPGA SUME

    +
    +
    +
    + +
    +
    +

    The NetFPGA SUME is an FPGA-based PCI Express board with I/O capabilities for 10 and 100 Gbps operation, an x8 gen3 PCIe adapter card incorporating Xilinx’s Virtex-7 690T FPGA. It can be used as NIC, multiport switch, firewall, test/measurement environment, and more.

    +

    Features list:

    +
      +
    • Field Programmable Gate (FPGA) Logic
        +
      • Xilinx Virtex-7 690T
      • +
      • 693,120 logic cells
      • +
      • 52,920 Kbit block RAM
      • +
      • up to 10,888 Kbit distributed RA
      • +
      • 30 GTH (up to 13.1Gbps) Transceivers
      • +
      • Fully programmable by the user
      • +
    • +
    • 10-Gigabit Ethernet Connection
        +
      • Connector block on left of PCB interfaces to 4 external SFP+ ports
      • +
      • Directly connected to the FPGA.
      • +
      • Wire-speed processing on all ports at all time using FPGA logic.
      • +
    • +
    • Quad Data Rate Static Random Access Memory (QDRII+ SRAM)
        +
      • Suitable for storing and forwarding table data
      • +
      • 500MHz Quad data rate (2 Giga transactions every second), synchronous with the logic
      • +
      • Three parallel banks of 72 MBit QDRII+ memories
      • +
      • Total capacity: 27 MBytes
      • +
      • Cypress: CY7C25652KV18-500BZC
      • +
    • +
    • Double-Date Rate Random Access Memory (DDR3 DRAM)
        +
      • Suitable for packet buffering
      • +
      • Two replaceable DDR3-SoDIMM modules
      • +
      • 933MHz clock (1866MT/s)
      • +
      • 238.8 Gbps peak memory throughput
      • +
      • Total capacity: 8 GBytes (Supports up to 32 GBytes)
      • +
      • Micron: MT8KTF51264HZ-1G9E5
      • +
    • +
    • PCI Express Gen. 3
        +
      • Third generation PCI Express interface, 8Gbps/lane
      • +
      • 8 lanes (x8)
      • +
      • Hard IP
      • +
      • Provides CPU access to memory-mapped registers and memory on the NetFPGA hardware
      • +
    • +
    • Expansion Interfaces
        +
      • Fully compliant VITA-57 FMC HPC connector, including 10 high-speed serial links
      • +
      • SAMTEC QTH-DP connector, connected to 8 high-speed serial links
      • +
      • Allowing to connect additional 18 GTH transceivers
      • +
      • Digilent PMOD expansion connector
      • +
    • +
    • Storage
        +
      • 2 SATA connectors
      • +
      • Micro-SD slot
      • +
      • 2 FLASH devices, each 512Mbit (1Gbit total)
      • +
    • +
    • Additional Features
        +
      • Clock recovery circuit
      • +
      • Voltage sensors
      • +
      • Current sensors
      • +
      • User LEDs & Push Buttons
      • +
    • +
    • Standard PCIe Form Factor
        +
      • Standard PCIe card
      • +
      • Full length, full height
      • +
    • +
    • Flexible, Open-source code
    • +
    +
    +

    A full description of the board and its potential use cases is provided in the following paper:

    +

    Noa Zilberman, Yury Audzevich, G. Adam Covington, Andrew W. Moore, 'NetFPGA SUME: Toward 100 Gbps as Research Commodity,' IEEE Micro, vol.34, no.5, pp.32,41, September-October 2014 (official version) (pdf)

    +

    Please use this citation as the canonical reference for NetFPGA-SUME.

    +
    +
    +
    +
    +
    + +
    +

    To see the NetFPGA-SUME repository and Wiki you will need to register.

    +

    Reference Projects

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TitleOrganisationDocumentation
    Reference SwitchUniversity of CambridgeWiki
    Reference Switch LiteUniversity of CambridgeWiki
    Reference NICUniversity of CambridgeWiki
    Reference RouterUniversity of CambridgeWiki
    +
    +
    + +
    +
    +
    + +
    +
    +

    Where can I buy a NetFPGA SUME Platform?

    + +

    It seems that my board is broken, what should I do?

    + +

    What if I have Hardware problems with my board?

    + +

    What if I have Software problems with my board?

    + +

    You can change your ideas and questions with the NetFPGA SUME community, please register here.

    +

    How can I get involved with the NetFPGA project?

    + +

    How can I obtain the gateware and software package?

    + +

    Digilent Hardware documentation wiki about NetFPGA SUME board here.

    +
    +

    Once you have used the NetFPGA, we hope that you will contribute to the project.

    +

    You can find our Wiki here.

    +
    +
    +
    +
    + +
    +
    + +
    + + + + + + + + + + + diff --git a/Publications.html b/Publications.html new file mode 100644 index 0000000..2ee3b57 --- /dev/null +++ b/Publications.html @@ -0,0 +1,734 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    Publications featuring NetFPGA

    +

    A partial list of publications using the NetFPGA platform.

    +

    The links for the addresses are, where possible, doi.org links.

    +
    +
    + + +
    + +
    + + +
    +
    + + +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    + +
    +
  • Antichi, G., Callegari, C., Giordano, S. (2012, December). An open hardware implementation of CUSUM based Network Anomaly Detection. Globecom. IEEE.
  • +
  • Rojas, E., Naous, J., Ibáñez, G., Recio, C. (2012, October). Dynamic Load Routing-Path Diversity in a Network of ARP-Path NetFPGA Switches. Conference on Local Computer Networks (LCN). IEEE.
  • +
  • Huang, T. Y., Handigol, N., Heller, B., McKeown, N., & Johari, R. (2012, November). Confused, timid, and unstable: picking a video streaming rate is hard. In Proceedings of the 2012 ACM conference on Internet measurement conference (pp. 225-238). ACM.
  • +
  • Matias, J., Jacob, E., Higuero, M., & Toledo, N. (2012, June). Extending Neutrality to Experimental Facilities. In ACCESS 2012, The Third International Conference on Access Networks (pp. 14-20).
  • +
  • Liu, X., Wada, A., Xing, T., Juluri, P., Sato, Y., Ata, S., ... & Medhi, D. (2012, April). SeRViTR: A framework for trust and policy management for a secure Internet and its proof-of-concept implementation. In Network Operations and Management Symposium (NOMS), 2012 IEEE (pp. 1159-1166). IEEE.
  • +
  • Matias, J., Tornero, B., Mendiola, A., Jacob, E., & Toledo, N. (2012, October). Implementing Layer 2 Network Virtualization using OpenFlow: Challenges and Solutions. In Software Defined Networking (EWSDN), 2012 European Workshop on (pp. 30-35). IEEE.
  • +
  • Handigol, N., Heller, B., Jeyakumar, V., Lantz, B., & McKeown, N. (2012, December). Reproducible network experiments using container-based emulation. In Proceedings of the 8th international conference on Emerging networking experiments and technologies (pp. 253-264). ACM.
  • +
  • Xie, D., Ding, N., Hu, Y. C., & Kompella, R. (2012). The only constant is change: incorporating time-varying network reservations in data centers. ACM SIGCOMM Computer Communication Review, 42(4), 199-210.
  • +
  • Hu, J. W., Huang, W. Y., Tseng, H. M., Lee, H. L., Ku, L. C., Lin, S. C., ... & Yang, C. S. (2012, July). Future Internet in Taiwan: Design and Research Activities over TWAREN Network. In Innovative Mobile and Internet Services in Ubiquitous Computing (IMIS), 2012 Sixth International Conference on (pp. 329-333). IEEE.
  • +
  • Seddiki, M. S., & Frikha, M. (2012, July). Resource Allocation for Virtual Routers through Non-Cooperative Games. In Computer Communications and Networks (ICCCN), 2012 21st International Conference on (pp. 1-6). IEEE.
  • +
  • Sonkoly, B., Gulyas, A., Nemeth, F., Czentye, J., Kurucz, K., Novak, B., & Vaszkun, G. (2012, October). On QoS Support to Ofelia and OpenFlow. In Software Defined Networking (EWSDN), 2012 European Workshop on (pp. 109-113). IEEE.
  • +
  • Gibb, G., Zeng, H., & McKeown, N. (2012, August). Outsourcing network functionality. In Proceedings of the first workshop on Hot topics in software defined networks (pp. 73-78). ACM.
  • +
  • Mendonca, M., Seetharaman, S., & Obraczka, K. (2012, June). A flexible in-network IP anonymization service. In Communications (ICC), 2012 IEEE International Conference on (pp. 6651-6656). IEEE.
  • +
  • Mirkovic, J., Shi, H., & Hussain, A. (2012, November). Reducing allocation errors in network testbeds. In Proceedings of the 2012 ACM conference on Internet measurement conference (pp. 495-508). ACM.
  • +
  • Corin, R. D., Gerola, M., Riggio, R., De Pellegrini, F., & Salvadori, E. (2012, October). VeRTIGO: Network Virtualization and Beyond. In Software Defined Networking (EWSDN), 2012 European Workshop on (pp. 24-29). IEEE.
  • +
  • Fotiou, N., Nikander, P., Trossen, D., & Polyzos, G. C. (2012). Developing information networking further: From PSIRP to PURSUIT. In Broadband Communications, Networks, and Systems (pp. 1-13). Springer Berlin Heidelberg.
  • +
  • Groleat, T., Arzel, M., & Vaton, S. (2012, August). Hardware acceleration of SVM-based traffic classification on FPGA. In Wireless Communications and Mobile Computing Conference (IWCMC), 2012 8th International (pp. 443-449). IEEE.
  • +
  • Konorski, J., Pacyna, P., Kolaczek, G., Kotulski, Z., Cabaj, K., & Szalachowski, P. (2012). A Virtualization-Level Future Internet Defense-in-Depth Architecture. In Recent Trends in Computer Networks and Distributed Systems Security (pp. 283-292). Springer Berlin Heidelberg.
  • +
  • Jiang, W., Ren, F., Shu, R., & Lin, C. (2012, March). Sliding Mode Congestion Control for data center Ethernet networks. In INFOCOM, 2012 Proceedings IEEE (pp. 1404-1412). IEEE.
  • +
  • Revsbech, K., Madsen, T. K., & Schioler, H. (2012, November). High precision testbed to evaluate ethernet performance for in-car networks. In ITS Telecommunications (ITST), 2012 12th International Conference on (pp. 548-552). IEEE.
  • +
  • Tarasiuk, H., Hanczewski, S., Kaliszan, A., Szuman, R., Ogrodowczyk, L., Olszewski, I., ... & Wisniewski, P. (2012, October). A proposal of the IPv6 QoS system implementation in virtual infrastructure. In Telecommunications Network Strategy and Planning Symposium (NETWORKS), 2012 XVth International (pp. 1-6). IEEE.
  • +
  • Tran, N. T., Tomiyama, S., Kittitornkun, S., & Vu, T. H. (2012, May). TCP reassembly for signature-based Network Intrusion Detection systems. In Electrical Engineering/Electronics, Computer, Telecommunications and Information Technology (ECTI-CON), 2012 9th International Conference on (pp. 1-4). IEEE.
  • +
  • Anand, M., Fischmeister, S., Lee, I., & Phan, L. T. (2012). State-based scheduling with tree schedules: analysis and evaluation. Real-Time Systems, 48(4), 430-462.
  • +
  • Jiang, W., Ren, F., Lin, C., & Stojmenovic, I. (2012, March). Analysis of backward congestion notification with delay for enhanced ethernet networks. In INFOCOM, 2012 Proceedings IEEE (pp. 2961-2965). IEEE.
  • +
  • Lockwood, J. W., Gupte, A., Mehta, N., Blott, M., English, T., & Vissers, K. (2012, August). A Low-Latency Library in FPGA Hardware for High-Frequency Trading (HFT). In High-Performance Interconnects (HOTI), 2012 IEEE 20th Annual Symposium on (pp. 9-16). IEEE.
  • +
  • Mehmood, M. A., Wundsam, A., Uhlig, S., Levin, D., Sarrar, N., & Feldmann, A. (2012). QoE-lab: Towards evaluating quality of experience for future internet conditions. In Testbeds and Research Infrastructure. Development of Networks and Communities (pp. 286-301). Springer Berlin Heidelberg.
  • +
  • Tarasiuk, H., & Rogowski, J. (2012, July). On the signaling system in the IPv6 QoS Parallel Internet. In Communication Systems, Networks & Digital Signal Processing (CSNDSP), 2012 8th International Symposium on (pp. 1-6). IEEE.
  • +
  • Liu, X., Fouli, K., Kang, R., & Maier, M. (2012). Network-Coding-Based Energy Management for Next-Generation Passive Optical Networks. Journal of Lightwave Technology, 30(6), 864-875.
  • +
  • Yin, D., & Li, G. (2012). Scalable MapReduce Framework on FPGA Accelerated Commodity Hardware. In Internet of Things, Smart Spaces, and Next Generation Networking (pp. 280-294). Springer Berlin Heidelberg.
  • +
  • Pries, R., Jarschel, M., & Goll, S. (2012, June). On the usability of OpenFlow in data center environments. In Communications (ICC), 2012 IEEE International Conference on (pp. 5533-5537). IEEE.
  • +
  • Ghobadi, M., Salmon, G., Ganjali, Y., Labrecque, M., & Steffan, J. G. (2012, August). Caliper: Precise and responsive traffic generator. In High-Performance Interconnects (HOTI), 2012 IEEE 20th Annual Symposium on (pp. 25-32). IEEE.
  • +
  • Meng, W., Wang, Y., Hu, C., He, K., Li, J., & Liu, B. (2012, March). Greening the Internet Using Multi-frequency Scaling Scheme. In Advanced Information Networking and Applications (AINA), 2012 IEEE 26th International Conference on (pp. 928-935). IEEE.
  • +
  • Papadimitriou, K., Vatsolakis, C., & Pnevmatikatos, D. (2012, July). Invited paper: Acceleration of computationally-intensive kernels in the reconfigurable era. In Reconfigurable Communication-centric Systems-on-Chip (ReCoSoC), 2012 7th International Workshop on (pp. 1-5). IEEE.
  • +
  • Zhang, F., Xie, Y., Liu, J., Luo, L., Ning, Q., & Wu, X. (2012, August). ITester: A FPGA based high performance traffic replay tool. In Field Programmable Logic and Applications (FPL), 2012 22nd International Conference on (pp. 699-702). IEEE.
  • +
  • Maravic, I., & Smiljanic, A. (2012, June). MPLS implementation for the Linux kernel. In High Performance Switching and Routing (HPSR), 2012 IEEE 13th International Conference on (pp. 23-28). IEEE.
  • +
  • Li, J., Li, Y., Li, H., Zhu, Z., Zhang, H., & Chen, F. (2012, July). A synchronous algorithm of network coding with hardware logic. In ICT and Energy Efficiency and Workshop on Information Theory and Security (CIICT 2012), Symposium on (pp. 82-87). IET.
  • +
  • Wang, K., Yang, B., Chen, Z., & Sun, T. (2012). Design and Implementation of FPGA Network Simulation and Verification Platform. In Advances in Computer Science and Information Engineering (pp. 659-664). Springer Berlin Heidelberg.
  • +
  • Reforgiato, D., Lombardo, A., Davoli, F., Fialho, L., Collier, M., Donadio, P., ... & Bruschi, R. (2012, June). Exporting data-plane energy-aware capabilities from network devices toward the control plane: The Green Abstraction Layer. In Networks and Optical Communications (NOC), 2012 17th European Conference on (pp. 1-6). IEEE.
  • +
  • Dixit, A. A., Prakash, P., Kompella, R. R., & Hu, C. (2012, June). On the efficacy of fine-grained traffic splitting protocols in data center networks. In Proceedings of the 12th ACM SIGMETRICS/PERFORMANCE joint international conference on Measurement and Modeling of Computer Systems (pp. 411-412). ACM.
  • +
  • Antichi, G., Giordano, S., Miller, D. J., & Moore, A. W. (2012, April). Enabling open-source high speed network monitoring on NetFPGA. In Network Operations and Management Symposium (NOMS), 2012 IEEE (pp. 1029-1035). IEEE.
  • +
  • Unnikrishnan, D., Vadlamani, R., Liao, Y., Crenne, J., Gao, L., & Tessier, R. (2012). Reconfigurable Data Planes for Scalable Network Virtualization.
  • +
  • Chasaki, D., & Wolf, T. (2012). Attacks and Defenses in the Data Plane of Networks.
  • +
  • Carvajal, G., Wu, C., & Fischmeister, S. (2012). Evaluation of Communication Architectures for Switched Real-time Ethernet.
  • +
  • Thinh, T. N., Hieu, T. T., & Kittitornkun, S. (2012, May). A FPGA-based deep packet inspection engine for Network Intrusion Detection System. In Electrical Engineering/Electronics, Computer, Telecommunications and Information Technology (ECTI-CON), 2012 9th International Conference on (pp. 1-4). IEEE.
  • +
  • Chydzinski, A., Rawski, M., Wisniewski, P., Adamczyk, B., Olszewski, I., Szotkowski, P., ... & Parniewicz, D. (2012, August). Virtualization Devices for Prototyping of Future Internet. In Software Engineering, Artificial Intelligence, Networking and Parallel & Distributed Computing (SNPD), 2012 13th ACIS International Conference on (pp. 672-678). IEEE.
  • +
  • Michalski, M. (2012, July). The configurations for experimental study of the network performance. In Communication Systems, Networks & Digital Signal Processing (CSNDSP), 2012 8th International Symposium on (pp. 1-6). IEEE.
  • +
  • Guo, F., Ormond, O., Fialho, L., Collier, M., & Wang, X. (2012). Power consumption analysis of a NetFPGA based router. The Journal of China Universities of Posts and Telecommunications, 19, 94-99.
  • +
  • Gringoli, F., Nava, L., Este, A., & Salgarelli, L. (2012, August). MTCLASS: Enabling statistical traffic classification of multi-gigabit aggregates on inexpensive hardware. In Wireless Communications and Mobile Computing Conference (IWCMC), 2012 8th International (pp. 450-455). IEEE.
  • +
  • Thanh, N. H., Nam, P. N., Truong, T. H., Hung, N. T., Doanh, L. K., & Pries, R. (2012, August). Enabling experiments for energy-efficient data center networks on OpenFlow-based platform. In Communications and Electronics (ICCE), 2012 Fourth International Conference on (pp. 239-244). IEEE.
  • +
  • Muehlbach, S., & Koch, A. (2012, October). Malacoda: towards high-level compilation of network security applications on reconfigurable hardware. In Proceedings of the eighth ACM/IEEE symposium on Architectures for networking and communications systems (pp. 247-258). ACM.
  • +
  • Belias, A., Koutsoumpos, V., Manolopoulos, K., & Kachris, C. (2012). Reconfigurable hardware applications on NetFPGA for network monitoring in large area sensor networks. Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrometers, Detectors and Associated Equipment.
  • +
  • Lombardo, A., Reforgiato, D., Riccobene, V., & Schembra, G. (2012, October). A Markov model to control heat dissipation in open multi-frequency green routers. In Sustainable Internet and ICT for Sustainability (SustainIT), 2012 (pp. 1-9). IEEE.
  • +
  • Vu, T. H., Nam, P. N., Thanh, T., Linh, N. D., Thien, T. D., & Thanh, N. H. (2012, October). Power aware OpenFlow switch extension for energy saving in data centers. In Advanced Technologies for Communications (ATC), 2012 International Conference on (pp. 309-313). IEEE.
  • +
  • Xu, Y., Gu, R., & Ji, Y. (2012, September). Network traffic on-line classification using decision tree fast parallel processing strategy. In Network Infrastructure and Digital Content (IC-NIDC), 2012 3rd IEEE International Conference on (pp. 339-343). IEEE.
  • +
  • Orosz, P., Skopko, T., & Imrek, J. (2012, October). A NetFPGA-based network monitoring system with multi-layer timestamping: Rnetprobe. In Telecommunications Network Strategy and Planning Symposium (NETWORKS), 2012 XVth International (pp. 1-6). IEEE.
  • +
  • Liu, G., & Neufeld, N. (2012, June). LHCb: The LHCb off-Site HLT Farm Demonstration. In Conference: 18th IEEE Real-Time Conference 2012 (No. Poster-2012-238).
  • +
  • Hieu, T. T., Thinh, T. N., & Tomiyama, S. (2013). ENREM: An Efficient NFA-based Regular Expression Matching Engine on Reconfigurable Hardware for NIDS. Journal of Systems Architecture.
  • +
  • Xin Liu; Fouli, K.; Rui Kang; Maier, M.; , 'Network-Coding-Based Energy Management for Next-Generation Passive Optical Networks,' Lightwave Technology, Journal of , vol.30, no.6, pp.864-875, March 15, 2012
  • + +
    +
    + +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    + +
    + +
    +
    + +
    +
    + + +
    +
    + + +
    +
    + + + +
    +
    + +
    + + + + + + + + + + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..ebf63fd --- /dev/null +++ b/README.md @@ -0,0 +1,141 @@ +# How to edit the website + +## How to add Pages + +## How to edit the Footer + +In the _includes folder you can find the footer.html file as well as the sidebar.html file. + +Sidebar.html contains the contact information parts of the footer whereas footer.html only contains the footer element and the copyright declaration. + +Editing this file will cause changes to happen on all pages. + +## How to edit the Header + +In the _includes folder you can find the header.html file. + +To change the image in the header go to custom.scss in the _sass folder in the css folder in the assets folder and look for "header#hero". + +Editing this file will cause changes to happen on all pages. + +## How to edit the Navigation Bar + +In the _includes folder you can find the navigation.html file. + +To change the text on the left side of the nav bar change the 3rd line from saying "NetFPGA" to the desired new text. + +To add new elements to the right side add a new list item to the unordered list. + +To add new elements to one of the dropdown menus first select the relevant dropdown menu then add it to the relevant selection of the dropdown menu. + +The "Home" dropdown menu is for all the NetFPGA systems with the top section being the supported systems and the bottom section being the old systems. + +The "About" dropdown menu is for pages that are gives context on NetFPGA with the top section being pages on the NetFPGA website and the bottom section being pages hosted on different websites. + +Editing the Navigation bar will affect every page. + +## How to edit the page layout + +In the _layouts folder you can find default.html and page.html. Editing either one of these will affect the layout of the page. + +To edit the layout with precision edit default.html because page.html uses default.html as its layout + +Editing either of these will edit the layout of every page, however changing page.html won't change the layout on the ecosystem page. To change that edit the ecosystem-layout.html. + +### Editing the layout of a specific page + +To edit the specific of a particular page create a new html file in the _layouts folder and on the page you are editing change the layout to be the new layout you have just made. + +## How to edit a particular page + +### How to edit the Home Page + +To edit the Home page edit the index.html file. + +The recent news section can be edited by editing the most-recent-news-posts.html found in the _includes folder + +### How to edit the pages for each system + +#### How to edit the NetFPGA PLUS page + +Edit the NetFGPA-PlUS.html file. + +#### How to edit the NetFPGA SUME page + +Edit the NetFPGA-SUME.html file. + +#### How to edit the NetFPGA CML page + +Edit the NetFPGA-CML.html file. + +#### How to edit the NetFPGA 10G page + +Edit the NetFPGA-10G.html file. + +#### How to edit the NetFPGA 1G page + +Edit the NetFPGA-1G.html file. + +### How to edit the about page + +Edit the About.html file. + +All logos can be found sorted into hosts and supporters in the Logos folders in the images folder in the assets folder. + +### How to edit the ecosystem page + +To edit the text at the top of the ecosystem edit the ecosystem.html page. + +To edit information on one of the cards check the ecosystem subfolder of the _posts folder. Look for the file with the name of the ecosystem part after the date. + +To add a new card check [example-ecosystem.md](/_posts/ecosystem/example-ecosystem.md) for the metadata tags that are needed as well as the purpose of each one. The ecosystem file should be named with the date it was added to the site in the format \-\-\-\. The date used in the name of the file should be the date the file was added to the website. + +To add a new button to the ecosystem page copy and paste one of the buttons that is already in [ecosystem-buttons](/_includes/ecosystem-buttons.html) and then replace the specifics with the relevant information. And make sure that the button is in the correct section on the page. + +***If adding new organisations, organisation types, product types, target platforms please make sure to check [adding-to-javascript.md](/_posts/ecosystem/adding-to-javascript.md)*** + +### How to edit the Publications to page + +Each years publications are in the _includes folder with the naming system of \-Publications.html +To add publications to a particular year edit the corresponding file for the year. + +To add a new years publications follow the same format as the most recent years one. But where it uses a year use the current year. Then add the class "collapsed" to the div with the button in and remove the "show" class from the div with the list of publications in. + +Then add: + +*{% include \-Publications.html %}* + +*\* + +*\* + +to Publications.html + +### How to edit the news and events page + +To edit the functionality of the checkboxes edit the [news-and-events.html](/news-and-events.html) file. + +To change the information about a specific event/piece of news look for the file you're looking for in the news-and-events subfolder of the _posts folder and all files that show up on the website have file names looking like \-\-\-.md + +To add a new piece of news check [example-news-post.md](/_posts/news-and-events/example-news-post.md) for all that's required. + +to add a new event check [example-events-post.md](/_posts/news-and-events/example-events-post.md) for all that's required. + +For events that have their information hosted on the NetFPGA website to edit those files these pages can be found in the _pages folder with the same naming format as the the events. + +If you want to add a new metadata field to the posts first add it to the example posts for the relevant categories and it what it is used for. Then add it to the rest of the affected posts. Then in the news and events file add + +*{% if post.\<metadata tag\> %}* + +*\<appropriate tag\>{{ post.\<metadata tag\> }}\<\/appropriate tag\>* + +*{% endif %}* + +### How to edit the why NetFPGA page + +Edit the why-NetFPGA.html + +<hr> +<br> + +Most of the css used in the website is Bootstrap but the non-bootstrap css can be found [here](/assets/css/_sass/custom.scss). diff --git a/SUME-reg-form.html b/SUME-reg-form.html new file mode 100644 index 0000000..bc8f202 --- /dev/null +++ b/SUME-reg-form.html @@ -0,0 +1,121 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/> + <meta name="description" content="A business home page starter template for Bootstrap 4 featuring marketing boxes and a full width image header." /> + <meta name="author" content="" /> + + <title>NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    NetFPGA SUME Beta Registration

    +
    +
    + + +
    +
    + +
    + + +
    +
    +
    +
    + NetFPGA +
    c/- Andrew W. Moore +
    William Gates Building
    JJ Thomson Avenue
    Cambridge.
    CB3 0FD +
    +
    +
    + P: + +44 1223 763500 +
    + E: + enquiries@netfpga.org +
    +
    + +

    Copyright © NetFPGA 2021

    +
    + +
    + + + + + + + + diff --git a/_pages/10G-License.html b/_pages/10G-License.html new file mode 100644 index 0000000..c76317f --- /dev/null +++ b/_pages/10G-License.html @@ -0,0 +1,154 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    License

    + +
    +
    + +

    The NetFPGA-10G code base is covered under version 2.1 of the GNU LGPL. Xilinx IP, however, is an exception to this and covered under Xilinx licenses. The following is information on how to obtain a license for various Xilinx IP:

    + +
    +
    + +

    Xilinx 10 Gigabit Ethernet Media Access Controller.

    + +
    +
    + +

    Anybody can get an evaluation license for free which allows the end-user to simulate the system, however bitstream generation is limited. For a full hardware license, academic end-users can request a donation through the Xilinx University Program. Other end-users have to purchase a "SignOnce" license. Evaluation license or the full license can get obtained through the links on the 10G MAC page. To obtain a free full hardware license for academic end-users, please visit the Xilinx University Program and submit a donation request for the following part number: EF-DI-10GEMAC-SITE.
    +This webpage explains how to install the license.

    + +
    +
    + +

    Xilinx XAUI

    + +
    +
    + +

    Xilinx XAUI core is included in Xilinx ISE installation at no additional charge. The "make cores" script handles the core generation automatically. Please refer to "Installation" section of Getting Started Guide

    + +
    +
    + +

    Other Xilinx EDK cores

    + +
    +
    + +

    Xilinx EDK cores are included in Xilinx ISE installation at no additional charge. The "make cores" script copies those cores to NetFPGA-10G library automatically. Please refer to "Installation" section of Getting Started Guide.

    + +
    +
    + +
    + + +
    +
    +
    +
    + NetFPGA +
    c/- Andrew W. Moore +
    William Gates Building
    JJ Thomson Avenue
    Cambridge.
    CB3 0FD +
    +
    +
    + P: + +44 1223 763500 +
    + E: + enquiries@netfpga.org +
    +
    + +

    Copyright © NetFPGA 2021

    +
    + +
    + + + + + + + + diff --git a/_pages/1G-License.html b/_pages/1G-License.html new file mode 100644 index 0000000..bb85c74 --- /dev/null +++ b/_pages/1G-License.html @@ -0,0 +1,128 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    License

    + +
    +
    + +

    The NetFPGA code is distributed under a BSD-style license shown below. Please make sure you read and understand it. The design of the board itself is also available freely.

    +

    Copyright © 2006-2012 The Board of Trustees of The Leland Stanford Junior University

    +

    We are making the NetFPGA tools and associated documentation (Software) available for public use and benefit with the expectation that others will use, modify and enhance the Software and contribute those enhancements back to the community. However, since we would like to make the Software available for broadest use, with as few restrictions as possible permission is hereby granted, free of charge, to any person obtaining a copy of this Software) to deal in the Software under the copyrights without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

    +

    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

    +

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

    +

    The name and trademarks of copyright holder(s) may NOT be used in advertising or publicity pertaining to the Software or any derivatives without specific, written prior permission.

    + +
    +
    + +
    + + +
    +
    +
    +
    + NetFPGA +
    c/- Andrew W. Moore +
    William Gates Building
    JJ Thomson Avenue
    Cambridge.
    CB3 0FD +
    +
    +
    + P: + +44 1223 763500 +
    + E: + enquiries@netfpga.org +
    +
    + +

    Copyright © NetFPGA 2021

    +
    + +
    + + + + + + + + diff --git a/_pages/2007-08-24-Hot-Interconnects-Tutorial.html b/_pages/2007-08-24-Hot-Interconnects-Tutorial.html new file mode 100644 index 0000000..e70d4b7 --- /dev/null +++ b/_pages/2007-08-24-Hot-Interconnects-Tutorial.html @@ -0,0 +1,295 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    Hot Interconnects Tutorial

    + +
    +
    + +

    Hands-on with the NetFPGA to build a Gigabit-rate Router

    + +
    + +

    Presented by: Nick McKeown, John W. Lockwood, Jad Naous, Glen Gibb, Adam Covington

    +

    Date: Friday, August 27, 2007

    +

    Time: 9am - 5pm

    +

    Location: Stanford University, Gates Building, Room 104.

    + +
    +
    + +

    Abstract

    + +
    + +

    An open platform called the NetFPGA has been developed at Stanford University. The NetFPGA platform enables researchers and instructors to build high-speed, hardware-accelerated networking systems. The platform can be used in the classroom to teach students how to build Ethernet switches and Internet Prototcol (IP) routers using hardware rather than software. The platform can be used by researchers to prototype advanced services for next-generation networks.

    By using Field Programmable Gate Arrays (FPGAs), the NetFPGA enables new types of packet routing circuits to be implemented and detailed measurements of network traffic to be obtained. During the tutorial, we will use the NetFPGA to determine the amount of memory needed to buffer TCP/IP data streaming through the Gigabit/second router. Hardware circuits within the NetFPGA will be implemented to measure and plot the occupancy of buffers. Circuits will be downloaded into reconfigurable hardware and tested with live, streaming Internet video traffic.

    + +
    +
    + +

    Background

    + +
    + +

    Attendees will utilize a Linux-based PC equipped with NetFPGA hardware. A basic understanding of Ethernet switching and network routing is expected. Past experience with Verilog is useful but not required. This full-day tutorial extends the material presented at the half-day SIGMETRICS tutorial on June 12, 2007.

    + +
    + +A Photo from the tutorial + +
    +
    + +

    Outline

    + +
    + +
      +
    • Introduction to the operation of an Internet Router
    • +
        +
      • Control Plane
      • +
          +
        • Routing protocols
        • +
        • Routing table
        • +
        • Management interfaces
        • +
        +
      • Datapath
      • +
          +
        • Longest Prefix Match (LPM)
        • +
        • Classless Interdomain Routing (CIDR)
        • +
        • Header processing
        • +
        • Packet buffering
        • +
        +
      +
    • The NetFPGA Router
    • +
        +
      • Hardware
      • +
          +
        • Gigabit Ethernet interfaces
        • +
        • Field Programmable Gate Array (FPGA) Logic
        • +
        • Random Access Memory (RAM)
        • +
        +
      • Software
      • +
          +
        • Kernel-space driver
        • +
        • User-space applications
        • +
        • PCI interface
        • +
        +
      +
    • Demonstration Topology
    • +
        +
          +
        • Hardware
        • +
            +
          • Network of ten routers
          • +
          • Ethernet switch
          • +
          • Video server
          • +
          • High Definition (HD) video client
          • +
          +
        • Software
        • +
            +
          • PW-OSPF
          • +
          • Routing tables
          • +
          • Dynamic re-routing
          • +
          +
        +
      +
    • Integrated Circuit Design
    • +
        +
      • Technologies
      • +
          +
        • Look-Up Tables (LUTs)
        • +
        • Configurable Logic Blocks (CLBs)
        • +
        • Field Programmable Gate Arrays (FPGAs)
        • +
        +
      • Verilog Hardware Description Language (HDL)
      • +
          +
        • Registers, integers, arrays
        • +
        • Multiplexers
        • +
        • Synchronous storage elements
        • +
        • Finite State Machines (FSMs)
        • +
        +
      • Hardware Debug
      • +
          +
        • Waveform monitor
        • +
        • In-circuit logic emulation
        • +
        +
      +
    • NetFPGA System Components
    • +
        +
      • Synthesis of tutorial router
      • +
      • Java-based Graphical User Interface (GUI)
      • +
          +
        • Configuration
        • +
        • Statistics
        • +
        +
      • Router Architecture
      • +
          +
        • Pipeline
        • +
        • Queues
        • +
        +
      +
    • Buffer Size Experiment
    • +
        +
      • Experiment with TCP/IP flows
      • +
          +
        • Rule-of-thumb for the buffer size
        • +
        • Round-trip propation delay
        • +
        • Capacity of bottlneck link
        • +
        • Number of active flows
        • +
        +
      • Lower delay with smaller queues
      • +
      +
    • Enhanced Router
    • +
        +
      • Additional hardware
      • +
          +
        • Event capture module
        • +
        • Rate limiter
        • +
        • Delay module
        • +
        +
      • Experiments
      • +
          +
        • Netperf
        • +
        • HD video transport
        • +
        +
      • Life of packet through the system
      • +
          +
        • Description of blocks
        • +
        • Waveforms
        • +
        +
      +
    + +
    +
    + +

    About the presentors

    + +
    + +
      +
    • Nick McKeown
      Nick McKeown is a Professor of Electrical Engineering and Computer Science and Faculty Director of the Clean Slate Program at Stanford University. He received his Phd from the University of California at Berkeley in 1995. From 1986-1989, he worked for Hewlett-Packard Labs in their network and communications research group in Bristol, England. During the Spring of 1995, he worked briefly for Cisco Systems where he helped architect their GSR 12000 router. In 1997 Nick co-founded Abrizio Inc., where he was CTO. Abrizio is now part of PMC-Sierra. He was co-founder and CEO of Nemo Systems, which is now part of Cisco Systems.

      Nick McKeown is the STMicroelectronics Faculty Scholar, the Robert Noyce Faculty Fellow, a Fellow of the Powell Foundation and the Alfred P. Sloan Foundation, and recipient of a CAREER award from the National Science Foundation. In 2000, he received the IEEE Rice Award for the best paper in communications theory. Nick is a Fellow of the Royal Academy of Engineering (UK), and a Fellow of the IEEE and the ACM, and British Computer Society Lovelace Medal Winner, 2005. He served as an Editor for the IEEE Transactions on Communications and ACM/IEEE Transactions on Networking, and as a Guest Editor for IEEE Journal on Selected Areas on Communications, IEEE Networks Magazine and IEEE Communications Magazine, and chaired the Technical Advisory Committee for ACM Sigcomm. Nick's research interests include the architecture of the future Internet, the architecture, analysis and design of high performance switches and Internet routers, IP lookup and classification algorithms, scheduling algorithms, congestion control, routing protocols and network processors.
    • +
      +
    • John W. Lockwood
      John W. Lockwood is a Consulting Associate Professor at Stanford University. At Stanford, he leads the NetFPGA Alpha and Beta release programs and organizes the worldwide tutorial program. Lockwood was granted tenure in the Department of Computer Science and Engineering at Washington University in Saint Louis in 2006. At Washington University in St. Louis, Lockwood led the Reconfigurable Network Group (RNG) to develop the Field programmable Port Extender (FPX) to enable rapid prototype of extensible network modules in Field Programmable Gate Array (FPGA) technology. Lockwood's research interests include reconfigurable hardware, Internet security, and content processing technologies. Dr. Lockwood earned his Ph.D from the Department of Electrical and Computer Engineering at the University of Illinois.

      John Lockwood has served as the principal investigator on grants from the National Science Foundation, Xilinx, Altera, Nortel Networks, Rockwell Collins, and Boeing. He has worked in industry for AT&T Bell Laboratories, IBM, Science Applications International Corporation (SAIC), and the National Center for Supercomputing Applications (NCSA). He served as a co-founder of Global Velocity, a networking startup company focused on high-speed data security. He is a member of IEEE, ACM, Tau Beta Pi, and Eta Kappa Nu.
    • +
      +
    • Jad Naous
      Jad Naous received his B.Eng. degree in Computer Engineering from McGill University in 2005, and his M.S.E.E. degree from Stanford University in 2007. He is currently pursuing a doctorate in Electrical Engineering at Stanford University. He has previously worked as a Graduate Intern for Sun Microsystems Labs in 2006, where he worked on the next generation switch project. In 2007, he joined Agilent Technologies Labs as a Graduate Intern where he helped implement special devices for the IEEE1588 Precision Time Protocol using NetFPGA.
    • +
      +
    • Glen Gibb
      Glen is a PhD candidate in Electrical Engineering at Stanford University. He received his Master of Science in Electrical Engineering from Stanford University and a Bachelor of Science and a Bachelor of Engineering from The University of Melbourne in Australia. He has been working on the NetFPGA platform since 2004 and was the lead designer for the current hardware version.
    • +
      +
    • Adam Covington
      Adam is a Research Associate of the High-Performance Network Group (HPN) at Stanford University. He is currently working on the NetFPGA project, which enables researchers and instructors to build hardware-accelerated networking systems. Previously, he was a Research Associate with the Reconfigurable Network Group (RNG) at Washington University in St. Louis. While at Washington University he designed, and implemented clustering algorithms on FPGAs and supported a hardware accelerated classification system on the FPX platform. Adam’s current research interests include reconfigurable systems, artificial intelligence (clustering and classification), and applications of artificial intelligence algorithms. Adam completed a Bachelor of Science degree in Computer Engineering from Western Michigan University in April 2003 and accepted a Distinguished Masters of Science Fellowship from Washington University. He completed his Masters of Science degree in Computer Science and Engineering from Washington University in December 2006. Adam continues to provide support for the NetFPGA project which includes helping users worldwide as well as arranging and presenting tutorials.
    • +
    + +
    +
    + +
    + + +
    +
    +
    +
    + NetFPGA +
    c/- Andrew W. Moore +
    William Gates Building
    JJ Thomson Avenue
    Cambridge.
    CB3 0FD +
    +
    +
    + P: + +44 1223 763500 +
    + E: + enquiries@netfpga.org +
    +
    + +

    Copyright © NetFPGA 2021

    +
    + +
    + + + + + + + + diff --git a/_pages/2008-02-06-NetFPGA-Sydney-Tutorial.html b/_pages/2008-02-06-NetFPGA-Sydney-Tutorial.html new file mode 100644 index 0000000..bb63df6 --- /dev/null +++ b/_pages/2008-02-06-NetFPGA-Sydney-Tutorial.html @@ -0,0 +1,329 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    NetFPGA Sydney Tutorial

    + +
    +
    + +

    Hands-on with the NetFPGA to build a Gigabit-rate Router at NICTA

    + +
    + +

    Presented by: John W. Lockwood, Glen Gibb, and Jad Naous of the: High Performance Network Group at Stanford University

    + +

    Hosted by: Lavy Libman and Philip Allen NICTA (National ICT Australia) and School of Electrical Engineering and Telecommunications The University of New South Wales (UNSW)

    + +

    Date: Wednesday, February 6, 2008

    + +

    Time: 9am - 5pm

    + +

    Location: Lab343A at the University of New South Wales School of Electrical Engineering and Telecommunications building (G17) Kensington campus, Sydney, Australia

    + +
    + +

    To Register to attend, send email here with a subject line of "I plan to attend the NetFPGA tutorial" and a message that includes your name, title, organisation, and contact information.

    + +
    +
    + +

    Abstract

    + +
    + +

    An open platform called the NetFPGA has been developed at Stanford University. The NetFPGA platform enables researchers and instructors to build high-speed, hardware-accelerated networking systems. The platform can be used in the classroom to teach students how to build Ethernet switches and Internet Prototcol (IP) routers using hardware rather than software. The platform can be used by researchers to prototype advanced services for next-generation networks.

    +
    +

    By using Field Programmable Gate Arrays (FPGAs), the NetFPGA enables new types of packet routing circuits to be implemented and detailed measurements of network traffic to be obtained. During the tutorial, we will use the NetFPGA to determine the amount of memory needed to buffer TCP/IP data streaming through the Gigabit/second router. Hardware circuits within the NetFPGA will be implemented to measure and plot the occupancy of buffers. Circuits will be downloaded into reconfigurable hardware and tested with live, streaming Internet video traffic.

    +
    +

    This full-day hands-on tutorial will be held in Sydney on Wednesday, February 6.

    + +
    +
    + +

    Background

    + +
    + +

    Attendees will utilize a Linux-based PC equipped with NetFPGA hardware. A basic understanding of Ethernet switching and network routing is expected. Past experience with Verilog is useful but not required. This full-day tutorial extends the material presented at the Hot Interconnects tutorial and the SIGMETRICS tutorials in 2007.

    + +
    +
    + +A photo of a NetFPGA tutorial + +
    +
    + +

    Outline

    + +
    + +
      +
    • Introduction to the operation of an Internet Router
    • +
        +
      • Control Plane
      • +
          +
        • Routing protocols
        • +
        • Routing table
        • +
        • Management interfaces
        • +
        +
      • Datapath
      • +
          +
        • Longest Prefix Match (LPM)
        • +
        • Classless Interdomain Routing (CIDR)
        • +
        • Header processing
        • +
        • Packet buffering
        • +
        +
      +
    • The NetFPGA Router
    • +
        +
      • Hardware
      • +
          +
        • Gigabit Ethernet interfaces
        • +
        • Field Programmable Gate Array (FPGA) Logic
        • +
        • Random Access Memory (RAM)
        • +
        +
      • Software
      • +
          +
        • Kernel-space driver
        • +
        • User-space applications
        • +
        • PCI interface
        • +
        +
      +
    • Demonstration Topology
    • +
        +
          +
        • Hardware
        • +
            +
          • Network of ten routers
          • +
          • Ethernet switch
          • +
          • Video server
          • +
          • High Definition (HD) video client
          • +
          +
        • Software
        • +
            +
          • PW-OSPF
          • +
          • Routing tables
          • +
          • Dynamic re-routing
          • +
          +
        +
      +
    • Integrated Circuit Design
    • +
        +
      • Technologies
      • +
          +
        • Look-Up Tables (LUTs)
        • +
        • Configurable Logic Blocks (CLBs)
        • +
        • Field Programmable Gate Arrays (FPGAs)
        • +
        +
      • Verilog Hardware Description Language (HDL)
      • +
          +
        • Registers, integers, arrays
        • +
        • Multiplexers
        • +
        • Synchronous storage elements
        • +
        • Finite State Machines (FSMs)
        • +
        +
      • Hardware Debug
      • +
          +
        • Waveform monitor
        • +
        • In-circuit logic emulation
        • +
        +
      +
    • NetFPGA System Components
    • +
        +
      • Synthesis of tutorial router
      • +
      • Java-based Graphical User Interface (GUI)
      • +
          +
        • Configuration
        • +
        • Statistics
        • +
        +
      • Router Architecture
      • +
          +
        • Pipeline
        • +
        • Queues
        • +
        +
      +
    • Buffer Size Experiment
    • +
        +
      • Experiment with TCP/IP flows
      • +
          +
        • Rule-of-thumb for the buffer size
        • +
        • Round-trip propation delay
        • +
        • Capacity of bottlneck link
        • +
        • Number of active flows
        • +
        +
      • Lower delay with smaller queues
      • +
      +
    • Enhanced Router
    • +
        +
      • Additional hardware
      • +
          +
        • Event capture module
        • +
        • Rate limiter
        • +
        • Delay module
        • +
        +
      • Experiments
      • +
          +
        • Netperf
        • +
        • HD video transport
        • +
        +
      • Life of packet through the system
      • +
          +
        • Description of blocks
        • +
        • Waveforms
        • +
        +
      +
    + +
    +
    + +

    About the presentors

    + +
    + +
      +
    • John W. Lockwood
      John W. Lockwood is a Consulting Associate Professor at Stanford University. At Stanford, he leads the NetFPGA Alpha and Beta release programs and organizes the worldwide tutorial program. Lockwood was granted tenure in the Department of Computer Science and Engineering at Washington University in Saint Louis in 2006. At Washington University in St. Louis, Lockwood led the Reconfigurable Network Group (RNG) to develop the Field programmable Port Extender (FPX) to enable rapid prototype of extensible network modules in Field Programmable Gate Array (FPGA) technology. Lockwood's research interests include reconfigurable hardware, Internet security, and content processing technologies. Dr. Lockwood earned his Ph.D from the Department of Electrical and Computer Engineering at the University of Illinois.

      John Lockwood has served as the principal investigator on grants from the National Science Foundation, Xilinx, Altera, Nortel Networks, Rockwell Collins, and Boeing. He has worked in industry for AT&T Bell Laboratories, IBM, Science Applications International Corporation (SAIC), and the National Center for Supercomputing Applications (NCSA). He served as a co-founder of Global Velocity, a networking startup company focused on high-speed data security. He is a member of IEEE, ACM, Tau Beta Pi, and Eta Kappa Nu.
    • +
      +
    • Glen Gibb
      Glen is a PhD candidate in Electrical Engineering at Stanford University. He received his Master of Science in Electrical Engineering from Stanford University and a Bachelor of Science and a Bachelor of Engineering from The University of Melbourne in Australia. He has been working on the NetFPGA platform since 2004 and was the lead designer for the current hardware version.
    • +
      +
    • Jad Naous
      Jad Naous received his B.Eng. degree in Computer Engineering from McGill University in 2005, and his M.S.E.E. degree from Stanford University in 2007. He is currently pursuing a doctorate in Electrical Engineering at Stanford University. He has previously worked as a Graduate Intern for Sun Microsystems Labs in 2006, where he worked on the next generation switch project. In 2007, he joined Agilent Technologies Labs as a Graduate Intern where he helped implement special devices for the IEEE1588 Precision Time Protocol using NetFPGA.
    • +
      +
    • Lavy Libman
      Lavy Libman received his B.Sc. degrees in Electrical Engineering and in Computer Engineering, and his M.Sc. and Ph.D. degrees in Electrical Engineering, from the Technion - Israel Institute of Technology, Haifa, Israel, in 1992, 1997, and 2003, respectively. He is currently a researcher at the Networked Systems research group at NICTA (formerly National ICT Australia), Sydney, which he joined in September 2003. He previously held several visiting and consulting positions, including with Bell Laboratories in summer 2002, where he participated in a research team on path restoration in optical networks, and with Millimetrix Broadband Networks in summer 2000, where he took part in the specification of the Unity. system. Between 1993 and 1999, he served as a computer engineer in the Israel Defence Forces.

      Dr. Libman is a member of the IEEE Communications Society. He currently co-chairs the Track on Protocols and Algorithms for Wireless Networks in ICCCN 2008. He was the chair of the Cross-Layer Design and Optimization track of ICCCN 2007 and a co-chair of the Workshop on Networking in Public Transport (WNEPT 2006). In addition, he serves as a technical program committee member for several international conferences, including IEEE Infocom, IEEE LCN, IEEE VTC, QShine, and WiOpt.

      Dr. Libman is a member and a local representative of the Australian Communications Research Network (ACoRN).
    • +
      +
    • Philip Allen
      Philip Allen works in the area of networking and photonics within the School of Electrical Engineering and Telecommunications at the University of New South Wales where he manages the networking laboratories. Philip earned his B.E. from UNSW and is working on a Masters of Business and Technology. Philip has worked has worked at Thorn-EMI Limited U.K. and Geoterrex (now Fugro Airborne Surveys).
    • +
    + +
    +
    + +

    Photos From the Event

    + +
    + + + +
    +
    + +

    To Attend this Event

    + +
    + +

    To Register to attend, send email here with a subject line of "I plan to attend the NetFPGA tutorial" and a message that includes your name, title, organisation, and contact information. For accomodations, rooms can be booked at hotels near UNSW

    + +
    +
    + +
    + + +
    +
    +
    +
    + NetFPGA +
    c/- Andrew W. Moore +
    William Gates Building
    JJ Thomson Avenue
    Cambridge.
    CB3 0FD +
    +
    +
    + P: + +44 1223 763500 +
    + E: + enquiries@netfpga.org +
    +
    + +

    Copyright © NetFPGA 2021

    +
    + +
    + + + + + + + + diff --git a/_pages/2008-04-23-NetFPGA-Beijing-Tutorial.html b/_pages/2008-04-23-NetFPGA-Beijing-Tutorial.html new file mode 100644 index 0000000..4e07076 --- /dev/null +++ b/_pages/2008-04-23-NetFPGA-Beijing-Tutorial.html @@ -0,0 +1,170 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    NetFPGA Beijing Tutorial

    + +
    +
    + +

    Hands-on with the to build a Gigabit-rate Router at Beijing Jiaotong University

    + +
    + +

    Presented by:John W. Lockwood and Jianying Luo of the: NetFPGA group at Stanford university, Kevin Xie and Walkie Que of the Xilinx University Program (XUP) in China, and Defeng Li of Huawei

    +

    Hosted by: Prof. Hongke Zhang

    +

    Sponsored by: Xilinx and Huawei

    +

    Date: April 23, 2008 and April 24, 2008

    +

    Time: 9am - 5pm (23rd) and 9am - Noon (24th/)

    +

    Location: Next Generation Internet Research Laboratory, Beijing Jiaotong University, No 3. of Shangyuan Residence Haidian District in Beijing, No. 411 South of the No. 9 Teaching Building, Beijing, China

    + +
    +
    + +

    Background

    + +
    + +

    This full-day tutorial extends the material presented at the Hot Interconnects tutorial and the SIGMETRICS tutorials in 2007.

    + +
    + +A photo from the tutorial + +
    + +Another photo from the tutorial + +
    +
    + +

    Photos from the Event

    + +
    + + + +
    +
    + +

    To Attend this Event

    + +
    + +

    To Register to attend, please submit a registration form and send an email here

    +

    [Registration for this event is now closed - Event at capacity]

    + +
    +
    + +
    + + +
    +
    +
    +
    + NetFPGA +
    c/- Andrew W. Moore +
    William Gates Building
    JJ Thomson Avenue
    Cambridge.
    CB3 0FD +
    +
    +
    + P: + +44 1223 763500 +
    + E: + enquiries@netfpga.org +
    +
    + +

    Copyright © NetFPGA 2021

    +
    + +
    + + + + + + + + diff --git a/_pages/2008-05-15-NetFPGA-Bangalore-Tutorial.html b/_pages/2008-05-15-NetFPGA-Bangalore-Tutorial.html new file mode 100644 index 0000000..9085d2f --- /dev/null +++ b/_pages/2008-05-15-NetFPGA-Bangalore-Tutorial.html @@ -0,0 +1,297 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    NetFPGA Bangalore Tutorial

    + +
    +
    + +

    Hands-on with the NetFPGA to build a Gigabit-rate Router at Indian Institute of Science (IISc)

    + +
    + +

    Presented by: John W. Lockwood and Jad Naous of the: High Performance Network Group at Stanford University and Kuruvilla Varghese of IISc.

    +

    Co-Hosted by: Veena Kumar, Xilinx University Program, India

    +

    Date: May 15-16, 2008

    +

    Time: 9am-5pm

    +

    Location: SDMP/Micro-electronics Lab, Room No: 207, Centre For Electronics Design and Technology, Indian Institute of Science, Bangalore, India

    + +
    +
    + +

    Abstract

    + +
    + +

    An open platform called the NetFPGA has been developed at Stanford University. The NetFPGA platform enables researchers and instructors to build high-speed, hardware-accelerated networking systems. The platform can be used in the classroom to teach students how to build Ethernet switches and Internet Prototcol (IP) routers using hardware rather than software. The platform can be used by researchers to prototype advanced services for next-generation networks.

    +

    By using Field Programmable Gate Arrays (FPGAs), the NetFPGA enables new types of packet routing circuits to be implemented and detailed measurements of network traffic to be obtained. During the tutorial, we will use the NetFPGA to determine the amount of memory needed to buffer TCP/IP data streaming through the Gigabit/second router. Hardware circuits within the NetFPGA will be implemented to measure and plot the occupancy of buffers. Circuits will be downloaded into reconfigurable hardware and tested with live, streaming Internet video traffic.

    + +
    +
    + +

    Background

    + +
    + +

    Attendees will utilize a Linux-based PC equipped with NetFPGA hardware. A basic understanding of Ethernet switching and network routing is expected. Past experience with Verilog is useful but not required. This full-day tutorial extends the material presented at the Hot Interconnects tutorial and the SIGMETRICS tutorials in 2007.

    +
    +
    + +

    Outline

    + +
    + +
      +
    • Introduction to the operation of an Internet Router
    • +
        +
      • Control Plane
      • +
          +
        • Routing protocols
        • +
        • Routing table
        • +
        • Management interfaces
        • +
        +
      • Datapath
      • +
          +
        • Longest Prefix Match (LPM)
        • +
        • Classless Interdomain Routing (CIDR)
        • +
        • Header processing
        • +
        • Packet buffering
        • +
        +
      +
    • The NetFPGA Router
    • +
        +
      • Hardware
      • +
          +
        • Gigabit Ethernet interfaces
        • +
        • Field Programmable Gate Array (FPGA) Logic
        • +
        • Random Access Memory (RAM)
        • +
        +
      • Software
      • +
          +
        • Kernel-space driver
        • +
        • User-space applications
        • +
        • PCI interface
        • +
        +
      +
    • Demonstration Topology
    • +
        +
          +
        • Hardware
        • +
            +
          • Network of ten routers
          • +
          • Ethernet switch
          • +
          • Video server
          • +
          • High Definition (HD) video client
          • +
          +
        • Software
        • +
            +
          • PW-OSPF
          • +
          • Routing tables
          • +
          • Dynamic re-routing
          • +
          +
        +
      +
    • Integrated Circuit Design
    • +
        +
      • Technologies
      • +
          +
        • Look-Up Tables (LUTs)
        • +
        • Configurable Logic Blocks (CLBs)
        • +
        • Field Programmable Gate Arrays (FPGAs)
        • +
        +
      • Verilog Hardware Description Language (HDL)
      • +
          +
        • Registers, integers, arrays
        • +
        • Multiplexers
        • +
        • Synchronous storage elements
        • +
        • Finite State Machines (FSMs)
        • +
        +
      • Hardware Debug
      • +
          +
        • Waveform monitor
        • +
        • In-circuit logic emulation
        • +
        +
      +
    • NetFPGA System Components
    • +
        +
      • Synthesis of tutorial router
      • +
      • Java-based Graphical User Interface (GUI)
      • +
          +
        • Configuration
        • +
        • Statistics
        • +
        +
      • Router Architecture
      • +
          +
        • Pipeline
        • +
        • Queues
        • +
        +
      +
    • Buffer Size Experiment
    • +
        +
      • Experiment with TCP/IP flows
      • +
          +
        • Rule-of-thumb for the buffer size
        • +
        • Round-trip propation delay
        • +
        • Capacity of bottlneck link
        • +
        • Number of active flows
        • +
        +
      • Lower delay with smaller queues
      • +
      +
    • Enhanced Router
    • +
        +
      • Additional hardware
      • +
          +
        • Event capture module
        • +
        • Rate limiter
        • +
        • Delay module
        • +
        +
      • Experiments
      • +
          +
        • Netperf
        • +
        • HD video transport
        • +
        +
      • Life of packet through the system
      • +
          +
        • Description of blocks
        • +
        • Waveforms
        • +
        +
      +
    + +
    +
    + +

    About the presentors

    + +
    + +
      +
    • John W. Lockwood
      John W. Lockwood is a Consulting Associate Professor at Stanford University. At Stanford, he leads the NetFPGA Alpha and Beta release programs and organizes the worldwide tutorial program. Lockwood was granted tenure in the Department of Computer Science and Engineering at Washington University in Saint Louis in 2006. At Washington University in St. Louis, Lockwood led the Reconfigurable Network Group (RNG) to develop the Field programmable Port Extender (FPX) to enable rapid prototype of extensible network modules in Field Programmable Gate Array (FPGA) technology. Lockwood's research interests include reconfigurable hardware, Internet security, and content processing technologies. Dr. Lockwood earned his Ph.D from the Department of Electrical and Computer Engineering at the University of Illinois.

      John Lockwood has served as the principal investigator on grants from the National Science Foundation, Xilinx, Altera, Nortel Networks, Rockwell Collins, and Boeing. He has worked in industry for AT&T Bell Laboratories, IBM, Science Applications International Corporation (SAIC), and the National Center for Supercomputing Applications (NCSA). He served as a co-founder of Global Velocity, a networking startup company focused on high-speed data security. He is a member of IEEE, ACM, Tau Beta Pi, and Eta Kappa Nu.
    • +
      +
    • Kuruvilla Varghese
      Kuruvilla Varghese is a Principal Research Scientist at Centre for Electronics Design and Technology (CEDT), Indian Institute of Scinece, Bangalore. He is working in communications network group of CEDT. His main reserach interests are in Embedded systems, Communication networks and Digital VLSI systems. Presently he is working on High performance netwoking functions using Field Programmable Gate Arrays (FPGA).
    • +
      +
    • Jad Naous
      Jad Naous received his B.Eng. degree in Computer Engineering from McGill University in 2005, and his M.S.E.E. degree from Stanford University in 2007. He is currently pursuing a doctorate in Electrical Engineering at Stanford University. He has previously worked as a Graduate Intern for Sun Microsystems Labs in 2006, where he worked on the next generation switch project. In 2007, he joined Agilent Technologies Labs as a Graduate Intern where he helped implement special devices for the IEEE1588 Precision Time Protocol using NetFPGA.
    • +
    + +
    +
    + +

    To Attend this Event

    + +
    + +

    To Register to attend, Submit a registration form on-line
    Accomodations: Hoysala Guest House, IISc

    + +
    +
    + +
    + + +
    +
    +
    +
    + NetFPGA +
    c/- Andrew W. Moore +
    William Gates Building
    JJ Thomson Avenue
    Cambridge.
    CB3 0FD +
    +
    +
    + P: + +44 1223 763500 +
    + E: + enquiries@netfpga.org +
    +
    + +

    Copyright © NetFPGA 2021

    +
    + +
    + + + + + + + + diff --git a/_pages/2008-08-04-NetFPGA-Summer-Camp-2008.html b/_pages/2008-08-04-NetFPGA-Summer-Camp-2008.html new file mode 100644 index 0000000..0e767a6 --- /dev/null +++ b/_pages/2008-08-04-NetFPGA-Summer-Camp-2008.html @@ -0,0 +1,358 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    NetFPGA Summer Camp!

    + +
    +
    + +

    Earn a merit badge while building Internet routers and clean-slate switches. A 5-day summer camp will be held at Stanford University

    + +
    +

    Presented by: the NetFPGA Group

    +

    Open to: Professors teaching classes with NetFPGA and researchers interested in developing new hardware-accelerated network applications

    +

    Dates: Monday, August 4 - Friday, August 8, 2008

    +

    Time: 9am - 5pm. Bonfires and other evening events will be announced here.

    +

    Location: The Stanford University campus located between San Francisco and San Jose in the heart of the Silicon Valley.

    + +
    +
    + +

    Abstract

    + +
    + +

    An open platform called the NetFPGA has been developed at Stanford University. The NetFPGA platform enables researchers and instructors to build high-speed, hardware-accelerated networking systems. The platform can be used in the classroom to teach students how to build Ethernet switches and Internet Prototcol (IP) routers using hardware rather than software. The platform can be used by researchers to prototype advanced services for next-generation networks.

    +

    By using Field Programmable Gate Arrays (FPGAs), the NetFPGA enables new types of packet routing circuits to be implemented and detailed measurements of network traffic to be obtained. During the tutorial, we will use the NetFPGA to determine the amount of memory needed to buffer TCP/IP data streaming through the Gigabit/second router. Hardware circuits within the NetFPGA will be implemented to measure and plot the occupancy of buffers. Circuits will be downloaded into reconfigurable hardware and tested with live, streaming Internet video traffic.

    + +
    +
    + +

    Background

    + +

    Attendees will utilize a Linux-based PC equipped with NetFPGA hardware. A basic understanding of Ethernet switching and network routing is expected. Past experience with Verilog is useful but not required. This week-long summercamp extends the material presented at the NetFPGA tutorials. Participants will be able to take home their NetFPGA systems at the end of the week-long camp.

    + +
    +
    + +Photo from the summer camp + +
    +
    + +Another photo from the summer camp + +
    +
    + +

    Outline

    + +
    + +

    Day 1 (Monday, Aug. 4)

    +
      +
    • Welcome and introductions (All)
    • +
    • Day 1 (John, Glen, Adam)
    • +
        +
      • Background
      • +
          +
        • Basics of an IP Router
        • +
        • The NetFPGA hardware
        • +
        • How people use the NetFPGA
        • +
        • Why people use the NetFPGA
        • +
        +
      • The Stanford Base Reference Router
      • +
          +
        • Inside the NetFPGA hardware
        • +
        • Introduction to FPGAs and Verilog
        • +
        +
      • The Enhanced Reference Router
      • +
          +
        • Buffer sizing requirements in a router
        • +
        • Observering and controlling the queue size
        • +
        +
      • Life of a packet through the NetFPGA
      • +
          +
        • Data and control planes
        • +
        • Interface to software: Exceptions and Host I/O
        • +
        +
      • Address Lookup
      • +
      • PW-OSPF
      • +
      • Java-based Graphical User Interface (GUI)
      • +
      • Demonstration of High Definition (HD) video streaming
      • +
      +
    • Pizza dinner: AT&T Patio of the Gates Building
    • +
    +

    Day 2 (Tuesday, Aug. 5)

    +
      +
    • Module Development and Testing
    • +
        +
      • Running ModelSim with the NetFPGA TestBench (Glen)
      • +
          +
        • Compile, simulate, view waveforms
        • +
        • Example: Simply Encryption on a packet payload
        • +
        • Scrambling the payload with XOR using a key from a register
        • +
        +
      • Regression testing to verify hardware functionality (Adam)
      • +
          +
        • Synthesize and run the hardware
        • +
        • Verify value: 0xFFFFFFFF (would invert every bit of every byte of payload)
        • +
        • Verify value: 0xFF00FF00 (would invert every other byte of payload)
        • +
        • Verify value: 0x55555555 (would invert every other bit of payload)
        • +
        +
      +
    • Introduction to OpenFlow (Jad)
    • +
        +
      • Show how to use and test OpenFlow
      • +
      • Describe implementation of OpenFlow
      • +
      • Show use OpenFlow LiveCD
      • +
      • Give example of LiveCD on nf-test machines
      • +
      +
    • Group Dinner at MacArthur Park
    • +
    +

    Day 3 (Wednesday, Aug. 6)

    +
      +
    • Group Discussion
    • +
        +
      • Projects ideas
      • +
      • Scope of work that can be accomplished in 2-3 days
      • +
      +
    • Team up for Projects
    • +
        +
      • Project leaders will describe projects
      • +
      • Group will provide feedback on the scope
      • +
      • Be sure to have one hardware designer per team
      • +
      +
    • Precise Time Protocol (PTP) (Sara)
    • +
        +
      • Background and review of block diagrams
      • +
      • Show PTP running on nf-test machines
      • +
      • Show synchronization of pairs of machines
      • +
      • Discuss relevent Verilog Code
      • +
      +
    +

    Day 4 (Thursday, Aug. 7)

    +
      +
    • Work on Projects
    • +
        +
      • 802.1q VLANs
      • +
          +
        • Steve Padgett, Bilal Anwer, David Miller, Ke Xiang, Carson Stuart, Michael Blodgett
        • +
        • Top-Project Award
        • +
        +
      • Hardware-Accelerated Mathematics Library for NetFPGA
      • +
          +
        • Dan Bedard, Will Tetteh, Yufeng Xin
        • +
        • Top-Project Award
        • +
        +
      • MACinMAC
      • +
          +
        • Jim Chen, Tatsuya Yabe, Hao Chen
        • +
        +
      • Heavy Hitter Identification using Multistage filters
      • +
          +
        • Faisal Khan, Guan Yo, and Atif
        • +
        +
      • Layer 2 Load Balancing
      • +
          +
        • Danai Chasaki, Fernando Hammerli, Paul Germano
        • +
        +
      • TCP Traffic Analysis for Passive End-to-End Bandwidth Measurement
      • +
          +
        • Martin Zadnik, Yaping Zhu
        • +
        +
      • Assessment of Prototyping an AFDX Policy Switch Leveraging NetFPGA, Ethane, and OpenFlow Switch
      • +
          +
        • Tom Gaska
        • +
        +
      • ntop on NetFPGA
      • +
          +
        • Songkrant Muneenaem
        • +
        +
      • Universal Hash Function
      • +
          +
        • Thomas Zink and Dominik Schmucki
        • +
        +
      +
    • NetFPGA group available for Questions and Answers
    • +
    +

    Day 5 (Friday, Aug. 8)

    +
      +
    • Complete Projects
    • +
        +
      • On the SummerCamp_2008_Projects page, verify your project description and team members
      • +
          +
        • Update the link to your presentation page
        • +
        • Update the link to your contribute file page
        • +
        +
      • 10-minute project presentations
      • +
      • Live demonstrations
      • +
      +
    • Award prizes to winning projects
    • +
    • Group Dinner at California Cafe
    • +
    +

    Saturday, Aug. 9

    +
      +
    • Checkout of Stanford Guest House
    • +
    + +
    +
    + +

    Background Reading

    + +
    + + + +
    +
    + +

    To Attend this Event

    +
      +
    • Mark your calendar with the dates of the event
    • +
        +
      • Please plan to arrive Sunday night, August 3
      • +
      • Please plan to stay through Saturday morning, August 9
      • +
      • Registration fee covers shared meals (all breakfasts, lunches, and most dinners)
      • +
          +
        • Registration Fee: $400
        • +
        • Summer Camp is Full!! No more registrations can be accepted!
        • +
        +
      • A limited number of scholarships are available for students or instructors from schools unable to cover registration and hotel expenses.
      • +
          +
        • Award of the scholarships will be based on both merit and need:
        • +
        • Please provide one paragraph about that describes your relevant technical background in networking and/or hardware design.
        • +
        • Please provide another paragraph that explains why you or your host institution needs financial help.
        • +
        • Summer Camp is Full!! No more registrations can be accepted!
        • +
        +
      +
    • Travel Information
    • +
        +
      • Direct flights are available to most parts of the country through SFO or SJC
      • +
      • CalTrain offers fast transportation between the airports and Palo Alto
      • +
      • The Marguerite Shuttle offers rides between the train station, hotel, and campus. No car rental is needed.
      • +
      +
    • Book accomondations at the Stanford Guest House.
    • +
        +
      • Single rooms are $89/night
      • +
      • Shuttle service available to campus
      • +
      +
    + +
    +
    + +
    + + +
    +
    +
    +
    + NetFPGA +
    c/- Andrew W. Moore +
    William Gates Building
    JJ Thomson Avenue
    Cambridge.
    CB3 0FD +
    +
    +
    + P: + +44 1223 763500 +
    + E: + enquiries@netfpga.org +
    +
    + +

    Copyright © NetFPGA 2021

    +
    + +
    + + + + + + + + diff --git a/_pages/2008-08-17-SIGCOMM-2008-Tutorial.html b/_pages/2008-08-17-SIGCOMM-2008-Tutorial.html new file mode 100644 index 0000000..862fdfb --- /dev/null +++ b/_pages/2008-08-17-SIGCOMM-2008-Tutorial.html @@ -0,0 +1,303 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    SIGCOMM 2008 Tutorial

    + +
    +
    + +

    Building Gigabit-rate Routers with the NetFPGA at the SIGCOMM 2008 Conference

    + +
    + +

    Presented by: John W. Lockwood, Glen Gibb, and Adam Covington of the High Performance Network Group at Stanford University

    +

    Date: Sunday, August 17, 2008

    +

    Time: 9am - 5pm

    +

    Location: Laboratory/Classroom, Seattle, Washington, United States

    + +
    +
    + +

    Abstract

    + +

    An open platform called the NetFPGA has been developed at Stanford University. The NetFPGA platform enables researchers and instructors to build high-speed, hardware-accelerated networking systems. The platform can be used in the classroom to teach students how to build Ethernet switches and Internet Prototcol (IP) routers using hardware rather than software. The platform can be used by researchers to prototype advanced services for next-generation networks. +

    + +

    By using Field Programmable Gate Arrays (FPGAs), the NetFPGA enables new types of packet routing circuits to be implemented and detailed measurements of network traffic to be obtained. During the tutorial, we will use the NetFPGA to determine the amount of memory needed to buffer TCP/IP data streaming through the Gigabit/second router. Hardware circuits within the NetFPGA will be implemented to measure and plot the occupancy of buffers. Circuits will be downloaded into reconfigurable hardware and tested with live, streaming Internet video traffic.

    + + +

    This full-day hands-on tutorial will be held in a classroom or laboratory equipped with ten PCs with NetFPGA hardware on Sunday or Monday, August 17 or 18, 2008.

    + +
    +
    + +

    Background

    + +

    Attendees will utilize a Linux-based PC equipped with NetFPGA hardware. A basic understanding of Ethernet switching and network routing is expected. Past experience with Verilog is useful but not required. This full-day tutorial extends the material presented at the Hot Interconnects tutorial and the SIGMETRICS tutorials in 2007.

    + +
    +
    + +

    Outline

    + +
    + +
      +
    • Introduction to the operation of an Internet Router
    • +
        +
      • Control Plane
      • +
          +
        • Routing protocols
        • +
        • Routing table
        • +
        • Management interfaces
        • +
        +
      • Datapath
      • +
          +
        • Longest Prefix Match (LPM)
        • +
        • Classless Interdomain Routing (CIDR)
        • +
        • Header processing
        • +
        • Packet buffering
        • +
        +
      +
    • The NetFPGA Router
    • +
        +
      • Hardware
      • +
          +
        • Gigabit Ethernet interfaces
        • +
        • Field Programmable Gate Array (FPGA) Logic
        • +
        • Random Access Memory (RAM)
        • +
        +
      • Software
      • +
          +
        • Kernel-space driver
        • +
        • User-space applications
        • +
        • PCI interface
        • +
        +
      +
    • Demonstration Topology
    • +
        +
          +
        • Hardware
        • +
            +
          • Network of ten routers
          • +
          • Ethernet switch
          • +
          • Video server
          • +
          • High Definition (HD) video client
          • +
          +
        • Software
        • +
            +
          • PW-OSPF
          • +
          • Routing tables
          • +
          • Dynamic re-routing
          • +
          +
        +
      +
    • Integrated Circuit Design
    • +
        +
      • Technologies
      • +
          +
        • Look-Up Tables (LUTs)
        • +
        • Configurable Logic Blocks (CLBs)
        • +
        • Field Programmable Gate Arrays (FPGAs)
        • +
        +
      • Verilog Hardware Description Language (HDL)
      • +
          +
        • Registers, integers, arrays
        • +
        • Multiplexers
        • +
        • Synchronous storage elements
        • +
        • Finite State Machines (FSMs)
        • +
        +
      • Hardware Debug
      • +
          +
        • Waveform monitor
        • +
        • In-circuit logic emulation
        • +
        +
      +
    • NetFPGA System Components
    • +
        +
      • Synthesis of tutorial router
      • +
      • Java-based Graphical User Interface (GUI)
      • +
          +
        • Configuration
        • +
        • Statistics
        • +
        +
      • Router Architecture
      • +
          +
        • Pipeline
        • +
        • Queues
        • +
        +
      +
    • Buffer Size Experiment
    • +
        +
      • Experiment with TCP/IP flows
      • +
          +
        • Rule-of-thumb for the buffer size
        • +
        • Round-trip propation delay
        • +
        • Capacity of bottlneck link
        • +
        • Number of active flows
        • +
        +
      • Lower delay with smaller queues
      • +
      +
    • Enhanced Router
    • +
        +
      • Additional hardware
      • +
          +
        • Event capture module
        • +
        • Rate limiter
        • +
        • Delay module
        • +
        +
      • Experiments
      • +
          +
        • Netperf
        • +
        • HD video transport
        • +
        +
      • Life of packet through the system
      • +
          +
        • Description of blocks
        • +
        • Waveforms
        • +
        +
      +
    + +
    +
    + +

    About the presentors

    + +
    + +
      +
    • John W. Lockwood
      John W. Lockwood is a Consulting Associate Professor at Stanford University. At Stanford, he leads the NetFPGA Alpha and Beta release programs and organizes the worldwide tutorial program. Lockwood was granted tenure in the Department of Computer Science and Engineering at Washington University in Saint Louis in 2006. At Washington University in St. Louis, Lockwood led the Reconfigurable Network Group (RNG) to develop the Field programmable Port Extender (FPX) to enable rapid prototype of extensible network modules in Field Programmable Gate Array (FPGA) technology. Lockwood's research interests include reconfigurable hardware, Internet security, and content processing technologies. Dr. Lockwood earned his Ph.D from the Department of Electrical and Computer Engineering at the University of Illinois.

      John Lockwood has served as the principal investigator on grants from the National Science Foundation, Xilinx, Altera, Nortel Networks, Rockwell Collins, and Boeing. He has worked in industry for AT&T Bell Laboratories, IBM, Science Applications International Corporation (SAIC), and the National Center for Supercomputing Applications (NCSA). He served as a co-founder of Global Velocity, a networking startup company focused on high-speed data security. He is a member of IEEE, ACM, Tau Beta Pi, and Eta Kappa Nu.
    • +
      +
    • Glen Gibb
      Glen is a PhD candidate in Electrical Engineering at Stanford University. He received his Master of Science in Electrical Engineering from Stanford University and a Bachelor of Science and a Bachelor of Engineering from The University of Melbourne in Australia. He has been working on the NetFPGA platform since 2004 and was the lead designer for the current hardware version.
    • +
      +
    • Adam Covington
      Adam is a Research Associate of the High-Performance Network Group (HPN) at Stanford University. He is currently working on the NetFPGA project, which enables researchers and instructors to build hardware-accelerated networking systems. Previously, he was a Research Associate with the Reconfigurable Network Group (RNG) at Washington University in St. Louis. While at Washington University he designed, and implemented clustering algorithms on FPGAs and supported a hardware accelerated classification system on the FPX platform. Adam’s current research interests include reconfigurable systems, artificial intelligence (clustering and classification), and applications of artificial intelligence algorithms. Adam completed a Bachelor of Science degree in Computer Engineering from Western Michigan University in April 2003 and accepted a Distinguished Masters of Science Fellowship from Washington University. He completed his Masters of Science degree in Computer Science and Engineering from Washington University in December 2006. Adam continues to provide support for the NetFPGA project which includes helping users worldwide as well as arranging and presenting tutorials.
    • +
    + +
    +
    + +

          Schedule
    9:00-10:30 tutorial session
    10:30-11:00 coffee break
    11:00-12:30 tutorial session
    12:30-1:30 lunch
    1:30-3:00 tutorial session
    3:00-3:30 coffee break
    3:30-5:30 tutorial session

    + +
    +
    + +

    To Register

    + +
    + +

    Register directly with SIGCOMM to attend the conference and/or the NetFPGA workshop.

    + +
    +
    + +
    + + +
    +
    +
    +
    + NetFPGA +
    c/- Andrew W. Moore +
    William Gates Building
    JJ Thomson Avenue
    Cambridge.
    CB3 0FD +
    +
    +
    + P: + +44 1223 763500 +
    + E: + enquiries@netfpga.org +
    +
    + +

    Copyright © NetFPGA 2021

    +
    + +
    + + + + + + + + diff --git a/_pages/2009-08-13-NetFPGA-Developers-Worshop-2009.html b/_pages/2009-08-13-NetFPGA-Developers-Worshop-2009.html new file mode 100644 index 0000000..6b6b17e --- /dev/null +++ b/_pages/2009-08-13-NetFPGA-Developers-Worshop-2009.html @@ -0,0 +1,188 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    NetFPGA Developers Workshop 2009

    + +
    +
    + +

    You already know that the NetFPGA implements a Gigabit NIC, A hardware-accelerated Internet router, a traffic generator, and an OpenFlow switch, and more. What else can it do? We invite you, our NetFPGA Developers, to join us at Stanford to see the newest NetFPGA Modules. Attend the workshop to see presentations and demonstrations of the latest network hardware and software.

    + +
    + +A NetFPGA Board with a list of what projects going into it highlighting that one can add their own + +
    + +
      +
    • Workshop Dates:
    • +
        +
      • Demonstration Setup (for authors): Aug. 12, 2009
      • +
      • Workshop Presentations & Demonstrations: Aug. 13-14, 2009
      • +
      • Full Proceedings
      • +
      • Agenda
      • +
      • Papers Due: Apr. 27, 2009
      • +
      +
    • Location
    • + +
    • Presentations and Demonstrations on
    • +
        +
      • Hardware enhancements for packet forwarding
      • +
      • Hardware applications for payload scanning
      • +
      • Methodology for high-level programming networking hardware
      • +
      • Testbed deployments
      • +
      • Data-plane virtualization
      • +
      • Applications that support soft radio, and traffic generation
      • +
      • More. See draft program on Wiki
      • +
      +
    • Event Registration To cover Breakfasts, Snacks, Lunch, and Dinner
    • +
        +
      • Early Registration: Before July 14
      • +
      • Late Registration: After July 14
      • +
      +
    • Hotel: Sheraton Palo Alto
    • +
        +
      • Rooms at $169/Night available using code NETFPGA
      • +
      • Check-in on: Tue. Aug 11 -- Checkout Fri, Aug 14 or Sat. Aug 15.
      • +
      +
    • Transportation
    • +
        +
      • Nearby Airports: San Francisco (SFO) and San Jose (SJC)
      • +
      • Marguerite: Free Shuttle Service on Stanford Campus
      • +
      • CalTrain: Green alternative to renting a car
      • +
      +
    • Program Chairs
    • +
        +
      • John Lockwood: Stanford University
      • +
      • Andrew W. Moore: Cambridge University
      • +
      +
    • Program Committee
    • +
        +
      • Satnam Singh, Microsoft Research Cambridge
      • +
      • David Miller, Cambridge University Computer Laboratory
      • +
      • Gordon Brebner, Xilinx
      • +
      • Martin Žádník, Brno University of Technology
      • +
      • Glen Gibb: Stanford University
      • +
      • Adam Covington: Stanford University
      • +
      • David Greaves: Cambridge University
      • +
      • Eric Keller: Princeton University
      • +
      +
    • Single-page Call for Papers posting
    • +
    + +
    +
    + +
    + + +
    +
    +
    +
    + NetFPGA +
    c/- Andrew W. Moore +
    William Gates Building
    JJ Thomson Avenue
    Cambridge.
    CB3 0FD +
    +
    +
    + P: + +44 1223 763500 +
    + E: + enquiries@netfpga.org +
    +
    + +

    Copyright © NetFPGA 2021

    +
    + +
    + + + + + + + + diff --git a/_pages/2010-03-21-IETF-Tutorial-2010-Anaheim.html b/_pages/2010-03-21-IETF-Tutorial-2010-Anaheim.html new file mode 100644 index 0000000..1ab1f32 --- /dev/null +++ b/_pages/2010-03-21-IETF-Tutorial-2010-Anaheim.html @@ -0,0 +1,292 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    IETF Tutorial 2010 (Anaheim)

    + +
    +
    + +

    Hands-on with the NetFPGA to build a Gigabit-rate Router

    + +
    + +

    Presented by: G. Adam Covington, James Zheng of the High Performance Network Group at Stanford University

    +

    Date: Sunday, March 21, 2010

    +

    Time: 9am - 5pm

    +

    Location: Manhattan Room, Anaheim Hilton, Anaheim, California, United States

    + +
    +
    + +

    Abstract

    + +

    An open platform called the NetFPGA has been developed at Stanford University. The NetFPGA platform enables researchers and instructors to build high-speed, hardware-accelerated networking systems. The platform can be used in the classroom to teach students how to build Ethernet switches and Internet Prototcol (IP) routers using hardware rather than software. The platform can be used by researchers to prototype advanced services for next-generation networks.

    +

    By using Field Programmable Gate Arrays (FPGAs), the NetFPGA enables new types of packet routing circuits to be implemented and detailed measurements of network traffic to be obtained. During the tutorial, we will use the NetFPGA to determine the amount of memory needed to buffer TCP/IP data streaming through the Gigabit/second router. Hardware circuits within the NetFPGA will be implemented to measure and plot the occupancy of buffers. Circuits will be downloaded into reconfigurable hardware and tested with live, streaming Internet video traffic.

    +

    This full-day hands-on tutorial will be held in a classroom or laboratory equipped with ten PCs with NetFPGA hardware on Sunday, March 21, 2010.

    + +
    +
    + +

    Background

    + +
    + +

    Attendees will utilize a Linux-based PC equipped with NetFPGA hardware. A basic understanding of Ethernet switching and network routing is expected. Past experience with Verilog is useful but not required. This full-day tutorial extends the material presented at previous NetFPGA Turorials from 2007-2009 (FPL 2009, SIGCOMM 2008, Hot Interconnects 2007, SIGMETRICS 2007). Information about previous events as well as a description of the NetFPGA Platform are available on-line from the NetFPGA homepage.

    + +
    +
    + +

    Outline

    + +
    + +
      +
    • Introduction to the operation of an Internet Router
    • +
        +
      • Control Plane
      • +
          +
        • Routing protocols
        • +
        • Routing table
        • +
        • Management interfaces
        • +
        +
      • Datapath
      • +
          +
        • Longest Prefix Match (LPM)
        • +
        • Classless Interdomain Routing (CIDR)
        • +
        • Header processing
        • +
        • Packet buffering
        • +
        +
      +
    • The NetFPGA Router
    • +
        +
      • Hardware
      • +
          +
        • Gigabit Ethernet interfaces
        • +
        • Field Programmable Gate Array (FPGA) Logic
        • +
        • Random Access Memory
        • +
        +
      • Software
      • +
          +
        • Kernel-space driver
        • +
        • User-space applications
        • +
        • PCI host interface
        • +
        +
      • System Configuration
      • +
      +
    • Demonstration Topology
    • +
        +
      • Hardware
      • +
          +
        • Network of ten routers
        • +
        • Ethernet switch
        • +
        • Video server
        • +
        • High Definition (HD) video client
        • +
        +
      • Software
      • +
          +
        • PW-OSPF
        • +
        • Routing tables
        • +
        • Dynamic re-routing
        • +
        +
      +
    • Integrated Circuit Design
    • +
        +
      • Technologies
      • +
          +
        • Look-Up Tables (LUTs)
        • +
        • Configurable Logic Blocks (CLBs)
        • +
        • Field Programmable Gate Arrays (FPGAs)
        • +
        +
      • Verilog Hardware Description Language (HDL)
      • +
          +
        • Registers, integers, arrays
        • +
        • Multiplexer
        • +
        • Synchronous storage elements
        • +
        • Finite State Machines (FSMs)
        • +
        +
      • Hardware Debug
      • +
          +
        • Waveform monitor
        • +
        • In-circuit logic emulation
        • +
        +
      +
    • NetFPGA System Components
    • +
        +
      • Synthesis of tutorial router
      • +
      • Java-based Graphical User Interface
      • +
          +
        • Configuration
        • +
        • Statistics
        • +
        +
      • Router Architecture
      • +
          +
        • Pipeline
        • +
        • Queues
        • +
        +
      +
    • Buffer Size Experiment
    • +
        +
      • Experiment with TCP/IP
      • +
          +
        • Rule-of-thumb for the buffer size
        • +
        • Round-trip propation delay
        • +
        • Capacity of bottlneck link
        • +
        +
      • Lower delay with smaller queues
      • +
      +
    • Enhanced Router
    • +
        +
      • Additional hardware
      • +
          +
        • Event capture module
        • +
        • Rate limiter
        • +
        • Delay module
        • +
        +
      • Experiments
      • +
          +
        • Netperf
        • +
        • HD video transport
        • +
        +
      • Life of packet through the system
      • +
          +
        • Description of blocks
        • +
        • Waveforms from logic anazlyzer
        • +
        +
      +
    + +
    +
    + +

    About the presentors

    +
      +
    • Adam Covington
      Adam is a Research Associate of the High-Performance Network Group (HPN) at Stanford University. He is currently working on the NetFPGA project, which enables researchers and instructors to build hardware-accelerated networking systems. Previously, he was a Research Associate with the Reconfigurable Network Group (RNG) at Washington University in St. Louis. While at Washington University he designed, and implemented clustering algorithms on FPGAs and supported a hardware accelerated classification system on the FPX platform. Adam’s current research interests include reconfigurable systems, artificial intelligence (clustering and classification), and applications of artificial intelligence algorithms. Adam completed a Bachelor of Science degree in Computer Engineering from Western Michigan University in April 2003 and accepted a Distinguished Masters of Science Fellowship from Washington University. He completed his Masters of Science degree in Computer Science and Engineering from Washington University in December 2006. Adam continues to provide support for the NetFPGA project which includes helping users worldwide as well as arranging and presenting tutorials.
    • +
      +
    • James Hongyi Zeng
      James Hongyi Zeng received his Bachelor of Science degree in Electrical Engineering from Tsinghua University, China in 2008, with a concentration in wireless communication. He is currently pursuing a PhD degree in Electrical Engineering at Stanford University. His research mainly focuses on data center network, high performance router architecture, and software defined radio. He has been working on the NetFPGA platform since 2008 and is the core designer on the next generation NetFPGA 10G platform. James has previously worked in Microsoft Research Asia as a Visiting Student, where he worked on GPU-based soft WiFi project.
    • +
    + +
    +
    + +

          Schedule
    9:00-10:30 Tutorial Session
    10:30-11:00 Coffee Break
    11:00-12:30 Tutorial Session
    12:30-1:30 Lunch
    1:30-3:00 Tutorial Session
    3:00-3:30 Coffee Break
    4:00-5:30 Tutorial Session

    + +
    +
    + +

    Registration

    +
    +

    Cost of the tutorial is $200. Register here to attend

    + +
    +
    + +
    + + +
    +
    +
    +
    + NetFPGA +
    c/- Andrew W. Moore +
    William Gates Building
    JJ Thomson Avenue
    Cambridge.
    CB3 0FD +
    +
    +
    + P: + +44 1223 763500 +
    + E: + enquiries@netfpga.org +
    +
    + +

    Copyright © NetFPGA 2021

    +
    + +
    + + + + + + + + diff --git a/_pages/2010-07-02-NetFPGA-Summer-Camp-2010.html b/_pages/2010-07-02-NetFPGA-Summer-Camp-2010.html new file mode 100644 index 0000000..2195c5a --- /dev/null +++ b/_pages/2010-07-02-NetFPGA-Summer-Camp-2010.html @@ -0,0 +1,316 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    NetFPGA Summer Camp 2010

    + +
    +
    + +

    Build an Internet routers and learn about clean-slate switches at a 5-day summer camp held at Stanford University

    + +
    + +

    Presented by: the Stanford NetFPGA Group

    +

    Open to: Academics teaching with the NetFPGA, and researchers (postdoc or graduate-student) interested in develping new hardware-accelerated network applications

    +

    Date: Monday, August 9 - Friday, August 13, 2010

    +

    Time: 9am - 5pm. Evening events will be announced here

    +

    Location: The Stanford University campus located between San Francisco and San Jose in the heart of the Silicon Valley

    + +
    +
    + +

    Background

    + +
    + +

    This week-long summercamp extends the material presented at the shorter workshop events.

    + +
    +
    + +A photo from the summer camp + +
    +
    + +

    Outline

    + +
    + +

    Day 1 (Monday, Aug. 9)

    +
      +
    • Welcome and introductions
    • +
    • Day 1
    • +
        +
      • Background
      • +
          +
        • Basics of an IP router
        • +
        • The NetFPGA hardware
        • +
        • How people use the NetFPGA
        • +
        • Why people use NetFPGA
        • +
        +
      • The Stanford Base Reference Router
      • +
          +
        • Inside the NetFPGA hardware
        • +
        • Introduction to FPGAs and Verilog
        • +
        +
      • The Enhanced Reference Router
      • +
          +
        • Buffer sizing requirements in a router
        • +
        • Observering and controlling the queue size
        • +
        +
      • Life of a packet through the NetFPGA
      • +
          +
        • Data and control planes
        • +
        • Interface to software: Exceptions and Host I/O
        • +
        +
      • Demonstration of the NetFPGA
      • +
          +
        • Address Lookup
        • +
        • PW-OSPF
        • +
        • Java-based Graphical User Interface (GUI)
        • +
        • Demonstration of High Definition (HD) video streaming
        • +
        +
      • Slides: Will be available here
      • +
      +
    +

    Day 2 (Tuesday, Aug. 10)

    +
      +
    • Module Development and Testing
    • +
        +
      • Running Model Sim with the NetFPGA TestBench
      • +
          +
        • Compile, simulate, view waveforms
        • +
        • Example: Simply Encryption on a packet payload
        • +
        • Scrambling the payload with XOR using a key from a register
        • +
        +
      • Regression testing to verify hardware functionality
      • +
          +
        • Synthesize and run the hardware
        • +
        • Verify value: 0xFFFFFFFF (would invert every bit of every byte of payload)
        • +
        • Verify value: 0xFF00FF00 (would invert every other byte of payload)
        • +
        • Verify value: 0x55555555 (would invert every other bit of payload)
        • +
        +
      • Slides: Will be available here
      • +
      +
    • Group discussion
    • +
        +
      • Projects ideas
      • +
      • Scope of work that can be accomplished in 2-3 days
      • +
      +
    • Team up for Projects
    • +
        +
      • Project leaders will describe projects
      • +
      • Group will provide feedback on the scope
      • +
      • Be sure to have one hardware designer per team
      • +
      +
    • Example Hardware Design
    • +
        +
      • Background and review of block diagrams
      • +
      • Show design running on nf-test machines
      • +
      • Discuss relevant Verilog Code
      • +
      +
    +

    Day 3 (Wednesday, Aug. 11)

    +
      +
    • Work on Projects, examples from Summerschool 2010
    • +
        +
      • 802.1q VLANs
      • +
      • Hardware-Accelerated Mathematics Library for NetFPGA
      • +
      • MACinMAC
      • +
      • Heavy Hitter Identification using Multistage filters
      • +
      • Layer 2 Load Balancing
      • +
      • Pattern Matching/Mini-IDS
      • +
      • TCP Traffic Analysis for Passive End-to-End Bandwidth Measurement
      • +
      • Assessment of Prototyping an ADFX Policy Switch Leveraging NetFPGA, Ethane, and OpenFlow Switch
      • +
      • ntop on NetFPGA
      • +
      • Universal Hash Function
      • +
      +
    • NetFPGA group available for Questions and Answers
    • +
    • Dinner: Pizza in the Fijitsu Lounge, Gates Building, 6pm
    • +
    +

    Day 4 (Thursday, Aug. 12)

    +
      +
    • Complete Projects
    • +
    • 10-minute project presentations.
    • +
    • Live demonstrations
    • +
    • Award prizes to winning projects
    • +
    +

    Day 5 (Friday, Aug. 13)

    +
      +
    • NetFPGA Developers Conference
    • +
    • Dinner: MacArthur Park 7pm
    • +
    +

    Saturday, Aug. 14

    +
      +
    • Checkout of Stanford Guest House
    • +
    + +
    +
    + +

    Background Reading

    + +
    + + + +
    +
    + +

    To Attend this Event

    + +
    + +
      +
    • Mark your calendar with the dates of the event
    • +
        +
      • Please plan to arrive Sunday night, August 8
      • +
      • Please plan to stay through Saturday morning, August 14
      • +
      • Registration fee covers shared meals (all breakfasts, lunches, and most dinners)
      • +
          +
        • Registration Fee: $450
        • +
        • Register: Registration Site
        • +
        • Registration Deadline: June 15th
        • +
        +
      • A limited number of scholarships are available for students or instructions from schools unable to cover registration and hotel expenses. Scholarship applicants do not need to register through the registration website
      • +
          +
        • Award of the scholarships will be based on both merit and need:
        • +
        • Please provide one paragraph about that describes your relevant technical background in networking and/or hardware design
        • +
        • Please provide another paragraph that explains why you or your host institution needs financial help.
        • +
        • Scholarship Application:
        • +
        +
      +
    • Travel Information
    • +
        +
      • Direct flights are available to most parts of the country through SFO or SJC
      • +
      • CalTrain offers fast transportation between the airports and Palo Alto
      • +
      • The Marguerite Shuttle offers rides between the train station, hotel and campus. No car rental is needed.
      • +
      +
    • Book accommodations at the Stanford Guest House.
    • +
        +
      • There are a block of rooms reserved for the NetFPGA event
      • +
      • These rooms are only guaranteed to be available until 06/29/2010
      • +
      • To reserve rooms call: (650) 926-2800 with the reservation code 'NetFPGA'
      • +
      • Single rooms are $109/night
      • +
      • Double rooms are $139/night
      • +
      • Shuttle services available to campus
      • +
      +
    + +
    +
    + +
    + + +
    +
    +
    +
    + NetFPGA +
    c/- Andrew W. Moore +
    William Gates Building
    JJ Thomson Avenue
    Cambridge.
    CB3 0FD +
    +
    +
    + P: + +44 1223 763500 +
    + E: + enquiries@netfpga.org +
    +
    + +

    Copyright © NetFPGA 2021

    +
    + +
    + + + + + + + + diff --git a/_pages/2010-09-12-2nd-North-American-NetFPGA-Developers-Workshop.html b/_pages/2010-09-12-2nd-North-American-NetFPGA-Developers-Workshop.html new file mode 100644 index 0000000..ac74a7c --- /dev/null +++ b/_pages/2010-09-12-2nd-North-American-NetFPGA-Developers-Workshop.html @@ -0,0 +1,183 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    2nd North American NetFPGA Developers Workshop 2010

    + +
    +
    + +

    You already know that the NetFPGA implements a Gigabit NIC, A hardware-accelerated Internet router, a traffic generator, and an OpenFlow switch, and more. What else can it do? We invite you, our NetFPGA Developers, to join us at Stanford to see the newest NetFPGA Modules. Attend the workshop to see presentations and demonstrations of the latest network hardware and software.

    + +
    + +A NetFPGA Board with a list of what projects going into it highlighting that one can add their own + +
    + +
      +
    • Agenda: Schedule
    • +
    • Workshop Dates:
    • +
        +
      • Demonstration Setup (for authors): Aug. 12, 2010
      • +
      • Workshop Presentation & Demonstrations: Aug. 13, 2010
      • +
      • Papers Due: Monday 14 Jun 2010 6:00:00pm PDT
      • +
      +
    • Location
    • + +
    • Event Registration To cover Breakfasts, Snacks, Lunch, and Dinner
    • +
        +
      • Early Registration: Before July 14
      • +
      • Late Registration: After July 14
      • +
      • Registration Site
      • +
      +
    • Hotel: Stanford Guest House
    • +
        +
      • Rooms at $109/night
      • +
      +
    • Transportation
    • +
        +
      • Nearby Airports: San Francisco (SFO) and San Jose (SJC)
      • +
      • Marguerite: Free Shuttle Service on Stanford Campus
      • +
      • CalTrain: Green alternative to renting a car
      • +
      +
    • General/Organizing Chair
    • +
        +
      • G. Adam Covington, Stanford University
      • +
      +
    • Program Chairs
    • +
        +
      • Yashar Ganjali, University of Toronto
      • +
      • Andrew W. Moore, Cambridge University
      • +
      +
    • Program Committee
    • +
        +
      • Satnam Singh, Microsoft Research Cambridge
      • +
      • Paul Rodman, Google
      • +
      • Gordon Brebner, Xilinx
      • +
      • Martin Žádník, Brno University of Technology
      • +
      • Glen Gibb, Stanford University
      • +
      • James Zheng, Stanford University
      • +
      • Scott Whyte, Google
      • +
      • Eric Keller, Princeton University
      • +
      • Jad Naous, Stanford University
      • +
      • Greg Steffen, University of Toronto
      • +
      • John Lockwood, Algo-Logic Systems
      • +
      • Sun Moon, KAIST
      • +
      +
    + +
    +
    + +
    + + +
    +
    +
    +
    + NetFPGA +
    c/- Andrew W. Moore +
    William Gates Building
    JJ Thomson Avenue
    Cambridge.
    CB3 0FD +
    +
    +
    + P: + +44 1223 763500 +
    + E: + enquiries@netfpga.org +
    +
    + +

    Copyright © NetFPGA 2021

    +
    + +
    + + + + + + + + diff --git a/_pages/2011-08-01-NetFPGA-Summer-Camp-2011.html b/_pages/2011-08-01-NetFPGA-Summer-Camp-2011.html new file mode 100644 index 0000000..1223a94 --- /dev/null +++ b/_pages/2011-08-01-NetFPGA-Summer-Camp-2011.html @@ -0,0 +1,342 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    NetFPGA Summer Camp 2011

    + +
    +
    + +

    Build an Internet routers and learn about clean-slate switches at a 5-day summer camp held at Stanford University

    + +
    + +

    Presented by: the Stanford NetFPGA Group.

    +

    Open to: Academics teaching classes with the NetFPGA, and researchers (postdoc or graduate-student) interested in developing new hardware-accelerated network applications.

    +

    Date: Monday, August 1 - Friday, August 5, 2011

    +

    Time: 9am - 5pm, Evening events will be announced here.

    +

    Location: The Stanford University campus located between San Francisco and San Jose in the heart of Silicon Valley.

    + +
    +
    + +

    Background

    + +
    + +

    This week-long summercamp extends the material presented at the shorter workshop events

    + +
    +
    + +A photo from the camp + +
    +
    + +Another photo from the camp + +
    +
    + +

    Outline

    + +
    + +

    Day 1 (Monday, July 30)

    +
      +
    • Welcome and introductions
    • +
    • NetFPGA
    • +
        +
      • Infrastructure
      • +
          +
        • Tree
        • +
        • Build System
        • +
        • Scripts
        • +
        +
      • Life of a packet through the NetFPGA
      • +
          +
        • Data and control planes
        • +
        • Interface to software: Execeptions and Host I/O
        • +
        +
      • Implementation
      • +
          +
        • Module Template
        • +
        • User Data Path
        • +
        • Write crypto NIC using a static key
        • +
        +
      • Simulation and Debug
      • +
          +
        • Simulation Functions
        • +
        • Write and Run Simulations for crypto NIC
        • +
        +
      +
    + +
    + +

    Day 2 (Tuesday, July 31)

    +
      +
    • NetFPGA (cont.)
    • +
        +
      • Registers
      • +
          +
        • Explain Register System
        • +
        • Add XML to define crypto NIC encryption key
        • +
        • Use Generic Register Module to implement register
        • +
        • Update Simulations
        • +
        +
      • Build and Test Hardware
      • +
          +
        • Build
        • +
        • Explanation of Hardware Tests
        • +
        • Write and run Hardware Tests
        • +
            +
          • Verify value: 0xFFFFFFFF
          • +
          • Verify value: 0xFF00FF00
          • +
          • Verify value: 0x55555555
          • +
          +
        +
      • Writing Software and Integration
      • +
          +
        • Write setkey.c/getkey.c to write/read registers
        • +
        • Test between adjacent computers
        • +
        +
      +
    • Group Discussion
    • +
        +
      • Projects ideas
      • +
      • Scope of work that can be accomplished in 2-3 days
      • +
      +
    • Team up for Projects
    • +
        +
      • Project leaders will describe projects
      • +
      • Group will provide feedback on the scope
      • +
      • Be sure to have one hardware designer per team
      • +
      +
    • Example Hardware Design
    • +
        +
      • Background and review of block diagrams
      • +
      • Show design running on nf-test machines
      • +
      • Discuss relevant Verilog Code
      • +
      +
    + +
    + +

    Day 3 (Wednesday, Aug. 1)

    +
      +
    • Work on Projects, examples from Summer Camp 2008 & 2010
    • +
        +
      • 802.1q VLANs
      • +
      • Hardware-Accelerated Mathematics Library for NetFPGA
      • +
      • MACinMAC
      • +
      • Heavy Hitter Identification using Multistage
      • +
      • Layer 2 Load Balancing
      • +
      • Pattern Matching/Mini-IDS
      • +
      • TCP Traffic Analysis for Passive End-to-End Bandwidth Measurement
      • +
      • Assessment of Prototyping an AFDX Policy Switch Leveraging NetFPGA, Ethane, and OpenFlow Switch
      • +
      • ntop on NetFPGA
      • +
      • Universal Hash Function
      • +
      +
    • NetFPGA group available for Questions and Answers
    • +
    • Dinner: TBD
    • +
    + +
    + +

    Day 4 (Thursday, Aug. 2)

    +
      +
    • Complete Projects
    • +
    + +
    + +

    Day 5 (Friday, Aug. 3)

    +
      +
    • Complete Projects
    • +
    • 10-minute project presentations
    • +
    • Live demonstrations
    • +
    • Award prizes to winning projects
    • +
    • Dinner: TBD
    • +
    + +
    + +

    Saturday, Aug. 4

    +
      +
    • Checkout of Stanford Guest House
    • +
    + +
    +
    + +

    Background Reading

    + +
    + + + +
    +
    + +

    To Attend this Event

    + +
    + +
      +
    • Mark your calendar with the dates of the event
    • +
        +
      • Please plan to arrive Sunday night, July 31
      • +
      • Please plan to stay through Saturday morning, August 6
      • +
      • Registration fee covers shared meals (all breakfasts, lunches, and most dinners)
      • +
          +
        • Registration Fee:
        • +
            +
          • Early (before June 15th): $250
          • +
          • Late (after June 15th): $350
          • +
          +
        • Register: Registration Site
        • +
        • Registration Deadline: June 15th
        • +
        +
      • A limited number of scholarships are available for students or instructors from schools unable to cover registration and hotel expenses. Scholarship applicants do not need to to register through the registration website.
      • +
          +
        • Award of the scholarships will be based on both merit and need:
        • +
        • Please provide one paragraph about that describes your relevant technical background in networking and/or hardware design.
        • +
        • Please provide another paragraph that explains why you or your host institution needs financial help.
        • +
        • Scholarship Application:
        • +
        +
      +
    • Travel Information
    • +
        +
      • Direct flights are available to most parts of the country through SFO and SJC
      • +
      • CalTrain offers fast transportation between the airports and the Palo Alto
      • +
      • The Marguerite Shuttle offers rides between the train station, hotel, and campus. No car rental is needed.
      • +
      +
    • Book accomodations at the Stanford Guest House
    • +
        +
      • There are a block of rooms reserved for the NetFPGA event
      • +
      • These rooms are only guaranteed to be available until 06/16/2011
      • +
      • To reserve rooms call: (650) 926-2800 with the reservation code 'NetFPGA'
      • +
      • Single rooms are $119/night
      • +
      • Shuttle services available to campus
      • +
      +
    + +
    +
    + +
    + + +
    +
    +
    +
    + NetFPGA +
    c/- Andrew W. Moore +
    William Gates Building
    JJ Thomson Avenue
    Cambridge.
    CB3 0FD +
    +
    +
    + P: + +44 1223 763500 +
    + E: + enquiries@netfpga.org +
    +
    + +

    Copyright © NetFPGA 2021

    +
    + +
    + + + + + + + + diff --git a/_pages/2011-08-19-Toronto-Tutorial-2011.html b/_pages/2011-08-19-Toronto-Tutorial-2011.html new file mode 100644 index 0000000..5e74f4a --- /dev/null +++ b/_pages/2011-08-19-Toronto-Tutorial-2011.html @@ -0,0 +1,239 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    Toronto Tutorial 2011 (Near SIGCOMM)

    + +
    +
    + +

    Informational Tutorial

    + +
    + +

    Presented by: Andrew W. Moore, G. Adam Covington

    +

    Date: Friday, August 19, 2011

    +

    Time: 8am - 12pm

    +

    Location: Pier 2/3 3rd floor, Westin Harbour Castle, Toronto, Canada

    + +
    +
    + +

    Abstract

    + +
    + +

    An open platform called the NetFPGA has been developed at Stanford University. The NetFPGA platform enables researchers and instructors to build high-speed, hardware-accelerated networking systems. The platform can be used in the classroom to teach students how to build Ethernet switches and Internet Prototcol (IP) routers using hardware rather than software. The platform can be used by researchers to prototype advanced services for next-generation networks.

    +
    +

    By using Field Programmable Gate Arrays (FPGAs), the NetFPGA enables new types of packet routing circuits to be implemented and detailed measurements of network traffic to be obtained. During the tutorial, we will use the NetFPGA to determine the amount of memory needed to buffer TCP/IP data streaming through the Gigabit/second router. Hardware circuits within the NetFPGA will be implemented to measure and plot the occupancy of buffers. Circuits will be downloaded into reconfigurable hardware and tested with live, streaming Internet video traffic.

    +
    +NetFPGA Tutorial photo + +
    +
    + +

    Outline

    + +
    + +
      +
    • Introduction to platform
    • +
        +
      • Users (Professors & Researchers)
      • +
      • What is the NetFPGA
      • +
          +
        • Board
        • +
        • Tools & Reference Designs
        • +
        • Contributed
        • +
        • Community
        • +
        +
      +
    • Hardware Overview
    • +
        +
      • NetFPGA 1G
      • +
          +
        • Gigabit Ethernet interfaces
        • +
        • Field Programmable Gate Array (FPGA) Logic
        • +
        • Random Access Memory (RAM)
        • +
        • PCI interface
        • +
        +
      • NetFPGA 10G
      • +
          +
        • SPF+ interfaces
        • +
        • Field Programmable Gate Array (FPGA) Logic
        • +
        • Random Access Memory (RAM)
        • +
        • PCIe interface
        • +
        +
      +
    • Brief recap if IP/Routing
    • +
    • Example 1: Basic Functionality (reference router)
    • +
        +
      • PW-OSPF
      • +
      • Routing Tables
      • +
      • Dynamic re-routing
      • +
      +
    • Example 2: Advanced Functionality (buffer sizing based on reference router)
    • +
        +
      • Brief introduction of buffer sizing
      • +
          +
        • Rule-of-thumb for the buffer size
        • +
        • Round-trip propation delay
        • +
        • Capacity of bottlneck link
        • +
        • Number of active flows
        • +
        +
      • Additional Hardware
      • +
          +
        • Event capture module
        • +
        • Rate limiter
        • +
        • Delay module
        • +
        +
      • Experiments
      • +
          +
        • Netperf
        • +
        • HD video transport
        • +
        +
      +
    +

    Where to get started

    +
      +
    • Webpage
    • +
    • Wiki
    • +
    • Forums
    • +
    + +
    +
    + +

    About the presentors

    +
      +
    • Andrew W. Moore
      Andrew W. Moore is a Lecturer at the University of Cambridge Computer Laboratory. He joined the permanent faculty of Cambridge in 2007, prior to this he had been an EPSRC Roberts Fellow at Queen Mary, University of London, an Intel Research Fellow in Cambridge and foundation-researcher at the Cambridge Marconi research laboratory. Throughout this time Andrew has focused upon network characterisation and measurement, extensible monitoring for application performance-analysis and large-scale Internet monitoring and emulation. Interest in switch design has led to work in physical line-coding for optical networks, and novel optical-switch architectures.

      Andrew completed his Ph.D. with the Cambridge University Computer Laboratory in 2001 and prior to that took a Masters degree and an honours degree from Monash University in Melbourne. Australia. Alongside routine collaboration with AT&T, Endace, Intel, and Microsoft, Andrew Moore has served as principal investigator on grants from the UK Research Council (EPSRC) and a number of UK government bodies. He is a chartered engineer with the IET and a member of the IEEE, ACM and USENIX.
    • +
      +
    • Adam Covington
      Adam is a Research Associate of the High-Performance Network Group (HPN) at Stanford University. He is currently working on the NetFPGA project, which enables researchers and instructors to build hardware-accelerated networking systems. Previously, he was a Research Associate with the Reconfigurable Network Group (RNG) at Washington University in St. Louis. While at Washington University he designed, and implemented clustering algorithms on FPGAs and supported a hardware accelerated classification system on the FPX platform. Adam’s current research interests include reconfigurable systems, artificial intelligence (clustering and classification), and applications of artificial intelligence algorithms. Adam completed a Bachelor of Science degree in Computer Engineering from Western Michigan University in April 2003 and accepted a Distinguished Masters of Science Fellowship from Washington University. He completed his Masters of Science degree in Computer Science and Engineering from Washington University in December 2006. Adam continues to provide support for the NetFPGA project which includes helping users worldwide as well as arranging and presenting tutorials.
    • +
    + +
    +
    + +

          Schedule
    8:00-10:00 tutorial session
    10:00-10:30 coffee break
    10:30-12:00 tutorial session

    + +
    +
    + +

    Registration

    + +
    + +

    Cost of the tutorial is $150. Register here to attend

    + +
    +
    + +
    + + +
    +
    +
    +
    + NetFPGA +
    c/- Andrew W. Moore +
    William Gates Building
    JJ Thomson Avenue
    Cambridge.
    CB3 0FD +
    +
    +
    + P: + +44 1223 763500 +
    + E: + enquiries@netfpga.org +
    +
    + +

    Copyright © NetFPGA 2021

    +
    + +
    + + + + + + + + diff --git a/_pages/2011-12-05-Tokyo-Tutorial-2011.html b/_pages/2011-12-05-Tokyo-Tutorial-2011.html new file mode 100644 index 0000000..9068f58 --- /dev/null +++ b/_pages/2011-12-05-Tokyo-Tutorial-2011.html @@ -0,0 +1,249 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    Tokyo Tutorial 2011 (Near CoNext)

    + +
    +
    + +

    Informational Tutorial

    + +
    + +

    Presented by: G. Adam Covington, Tatsuya Yabe

    +

    Date: Monday, December 5, 2011

    +

    Time: 1pm - 5pm

    +

    Location: IIJ (Internet Initiative Japan) Seminar room #2, 17th floor Jinbocho Mitsui Bldg., 1-105 Kanda Jinbo-cho, Chiyoda-ku, Tokyo, 101-0051, Japan

    + +
    +
    + +

    Abstract

    + +
    + +

    The NetFPGA is a open platform enabling researchers and instructors to build high-speed, hardware-accelerated networking systems. The platform can be used in the classroom to teach students how to build Ethernet switches and Internet Protocol (IP) routers using hardware rather than software. The platform can be used by researchers to protype advanced services for next-generation networks

    +
    +

    By using Field Programmable Gate Arrays (FPGAs), the NetFPGA enables new types of packet routing circuits to be implemented and detailed measurements of network traffic to be obtained. During the tutorial, attendees will learn about the NetFPGA platform and and how it can be used. We will demonstrate the use of the reference router to dynamically re-route traffic using PW-OSPF with streaming video traffic. We will also show how we can extend existing designs to experiment with buffer sizes.

    +
    +

    No knowledge of Verilog/VHDL is required to attend the tutorial, although knowledge of these languages is needed to program NetFPGA.

    +
    +
    +

    Outline

    +
      +
    • Introduction to the Platform
    • +
        +
      • Users (Professors & Researchers)
      • +
      • What is the NetFPGA
      • +
          +
        • Board
        • +
        • Tools & Reference Designs
        • +
        • Contributed Projects
        • +
        • Community
        • +
        +
      +
    • Hardware Overview
    • +
        +
      • NetFPGA 1G
      • +
          +
        • Gigabit Ethernet interfaces
        • +
        • Field Programmable Gate Array (FPGA) Logic
        • +
        • Random Access Memory (RAM)
        • +
        • PCI interface
        • +
        +
      • NetFPGA 10G
      • +
          +
        • SPF+ interfaces
        • +
        • Field Programmable Gate Array (FPGA) Logic
        • +
        • Random Access Memory (RAM)
        • +
        • PCIe interface
        • +
        +
      +
    • Brief recap if IP/Routing
    • +
    • Example 1: Basic Functionality (reference router)
    • +
        +
      • PW-OSPF
      • +
      • Routing Tables
      • +
      • Dynamic re-routing
      • +
      +
    • Example 2: Advanced functionality
    • +
        +
      • Brief introduction of buffer sizing
      • +
          +
        • Rule-of-thumb for the buffer size
        • +
        • Round-trip propation delay
        • +
        • Capacity of bottlneck link
        • +
        • Number of active flows
        • +
        +
      • Additional hardware
      • +
          +
        • Event capture module
        • +
        • Rate limiter
        • +
        +
      • Experiments
      • +
          +
        • Netperf
        • +
        • HD video transport
        • +
        +
      +
    + +

    Where to get started/What to do next

    +
      +
    • Webpage
    • +
    • Wiki
    • +
    • Forums
    • +
    + +
    +
    + +

    About the presenters

    + +
    + +
      +
    • Adam Covington
      Adam is a Research Associate of the High-Performance Network Group (HPN) at Stanford University. he is currently working on the NetFPGA project, which enables researchers and instructors to build hardware-accelerated network systems. Previously, he was a Research Associate with the Reconfigurable Network Group (RNG) at Washington University in St. Louis. While at Washington University he designed, and implemented clustering algorithms on FPGAs and supported a hardware accelerated classification system on the FPX platform. Adam's current research interests include reconfigurable systems, artificial intelligence (clustering and classification), and applications of artificial intelligence algorithms. Adam completed a Bachelor of Science degree in Computer Engineering from Western Michigan University in April 2003 and accepted a Distinguished Masters of Science Fellowship from Washington University. He completed his Masters of Science degree in Computer Science and Engineering from Washington University in December 2006. Adam continues to provide support for the NetFPGA project which includes helping users worldwide as well as arranging and presenting tutorials.
    • +
      +
    • Tatsuya Yabe
      Tatsuya Yabe is a visiting researcher of the High-Performance Network Group (HPN) at Stanford University. He joined the group in 2008, and since he has been closely working with the NetFPGA development team. He also is an Assistant Manager of System Platforms Research Labs in NEC. Previously he was a hardware engineer in NEC Communication Systems. There, he successfully designed over a dozen FPGAs as well as circuit boards for large telecommunication carriers. He now owns several NetFPGA projects including OpenFlow implementation. He assisted the NetFPGA Summer Camp in 2010 and 2011.
    • +
    + +
    + +

          Schedule
    1:00-3:00 tutorial session
    3:00-3:30 coffee break
    3:30-5:00 tutorial session

    + +
    +
    + +

    Registration

    + +
    + +

    Before November 7, 2011:

    +
      +
    • Student $100
    • +
    • Attendee $200
    • +
    +

    November 7, 2011 and after

    +
      +
    • Student $150
    • +
    • Attendee $250
    • +
    + +
    + +

    Students must email a copy of their Student ID to gocoving@stanford.edu:
    Register here to attend

    + +
    +
    + +
    + + +
    +
    +
    +
    + NetFPGA +
    c/- Andrew W. Moore +
    William Gates Building
    JJ Thomson Avenue
    Cambridge.
    CB3 0FD +
    +
    +
    + P: + +44 1223 763500 +
    + E: + enquiries@netfpga.org +
    +
    + +

    Copyright © NetFPGA 2021

    +
    + +
    + + + + + + + + diff --git a/_pages/2012-07-30-NetFPGA-Summer-Camp-2012.html b/_pages/2012-07-30-NetFPGA-Summer-Camp-2012.html new file mode 100644 index 0000000..51df57d --- /dev/null +++ b/_pages/2012-07-30-NetFPGA-Summer-Camp-2012.html @@ -0,0 +1,349 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    NetFPGA Summer Camp 2012

    + +
    +
    + +

    Build an Internet routers and learn about clean-slate switches at a 5-day Summer Camp held at Stanford University

    + +
    + +

    Presented by: the Stanford NetFPGA Group

    +

    Open to: Academics teaching classes with the NetFPGA, and researchers (postdoc or graduate-students) interested in developing new hardware-accelerated network applications

    +

    Dates: Monday, July 30 - Friday, August 2012

    +

    Time: 9am - 5pm

    +

    Location: Center for Nanoscale Science and Engineering, Room 232, 348 Via Pueblo Stanford, CA, 94305

    +

    Survey: Survey Form

    + +
    +
    + +

    Background

    + +
    + +

    This week-long summercamp extends the material presented at the shorter workshop events

    + +
    +
    + +A photo from the camp + +
    +
    + +Another photo from the camp + +
    +
    + +

    Slides

    +

    Day 1: ppt
    Day 2: ppt 10G_ppt

    + +
    +
    + +

    Outline

    + +
    + +

    Day 1 (Monday, July 30)

    +
      +
    • Welcome and introductions
    • +
    • NetFPGA
    • +
        +
      • Infrastructure
      • +
          +
        • Tree
        • +
        • Build System
        • +
        • Scripts
        • +
        +
      • Life of a packet through the NetFPGA
      • +
          +
        • Data and control planes
        • +
        • Interface to software: Execeptions and Host I/O
        • +
        +
      • Implementation
      • +
          +
        • Module Template
        • +
        • User Data Path
        • +
        • Write crypto NIC using a static key
        • +
        +
      • Simulation and Debug
      • +
          +
        • Simulation Functions
        • +
        • Write and Run Simulations for crypto NIC
        • +
        +
      +
    + +
    + +

    Day 2 (Tuesday, July 31)

    +
      +
    • NetFPGA (cont.)
    • +
        +
      • Registers
      • +
          +
        • Explain Register System
        • +
        • Add XML to define crypto NIC encryption key
        • +
        • Use Generic Register Module to implement register
        • +
        • Update Simulations
        • +
        +
      • Build and Test Hardware
      • +
          +
        • Build
        • +
        • Explanation of Hardware Tests
        • +
        • Write and run Hardware Tests
        • +
            +
          • Verify value: 0xFFFFFFFF
          • +
          • Verify value: 0xFF00FF00
          • +
          • Verify value: 0x55555555
          • +
          +
        +
      • Writing Software and Integration
      • +
          +
        • Write setkey.c/getkey.c to write/read registers
        • +
        • Test between adjacent computers
        • +
        +
      +
    • Group Discussion
    • +
        +
      • Projects ideas
      • +
      • Scope of work that can be accomplished in 2-3 days
      • +
      +
    • Team up for Projects
    • +
        +
      • Project leaders will describe projects
      • +
      • Group will provide feedback on the scope
      • +
      • Be sure to have one hardware designer per team
      • +
      +
    • Example Hardware Design
    • +
        +
      • Background and review of block diagrams
      • +
      • Show design running on nf-test machines
      • +
      • Discuss relevant Verilog Code
      • +
      +
    + +
    + +

    Day 3 (Wednesday, Aug. 1)

    +
      +
    • Work on Projects, examples from Summer Camp 2008 & 2010
    • +
        +
      • 802.1q VLANs
      • +
      • Hardware-Accelerated Mathematics Library for NetFPGA
      • +
      • MACinMAC
      • +
      • Heavy Hitter Identification using Multistage
      • +
      • Layer 2 Load Balancing
      • +
      • Pattern Matching/Mini-IDS
      • +
      • TCP Traffic Analysis for Passive End-to-End Bandwidth Measurement
      • +
      • Assessment of Prototyping an AFDX Policy Switch Leveraging NetFPGA, Ethane, and OpenFlow Switch
      • +
      • ntop on NetFPGA
      • +
      • Universal Hash Function
      • +
      +
    • NetFPGA group available for Questions and Answers
    • +
    • Dinner: TBD
    • +
    + +
    + +

    Day 4 (Thursday, Aug. 2)

    +
      +
    • Complete Projects
    • +
    + +
    + +

    Day 5 (Friday, Aug. 3)

    +
      +
    • Complete Projects
    • +
    • 10-minute project presentations
    • +
    • Live demonstrations
    • +
    • Award prizes to winning projects
    • +
    • Dinner: TBD
    • +
    + +
    + +

    Saturday, Aug. 4

    +
      +
    • Checkout of Stanford Guest House
    • +
    + +
    +
    + +

    Background Reading

    + +
    + + + +
    +
    + +

    To Attend this Event

    + +
    + +
      +
    • Mark your calendar with the dates of the event
    • +
        +
      • Please plan to arrive Sunday night, July 29
      • +
      • Please plan to stay through Saturday morning, August 4
      • +
      • Registration fee covers shared meals (all breakfasts, lunches and most dinners)
      • +
          +
        • Registration fee
        • +
            +
          • Early (before June 15th): $250
          • +
          • Late (after June 15th): $350
          • +
          +
        • Register: Registration Site
        • +
        • Registration Deadline: July 6th
        • +
        +
      • A limited number of scholarships are available for students or instructors from schools unable to cover registration and hotel expenses. Scholarships applicants do not need to register through the registration website.
      • +
          +
        • Award of the scholarships will be based on both merit and need:
        • +
        • Please provide one paragraph about that describes your relevant technical background in networking and/or hardware design.
        • +
        • Please provide another paragraph that explains why you or your host institution needs financial help.
        • +
        • Scholarship Application:
        • +
        +
      +
    • Travel Information
    • +
        +
      • Direct flights are available to most parts of the country through SFO or SJC
      • +
      • CalTrain offers fast transportation between Airports and Palo Alto
      • +
      • The Marguerite Shuttle offers rides between the train station, hotel, and campus. No car rental is needed
      • +
      +
    • Book accomodations at the Stanford Guest House
    • +
        +
      • There are a block of rooms reserved for the NetFPGA event
      • +
      • These rooms are only guaranteed to be available until 06/16/2012
      • +
      • To reserve rooms, call (650) 926-2800 or online with the reservation code 'NetFPGA12'
      • +
      • Single rooms are $119/night
      • +
      • Shuttle services available to campus
      • +
      +
    + +
    +
    + +
    + + +
    +
    +
    +
    + NetFPGA +
    c/- Andrew W. Moore +
    William Gates Building
    JJ Thomson Avenue
    Cambridge.
    CB3 0FD +
    +
    +
    + P: + +44 1223 763500 +
    + E: + enquiries@netfpga.org +
    +
    + +

    Copyright © NetFPGA 2021

    +
    + +
    + + + + + + + + diff --git a/_pages/2013-07-29-NetFPGA-Summer-Camp-2013-Stanford.html b/_pages/2013-07-29-NetFPGA-Summer-Camp-2013-Stanford.html new file mode 100644 index 0000000..a340013 --- /dev/null +++ b/_pages/2013-07-29-NetFPGA-Summer-Camp-2013-Stanford.html @@ -0,0 +1,347 @@ + + + + + + + + + NetFPGA + + + + + + + + + + + + + +
    +
    +
    +
    +

    NetFPGA

    +
    +
    +
    +
    + + +
    +
    +
    +

    NetFPGA Summer Camp 2013

    + +
    +
    + +

    Build an internet router and learn about clean-slate switches at a 5-day summer camp held at Stanford University

    + +
    + +

    Open to: Academics teaching classes with the NetFPGA, and researchers (postdoc or graduate-student) interested in developing new hardware-accelerated network application

    +

    Location: Gates Building, Room 415, 353 Serra Mall, Stanford, CA 94305

    +

    Dates: Monday, July 29th - Friday, August 2 2012

    +

    Time: 9am - 5pm

    +

    Presented by: the Stanford NetFPGA Group.

    + +
    +
    + +

    Abstract

    + +
    + +

    An open platform called the NetFPGA has been developed at Stanford University. The NetFPGA platform enables researchers and instructors to build high-speed, hardware-accelerated networking systems. The platform can be used in the classroom to teach students how to build Ethernet switches and Internet Prototcol (IP) routers using hardware rather than software. The platform can be used by researchers to prototype advanced services for next-generation networks.

    +

    By using Field Programmable Gate Arrays (FPGAs), the NetFPGA enables new types of packet routing circuits to be implemented and detailed measurements of network traffic to be obtained. During the tutorial, we will use the NetFPGA to determine the amount of memory needed to buffer TCP/IP data streaming through the Gigabit/second router. Hardware circuits within the NetFPGA will be implemented to measure and plot the occupancy of buffers. Circuits will be downloaded into reconfigurable hardware and tested with live, streaming Internet video traffic.

    + +
    +
    + +

    Background

    + +
    + +

    Attendees will utilize a Linux-based PC equipped with NetFPGA hardware. A basic understanding of Ethernet switching and network routing is expected. Past experience with Verilog is useful but not required. This week-long summercamp extends the material presented at the shorter workshop events.

    + +
    +
    + +A photo from the camp + +
    +
    + +Another photo from the camp + +
    +
    + +

    Slides

    + +
    + +

    Day 1: ppt

    + +
    +
    + +

    Outline

    + +
    + +

    Day 1 (Monday, July 29)

    +
      +
    • Welcome and Introductions
    • +
    • NetFPGA
    • +
        +
      • Infrastructure
      • +
          +
        • Tree
        • +
        • Build System
        • +
        • Scripts
        • +
        +
      • Life of a packet through the NetFPGA
      • +
          +
        • Data and control planes
        • +
        • Interface to software: Exceptions and Host I/O
        • +
        +
      • Implementation
      • +
          +
        • Module Template
        • +
        • User Data Path
        • +
        • Write crypto NIC using a static Key
        • +
        +
      • Simulation and Debug
      • +
          +
        • Simulation functions
        • +
        • Write and Run Simulations for crypto NIC
        • +
        +
      +
    + +
    + +

    Day 2 (Tuesday, July 30)

    +
      +
    • NetFPGA (cont.)
    • +
        +
      • Registers
      • +
          +
        • Explain Register System
        • +
        • Add XML to define crypto NIC encryption key
        • +
        • Use Generic Register Module to implement register
        • +
        • Update Simulations
        • +
        +
      • Build and Test Hardware
      • +
          +
        • Build
        • +
        • Explanation of Hardware Tests
        • +
        • Write and run Hardware Tests
        • +
            +
          • Verify value: 0xFFFFFFFF
          • +
          • Verify value: 0xFF00FF00
          • +
          • Verify value: 0x55555555
          • +
          +
        +
      • Writing Software and Integration
      • +
          +
        • Write setkey.c/getkey.c to write/read registers
        • +
        • Test between adjacent computers
        • +
        +
      +
    • Group Discussion
    • +
        +
      • Projects ideas
      • +
      • Scope of work that can be accomplished in 2-3 days
      • +
      +
    • Team up for Projects
    • +
        +
      • Project leaders will describe projects
      • +
      • Group will provide feedback on the scope
      • +
      • Be sure to have one hardware designer per team
      • +
      +
    • Example Hardware Design
    • +
        +
      • Background and review of block diagrams
      • +
      • Show design running on nf-test machines
      • +
      • Discuss relevant Verilog Code
      • +
      +
    + +
    + +

    Day 3 (Wednesday, July 31)

    +
      +
    • Work on Projects, examples from Summer Camp 2008 & 2010
    • +
        +
      • 802.1q VLANs
      • +
      • Hardware-Accelerated Mathematics Library for NetFPGA
      • +
      • MACinMAC
      • +
      • Heavy Hitter Identification using Multistage
      • +
      • Layer 2 Load Balancing
      • +
      • Pattern Matching/Mini-IDS
      • +
      • TCP Traffic Analysis for Passive End-to-End Bandwidth Measurement
      • +
      • Assessment of Prototyping an AFDX Policy Switch Leveraging NetFPGA, Ethane, and OpenFlow Switch
      • +
      • ntop on NetFPGA
      • +
      • Universal Hash Function
      • +
      +
    • NetFPGA group available for Questions and Answers
    • +
    • Dinner: TBD
    • +
    + +
    + +

    Day 4 (Thursday, Aug. 1)

    +
      +
    • Complete Projects
    • +
    + +
    + +

    Day 5 (Friday, Aug. 2)

    +
      +
    • Complete Projects
    • +
    • 10-minute project presentations
    • +
    • Live demonstrations
    • +
    • Award prizes to winning projects
    • +
    • Dinner: TBD
    • +
    + +
    +
    + +

    Background Reading

    + +
    + + + +
    +
    + +

    To Attend this Event

    + +
      +
    • Mark your calendar with the dates of the event
    • +
        +
      • Please plan to arrive Sunday night July 28
      • +
      • Please plan to stay through Saturday morning, August 3
      • +
      • Registration fee covers shared meals (all breakfasts, lunches, and most dinners)
      • +
          +
        • Registration Fee:
        • +
            +
          • Early (before June 15th): $250
          • +
          • Late (after June 15th): $350
          • +
          +
        • Register: Registration Site
        • +
        • Registration Deadline: July 6th
        • +
        +
      • A limited number of scholarships are available for students or instructors unable to cover registration and hotel expenses. Scholarship applicants do not need to register through the registration website.
      • +
          +
        • Award of the scholarships will be based on both merit and need:
        • +
        • Please provide one paragraph about that describes your relevant technical background in networking and/or hardware design.
        • +
        • Please provide another paragraph that explains why you or your host institution needs financial help.
        • +
        • Scholarship Application:
        • +
        +
      +
    • Travel Information
    • +
        +
      • Direct flights are available to most parts of the country through SFO and SJC
      • +
      • CalTrain offers fast transportation between the airports and Palo Alto
      • +
      • The Marguerite Shuttle offers rides between the train station, hotel, and campus. No car rental is needed.
      • +
      +
    • Hotel information coming soon
    • +
    + +
    +
    + +
    + + +
    +
    +
    +
    + NetFPGA +
    c/- Andrew W. Moore +
    William Gates Building
    JJ Thomson Avenue
    Cambridge.
    CB3 0FD +
    +
    +
    + P: + +44 1223 763500 +
    + E: + enquiries@netfpga.org +
    +
    + +

    Copyright © NetFPGA 2021

    +
    + +
    + + + + + + + + diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100644 index 0000000..1454bf9 --- /dev/null +++ b/assets/css/main.css @@ -0,0 +1,3 @@ +:root{--blue: #007bff;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #dc3545;--orange: #fd7e14;--yellow: #ffc107;--green: #28a745;--teal: #20c997;--cyan: #17a2b8;--white: #fff;--gray: #6c757d;--gray-dark: #343a40;--primary: #A3C1AD;--secondary: #6c757d;--success: #28a745;--info: #17a2b8;--warning: #ffc107;--danger: #dc3545;--light: #f8f9fa;--dark: #343a40;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: "Helvetica Neue", Arial, "Noto Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:"Helvetica Neue",Arial,"Noto Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#A3C1AD;text-decoration:none;background-color:transparent}a:hover{color:#75a284;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button:not(:disabled),[type="button"]:not(:disabled),[type="reset"]:not(:disabled),[type="submit"]:not(:disabled){cursor:pointer}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-xl,.col-xl-auto,.col-xl-12,.col-xl-11,.col-xl-10,.col-xl-9,.col-xl-8,.col-xl-7,.col-xl-6,.col-xl-5,.col-xl-4,.col-xl-3,.col-xl-2,.col-xl-1,.col-lg,.col-lg-auto,.col-lg-12,.col-lg-11,.col-lg-10,.col-lg-9,.col-lg-8,.col-lg-7,.col-lg-6,.col-lg-5,.col-lg-4,.col-lg-3,.col-lg-2,.col-lg-1,.col-md,.col-md-auto,.col-md-12,.col-md-11,.col-md-10,.col-md-9,.col-md-8,.col-md-7,.col-md-6,.col-md-5,.col-md-4,.col-md-3,.col-md-2,.col-md-1,.col-sm,.col-sm-auto,.col-sm-12,.col-sm-11,.col-sm-10,.col-sm-9,.col-sm-8,.col-sm-7,.col-sm-6,.col-sm-5,.col-sm-4,.col-sm-3,.col-sm-2,.col-sm-1,.col,.col-auto,.col-12,.col-11,.col-10,.col-9,.col-8,.col-7,.col-6,.col-5,.col-4,.col-3,.col-2,.col-1{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-sm-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-sm-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-sm-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-sm-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-md-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-md-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-md-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-md-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-lg-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-lg-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-lg-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-lg-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-xl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-xl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-xl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-xl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#e5eee8}.table-primary th,.table-primary td,.table-primary thead th,.table-primary tbody+tbody{border-color:#cfdfd4}.table-hover .table-primary:hover{background-color:#d6e4da}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#d6e4da}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#d6d8db}.table-secondary th,.table-secondary td,.table-secondary thead th,.table-secondary tbody+tbody{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>th,.table-success>td{background-color:#c3e6cb}.table-success th,.table-success td,.table-success thead th,.table-success tbody+tbody{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-info th,.table-info td,.table-info thead th,.table-info tbody+tbody{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffeeba}.table-warning th,.table-warning td,.table-warning thead th,.table-warning tbody+tbody{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f5c6cb}.table-danger th,.table-danger td,.table-danger thead th,.table-danger tbody+tbody{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-light th,.table-light td,.table-light thead th,.table-light tbody+tbody{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c6c8ca}.table-dark th,.table-dark td,.table-dark thead th,.table-dark tbody+tbody{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark th,.table-dark td,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#eff4f1;outline:0;box-shadow:0 0 0 .2rem rgba(163,193,173,0.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[size],select.form-control[multiple]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,0.9);border-radius:.25rem}.was-validated .form-control:valid,.form-control.is-valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip,.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip{display:block}.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip,.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip{display:block}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#28a745}.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip,.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip{display:block}.was-validated .custom-control-input:valid~.custom-control-label,.custom-control-input.is-valid~.custom-control-label{color:#28a745}.was-validated .custom-control-input:valid~.custom-control-label::before,.custom-control-input.is-valid~.custom-control-label::before{border-color:#28a745}.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip,.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked~.custom-control-label::before,.custom-control-input.is-valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.was-validated .custom-control-input:valid:focus~.custom-control-label::before,.custom-control-input.is-valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before,.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.was-validated .custom-file-input:valid~.custom-file-label,.custom-file-input.is-valid~.custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip,.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus~.custom-file-label,.custom-file-input.is-valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,0.9);border-radius:.25rem}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip,.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip{display:block}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#dc3545}.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip,.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip{display:block}.was-validated .custom-control-input:invalid~.custom-control-label,.custom-control-input.is-invalid~.custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid~.custom-control-label::before,.custom-control-input.is-invalid~.custom-control-label::before{border-color:#dc3545}.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip,.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked~.custom-control-label::before,.custom-control-input.is-invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.was-validated .custom-control-input:invalid:focus~.custom-control-label::before,.custom-control-input.is-invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before,.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.was-validated .custom-file-input:invalid~.custom-file-label,.custom-file-input.is-invalid~.custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip,.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus~.custom-file-label,.custom-file-input.is-invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(163,193,173,0.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#212529;background-color:#A3C1AD;border-color:#A3C1AD}.btn-primary:hover{color:#212529;background-color:#8cb299;border-color:#85ac92}.btn-primary:focus,.btn-primary.focus{box-shadow:0 0 0 .2rem rgba(144,170,153,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#212529;background-color:#A3C1AD;border-color:#A3C1AD}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary.active:not(:disabled):not(.disabled),.show>.btn-primary.dropdown-toggle{color:#212529;background-color:#85ac92;border-color:#7da78b}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary.active:not(:disabled):not(.disabled):focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(144,170,153,0.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{box-shadow:0 0 0 .2rem rgba(130,138,145,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary.active:not(:disabled):not(.disabled),.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary.active:not(:disabled):not(.disabled):focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,0.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(72,180,97,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success.active:not(:disabled):not(.disabled),.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success.active:not(:disabled):not(.disabled):focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{box-shadow:0 0 0 .2rem rgba(58,176,195,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info.active:not(:disabled):not(.disabled),.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info.active:not(:disabled):not(.disabled):focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,0.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{box-shadow:0 0 0 .2rem rgba(222,170,12,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning.active:not(:disabled):not(.disabled),.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning.active:not(:disabled):not(.disabled):focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,0.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{box-shadow:0 0 0 .2rem rgba(225,83,97,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger.active:not(:disabled):not(.disabled),.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger.active:not(:disabled):not(.disabled):focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,0.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{box-shadow:0 0 0 .2rem rgba(216,217,219,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light.active:not(:disabled):not(.disabled),.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light.active:not(:disabled):not(.disabled):focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,0.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{box-shadow:0 0 0 .2rem rgba(82,88,93,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark.active:not(:disabled):not(.disabled),.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark.active:not(:disabled):not(.disabled):focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,0.5)}.btn-outline-primary{color:#A3C1AD;border-color:#A3C1AD}.btn-outline-primary:hover{color:#212529;background-color:#A3C1AD;border-color:#A3C1AD}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(163,193,173,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#A3C1AD;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary.active:not(:disabled):not(.disabled),.show>.btn-outline-primary.dropdown-toggle{color:#212529;background-color:#A3C1AD;border-color:#A3C1AD}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(163,193,173,0.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary.active:not(:disabled):not(.disabled),.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success.active:not(:disabled):not(.disabled),.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info.active:not(:disabled):not(.disabled),.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning.active:not(:disabled):not(.disabled),.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger.active:not(:disabled):not(.disabled),.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light.active:not(:disabled):not(.disabled),.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark.active:not(:disabled):not(.disabled),.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-link{font-weight:400;color:#A3C1AD;text-decoration:none}.btn-link:hover{color:#75a284;text-decoration:underline}.btn-link:focus,.btn-link.focus{text-decoration:underline;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#6c757d;pointer-events:none}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input.btn-block[type="submit"],input.btn-block[type="reset"],input.btn-block[type="button"]{width:100%}.fade{transition:opacity 0.15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height 0.35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.dropup,.dropright,.dropdown,.dropleft{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^="top"],.dropdown-menu[x-placement^="right"],.dropdown-menu[x-placement^="bottom"],.dropdown-menu[x-placement^="left"]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#A3C1AD}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-control-plaintext,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.form-control-plaintext+.form-control,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file .custom-file-input:focus~.custom-file-label{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn:focus,.input-group-append .btn:focus{z-index:3}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group-lg>.form-control:not(textarea),.input-group-lg>.custom-select{height:calc(1.5em + 1rem + 2px)}.input-group-lg>.form-control,.input-group-lg>.custom-select,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.form-control:not(textarea),.input-group-sm>.custom-select{height:calc(1.5em + .5rem + 2px)}.input-group-sm>.form-control,.input-group-sm>.custom-select,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#A3C1AD;background-color:#A3C1AD}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(163,193,173,0.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#eff4f1}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#fff;border-color:#fff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50% / 50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#A3C1AD;background-color:#A3C1AD}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(163,193,173,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(163,193,173,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(163,193,173,0.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(163,193,173,0.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#eff4f1;outline:0;box-shadow:0 0 0 .2rem rgba(163,193,173,0.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#eff4f1;box-shadow:0 0 0 .2rem rgba(163,193,173,0.25)}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:calc(1rem + .4rem);padding:0;background-color:transparent;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(163,193,173,0.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(163,193,173,0.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(163,193,173,0.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#A3C1AD;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#fff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#A3C1AD;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#fff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#A3C1AD;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#fff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#A3C1AD}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,0.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0,0,0,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255,255,255,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#A3C1AD;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#75a284;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(163,193,173,0.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#A3C1AD;border-color:#A3C1AD}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.badge{transition:none}}a.badge:hover,a.badge:focus{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#212529;background-color:#A3C1AD}a.badge-primary:hover,a.badge-primary:focus{color:#212529;background-color:#85ac92}a.badge-primary:focus,a.badge-primary.focus{outline:0;box-shadow:0 0 0 .2rem rgba(163,193,173,0.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:hover,a.badge-secondary:focus{color:#fff;background-color:#545b62}a.badge-secondary:focus,a.badge-secondary.focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:hover,a.badge-success:focus{color:#fff;background-color:#1e7e34}a.badge-success:focus,a.badge-success.focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:hover,a.badge-info:focus{color:#fff;background-color:#117a8b}a.badge-info:focus,a.badge-info.focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:hover,a.badge-warning:focus{color:#212529;background-color:#d39e00}a.badge-warning:focus,a.badge-warning.focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:hover,a.badge-danger:focus{color:#fff;background-color:#bd2130}a.badge-danger:focus,a.badge-danger.focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:hover,a.badge-light:focus{color:#212529;background-color:#dae0e5}a.badge-light:focus,a.badge-light.focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:hover,a.badge-dark:focus{color:#fff;background-color:#1d2124}a.badge-dark:focus,a.badge-dark.focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#55645a;background-color:#edf3ef;border-color:#e5eee8}.alert-primary hr{border-top-color:#d6e4da}.alert-primary .alert-link{color:#3e4841}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#A3C1AD;transition:width 0.6s ease}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#A3C1AD;border-color:#A3C1AD}.list-group-horizontal{flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#55645a;background-color:#e5eee8}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#55645a;background-color:#d6e4da}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#55645a;border-color:#55645a}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):hover,.close:not(:disabled):not(.disabled):focus{opacity:.75}button.close{padding:0;background-color:transparent;border:0;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,0.85);background-clip:padding-box;border:1px solid rgba(0,0,0,0.1);box-shadow:0 0.25rem 0.75rem rgba(0,0,0,0.1);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,0.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,0.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-header,.modal-dialog-scrollable .modal-footer{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #dee2e6;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width: 1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:"Helvetica Neue",Arial,"Noto Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:"Helvetica Neue",Arial,"Noto Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:.5rem}.bs-popover-top>.arrow,.bs-popover-auto[x-placement^="top"]>.arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-top>.arrow::before,.bs-popover-auto[x-placement^="top"]>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top>.arrow::after,.bs-popover-auto[x-placement^="top"]>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:.5rem}.bs-popover-right>.arrow,.bs-popover-auto[x-placement^="right"]>.arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right>.arrow::before,.bs-popover-auto[x-placement^="right"]>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right>.arrow::after,.bs-popover-auto[x-placement^="right"]>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:.5rem}.bs-popover-bottom>.arrow,.bs-popover-auto[x-placement^="bottom"]>.arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-bottom>.arrow::before,.bs-popover-auto[x-placement^="bottom"]>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom>.arrow::after,.bs-popover-auto[x-placement^="bottom"]>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:.5rem}.bs-popover-left>.arrow,.bs-popover-auto[x-placement^="left"]>.arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left>.arrow::before,.bs-popover-auto[x-placement^="left"]>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left>.arrow::after,.bs-popover-auto[x-placement^="left"]>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-left),.active.carousel-item-right{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-right),.active.carousel-item-left{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:0s .6s opacity}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity 0.15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50% / 100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity 0.6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-primary{background-color:#A3C1AD !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#85ac92 !important}.bg-secondary{background-color:#6c757d !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62 !important}.bg-success{background-color:#28a745 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34 !important}.bg-info{background-color:#17a2b8 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#ffc107 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00 !important}.bg-danger{background-color:#dc3545 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130 !important}.bg-light{background-color:#f8f9fa !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#343a40 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#A3C1AD !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#28a745 !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#343a40 !important}.border-white{border-color:#fff !important}.rounded-sm{border-radius:.2rem !important}.rounded{border-radius:.25rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-right{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-left{border-top-left-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-lg{border-radius:.3rem !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:50rem !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.8571428571%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-fill{flex:1 1 auto !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media (min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.075) !important}.shadow{box-shadow:0 0.5rem 1rem rgba(0,0,0,0.15) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,0.175) !important}.shadow-none{box-shadow:none !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.min-vw-100{min-width:100vw !important}.min-vh-100{min-height:100vh !important}.vw-100{width:100vw !important}.vh-100{height:100vh !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-n1{margin:-.25rem !important}.mt-n1,.my-n1{margin-top:-.25rem !important}.mr-n1,.mx-n1{margin-right:-.25rem !important}.mb-n1,.my-n1{margin-bottom:-.25rem !important}.ml-n1,.mx-n1{margin-left:-.25rem !important}.m-n2{margin:-.5rem !important}.mt-n2,.my-n2{margin-top:-.5rem !important}.mr-n2,.mx-n2{margin-right:-.5rem !important}.mb-n2,.my-n2{margin-bottom:-.5rem !important}.ml-n2,.mx-n2{margin-left:-.5rem !important}.m-n3{margin:-1rem !important}.mt-n3,.my-n3{margin-top:-1rem !important}.mr-n3,.mx-n3{margin-right:-1rem !important}.mb-n3,.my-n3{margin-bottom:-1rem !important}.ml-n3,.mx-n3{margin-left:-1rem !important}.m-n4{margin:-1.5rem !important}.mt-n4,.my-n4{margin-top:-1.5rem !important}.mr-n4,.mx-n4{margin-right:-1.5rem !important}.mb-n4,.my-n4{margin-bottom:-1.5rem !important}.ml-n4,.mx-n4{margin-left:-1.5rem !important}.m-n5{margin:-3rem !important}.mt-n5,.my-n5{margin-top:-3rem !important}.mr-n5,.mx-n5{margin-right:-3rem !important}.mb-n5,.my-n5{margin-bottom:-3rem !important}.ml-n5,.mx-n5{margin-left:-3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:.25rem !important}.mt-sm-1,.my-sm-1{margin-top:.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:.25rem !important}.m-sm-2{margin:.5rem !important}.mt-sm-2,.my-sm-2{margin-top:.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:.25rem !important}.pt-sm-1,.py-sm-1{padding-top:.25rem !important}.pr-sm-1,.px-sm-1{padding-right:.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem !important}.pl-sm-1,.px-sm-1{padding-left:.25rem !important}.p-sm-2{padding:.5rem !important}.pt-sm-2,.py-sm-2{padding-top:.5rem !important}.pr-sm-2,.px-sm-2{padding-right:.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem !important}.pl-sm-2,.px-sm-2{padding-left:.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-n1{margin:-.25rem !important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem !important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem !important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem !important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem !important}.m-sm-n2{margin:-.5rem !important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem !important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem !important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem !important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem !important}.m-sm-n3{margin:-1rem !important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem !important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem !important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem !important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem !important}.m-sm-n4{margin:-1.5rem !important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem !important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem !important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem !important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem !important}.m-sm-n5{margin:-3rem !important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem !important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem !important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem !important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:.25rem !important}.mt-md-1,.my-md-1{margin-top:.25rem !important}.mr-md-1,.mx-md-1{margin-right:.25rem !important}.mb-md-1,.my-md-1{margin-bottom:.25rem !important}.ml-md-1,.mx-md-1{margin-left:.25rem !important}.m-md-2{margin:.5rem !important}.mt-md-2,.my-md-2{margin-top:.5rem !important}.mr-md-2,.mx-md-2{margin-right:.5rem !important}.mb-md-2,.my-md-2{margin-bottom:.5rem !important}.ml-md-2,.mx-md-2{margin-left:.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:.25rem !important}.pt-md-1,.py-md-1{padding-top:.25rem !important}.pr-md-1,.px-md-1{padding-right:.25rem !important}.pb-md-1,.py-md-1{padding-bottom:.25rem !important}.pl-md-1,.px-md-1{padding-left:.25rem !important}.p-md-2{padding:.5rem !important}.pt-md-2,.py-md-2{padding-top:.5rem !important}.pr-md-2,.px-md-2{padding-right:.5rem !important}.pb-md-2,.py-md-2{padding-bottom:.5rem !important}.pl-md-2,.px-md-2{padding-left:.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-n1{margin:-.25rem !important}.mt-md-n1,.my-md-n1{margin-top:-.25rem !important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem !important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem !important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem !important}.m-md-n2{margin:-.5rem !important}.mt-md-n2,.my-md-n2{margin-top:-.5rem !important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem !important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem !important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem !important}.m-md-n3{margin:-1rem !important}.mt-md-n3,.my-md-n3{margin-top:-1rem !important}.mr-md-n3,.mx-md-n3{margin-right:-1rem !important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem !important}.ml-md-n3,.mx-md-n3{margin-left:-1rem !important}.m-md-n4{margin:-1.5rem !important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem !important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem !important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem !important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem !important}.m-md-n5{margin:-3rem !important}.mt-md-n5,.my-md-n5{margin-top:-3rem !important}.mr-md-n5,.mx-md-n5{margin-right:-3rem !important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem !important}.ml-md-n5,.mx-md-n5{margin-left:-3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:.25rem !important}.mt-lg-1,.my-lg-1{margin-top:.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:.25rem !important}.m-lg-2{margin:.5rem !important}.mt-lg-2,.my-lg-2{margin-top:.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:.25rem !important}.pt-lg-1,.py-lg-1{padding-top:.25rem !important}.pr-lg-1,.px-lg-1{padding-right:.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem !important}.pl-lg-1,.px-lg-1{padding-left:.25rem !important}.p-lg-2{padding:.5rem !important}.pt-lg-2,.py-lg-2{padding-top:.5rem !important}.pr-lg-2,.px-lg-2{padding-right:.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem !important}.pl-lg-2,.px-lg-2{padding-left:.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-n1{margin:-.25rem !important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem !important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem !important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem !important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem !important}.m-lg-n2{margin:-.5rem !important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem !important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem !important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem !important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem !important}.m-lg-n3{margin:-1rem !important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem !important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem !important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem !important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem !important}.m-lg-n4{margin:-1.5rem !important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem !important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem !important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem !important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem !important}.m-lg-n5{margin:-3rem !important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem !important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem !important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem !important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:.25rem !important}.mt-xl-1,.my-xl-1{margin-top:.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:.25rem !important}.m-xl-2{margin:.5rem !important}.mt-xl-2,.my-xl-2{margin-top:.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:.25rem !important}.pt-xl-1,.py-xl-1{padding-top:.25rem !important}.pr-xl-1,.px-xl-1{padding-right:.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem !important}.pl-xl-1,.px-xl-1{padding-left:.25rem !important}.p-xl-2{padding:.5rem !important}.pt-xl-2,.py-xl-2{padding-top:.5rem !important}.pr-xl-2,.px-xl-2{padding-right:.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem !important}.pl-xl-2,.px-xl-2{padding-left:.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-n1{margin:-.25rem !important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem !important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem !important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem !important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem !important}.m-xl-n2{margin:-.5rem !important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem !important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem !important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem !important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem !important}.m-xl-n3{margin:-1rem !important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem !important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem !important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem !important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem !important}.m-xl-n4{margin:-1.5rem !important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem !important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem !important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem !important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem !important}.m-xl-n5{margin:-3rem !important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem !important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem !important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem !important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace !important}.text-justify{text-align:justify !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media (min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-lighter{font-weight:lighter !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-weight-bolder{font-weight:bolder !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#A3C1AD !important}a.text-primary:hover,a.text-primary:focus{color:#75a284 !important}.text-secondary{color:#6c757d !important}a.text-secondary:hover,a.text-secondary:focus{color:#494f54 !important}.text-success{color:#28a745 !important}a.text-success:hover,a.text-success:focus{color:#19692c !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#0f6674 !important}.text-warning{color:#ffc107 !important}a.text-warning:hover,a.text-warning:focus{color:#ba8b00 !important}.text-danger{color:#dc3545 !important}a.text-danger:hover,a.text-danger:focus{color:#a71d2a !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#cbd3da !important}.text-dark{color:#343a40 !important}a.text-dark:hover,a.text-dark:focus{color:#121416 !important}.text-body{color:#212529 !important}.text-muted{color:#6c757d !important}.text-black-50{color:rgba(0,0,0,0.5) !important}.text-white-50{color:rgba(255,255,255,0.5) !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none !important}.text-break{word-break:break-word !important;overflow-wrap:break-word !important}.text-reset{color:inherit !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #dee2e6 !important}.table-dark{color:inherit}.table-dark th,.table-dark td,.table-dark thead th,.table-dark tbody+tbody{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}.navbar{padding:0}@media screen and (max-width: 600px){.navbar{padding:0.5rem 1rem}}.tall-nav{padding:1rem 1rem}@font-face{font-family:'Font Awesome 5 Free';font-style:normal;font-weight:900;font-display:block;src:url("../webfonts/fa-solid-900.eot");src:url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"),url("../webfonts/fa-solid-900.woff2") format("woff2"),url("../webfonts/fa-solid-900.woff") format("woff"),url("../webfonts/fa-solid-900.ttf") format("truetype"),url("../webfonts/fa-solid-900.svg#fontawesome") format("svg")}.deprecated{color:#FF0000}.nobullets li{list-style:none;font-size:11px;text-align:center}.accordion .card-title :after{font-family:'Font Awesome 5 Free';font-style:normal;font-weight:900;content:"\f107";float:right}.accordion .collapsed .card-title :after{content:"\f104"}.accordion>div>a{cursor:pointer;color:#000}.accordion>div>a:hover{text-decoration:none}.accordion button{border:0px;background-color:inherit}.downloads td{padding-top:5px;padding-right:20px}.registerForm{padding-right:20px}.card .border-0 img{padding:100px 100px}img.header-image{opacity:0.5;width:100%;height:auto}.FAQ{margin-bottom:0px}header#hero{background-image:url("/assets/images/netfpgasumelandscape.jpg");background-repeat:no-repeat;background-position:right;background-size:contain}@media (max-width: 768px){header#hero{background-size:cover}}.news-collapse hr{border-top:1px solid #A3C1AD}.events-collapse hr{border-top:1px solid #A3C1AD}.card.check-container{display:inline-block;background-color:#A3C1AD;border:1px solid transparent;border-color:#A3C1AD}.check-label{margin-bottom:0}abbr[title]{text-decoration:none}.front-page-card{position:absolute;bottom:0;padding-bottom:80px}a{color:#1A5B7A}a:hover{color:#007bff}@media (max-width: 991.99px){.btn-group{width:60px;text-align:left;position:relative}.btn-group .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.btn-group .dropdown-toggle-split::after,.dropup .btn-group .dropdown-toggle-split::after,.dropright .btn-group .dropdown-toggle-split::after{margin-left:0}.dropleft .btn-group .dropdown-toggle-split::before{margin-right:0}.btn-group .dropdown-menu{width:auto;background-color:inherit;position:relative;border:0px}.btn-group .dropdown-menu a{color:#fff}.btn-group .dropdown-menu .dropdown-item{padding-left:10px}.btn-group .dropdown-menu .dropdown-item:hover,.btn-group .dropdown-menu .dropdown-item:focus{background-color:#a8a9aa}.btn-group button.nav-link.btn.dropdown-toggle.dropdown-toggle-split{height:42px}}.newsTicker p{margin-bottom:0px}.organisation-img{height:50px;width:auto}.product-img{height:200px;width:auto} + +/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/assets/css/main.css.map b/assets/css/main.css.map new file mode 100644 index 0000000..bd04f04 --- /dev/null +++ b/assets/css/main.css.map @@ -0,0 +1,188 @@ +{ + "version": 3, + "file": "main.css", + "sources": [ + "main.scss", + "assets/css/_sass/bootstrap/_functions.scss", + "assets/css/_sass/bootstrap/_variables.scss", + "assets/css/_sass/bootstrap/_mixins.scss", + "assets/css/_sass/bootstrap/vendor/_rfs.scss", + "assets/css/_sass/bootstrap/mixins/_deprecate.scss", + "assets/css/_sass/bootstrap/mixins/_breakpoints.scss", + "assets/css/_sass/bootstrap/mixins/_hover.scss", + "assets/css/_sass/bootstrap/mixins/_image.scss", + "assets/css/_sass/bootstrap/mixins/_badge.scss", + "assets/css/_sass/bootstrap/mixins/_resize.scss", + "assets/css/_sass/bootstrap/mixins/_screen-reader.scss", + "assets/css/_sass/bootstrap/mixins/_size.scss", + "assets/css/_sass/bootstrap/mixins/_reset-text.scss", + "assets/css/_sass/bootstrap/mixins/_text-emphasis.scss", + "assets/css/_sass/bootstrap/mixins/_text-hide.scss", + "assets/css/_sass/bootstrap/mixins/_text-truncate.scss", + "assets/css/_sass/bootstrap/mixins/_visibility.scss", + "assets/css/_sass/bootstrap/mixins/_alert.scss", + "assets/css/_sass/bootstrap/mixins/_buttons.scss", + "assets/css/_sass/bootstrap/mixins/_caret.scss", + "assets/css/_sass/bootstrap/mixins/_pagination.scss", + "assets/css/_sass/bootstrap/mixins/_lists.scss", + "assets/css/_sass/bootstrap/mixins/_list-group.scss", + "assets/css/_sass/bootstrap/mixins/_nav-divider.scss", + "assets/css/_sass/bootstrap/mixins/_forms.scss", + "assets/css/_sass/bootstrap/mixins/_table-row.scss", + "assets/css/_sass/bootstrap/mixins/_background-variant.scss", + "assets/css/_sass/bootstrap/mixins/_border-radius.scss", + "assets/css/_sass/bootstrap/mixins/_box-shadow.scss", + "assets/css/_sass/bootstrap/mixins/_gradients.scss", + "assets/css/_sass/bootstrap/mixins/_transition.scss", + "assets/css/_sass/bootstrap/mixins/_clearfix.scss", + "assets/css/_sass/bootstrap/mixins/_grid-framework.scss", + "assets/css/_sass/bootstrap/mixins/_grid.scss", + "assets/css/_sass/bootstrap/mixins/_float.scss", + "assets/css/_sass/bootstrap/_root.scss", + "assets/css/_sass/bootstrap/_reboot.scss", + "assets/css/_sass/bootstrap/_type.scss", + "assets/css/_sass/bootstrap/_images.scss", + "assets/css/_sass/bootstrap/_code.scss", + "assets/css/_sass/bootstrap/_grid.scss", + "assets/css/_sass/bootstrap/_tables.scss", + "assets/css/_sass/bootstrap/_forms.scss", + "assets/css/_sass/bootstrap/_buttons.scss", + "assets/css/_sass/bootstrap/_transitions.scss", + "assets/css/_sass/bootstrap/_dropdown.scss", + "assets/css/_sass/bootstrap/_button-group.scss", + "assets/css/_sass/bootstrap/_input-group.scss", + "assets/css/_sass/bootstrap/_custom-forms.scss", + "assets/css/_sass/bootstrap/_nav.scss", + "assets/css/_sass/bootstrap/_navbar.scss", + "assets/css/_sass/bootstrap/_card.scss", + "assets/css/_sass/bootstrap/_breadcrumb.scss", + "assets/css/_sass/bootstrap/_pagination.scss", + "assets/css/_sass/bootstrap/_badge.scss", + "assets/css/_sass/bootstrap/_jumbotron.scss", + "assets/css/_sass/bootstrap/_alert.scss", + "assets/css/_sass/bootstrap/_progress.scss", + "assets/css/_sass/bootstrap/_media.scss", + "assets/css/_sass/bootstrap/_list-group.scss", + "assets/css/_sass/bootstrap/_close.scss", + "assets/css/_sass/bootstrap/_toasts.scss", + "assets/css/_sass/bootstrap/_modal.scss", + "assets/css/_sass/bootstrap/_tooltip.scss", + "assets/css/_sass/bootstrap/_popover.scss", + "assets/css/_sass/bootstrap/_carousel.scss", + "assets/css/_sass/bootstrap/_spinners.scss", + "assets/css/_sass/bootstrap/_utilities.scss", + "assets/css/_sass/bootstrap/utilities/_align.scss", + "assets/css/_sass/bootstrap/utilities/_background.scss", + "assets/css/_sass/bootstrap/utilities/_borders.scss", + "assets/css/_sass/bootstrap/utilities/_clearfix.scss", + "assets/css/_sass/bootstrap/utilities/_display.scss", + "assets/css/_sass/bootstrap/utilities/_embed.scss", + "assets/css/_sass/bootstrap/utilities/_flex.scss", + "assets/css/_sass/bootstrap/utilities/_float.scss", + "assets/css/_sass/bootstrap/utilities/_overflow.scss", + "assets/css/_sass/bootstrap/utilities/_position.scss", + "assets/css/_sass/bootstrap/utilities/_screenreaders.scss", + "assets/css/_sass/bootstrap/utilities/_shadows.scss", + "assets/css/_sass/bootstrap/utilities/_sizing.scss", + "assets/css/_sass/bootstrap/utilities/_stretched-link.scss", + "assets/css/_sass/bootstrap/utilities/_spacing.scss", + "assets/css/_sass/bootstrap/utilities/_text.scss", + "assets/css/_sass/bootstrap/utilities/_visibility.scss", + "assets/css/_sass/bootstrap/_print.scss", + "assets/css/_sass/style.scss", + "assets/css/_sass/custom.scss" + ], + "sourcesContent": [ + "@charset \"utf-8\";\n\n$primary: #A3C1AD;\n\n// Width of the content area\n$content-width: 800px;\n$on-palm: 600px;\n$on-laptop: 800px;\n\n// Use media queries like this:\n// @include media-query($on-palm) {\n// .wrapper {\n// padding-right: $spacing-unit / 2;\n// padding-left: $spacing-unit / 2;\n// }\n// }\n@mixin media-query($device) {\n @media screen and (max-width: $device) {\n @content;\n }\n}\n\n//@import \"bootstrap/bootstrap/bootstrap.css\";\n@import \"bootstrap/functions\";\n@import \"bootstrap/variables\";\n@import \"bootstrap/mixins\";\n@import \"bootstrap/root\";\n@import \"bootstrap/reboot\";\n@import \"bootstrap/type\";\n@import \"bootstrap/images\";\n@import \"bootstrap/code\";\n@import \"bootstrap/grid\";\n@import \"bootstrap/tables\";\n@import \"bootstrap/forms\";\n@import \"bootstrap/buttons\";\n@import \"bootstrap/transitions\";\n@import \"bootstrap/dropdown\";\n@import \"bootstrap/button-group\";\n@import \"bootstrap/input-group\";\n@import \"bootstrap/custom-forms\";\n@import \"bootstrap/nav\";\n@import \"bootstrap/navbar\";\n@import \"bootstrap/card\";\n@import \"bootstrap/breadcrumb\";\n@import \"bootstrap/pagination\";\n@import \"bootstrap/badge\";\n@import \"bootstrap/jumbotron\";\n@import \"bootstrap/alert\";\n@import \"bootstrap/progress\";\n@import \"bootstrap/media\";\n@import \"bootstrap/list-group\";\n@import \"bootstrap/close\";\n@import \"bootstrap/toasts\";\n@import \"bootstrap/modal\";\n@import \"bootstrap/tooltip\";\n@import \"bootstrap/popover\";\n@import \"bootstrap/carousel\";\n@import \"bootstrap/spinners\";\n@import \"bootstrap/utilities\";\n@import \"bootstrap/print\";\n\n@import \"style\", \"custom\";\n", + "// Bootstrap functions\n//\n// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.\n\n// Ascending\n// Used to evaluate Sass maps like our grid breakpoints.\n@mixin _assert-ascending($map, $map-name) {\n $prev-key: null;\n $prev-num: null;\n @each $key, $num in $map {\n @if $prev-num == null or unit($num) == \"%\" {\n // Do nothing\n } @else if not comparable($prev-num, $num) {\n @warn \"Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n } @else if $prev-num >= $num {\n @warn \"Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n }\n $prev-key: $key;\n $prev-num: $num;\n }\n}\n\n// Starts at zero\n// Used to ensure the min-width of the lowest breakpoint starts at 0.\n@mixin _assert-starts-at-zero($map, $map-name: \"$grid-breakpoints\") {\n $values: map-values($map);\n $first-value: nth($values, 1);\n @if $first-value != 0 {\n @warn \"First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.\";\n }\n}\n\n// Replace `$search` with `$replace` in `$string`\n// Used on our SVG icon backgrounds for custom forms.\n//\n// @author Hugo Giraudel\n// @param {String} $string - Initial string\n// @param {String} $search - Substring to replace\n// @param {String} $replace ('') - New value\n// @return {String} - Updated string\n@function str-replace($string, $search, $replace: \"\") {\n $index: str-index($string, $search);\n\n @if $index {\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n }\n\n @return $string;\n}\n\n// Color contrast\n@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {\n $r: red($color);\n $g: green($color);\n $b: blue($color);\n\n $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;\n\n @if ($yiq >= $yiq-contrasted-threshold) {\n @return $dark;\n } @else {\n @return $light;\n }\n}\n\n// Retrieve color Sass maps\n@function color($key: \"blue\") {\n @return map-get($colors, $key);\n}\n\n@function theme-color($key: \"primary\") {\n @return map-get($theme-colors, $key);\n}\n\n@function gray($key: \"100\") {\n @return map-get($grays, $key);\n}\n\n// Request a theme color level\n@function theme-color-level($color-name: \"primary\", $level: 0) {\n $color: theme-color($color-name);\n $color-base: if($level > 0, $black, $white);\n $level: abs($level);\n\n @return mix($color-base, $color, $level * $theme-color-interval);\n}\n", + "// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$grays: map-merge(\n (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n ),\n $grays\n);\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: map-merge(\n (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n ),\n $colors\n);\n\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-800 !default;\n\n$theme-colors: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$theme-colors: map-merge(\n (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n ),\n $theme-colors\n);\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n// The yiq lightness value that determines when the lightness of color changes from \"dark\" to \"light\". Acceptable values are between 0 and 255.\n$yiq-contrasted-threshold: 150 !default;\n\n// Customize the light and dark text colors for use in our YIQ color contrast function.\n$yiq-text-dark: $gray-900 !default;\n$yiq-text-light: $white !default;\n\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-prefers-reduced-motion-media-query: true !default;\n$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS\n$enable-grid-classes: true !default;\n$enable-pointer-cursor-for-buttons: true !default;\n$enable-print-styles: true !default;\n$enable-responsive-font-sizes: false !default;\n$enable-validation-icons: true !default;\n$enable-deprecation-messages: true !default;\n\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n$spacer: 1rem !default;\n$spacers: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$spacers: map-merge(\n (\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n ),\n $spacers\n);\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$sizes: map-merge(\n (\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%,\n auto: auto\n ),\n $sizes\n);\n\n\n// Body\n//\n// Settings for the `` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: underline !default;\n// Darken percentage for links with `.text-*` class (e.g. `.text-success`)\n$emphasized-link-hover-darken-percentage: 15% !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px\n) !default;\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px\n) !default;\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 30px !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n$line-height-lg: 1.5 !default;\n$line-height-sm: 1.5 !default;\n\n$border-width: 1px !default;\n$border-color: $gray-300 !default;\n\n$border-radius: .25rem !default;\n$border-radius-lg: .3rem !default;\n$border-radius-sm: .2rem !default;\n\n$rounded-pill: 50rem !default;\n\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n\n$component-active-color: $white !default;\n$component-active-bg: theme-color(\"primary\") !default;\n\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n$transition-collapse: height .35s ease !default;\n\n$embed-responsive-aspect-ratios: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$embed-responsive-aspect-ratios: join(\n (\n (21 9),\n (16 9),\n (4 3),\n (1 1),\n ),\n $embed-responsive-aspect-ratios\n);\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: \"Helvetica Neue\", Arial, \"Noto Sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n$font-family-base: $font-family-sans-serif !default;\n// stylelint-enable value-keyword-case\n\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-lg: $font-size-base * 1.25 !default;\n$font-size-sm: $font-size-base * .875 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n$line-height-base: 1.5 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n\n$headings-margin-bottom: $spacer / 2 !default;\n$headings-font-family: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: null !default;\n\n$display1-size: 6rem !default;\n$display2-size: 5.5rem !default;\n$display3-size: 4.5rem !default;\n$display4-size: 3.5rem !default;\n\n$display1-weight: 300 !default;\n$display2-weight: 300 !default;\n$display3-weight: 300 !default;\n$display4-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: 80% !default;\n\n$text-muted: $gray-600 !default;\n\n$blockquote-small-color: $gray-600 !default;\n$blockquote-small-font-size: $small-font-size !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n\n$hr-border-color: rgba($black, .1) !default;\n$hr-border-width: $border-width !default;\n\n$mark-padding: .2em !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$kbd-box-shadow: inset 0 -.1rem 0 rgba($black, .25) !default;\n$nested-kbd-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-bg: #fcf8e3 !default;\n\n$hr-margin-y: $spacer !default;\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n$table-cell-padding: .75rem !default;\n$table-cell-padding-sm: .3rem !default;\n\n$table-color: $body-color !default;\n$table-bg: null !default;\n$table-accent-bg: rgba($black, .05) !default;\n$table-hover-color: $table-color !default;\n$table-hover-bg: rgba($black, .075) !default;\n$table-active-bg: $table-hover-bg !default;\n\n$table-border-width: $border-width !default;\n$table-border-color: $border-color !default;\n\n$table-head-bg: $gray-200 !default;\n$table-head-color: $gray-700 !default;\n\n$table-dark-color: $white !default;\n$table-dark-bg: $gray-800 !default;\n$table-dark-accent-bg: rgba($white, .05) !default;\n$table-dark-hover-color: $table-dark-color !default;\n$table-dark-hover-bg: rgba($white, .075) !default;\n$table-dark-border-color: lighten($table-dark-bg, 7.5%) !default;\n$table-dark-color: $white !default;\n\n$table-striped-order: odd !default;\n\n$table-caption-color: $text-muted !default;\n\n$table-bg-level: -9 !default;\n$table-border-level: -6 !default;\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .2rem !default;\n$input-btn-focus-color: rgba($component-active-bg, .25) !default;\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n$input-btn-line-height-sm: $line-height-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n$input-btn-line-height-lg: $line-height-lg !default;\n\n$input-btn-border-width: $border-width !default;\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n$btn-line-height-sm: $input-btn-line-height-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n$btn-line-height-lg: $input-btn-line-height-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-disabled-color: $gray-600 !default;\n\n$btn-block-spacing-y: .5rem !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n\n// Forms\n\n$label-margin-bottom: .5rem !default;\n\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n$input-line-height-sm: $input-btn-line-height-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n$input-line-height-lg: $input-btn-line-height-lg !default;\n\n$input-bg: $white !default;\n$input-disabled-bg: $gray-200 !default;\n\n$input-color: $gray-700 !default;\n$input-border-color: $gray-400 !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: inset 0 1px 1px rgba($black, .075) !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-lg: $border-radius-lg !default;\n$input-border-radius-sm: $border-radius-sm !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: lighten($component-active-bg, 25%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: $gray-600 !default;\n$input-plaintext-color: $body-color !default;\n\n$input-height-border: $input-border-width * 2 !default;\n\n$input-height-inner: calc(#{$input-line-height * 1em} + #{$input-padding-y * 2}) !default;\n$input-height-inner-half: calc(#{$input-line-height * .5em} + #{$input-padding-y}) !default;\n$input-height-inner-quarter: calc(#{$input-line-height * .25em} + #{$input-padding-y / 2}) !default;\n\n$input-height: calc(#{$input-line-height * 1em} + #{$input-padding-y * 2} + #{$input-height-border}) !default;\n$input-height-sm: calc(#{$input-line-height-sm * 1em} + #{$input-btn-padding-y-sm * 2} + #{$input-height-border}) !default;\n$input-height-lg: calc(#{$input-line-height-lg * 1em} + #{$input-btn-padding-y-lg * 2} + #{$input-height-border}) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-text-margin-top: .25rem !default;\n\n$form-check-input-gutter: 1.25rem !default;\n$form-check-input-margin-y: .3rem !default;\n$form-check-input-margin-x: .25rem !default;\n\n$form-check-inline-margin-x: .75rem !default;\n$form-check-inline-input-margin-x: .3125rem !default;\n\n$form-grid-gutter-width: 10px !default;\n$form-group-margin-bottom: 1rem !default;\n\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n\n$custom-forms-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$custom-control-gutter: .5rem !default;\n$custom-control-spacer-x: 1rem !default;\n\n$custom-control-indicator-size: 1rem !default;\n$custom-control-indicator-bg: $input-bg !default;\n\n$custom-control-indicator-bg-size: 50% 50% !default;\n$custom-control-indicator-box-shadow: $input-box-shadow !default;\n$custom-control-indicator-border-color: $gray-500 !default;\n$custom-control-indicator-border-width: $input-border-width !default;\n\n$custom-control-indicator-disabled-bg: $input-disabled-bg !default;\n$custom-control-label-disabled-color: $gray-600 !default;\n\n$custom-control-indicator-checked-color: $component-active-color !default;\n$custom-control-indicator-checked-bg: $component-active-bg !default;\n$custom-control-indicator-checked-disabled-bg: rgba(theme-color(\"primary\"), .5) !default;\n$custom-control-indicator-checked-box-shadow: none !default;\n$custom-control-indicator-checked-border-color: $custom-control-indicator-checked-bg !default;\n\n$custom-control-indicator-focus-box-shadow: $input-focus-box-shadow !default;\n$custom-control-indicator-focus-border-color: $input-focus-border-color !default;\n\n$custom-control-indicator-active-color: $component-active-color !default;\n$custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;\n$custom-control-indicator-active-box-shadow: none !default;\n$custom-control-indicator-active-border-color: $custom-control-indicator-active-bg !default;\n\n$custom-checkbox-indicator-border-radius: $border-radius !default;\n$custom-checkbox-indicator-icon-checked: str-replace(url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e\"), \"#\", \"%23\") !default;\n\n$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;\n$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;\n$custom-checkbox-indicator-icon-indeterminate: str-replace(url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3e%3c/svg%3e\"), \"#\", \"%23\") !default;\n$custom-checkbox-indicator-indeterminate-box-shadow: none !default;\n$custom-checkbox-indicator-indeterminate-border-color: $custom-checkbox-indicator-indeterminate-bg !default;\n\n$custom-radio-indicator-border-radius: 50% !default;\n$custom-radio-indicator-icon-checked: str-replace(url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3e%3c/svg%3e\"), \"#\", \"%23\") !default;\n\n$custom-switch-width: $custom-control-indicator-size * 1.75 !default;\n$custom-switch-indicator-border-radius: $custom-control-indicator-size / 2 !default;\n$custom-switch-indicator-size: calc(#{$custom-control-indicator-size} - #{$custom-control-indicator-border-width * 4}) !default;\n\n$custom-select-padding-y: $input-padding-y !default;\n$custom-select-padding-x: $input-padding-x !default;\n$custom-select-font-family: $input-font-family !default;\n$custom-select-font-size: $input-font-size !default;\n$custom-select-height: $input-height !default;\n$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator\n$custom-select-font-weight: $input-font-weight !default;\n$custom-select-line-height: $input-line-height !default;\n$custom-select-color: $input-color !default;\n$custom-select-disabled-color: $gray-600 !default;\n$custom-select-bg: $input-bg !default;\n$custom-select-disabled-bg: $gray-200 !default;\n$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions\n$custom-select-indicator-color: $gray-800 !default;\n$custom-select-indicator: str-replace(url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\"), \"#\", \"%23\") !default;\n$custom-select-background: $custom-select-indicator no-repeat right $custom-select-padding-x center / $custom-select-bg-size !default; // Used so we can have multiple background elements (e.g., arrow and feedback icon)\n\n$custom-select-feedback-icon-padding-right: calc((1em + #{2 * $custom-select-padding-y}) * 3 / 4 + #{$custom-select-padding-x + $custom-select-indicator-padding}) !default;\n$custom-select-feedback-icon-position: center right ($custom-select-padding-x + $custom-select-indicator-padding) !default;\n$custom-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$custom-select-border-width: $input-border-width !default;\n$custom-select-border-color: $input-border-color !default;\n$custom-select-border-radius: $border-radius !default;\n$custom-select-box-shadow: inset 0 1px 2px rgba($black, .075) !default;\n\n$custom-select-focus-border-color: $input-focus-border-color !default;\n$custom-select-focus-width: $input-focus-width !default;\n$custom-select-focus-box-shadow: 0 0 0 $custom-select-focus-width $input-btn-focus-color !default;\n\n$custom-select-padding-y-sm: $input-padding-y-sm !default;\n$custom-select-padding-x-sm: $input-padding-x-sm !default;\n$custom-select-font-size-sm: $input-font-size-sm !default;\n$custom-select-height-sm: $input-height-sm !default;\n\n$custom-select-padding-y-lg: $input-padding-y-lg !default;\n$custom-select-padding-x-lg: $input-padding-x-lg !default;\n$custom-select-font-size-lg: $input-font-size-lg !default;\n$custom-select-height-lg: $input-height-lg !default;\n\n$custom-range-track-width: 100% !default;\n$custom-range-track-height: .5rem !default;\n$custom-range-track-cursor: pointer !default;\n$custom-range-track-bg: $gray-300 !default;\n$custom-range-track-border-radius: 1rem !default;\n$custom-range-track-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default;\n\n$custom-range-thumb-width: 1rem !default;\n$custom-range-thumb-height: $custom-range-thumb-width !default;\n$custom-range-thumb-bg: $component-active-bg !default;\n$custom-range-thumb-border: 0 !default;\n$custom-range-thumb-border-radius: 1rem !default;\n$custom-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$custom-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$custom-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in IE/Edge\n$custom-range-thumb-active-bg: lighten($component-active-bg, 35%) !default;\n$custom-range-thumb-disabled-bg: $gray-500 !default;\n\n$custom-file-height: $input-height !default;\n$custom-file-height-inner: $input-height-inner !default;\n$custom-file-focus-border-color: $input-focus-border-color !default;\n$custom-file-focus-box-shadow: $input-focus-box-shadow !default;\n$custom-file-disabled-bg: $input-disabled-bg !default;\n\n$custom-file-padding-y: $input-padding-y !default;\n$custom-file-padding-x: $input-padding-x !default;\n$custom-file-line-height: $input-line-height !default;\n$custom-file-font-family: $input-font-family !default;\n$custom-file-font-weight: $input-font-weight !default;\n$custom-file-color: $input-color !default;\n$custom-file-bg: $input-bg !default;\n$custom-file-border-width: $input-border-width !default;\n$custom-file-border-color: $input-border-color !default;\n$custom-file-border-radius: $input-border-radius !default;\n$custom-file-box-shadow: $input-box-shadow !default;\n$custom-file-button-color: $custom-file-color !default;\n$custom-file-button-bg: $input-group-addon-bg !default;\n$custom-file-text: (\n en: \"Browse\"\n) !default;\n\n\n// Form validation\n\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $small-font-size !default;\n$form-feedback-valid-color: theme-color(\"success\") !default;\n$form-feedback-invalid-color: theme-color(\"danger\") !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: str-replace(url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\"), \"#\", \"%23\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: str-replace(url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$form-feedback-icon-invalid-color}' viewBox='-2 -2 7 7'%3e%3cpath stroke='#{$form-feedback-icon-invalid-color}' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E\"), \"#\", \"%23\") !default;\n\n$form-validation-states: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-validation-states: map-merge(\n (\n \"valid\": (\n \"color\": $form-feedback-valid-color,\n \"icon\": $form-feedback-icon-valid\n ),\n \"invalid\": (\n \"color\": $form-feedback-invalid-color,\n \"icon\": $form-feedback-icon-invalid\n ),\n ),\n $form-validation-states\n);\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-modal-backdrop: 1040 !default;\n$zindex-modal: 1050 !default;\n$zindex-popover: 1060 !default;\n$zindex-tooltip: 1070 !default;\n\n\n// Navs\n\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: $gray-300 !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n$nav-divider-color: $gray-200 !default;\n$nav-divider-margin-y: $spacer / 2 !default;\n\n\n// Navbar\n\n$navbar-padding-y: $spacer / 2 !default;\n$navbar-padding-x: $spacer !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n\n$navbar-dark-color: rgba($white, .5) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: str-replace(url(\"data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\"), \"#\", \"%23\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n\n$navbar-light-color: rgba($black, .5) !default;\n$navbar-light-hover-color: rgba($black, .7) !default;\n$navbar-light-active-color: rgba($black, .9) !default;\n$navbar-light-disabled-color: rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg: str-replace(url(\"data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\"), \"#\", \"%23\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: $body-color !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: rgba($black, .15) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default;\n$dropdown-divider-bg: $gray-200 !default;\n$dropdown-divider-margin-y: $nav-divider-margin-y !default;\n$dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: darken($gray-900, 5%) !default;\n$dropdown-link-hover-bg: $gray-100 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-600 !default;\n\n$dropdown-item-padding-y: .25rem !default;\n$dropdown-item-padding-x: 1.5rem !default;\n\n$dropdown-header-color: $gray-600 !default;\n\n\n// Pagination\n\n$pagination-padding-y: .5rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n$pagination-line-height: 1.25 !default;\n\n$pagination-color: $link-color !default;\n$pagination-bg: $white !default;\n$pagination-border-width: $border-width !default;\n$pagination-border-color: $gray-300 !default;\n\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: $link-hover-color !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: $gray-300 !default;\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $pagination-active-bg !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: $gray-300 !default;\n\n\n// Jumbotron\n\n$jumbotron-padding: 2rem !default;\n$jumbotron-color: null !default;\n$jumbotron-bg: $gray-200 !default;\n\n\n// Cards\n\n$card-spacer-y: .75rem !default;\n$card-spacer-x: 1.25rem !default;\n$card-border-width: $border-width !default;\n$card-border-radius: $border-radius !default;\n$card-border-color: rgba($black, .125) !default;\n$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-cap-color: null !default;\n$card-color: null !default;\n$card-bg: $white !default;\n\n$card-img-overlay-padding: 1.25rem !default;\n\n$card-group-margin: $grid-gutter-width / 2 !default;\n$card-deck-margin: $card-group-margin !default;\n\n$card-columns-count: 3 !default;\n$card-columns-gap: 1.25rem !default;\n$card-columns-margin: $card-spacer-y !default;\n\n\n// Tooltips\n\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-border-radius: $border-radius !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: .25rem !default;\n$tooltip-padding-x: .5rem !default;\n$tooltip-margin: 0 !default;\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n$tooltip-arrow-color: $tooltip-bg !default;\n\n// Form tooltips must come after regular tooltips\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: $line-height-base !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n\n\n// Popovers\n\n$popover-font-size: $font-size-sm !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: rgba($black, .2) !default;\n$popover-border-radius: $border-radius-lg !default;\n$popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default;\n\n$popover-header-bg: darken($popover-bg, 3%) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: .75rem !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: $popover-header-padding-y !default;\n$popover-body-padding-x: $popover-header-padding-x !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n$popover-arrow-color: $popover-bg !default;\n\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\n\n\n// Toasts\n\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .25rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba($white, .85) !default;\n$toast-border-width: 1px !default;\n$toast-border-color: rgba(0, 0, 0, .1) !default;\n$toast-border-radius: .25rem !default;\n$toast-box-shadow: 0 .25rem .75rem rgba($black, .1) !default;\n\n$toast-header-color: $gray-600 !default;\n$toast-header-background-color: rgba($white, .85) !default;\n$toast-header-border-color: rgba(0, 0, 0, .05) !default;\n\n\n// Badges\n\n$badge-font-size: 75% !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-padding-y: .25em !default;\n$badge-padding-x: .4em !default;\n$badge-border-radius: $border-radius !default;\n\n$badge-transition: $btn-transition !default;\n$badge-focus-width: $input-btn-focus-width !default;\n\n$badge-pill-padding-x: .6em !default;\n// Use a higher than normal value to ensure completely rounded edges when\n// customizing padding or font-size on labels.\n$badge-pill-border-radius: 10rem !default;\n\n\n// Modals\n\n// Padding applied to the modal body\n$modal-inner-padding: 1rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: $white !default;\n$modal-content-border-color: rgba($black, .2) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-border-radius: $border-radius-lg !default;\n$modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;\n$modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n$modal-header-border-color: $border-color !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n$modal-header-padding-y: 1rem !default;\n$modal-header-padding-x: 1rem !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-xl: 1140px !default;\n$modal-lg: 800px !default;\n$modal-md: 500px !default;\n$modal-sm: 300px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n$alert-padding-y: .75rem !default;\n$alert-padding-x: 1.25rem !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n\n$alert-bg-level: -10 !default;\n$alert-border-level: -9 !default;\n$alert-color-level: 6 !default;\n\n\n// Progress bars\n\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: inset 0 .1rem .1rem rgba($black, .1) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: theme-color(\"primary\") !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n\n\n// List group\n\n$list-group-color: null !default;\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black, .125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: .75rem !default;\n$list-group-item-padding-x: 1.25rem !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n\n\n// Image thumbnails\n\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: $gray-300 !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: 0 1px 2px rgba($black, .075) !default;\n\n\n// Figures\n\n$figure-caption-font-size: 90% !default;\n$figure-caption-color: $gray-600 !default;\n\n\n// Breadcrumbs\n\n$breadcrumb-padding-y: .75rem !default;\n$breadcrumb-padding-x: 1rem !default;\n$breadcrumb-item-padding: .5rem !default;\n\n$breadcrumb-margin-bottom: 1rem !default;\n\n$breadcrumb-bg: $gray-200 !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: quote(\"/\") !default;\n\n$breadcrumb-border-radius: $border-radius !default;\n\n\n// Carousel\n\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n\n$carousel-control-icon-width: 20px !default;\n\n$carousel-control-prev-icon-bg: str-replace(url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e\"), \"#\", \"%23\") !default;\n$carousel-control-next-icon-bg: str-replace(url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e\"), \"#\", \"%23\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n\n\n// Spinners\n\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-border-width: .25em !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n\n\n// Close\n\n$close-font-size: $font-size-base * 1.5 !default;\n$close-font-weight: $font-weight-bold !default;\n$close-color: $black !default;\n$close-text-shadow: 0 1px 0 $white !default;\n\n\n// Code\n\n$code-font-size: 87.5% !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .2rem !default;\n$kbd-padding-x: .4rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: $white !default;\n$kbd-bg: $gray-900 !default;\n\n$pre-color: $gray-900 !default;\n$pre-scrollable-max-height: 340px !default;\n\n\n// Utilities\n\n$displays: none, inline, inline-block, block, table, table-row, table-cell, flex, inline-flex !default;\n$overflows: auto, hidden !default;\n$positions: static, relative, absolute, fixed, sticky !default;\n\n\n// Printing\n\n$print-page-size: a3 !default;\n$print-body-min-width: map-get($grid-breakpoints, \"lg\") !default;\n", + "// Toggles\n//\n// Used in conjunction with global variables to enable certain theme features.\n\n// Vendor\n@import \"vendor/rfs\";\n\n// Deprecate\n@import \"mixins/deprecate\";\n\n// Utilities\n@import \"mixins/breakpoints\";\n@import \"mixins/hover\";\n@import \"mixins/image\";\n@import \"mixins/badge\";\n@import \"mixins/resize\";\n@import \"mixins/screen-reader\";\n@import \"mixins/size\";\n@import \"mixins/reset-text\";\n@import \"mixins/text-emphasis\";\n@import \"mixins/text-hide\";\n@import \"mixins/text-truncate\";\n@import \"mixins/visibility\";\n\n// // Components\n@import \"mixins/alert\";\n@import \"mixins/buttons\";\n@import \"mixins/caret\";\n@import \"mixins/pagination\";\n@import \"mixins/lists\";\n@import \"mixins/list-group\";\n@import \"mixins/nav-divider\";\n@import \"mixins/forms\";\n@import \"mixins/table-row\";\n\n// // Skins\n@import \"mixins/background-variant\";\n@import \"mixins/border-radius\";\n@import \"mixins/box-shadow\";\n@import \"mixins/gradients\";\n@import \"mixins/transition\";\n\n// // Layout\n@import \"mixins/clearfix\";\n@import \"mixins/grid-framework\";\n@import \"mixins/grid\";\n@import \"mixins/float\";\n", + "// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated font-resizing\n//\n// See https://github.com/twbs/rfs\n\n// Configuration\n\n// Base font size\n$rfs-base-font-size: 1.25rem !default;\n$rfs-font-size-unit: rem !default;\n\n// Breakpoint at where font-size starts decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n// Resize font-size based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != \"number\" or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-responsive-font-sizes to false\n$enable-responsive-font-sizes: true !default;\n\n// Cache $rfs-base-font-size unit\n$rfs-base-font-size-unit: unit($rfs-base-font-size);\n\n// Remove px-unit from $rfs-base-font-size for calculations\n@if $rfs-base-font-size-unit == \"px\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);\n}\n@else if $rfs-base-font-size-unit == \"rem\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == \"px\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == \"rem\" or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);\n}\n\n// Responsive font-size mixin\n@mixin rfs($fs, $important: false) {\n // Cache $fs unit\n $fs-unit: if(type-of($fs) == \"number\", unit($fs), false);\n\n // Add !important suffix if needed\n $rfs-suffix: if($important, \" !important\", \"\");\n\n // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $fs-unit or $fs-unit != \"\" and $fs-unit != \"px\" and $fs-unit != \"rem\" or $fs == 0 {\n font-size: #{$fs}#{$rfs-suffix};\n }\n @else {\n // Variables for storing static and fluid rescaling\n $rfs-static: null;\n $rfs-fluid: null;\n\n // Remove px-unit from $fs for calculations\n @if $fs-unit == \"px\" {\n $fs: $fs / ($fs * 0 + 1);\n }\n @else if $fs-unit == \"rem\" {\n $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);\n }\n\n // Set default font-size\n @if $rfs-font-size-unit == rem {\n $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};\n }\n @else if $rfs-font-size-unit == px {\n $rfs-static: #{$fs}px#{$rfs-suffix};\n }\n @else {\n @error \"`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.\";\n }\n\n // Only add media query if font-size is bigger as the minimum font-size\n // If $rfs-factor == 1, no rescaling will take place\n @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {\n $min-width: null;\n $variable-unit: null;\n\n // Calculate minimum font-size for given font-size\n $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;\n\n // Calculate difference between given font-size and minimum font-size for given font-size\n $fs-diff: $fs - $fs-min;\n\n // Base font-size formatting\n // No need to check if the unit is valid, because we did that before\n $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);\n\n // If two-dimensional, use smallest of screen width and height\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};\n\n // Set the calculated font-size.\n $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};\n }\n\n // Rendering\n @if $rfs-fluid == null {\n // Only render static font-size if no fluid font-size is available\n font-size: $rfs-static;\n }\n @else {\n $mq-value: null;\n\n // RFS breakpoint formatting\n @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {\n $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};\n }\n @else if $rfs-breakpoint-unit == px {\n $mq-value: #{$rfs-breakpoint}px;\n }\n @else {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n }\n\n @if $rfs-class == \"disable\" {\n // Adding an extra class increases specificity,\n // which prevents the media query to override the font size\n &,\n .disable-responsive-font-size &,\n &.disable-responsive-font-size {\n font-size: $rfs-static;\n }\n }\n @else {\n font-size: $rfs-static;\n }\n\n @if $rfs-two-dimensional {\n @media (max-width: #{$mq-value}), (max-height: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n @else {\n @media (max-width: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n }\n }\n}\n\n// The font-size & responsive-font-size mixin uses RFS to rescale font sizes\n@mixin font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n\n@mixin responsive-font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n", + "// Deprecate mixin\n//\n// This mixin can be used to deprecate mixins or functions.\n// `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to\n// some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap)\n@mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) {\n @if ($enable-deprecation-messages != false and $ignore-warning != true) {\n @warn \"#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}.\";\n }\n}\n", + "// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n", + "// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Originally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS-an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular pseudo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover {\n &:hover { @content; }\n}\n\n@mixin hover-focus {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n", + "// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size.\n\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n background-image: url($file-1x);\n\n // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\n // but doesn't convert dppx=>dpi.\n // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\n // Compatibility info: https://caniuse.com/#feat=css-media-resolution\n @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\n only screen and (min-resolution: 2dppx) { // Standardized\n background-image: url($file-2x);\n background-size: $width-1x $height-1x;\n }\n @include deprecate(\"`img-retina()`\", \"v4.3.0\", \"v5\");\n}\n", + "@mixin badge-variant($bg) {\n color: color-yiq($bg);\n background-color: $bg;\n\n @at-root a#{&} {\n @include hover-focus {\n color: color-yiq($bg);\n background-color: darken($bg, 10%);\n }\n\n &:focus,\n &.focus {\n outline: 0;\n box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5);\n }\n }\n}\n", + "// Resize anything\n\n@mixin resizable($direction) {\n overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`\n resize: $direction; // Options: horizontal, vertical, both\n}\n", + "// Only display content to screen readers\n//\n// See: https://a11yproject.com/posts/how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n//\n// Credit: HTML5 Boilerplate\n\n@mixin sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n }\n}\n", + "// Sizing shortcuts\n\n@mixin size($width, $height: $width) {\n width: $width;\n height: $height;\n @include deprecate(\"`size()`\", \"v4.3.0\", \"v5\");\n}\n", + "@mixin reset-text {\n font-family: $font-family-base;\n // We deliberately do NOT reset font-size or word-wrap.\n font-style: normal;\n font-weight: $font-weight-normal;\n line-height: $line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n}\n", + "// stylelint-disable declaration-no-important\n\n// Typography\n\n@mixin text-emphasis-variant($parent, $color) {\n #{$parent} {\n color: $color !important;\n }\n @if $emphasized-link-hover-darken-percentage != 0 {\n a#{$parent} {\n @include hover-focus {\n color: darken($color, $emphasized-link-hover-darken-percentage) !important;\n }\n }\n }\n}\n", + "// CSS image replacement\n@mixin text-hide($ignore-warning: false) {\n // stylelint-disable-next-line font-family-no-missing-generic-family-keyword\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n\n @include deprecate(\"`text-hide()`\", \"v4.1.0\", \"v5\", $ignore-warning);\n}\n", + "// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n", + "// stylelint-disable declaration-no-important\n\n// Visibility\n\n@mixin invisible($visibility) {\n visibility: $visibility !important;\n @include deprecate(\"`invisible()`\", \"v4.3.0\", \"v5\");\n}\n", + "@mixin alert-variant($background, $border, $color) {\n color: $color;\n @include gradient-bg($background);\n border-color: $border;\n\n hr {\n border-top-color: darken($border, 5%);\n }\n\n .alert-link {\n color: darken($color, 10%);\n }\n}\n", + "// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {\n color: color-yiq($background);\n @include gradient-bg($background);\n border-color: $border;\n @include box-shadow($btn-box-shadow);\n\n @include hover {\n color: color-yiq($hover-background);\n @include gradient-bg($hover-background);\n border-color: $hover-border;\n }\n\n &:focus,\n &.focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n color: color-yiq($background);\n background-color: $background;\n border-color: $border;\n // Remove CSS gradients if they're enabled\n @if $enable-gradients {\n background-image: none;\n }\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n @if $enable-gradients {\n background-image: none; // Remove the gradient for the pressed/active state\n }\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n }\n}\n\n@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {\n color: $color;\n border-color: $color;\n\n @include hover {\n color: $color-hover;\n background-color: $active-background;\n border-color: $active-border;\n }\n\n &:focus,\n &.focus {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n\n &.disabled,\n &:disabled {\n color: $color;\n background-color: transparent;\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n }\n }\n}\n\n// Button sizes\n@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n // Manually declare to provide an override to the browser default\n @include border-radius($border-radius, 0);\n}\n", + "@mixin caret-down {\n border-top: $caret-width solid;\n border-right: $caret-width solid transparent;\n border-bottom: 0;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-up {\n border-top: 0;\n border-right: $caret-width solid transparent;\n border-bottom: $caret-width solid;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-right {\n border-top: $caret-width solid transparent;\n border-right: 0;\n border-bottom: $caret-width solid transparent;\n border-left: $caret-width solid;\n}\n\n@mixin caret-left {\n border-top: $caret-width solid transparent;\n border-right: $caret-width solid;\n border-bottom: $caret-width solid transparent;\n}\n\n@mixin caret($direction: down) {\n @if $enable-caret {\n &::after {\n display: inline-block;\n margin-left: $caret-spacing;\n vertical-align: $caret-vertical-align;\n content: \"\";\n @if $direction == down {\n @include caret-down;\n } @else if $direction == up {\n @include caret-up;\n } @else if $direction == right {\n @include caret-right;\n }\n }\n\n @if $direction == left {\n &::after {\n display: none;\n }\n\n &::before {\n display: inline-block;\n margin-right: $caret-spacing;\n vertical-align: $caret-vertical-align;\n content: \"\";\n @include caret-left;\n }\n }\n\n &:empty::after {\n margin-left: 0;\n }\n }\n}\n", + "// Pagination\n\n@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n .page-link {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n }\n\n .page-item {\n &:first-child {\n .page-link {\n @include border-left-radius($border-radius);\n }\n }\n &:last-child {\n .page-link {\n @include border-right-radius($border-radius);\n }\n }\n }\n}\n", + "// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n", + "// List Groups\n\n@mixin list-group-item-variant($state, $background, $color) {\n .list-group-item-#{$state} {\n color: $color;\n background-color: $background;\n\n &.list-group-item-action {\n @include hover-focus {\n color: $color;\n background-color: darken($background, 5%);\n }\n\n &.active {\n color: $white;\n background-color: $color;\n border-color: $color;\n }\n }\n }\n}\n", + "// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n@mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y) {\n height: 0;\n margin: $margin-y 0;\n overflow: hidden;\n border-top: 1px solid $color;\n}\n", + "// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `$input-focus-border-color` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n@mixin form-control-focus() {\n &:focus {\n color: $input-focus-color;\n background-color: $input-focus-bg;\n border-color: $input-focus-border-color;\n outline: 0;\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $input-box-shadow, $input-focus-box-shadow;\n } @else {\n box-shadow: $input-focus-box-shadow;\n }\n }\n}\n\n\n@mixin form-validation-state($state, $color, $icon) {\n .#{$state}-feedback {\n display: none;\n width: 100%;\n margin-top: $form-feedback-margin-top;\n @include font-size($form-feedback-font-size);\n color: $color;\n }\n\n .#{$state}-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%; // Contain to parent when possible\n padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n margin-top: .1rem;\n @include font-size($form-feedback-tooltip-font-size);\n line-height: $form-feedback-tooltip-line-height;\n color: color-yiq($color);\n background-color: rgba($color, $form-feedback-tooltip-opacity);\n @include border-radius($form-feedback-tooltip-border-radius);\n }\n\n .form-control {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-image: $icon;\n background-repeat: no-repeat;\n background-position: center right $input-height-inner-quarter;\n background-size: $input-height-inner-half $input-height-inner-half;\n }\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n // stylelint-disable-next-line selector-no-qualifying-type\n textarea.form-control {\n .was-validated &:#{$state},\n &.is-#{$state} {\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n }\n }\n }\n\n .custom-select {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n @if $enable-validation-icons {\n padding-right: $custom-select-feedback-icon-padding-right;\n background: $custom-select-background, $icon $custom-select-bg no-repeat $custom-select-feedback-icon-position / $custom-select-feedback-icon-size;\n }\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n\n .form-control-file {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .form-check-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .form-check-label {\n color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .custom-control-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-control-label {\n color: $color;\n\n &::before {\n border-color: $color;\n }\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:checked {\n ~ .custom-control-label::before {\n border-color: lighten($color, 10%);\n @include gradient-bg(lighten($color, 10%));\n }\n }\n\n &:focus {\n ~ .custom-control-label::before {\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n &:not(:checked) ~ .custom-control-label::before {\n border-color: $color;\n }\n }\n }\n }\n\n // custom file\n .custom-file-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-file-label {\n border-color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:focus {\n ~ .custom-file-label {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n }\n }\n }\n}\n", + "// Tables\n\n@mixin table-row-variant($state, $background, $border: null) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table-#{$state} {\n &,\n > th,\n > td {\n background-color: $background;\n }\n\n @if $border != null {\n th,\n td,\n thead th,\n tbody + tbody {\n border-color: $border;\n }\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover {\n $hover-background: darken($background, 5%);\n\n .table-#{$state} {\n @include hover {\n background-color: $hover-background;\n\n > td,\n > th {\n background-color: $hover-background;\n }\n }\n }\n }\n}\n", + "// stylelint-disable declaration-no-important\n\n// Contextual backgrounds\n\n@mixin bg-variant($parent, $color) {\n #{$parent} {\n background-color: $color !important;\n }\n a#{$parent},\n button#{$parent} {\n @include hover-focus {\n background-color: darken($color, 10%) !important;\n }\n }\n}\n\n@mixin bg-gradient-variant($parent, $color) {\n #{$parent} {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;\n }\n}\n", + "// stylelint-disable property-blacklist\n// Single side border-radius\n\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n @if $enable-rounded {\n border-radius: $radius;\n }\n @else if $fallback-border-radius != false {\n border-radius: $fallback-border-radius;\n }\n}\n\n@mixin border-top-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-top-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n }\n}\n\n@mixin border-top-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-right-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-left-radius($radius) {\n @if $enable-rounded {\n border-bottom-left-radius: $radius;\n }\n}\n", + "@mixin box-shadow($shadow...) {\n @if $enable-shadows {\n $result: ();\n\n @if (length($shadow) == 1) {\n // We can pass `@include box-shadow(none);`\n $result: $shadow;\n } @else {\n // Filter to avoid invalid properties for example `box-shadow: none, 1px 1px black;`\n @for $i from 1 through length($shadow) {\n @if nth($shadow, $i) != \"none\" {\n $result: append($result, nth($shadow, $i), \"comma\");\n }\n }\n }\n @if (length($result) > 0) {\n box-shadow: $result;\n }\n }\n}\n", + "// Gradients\n\n@mixin gradient-bg($color) {\n @if $enable-gradients {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x;\n } @else {\n background-color: $color;\n }\n}\n\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {\n background-image: linear-gradient($deg, $start-color, $end-color);\n background-repeat: repeat-x;\n}\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {\n background-image: radial-gradient(circle, $inner-color, $outer-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n", + "// stylelint-disable property-blacklist\n@mixin transition($transition...) {\n @if $enable-transitions {\n @if length($transition) == 0 {\n transition: $transition-base;\n } @else {\n transition: $transition;\n }\n }\n\n @if $enable-prefers-reduced-motion-media-query {\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n}\n", + "@mixin clearfix() {\n &::after {\n display: block;\n clear: both;\n content: \"\";\n }\n}\n", + "// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col#{$infix}-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%; // Reset earlier grid tiers\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n .order#{$infix}-first { order: -1; }\n\n .order#{$infix}-last { order: $columns + 1; }\n\n @for $i from 0 through $columns {\n .order#{$infix}-#{$i} { order: $i; }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n }\n}\n", + "/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container($gutter: $grid-gutter-width) {\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n margin-right: auto;\n margin-left: auto;\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row($gutter: $grid-gutter-width) {\n display: flex;\n flex-wrap: wrap;\n margin-right: -$gutter / 2;\n margin-left: -$gutter / 2;\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n", + "// stylelint-disable declaration-no-important\n\n@mixin float-left {\n float: left !important;\n @include deprecate(\"The `float-left` mixin\", \"v4.3.0\", \"v5\");\n}\n@mixin float-right {\n float: right !important;\n @include deprecate(\"The `float-right` mixin\", \"v4.3.0\", \"v5\");\n}\n@mixin float-none {\n float: none !important;\n @include deprecate(\"The `float-none` mixin\", \"v4.3.0\", \"v5\");\n}\n", + ":root {\n // Custom variable values only support SassScript inside `#{}`.\n @each $color, $value in $colors {\n --#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$color}: #{$value};\n }\n\n @each $bp, $value in $grid-breakpoints {\n --breakpoint-#{$bp}: #{$value};\n }\n\n // Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --font-family-sans-serif: #{inspect($font-family-sans-serif)};\n --font-family-monospace: #{inspect($font-family-monospace)};\n}\n", + "// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Change the default tap highlight to be completely transparent in iOS.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box; // 1\n}\n\nhtml {\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -webkit-tap-highlight-color: rgba($black, 0); // 5\n}\n\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\n// TODO: remove in v5\n// stylelint-disable-next-line selector-list-comma-newline-after\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Set an explicit initial text-align value so that we can later use\n// the `inherit` value on things like `` elements.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: left; // 3\n background-color: $body-bg; // 2\n}\n\n// Suppress the focus outline on elements that cannot be accessed via keyboard.\n// This prevents an unwanted focus outline from appearing around elements that\n// might still respond to pointer events.\n//\n// Credit: https://github.com/suitcss/base\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `

    `-`

    ` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n// stylelint-disable-next-line selector-list-comma-newline-after\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: $headings-margin-bottom;\n}\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

    `s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Remove the bottom border in Firefox 39-.\n// 5. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-original-title] { // 1\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 4\n text-decoration-skip-ink: none; // 5\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n\nsmall {\n @include font-size(80%); // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n @include font-size(75%);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n\n @include hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href)\n// which have not been made explicitly keyboard-focusable (without tabindex).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n\n @include hover-focus {\n color: inherit;\n text-decoration: none;\n }\n\n &:focus {\n outline: 0;\n }\n}\n\n\n//\n// Code\n//\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-monospace;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg {\n // Workaround for the SVG overflow bug in IE10/11 is still required.\n // See https://github.com/twbs/bootstrap/issues/26878\n overflow: hidden;\n vertical-align: middle;\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $table-caption-color;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Matches default `` alignment by inheriting from the ``, or the\n // closest parent with a set `text-align`.\n text-align: inherit;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: $label-margin-bottom;\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24093\nbutton {\n // stylelint-disable-next-line property-blacklist\n border-radius: 0;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// Remove the inheritance of word-wrap in Safari.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24990\nselect {\n word-wrap: normal;\n}\n\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\nbutton,\n[type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; // 2\n}\n\n// Opinionated: add \"hand\" cursor to non-disabled button elements.\n@if $enable-pointer-cursor-for-buttons {\n button,\n [type=\"button\"],\n [type=\"reset\"],\n [type=\"submit\"] {\n &:not(:disabled) {\n cursor: pointer;\n }\n }\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box; // 1. Add the correct box sizing in IE 10-\n padding: 0; // 2. Remove the padding in IE 10-\n}\n\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n // Remove the default appearance of temporal inputs to avoid a Mobile Safari\n // bug where setting a custom line-height prevents text from being vertically\n // centered within the input.\n // See https://bugs.webkit.org/show_bug.cgi?id=139848\n // and https://github.com/twbs/bootstrap/issues/11266\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto; // Remove the default vertical scrollbar in IE.\n // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n resize: vertical;\n}\n\nfieldset {\n // Browsers set a default `min-width: min-content;` on fieldsets,\n // unlike e.g. `

    `s, which have `min-width: 0;` by default.\n // So we reset that to ensure fieldsets behave more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359\n // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n min-width: 0;\n // Reset the default outline behavior of fieldsets so they don't affect page layout.\n padding: 0;\n margin: 0;\n border: 0;\n}\n\n// 1. Correct the text wrapping in Edge and IE.\n// 2. Correct the color inheritance from `fieldset` elements in IE.\nlegend {\n display: block;\n width: 100%;\n max-width: 100%; // 1\n padding: 0;\n margin-bottom: .5rem;\n @include font-size(1.5rem);\n line-height: inherit;\n color: inherit; // 2\n white-space: normal; // 1\n}\n\nprogress {\n vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n}\n\n// Correct the cursor style of increment and decrement buttons in Chrome.\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n outline-offset: -2px; // 2. Correct the outline style in Safari.\n -webkit-appearance: none;\n}\n\n//\n// Remove the inner padding in Chrome and Safari on macOS.\n//\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// 1. Correct the inability to style clickable types in iOS and Safari.\n// 2. Change font properties to `inherit` in Safari.\n//\n\n::-webkit-file-upload-button {\n font: inherit; // 2\n -webkit-appearance: button; // 1\n}\n\n//\n// Correct element displays\n//\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item; // Add the correct display in all browsers\n cursor: pointer;\n}\n\ntemplate {\n display: none; // Add the correct display in IE\n}\n\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\n// Needed for proper display in IE 10-.\n[hidden] {\n display: none !important;\n}\n", + "// stylelint-disable declaration-no-important, selector-list-comma-newline-after\n\n//\n// Headings\n//\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1, .h1 { @include font-size($h1-font-size); }\nh2, .h2 { @include font-size($h2-font-size); }\nh3, .h3 { @include font-size($h3-font-size); }\nh4, .h4 { @include font-size($h4-font-size); }\nh5, .h5 { @include font-size($h5-font-size); }\nh6, .h6 { @include font-size($h6-font-size); }\n\n.lead {\n @include font-size($lead-font-size);\n font-weight: $lead-font-weight;\n}\n\n// Type display classes\n.display-1 {\n @include font-size($display1-size);\n font-weight: $display1-weight;\n line-height: $display-line-height;\n}\n.display-2 {\n @include font-size($display2-size);\n font-weight: $display2-weight;\n line-height: $display-line-height;\n}\n.display-3 {\n @include font-size($display3-size);\n font-weight: $display3-weight;\n line-height: $display-line-height;\n}\n.display-4 {\n @include font-size($display4-size);\n font-weight: $display4-weight;\n line-height: $display-line-height;\n}\n\n\n//\n// Horizontal rules\n//\n\nhr {\n margin-top: $hr-margin-y;\n margin-bottom: $hr-margin-y;\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n}\n\n\n//\n// Emphasis\n//\n\nsmall,\n.small {\n @include font-size($small-font-size);\n font-weight: $font-weight-normal;\n}\n\nmark,\n.mark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n//\n// Lists\n//\n\n.list-unstyled {\n @include list-unstyled;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n @include list-unstyled;\n}\n.list-inline-item {\n display: inline-block;\n\n &:not(:last-child) {\n margin-right: $list-inline-padding;\n }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n @include font-size(90%);\n text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n margin-bottom: $spacer;\n @include font-size($blockquote-font-size);\n}\n\n.blockquote-footer {\n display: block;\n @include font-size($blockquote-small-font-size);\n color: $blockquote-small-color;\n\n &::before {\n content: \"\\2014\\00A0\"; // em dash, nbsp\n }\n}\n", + "// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all ``s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n @include img-fluid;\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n padding: $thumbnail-padding;\n background-color: $thumbnail-bg;\n border: $thumbnail-border-width solid $thumbnail-border-color;\n @include border-radius($thumbnail-border-radius);\n @include box-shadow($thumbnail-box-shadow);\n\n // Keep them at most 100% wide\n @include img-fluid;\n}\n\n//\n// Figures\n//\n\n.figure {\n // Ensures the caption's text aligns with the image.\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: $spacer / 2;\n line-height: 1;\n}\n\n.figure-caption {\n @include font-size($figure-caption-font-size);\n color: $figure-caption-color;\n}\n", + "// Inline code\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-break: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n @include box-shadow($kbd-box-shadow);\n\n kbd {\n padding: 0;\n @include font-size(100%);\n font-weight: $nested-kbd-font-weight;\n @include box-shadow(none);\n }\n}\n\n// Blocks of code\npre {\n display: block;\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: $pre-scrollable-max-height;\n overflow-y: scroll;\n}\n", + "// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n .container {\n @include make-container();\n @include make-container-max-widths();\n }\n}\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but with 100% width for\n// fluid, full width layouts.\n\n@if $enable-grid-classes {\n .container-fluid {\n @include make-container();\n }\n}\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n }\n\n // Remove the negative margin from default .row, then the horizontal padding\n // from all immediate children columns (to prevent runaway style inheritance).\n .no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n }\n}\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n", + "//\n// Basic Bootstrap table\n//\n\n.table {\n width: 100%;\n margin-bottom: $spacer;\n color: $table-color;\n background-color: $table-bg; // Reset for nesting within parents with `background-color`.\n\n th,\n td {\n padding: $table-cell-padding;\n vertical-align: top;\n border-top: $table-border-width solid $table-border-color;\n }\n\n thead th {\n vertical-align: bottom;\n border-bottom: (2 * $table-border-width) solid $table-border-color;\n }\n\n tbody + tbody {\n border-top: (2 * $table-border-width) solid $table-border-color;\n }\n}\n\n\n//\n// Condensed table w/ half padding\n//\n\n.table-sm {\n th,\n td {\n padding: $table-cell-padding-sm;\n }\n}\n\n\n// Border versions\n//\n// Add or remove borders all around the table and between all the columns.\n\n.table-bordered {\n border: $table-border-width solid $table-border-color;\n\n th,\n td {\n border: $table-border-width solid $table-border-color;\n }\n\n thead {\n th,\n td {\n border-bottom-width: 2 * $table-border-width;\n }\n }\n}\n\n.table-borderless {\n th,\n td,\n thead th,\n tbody + tbody {\n border: 0;\n }\n}\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n tbody tr:nth-of-type(#{$table-striped-order}) {\n background-color: $table-accent-bg;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n tbody tr {\n @include hover {\n color: $table-hover-color;\n background-color: $table-hover-bg;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n@each $color, $value in $theme-colors {\n @include table-row-variant($color, theme-color-level($color, $table-bg-level), theme-color-level($color, $table-border-level));\n}\n\n@include table-row-variant(active, $table-active-bg);\n\n\n// Dark styles\n//\n// Same table markup, but inverted color scheme: dark background and light text.\n\n// stylelint-disable-next-line no-duplicate-selectors\n.table {\n .thead-dark {\n th {\n color: $table-dark-color;\n background-color: $table-dark-bg;\n border-color: $table-dark-border-color;\n }\n }\n\n .thead-light {\n th {\n color: $table-head-color;\n background-color: $table-head-bg;\n border-color: $table-border-color;\n }\n }\n}\n\n.table-dark {\n color: $table-dark-color;\n background-color: $table-dark-bg;\n\n th,\n td,\n thead th {\n border-color: $table-dark-border-color;\n }\n\n &.table-bordered {\n border: 0;\n }\n\n &.table-striped {\n tbody tr:nth-of-type(odd) {\n background-color: $table-dark-accent-bg;\n }\n }\n\n &.table-hover {\n tbody tr {\n @include hover {\n color: $table-dark-hover-color;\n background-color: $table-dark-hover-bg;\n }\n }\n }\n}\n\n\n// Responsive tables\n//\n// Generate series of `.table-responsive-*` classes for configuring the screen\n// size of where your table will overflow.\n\n.table-responsive {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\n $infix: breakpoint-infix($next, $grid-breakpoints);\n\n &#{$infix} {\n @include media-breakpoint-down($breakpoint) {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n\n // Prevent double border on horizontal scroll due to use of `display: block;`\n > .table-bordered {\n border: 0;\n }\n }\n }\n }\n}\n", + "// stylelint-disable selector-no-qualifying-type\n\n//\n// Textual form controls\n//\n\n.form-control {\n display: block;\n width: 100%;\n height: $input-height;\n padding: $input-padding-y $input-padding-x;\n font-family: $input-font-family;\n @include font-size($input-font-size);\n font-weight: $input-font-weight;\n line-height: $input-line-height;\n color: $input-color;\n background-color: $input-bg;\n background-clip: padding-box;\n border: $input-border-width solid $input-border-color;\n\n // Note: This has no effect on `s in CSS.\n @include border-radius($input-border-radius, 0);\n\n @include box-shadow($input-box-shadow);\n @include transition($input-transition);\n\n // Unstyle the caret on ` receives focus\n // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to\n // match the appearance of the native widget.\n // See https://github.com/twbs/bootstrap/issues/19398.\n color: $input-color;\n background-color: $input-bg;\n }\n}\n\n// Make file inputs better match text inputs by forcing them to new lines.\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n\n//\n// Labels\n//\n\n// For use with horizontal and inline forms, when you need the label (or legend)\n// text to align with the form controls.\n.col-form-label {\n padding-top: calc(#{$input-padding-y} + #{$input-border-width});\n padding-bottom: calc(#{$input-padding-y} + #{$input-border-width});\n margin-bottom: 0; // Override the `