Sitemap

A list of all the posts and pages found on the site. For you robots out there, there is an XML version available for digesting as well.

Pages

Page Not Found

Sorry, but the page you were trying to view does not exist.

Dr. Fan Chen

Dr. Fan Chen is a computational mechanics and advanced manufacturing researcher with cross-disciplinary expertise in additive manufacturing, AI-integrated modeling, and high-performance simulation. His recent work involves implementing visco-plasticity laws in Lagamine and developing creep models for metallic systems. His technical strengths include advanced numerical simulation and multi-scale modeling for process–structure–property relationships in manufacturing. He also has teaching assistance experience in mechanics and materials science at NUS and mentoring students on computational mechanics in different institutions.

Main Research Topics (published)


• Coupled CFD-FEM modeling for AM

Poster description

Fan Chen… - Materials & Design, 2020


• Origin of dislocation density in AM

Poster description

G Wang,…,Fan Chen… - Materials Research Letters, 2020


• 4D metal-based printing

Poster description

Wu, W.,…,Fan Chen… - Advanced Science 2023


• Data-driven temperature field prediction with rational physic constraints

Poster description

Fan Chen… - CMAME, 2022


• Heat accumulation analysis for samples clusters (over 100 AM samples)

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


• Incremetnal sheet metal forming - English wheel

Poster description

D Suarez, Fan Chen…- Journal of Manufacturing Systems


• Incremetnal sheet metal forming - DED on sheet metal

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


Ongoing works


• Coupled CFD-FEM modeling for AM – DED

Poster description

Poster description


• Colding cracking mechanism in AM

Poster description


• Micro-Casting of Titanium Alloy in Self-boiling Molds

Poster description


• Pattern oriented equivalent strain attribution

Poster description


• Creep modeling framework for 30CrMoNiV11-5 alloy application of Morch phenomenological law and mean-field creep model

Poster description

Poster description



Share this page:
LinkedIn | Twitter | Email
</div> -->

Poster description

Dr. Fan Chen is a computational mechanics and advanced manufacturing researcher with cross-disciplinary expertise in additive manufacturing, AI-integrated modeling, and high-performance simulation. His recent work involves implementing visco-plasticity laws in Lagamine and developing creep models for metallic systems. His technical strengths include advanced numerical simulation and multi-scale modeling for process–structure–property relationships in manufacturing. He also has teaching assistance experience in mechanics and materials science at NUS and mentoring students on computational mechanics in different institutions.

Main Research Topics (published)


• Coupled CFD-FEM modeling for AM

Poster description

Fan Chen… - Materials & Design, 2020


• Origin of dislocation density in AM

Poster description

G Wang,…,Fan Chen… - Materials Research Letters, 2020


• 4D metal-based printing

Poster description

Wu, W.,…,Fan Chen… - Advanced Science 2023


• Data-driven temperature field prediction with rational physic constraints

Poster description

Fan Chen… - CMAME, 2022


• Heat accumulation analysis for samples clusters (over 100 AM samples)

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


• Incremetnal sheet metal forming - English wheel

Poster description

D Suarez, Fan Chen…- Journal of Manufacturing Systems


• Incremetnal sheet metal forming - DED on sheet metal

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


Ongoing works


• Coupled CFD-FEM modeling for AM – DED

Poster description

Poster description


• Colding cracking mechanism in AM

Poster description


• Micro-Casting of Titanium Alloy in Self-boiling Molds

Poster description


• Pattern oriented equivalent strain attribution

Poster description


• Creep modeling framework for 30CrMoNiV11-5 alloy application of Morch phenomenological law and mean-field creep model

Poster description

Poster description



Share this page:
LinkedIn | Twitter | Email

Dr. Fan Chen

Dr. Fan Chen is a computational mechanics and advanced manufacturing researcher with cross-disciplinary expertise in additive manufacturing, AI-integrated modeling, and high-performance simulation. His recent work involves implementing visco-plasticity laws in Lagamine and developing creep models for metallic systems. His technical strengths include advanced numerical simulation and multi-scale modeling for process–structure–property relationships in manufacturing. He also has teaching assistance experience in mechanics and materials science at NUS and mentoring students on computational mechanics in different institutions.

Main Research Topics (published)


• Coupled CFD-FEM modeling for AM

Poster description

Fan Chen… - Materials & Design, 2020


• Origin of dislocation density in AM

Poster description

G Wang,…,Fan Chen… - Materials Research Letters, 2020


• 4D metal-based printing

Poster description

Wu, W.,…,Fan Chen… - Advanced Science 2023


• Data-driven temperature field prediction with rational physic constraints

Poster description

Fan Chen… - CMAME, 2022


• Heat accumulation analysis for samples clusters (over 100 AM samples)

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


• Incremetnal sheet metal forming - English wheel

Poster description

D Suarez, Fan Chen…- Journal of Manufacturing Systems


• Incremetnal sheet metal forming - DED on sheet metal

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


Ongoing works


• Coupled CFD-FEM modeling for AM – DED

Poster description

Poster description


• Colding cracking mechanism in AM

Poster description


• Micro-Casting of Titanium Alloy in Self-boiling Molds

Poster description


• Pattern oriented equivalent strain attribution

Poster description


• Creep modeling framework for 30CrMoNiV11-5 alloy application of Morch phenomenological law and mean-field creep model

Poster description

Poster description



Share this page:
LinkedIn | Twitter | Email
</div> -->

Poster description

Dr. Fan Chen is a computational mechanics and advanced manufacturing researcher with cross-disciplinary expertise in additive manufacturing, AI-integrated modeling, and high-performance simulation. His recent work involves implementing visco-plasticity laws in Lagamine and developing creep models for metallic systems. His technical strengths include advanced numerical simulation and multi-scale modeling for process–structure–property relationships in manufacturing. He also has teaching assistance experience in mechanics and materials science at NUS and mentoring students on computational mechanics in different institutions.

Main Research Topics (published)


• Coupled CFD-FEM modeling for AM

Poster description

Fan Chen… - Materials & Design, 2020


• Origin of dislocation density in AM

Poster description

G Wang,…,Fan Chen… - Materials Research Letters, 2020


• 4D metal-based printing

Poster description

Wu, W.,…,Fan Chen… - Advanced Science 2023


• Data-driven temperature field prediction with rational physic constraints

Poster description

Fan Chen… - CMAME, 2022


• Heat accumulation analysis for samples clusters (over 100 AM samples)

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


• Incremetnal sheet metal forming - English wheel

Poster description

D Suarez, Fan Chen…- Journal of Manufacturing Systems


• Incremetnal sheet metal forming - DED on sheet metal

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


Ongoing works


• Coupled CFD-FEM modeling for AM – DED

Poster description

Poster description


• Colding cracking mechanism in AM

Poster description


• Micro-Casting of Titanium Alloy in Self-boiling Molds

Poster description


• Pattern oriented equivalent strain attribution

Poster description


• Creep modeling framework for 30CrMoNiV11-5 alloy application of Morch phenomenological law and mean-field creep model

Poster description

Poster description



Share this page:
LinkedIn | Twitter | Email

Archive Layout with Content

A variety of common markup showing how the theme styles them. # Header one ## Header two ### Header three #### Header four ##### Header five ###### Header six ## Blockquotes Single line blockquote: > Quotes are cool. ## Tables | Entry | Item | | | -------- | ------ | ------------------------------------------------------------ | | [John Doe](#) | 2016 | Description of the item in the list | | [Jane Doe](#) | 2019 | Description of the item in the list | | [Doe Doe](#) | 2022 | Description of the item in the list | | Header1 | Header2 | Header3 | |:--------|:-------:|--------:| | cell1 | cell2 | cell3 | | cell4 | cell5 | cell6 | |-----------------------------| | cell1 | cell2 | cell3 | | cell4 | cell5 | cell6 | |=============================| | Foot1 | Foot2 | Foot3 | ## Definition Lists Definition List Title : Definition list division. Startup : A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model. #dowork : Coined by Rob Dyrdek and his personal body guard Christopher "Big Black" Boykins, "Do Work" works as a self motivator, to motivating your friends. Do It Live : I'll let Bill O'Reilly [explain](https://www.youtube.com/watch?v=O_HyZ5aW76c "We'll Do It Live") this one. ## Unordered Lists (Nested) * List item one * List item one * List item one * List item two * List item three * List item four * List item two * List item three * List item four * List item two * List item three * List item four ## Ordered List (Nested) 1. List item one 1. List item one 1. List item one 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four ## Buttons Make any link standout more when applying the `.btn` class. ## Notices **Watch out!** You can also add notices by appending `{: .notice}` to a paragraph. {: .notice} ## HTML Tags ### Address Tag
1 Infinite Loop
Cupertino, CA 95014
United States
### Anchor Tag (aka. Link) This is an example of a [link](http://github.com "GitHub"). ### Abbreviation Tag The abbreviation CSS stands for "Cascading Style Sheets". *[CSS]: Cascading Style Sheets ### Cite Tag "Code is poetry." ---Automattic ### Code Tag You will learn later on in these tests that `word-wrap: break-word;` will be your best friend. ### Strike Tag This tag will let you strikeout text. ### Emphasize Tag The emphasize tag should _italicize_ text. ### Insert Tag This tag should denote inserted text. ### Keyboard Tag This scarcely known tag emulates keyboard text, which is usually styled like the `` tag. ### Preformatted Tag This tag styles large blocks of code.
.post-title {
  margin: 0 0 5px;
  font-weight: bold;
  font-size: 38px;
  line-height: 1.2;
  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}
### Quote Tag Developers, developers, developers… –Steve Ballmer ### Strong Tag This tag shows **bold text**. ### Subscript Tag Getting our science styling on with H2O, which should push the "2" down. ### Superscript Tag Still sticking with science and Isaac Newton's E = MC2, which should lift the 2 up. ### Variable Tag This allows you to denote variables. {% include base_path %} {% for post in site.pages %} {% include archive-single.html %} {% endfor %} </div> </article> </div>

Posts by Category

{% include base_path %} {% include group-by-array collection=site.posts field="categories" %} {% for category in group_names %} {% assign posts = group_items[forloop.index0] %}

{{ category }}

{% for post in posts %} {% include archive-single.html %} {% endfor %} {% endfor %}

Posts by Collection

{% include base_path %} {% capture written_label %}'None'{% endcapture %} {% for collection in site.collections %} {% unless collection.output == false or collection.label == "posts" %} {% capture label %}{{ collection.label }}{% endcapture %} {% if label != written_label %}

{{ label }}

{% capture written_label %}{{ label }}{% endcapture %} {% endif %} {% endunless %} {% for post in collection.docs %} {% unless collection.output == false or collection.label == "posts" %} {% include archive-single.html %} {% endunless %} {% endfor %} {% endfor %}

CV

{% include base_path %} {% include cv-template.html %}

CV

{% include base_path %} Education ====== * Ph.D in Version Control Theory, GitHub University, 2018 (expected) * M.S. in Jekyll, GitHub University, 2014 * B.S. in GitHub, GitHub University, 2012 Work experience ====== * Spring 2024: Academic Pages Collaborator * GitHub University * Duties includes: Updates and improvements to template * Supervisor: The Users * Fall 2015: Research Assistant * GitHub University * Duties included: Merging pull requests * Supervisor: Professor Hub * Summer 2015: Research Assistant * GitHub University * Duties included: Tagging issues * Supervisor: Professor Git Skills ====== * Skill 1 * Skill 2 * Sub-skill 2.1 * Sub-skill 2.2 * Sub-skill 2.3 * Skill 3 Publications ======
    {% for post in site.publications reversed %} {% include archive-single-cv.html %} {% endfor %}
Talks ======
    {% for post in site.talks reversed %} {% include archive-single-talk-cv.html %} {% endfor %}
Teaching ======
    {% for post in site.teaching reversed %} {% include archive-single-cv.html %} {% endfor %}
Service and leadership ====== * Currently signed in to 43 different slack teams

/* * This file controls what is imported from /_sass * * Note that the files are processed in the order they are imported, so they are partly sorted by the dependencies. Also, the first two lines of the file are required by Jekyll. */ @import "vendor/breakpoint/breakpoint", "themes", "theme/default", "theme/dark", "include/mixins", "vendor/susy/susy", "layout/reset", "layout/base", "include/utilities", "layout/tables", "layout/buttons", "layout/notices", "layout/masthead", "layout/navigation", "layout/footer", "syntax", "layout/forms", "layout/page", "layout/archive", "layout/sidebar", "vendor/font-awesome/fontawesome", "vendor/font-awesome/solid", "vendor/font-awesome/brands", "vendor/magnific-popup/magnific-popup" ;

Markdown

{% include toc %} ## Locations of key files/directories * Basic config options: _config.yml * Top navigation bar config: _data/navigation.yml * Single pages: _pages/ * Collections of pages are .md or .html files in: * _publications/ * _portfolio/ * _posts/ * _teaching/ * _talks/ * Footer: _includes/footer.html * Static files (like PDFs): /files/ * Profile image (can set in _config.yml): images/profile.png ## Tips and hints * Name a file ".md" to have it render in markdown, name it ".html" to render in HTML. * Go to the [commit list](https://github.com/academicpages/academicpages.github.io/commits/master) (on your repo) to find the last version GitHub built with Jekyll. * Green check: successful build * Orange circle: building * Red X: error * No icon: not built * Academic Pages uses [Jekyll Kramdown](https://jekyllrb.com/docs/configuration/markdown/), GitHub Flavored Markdown (GFM) parser, which is similar to the version of Markdown used on GitHub, but may have some minor differences. * Some of emoji supported on GitHub should be supposed via the [Jemoji](https://github.com/jekyll/jemoji) plugin :computer:. * The best list of the supported emoji can be found in the [Emojis for Jekyll via Jemoji](https://www.fabriziomusacchio.com/blog/2021-08-16-emojis_for_Jekyll/#computer) blog post. * While GitHub Pages prevents server side code from running, client-side scripts are supported. * This means that Google Analytics is supported, and [the wiki](https://github.com/academicpages/academicpages.github.io/wiki/Adding-Google-Analytics) should contain the most up-to-date information on getting it working. * Your CV can be written using either Markdown ([preview](https://academicpages.github.io/cv/)) or generated via JSON ([preview](https://academicpages.github.io/cv-json/)) and the layouts are slightly different. You can update the path to the one being used in `_data/navigation.yml` with the JSON formatted CV being hidden by default. ## Resources * [Liquid syntax guide](https://shopify.github.io/liquid/tags/control-flow/) * [MathJax Documentation](https://docs.mathjax.org/en/latest/) ## MathJax Support for MathJax Version 3.0 is included in the template: $$ \displaylines{ \nabla \cdot E= \frac{\rho}{\epsilon_0} \\\ \nabla \cdot B=0 \\\ \nabla \times E= -\partial_tB \\\ \nabla \times B = \mu_0 \left(J + \varepsilon_0 \partial_t E \right) } $$ The default delimiters of `$$...$$` and `\\[...\\]` are supported for displayed mathematics, while `\\(...\\)` should be used for in-line mathematics (ex., \\(a^2 + b^2 = c^2\\)) **Note** that since Academic Pages uses Markdown which cases some interference with MathJax and LaTeX for escaping characters and new lines, although [some workarounds exist](https://math.codidact.com/posts/278763/278772#answer-278772). In some cases, such as when you are including MathJax in a `citation` field for publications, it may be necessary to use `\(...\)` for inline delineation. ## Markdown guide Academic Pages uses [kramdown](https://kramdown.gettalong.org/index.html) for Markdown rendering, which has some differences from other Markdown implementations such as GitHub's. In addition to this guide, please see the [kramdown Syntax page](https://kramdown.gettalong.org/syntax.html) for full documentation. ### Header three #### Header four ##### Header five ###### Header six ## Blockquotes Single line blockquote: > Quotes are cool. ## Tables ### Table 1 | Entry | Item | | | -------- | ------ | ------------------------------------------------------------ | | [John Doe](#) | 2016 | Description of the item in the list | | [Jane Doe](#) | 2019 | Description of the item in the list | | [Doe Doe](#) | 2022 | Description of the item in the list | ### Table 2 | Header1 | Header2 | Header3 | |:--------|:-------:|--------:| | cell1 | cell2 | cell3 | | cell4 | ce ll5 | cell6 | |-----------------------------| | cell1 | cell2 | cell3 | | cell4 | cell5 | cell6 | |=============================| | Foot1 | Foot2 | Foot3 | ## Definition Lists Definition List Title : Definition list division. Startup : A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model. #dowork : Coined by Rob Dyrdek and his personal body guard Christopher "Big Black" Boykins, "Do Work" works as a self motivator, to motivating your friends. Do It Live : I'll let Bill O'Reilly [explain](https://www.youtube.com/watch?v=O_HyZ5aW76c "We'll Do It Live") this one. ## Unordered Lists (Nested) * List item one * List item one * List item one * List item two * List item three * List item four * List item two * List item three * List item four * List item two * List item three * List item four ## Ordered List (Nested) 1. List item one 1. List item one 1. List item one 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four ## Buttons Make any link standout more when applying the `.btn` class. ## Notices Basic notices or call-outs are supported using the following syntax: ```markdown **Watch out!** You can also add notices by appending `{: .notice}` to the line following paragraph. {: .notice} ``` which wil render as: **Watch out!** You can also add notices by appending `{: .notice}` to the line following paragraph. {: .notice} ### Footnotes Footnotes can be useful for clarifying points in the text, or citing information.[^1] Markdown support numeric footnotes, as well as text as long as the values are unique.[^note] ```markdown This is the regular text.[^1] This is more regular text.[^note] [^1]: This is the footnote itself. [^note]: This is another footnote. ``` [^1]: Such as this footnote. [^note]: When using text for footnotes markers, no spaces are permitted in the name. ## HTML Tags ### Address Tag
1 Infinite Loop
Cupertino, CA 95014
United States
### Anchor Tag (aka. Link) This is an example of a [link](http://github.com "GitHub"). ### Abbreviation Tag The abbreviation CSS stands for "Cascading Style Sheets". *[CSS]: Cascading Style Sheets ### Cite Tag "Code is poetry." ---Automattic ### Code Tag You will learn later on in these tests that `word-wrap: break-word;` will be your best friend. You can also write larger blocks of code with syntax highlighting supported for some languages, such as Python: ```python print('Hello World!') ``` or R: ```R print("Hello World!", quote = FALSE) ``` ### Details Tag (collapsible sections) The HTML `
` tag works well with Markdown and allows you to include collapsible sections, see [W3Schools](https://www.w3schools.com/tags/tag_details.asp) for more information on how to use the tag.
Collapsed by default This section was collapsed by default!
The source code: ```HTML
Collapsed by default This section was collapsed by default!
``` Or, you can leave a section open by default by including the `open` attribute in the tag:
Open by default This section is open by default thanks to open in the <details open> tag!
### Emphasize Tag The emphasize tag should _italicize_ text. ### Insert Tag This tag should denote inserted text. ### Keyboard Tag This scarcely known tag emulates keyboard text, which is usually styled like the `` tag. ### Preformatted Tag This tag styles large blocks of code.
.post-title {
  margin: 0 0 5px;
  font-weight: bold;
  font-size: 38px;
  line-height: 1.2;
  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}
### Quote Tag Developers, developers, developers… –Steve Ballmer ### Strike Tag This tag will let you strikeout text. ### Strong Tag This tag shows **bold text**. ### Subscript Tag Getting our science styling on with H2O, which should push the "2" down. ### Superscript Tag Still sticking with science and Isaac Newton's E = MC2, which should lift the 2 up. ### Variable Tag This allows you to denote variables. *** **Footnotes** The footnotes in the page will be returned following this line, return to the section on Markdown Footnotes. </div> </article> </div>

Page not in menu

This is a page not in the menu. You can use markdown in this page. Heading 1 ====== Heading 2 ======

Page Archive

{% include base_path %} {% for post in site.pages %} {% include archive-single.html %} {% endfor %}

Publications

{% if site.publication_category %} {% for category in site.publication_category %} {% assign title_shown = false %} {% for post in site.publications reversed %} {% if post.category != category[0] %} {% continue %} {% endif %} {% unless title_shown %}

{{ category[1].title }}


{% assign title_shown = true %} {% endunless %} {% include archive-single.html %} {% endfor %} {% endfor %} {% else %} {% for post in site.publications reversed %} {% include archive-single.html %} {% endfor %} {% endif %} </div> -->
{% if site.author.googlescholar %}
You can also find my articles on my Google Scholar profile.
{% endif %} {% include base_path %} {% if site.publication_category %} {% for category in site.publication_category %} {% assign title_shown = false %} {% for post in site.publications reversed %} {% if post.category != category[0] %} {% continue %} {% endif %} {% unless title_shown %}

{{ category[1].title }}


{% assign title_shown = true %} {% endunless %} {% include archive-single.html %} {% endfor %} {% endfor %} {% else %} {% for post in site.publications reversed %} {% include archive-single.html %} {% endfor %} {% endif %}

Sitemap

{% include base_path %} A list of all the posts and pages found on the site. For you robots out there, there is an [XML version]({{ base_path }}/sitemap.xml) available for digesting as well.

Pages

{% for post in site.pages %} {% include archive-single.html %} {% endfor %}

Posts

{% for post in site.posts %} {% include archive-single.html %} {% endfor %} {% capture written_label %}'None'{% endcapture %} {% for collection in site.collections %} {% unless collection.output == false or collection.label == "posts" %} {% capture label %}{{ collection.label }}{% endcapture %} {% if label != written_label %}

{{ label }}

{% capture written_label %}{{ label }}{% endcapture %} {% endif %} {% endunless %} {% for post in collection.docs %} {% unless collection.output == false or collection.label == "posts" %} {% include archive-single.html %} {% endunless %} {% endfor %} {% endfor %}

Posts by Tags

{% include base_path %} {% include group-by-array collection=site.posts field="tags" %} {% for tag in group_names %} {% assign posts = group_items[forloop.index0] %}

{{ tag }}

{% for post in posts %} {% include archive-single.html %} {% endfor %} {% endfor %}

Talk map

This map is generated from a Jupyter Notebook file in talkmap.ipynb, which mines the location fields in the .md files in _talks/.


Eduacation & Employment

2024–2025: University of Liege

  • Research Scientist/Project Leader, Urban and Environmental Engineering -Funded by European Union,
    Principal investigator – Anne Marie Habraken: anne.habraken@uliege.be

2022–2023: Northwestern University

  • Postdoc, McCormick School of Engineering, AMPL -supported by USA Vannevar Bush Faculty Fellowship award,
    Principal investigator – Jian Cao: jcao@northwestern.edu

2018–2022: National University of Singapore


2011-2018: Huazhong University of Science & Technology

  • 2015-2018: Master of Engineering, Design & Manufacture of Ships and Marine Structure (China Graduate Scholarship)
  • 2011-2015: Bachelor of Engineering, Naval Architecture & Ocean Engineering (2012 China National Scholarship)

Teaching

{% include base_path %} {% for post in site.teaching reversed %} {% include archive-single.html %} {% endfor %}

Terms and Privacy Policy

{% include base_path %} {% include toc %} ## Privacy Policy The privacy of my visitors is extremely important. This Privacy Policy outlines the types of personal information that is received and collected and how it is used. First and foremost, I will never share your email address or any other personal information to anyone without your direct consent. ### Log Files Like many other websites, this site uses log files to help learn about when, from where, and how often traffic flows to this site. The information in these log files include: * Internet Protocol addresses (IP) * Types of browser * Internet Service Provider (ISP) * Date and time stamp * Referring and exit pages * Number of clicks All of this information is not linked to anything that is personally identifiable. ### Cookies and Web Beacons When you visit this site "convenience" cookies are stored on your computer when you submit a comment to help you log in faster to [Disqus](http://disqus.com) the next time you leave a comment. Third-party advertisers may also place and read cookies on your browser and/or use web beacons to collect information. This site has no access or control over these cookies. You should review the respective privacy policies on any and all third-party ad servers for more information regarding their practices and how to opt-out. If you wish to disable cookies, you may do so through your web browser options. Instructions for doing so can be found on the specific web browsers' websites. #### Google Analytics Google Analytics is a web analytics tool I use to help understand how visitors engage with this website. It reports website trends using cookies and web beacons without identifying individual visitors. You can read [Google Analytics Privacy Policy](http://www.google.com/analytics/learn/privacy.html).

@import "jekyll-theme-primer";

{"/about/":"https://fanchennus.github.io/","/about.html":"https://fanchennus.github.io/","/resume-json":"https://fanchennus.github.io/cv-json/","/resume":"https://fanchennus.github.io/cv/","/md/":"https://fanchennus.github.io/markdown/","/markdown.html":"https://fanchennus.github.io/markdown/","/nmp/":"https://fanchennus.github.io/non-menu-page/","/nmp.html":"https://fanchennus.github.io/non-menu-page/","/posts/":"https://fanchennus.github.io/year-archive/"}

Jupyter notebook markdown generator

# Jupyter notebook markdown generator These .ipynb files are Jupyter notebook files that convert a TSV containing structured data about talks (`talks.tsv`) or presentations (`presentations.tsv`) into individual markdown files that will be properly formatted for the academicpages template. The notebooks contain a lot of documentation about the process. The .py files are pure python that do the same things if they are executed in a terminal, they just don't have pretty documentation.

{% if page.xsl %}{% endif %}<feed xmlns="http://www.w3.org/2005/Atom" {% if site.lang %}xml:lang="{{ site.lang }}"{% endif %}>Jekyll<link href="{{ '/' | absolute_url }}" rel="alternate" type="text/html" {% if site.lang %}hreflang="{{ site.lang }}" {% endif %}/>{{ site.time | date_to_xmlschema }}{{ page.url | absolute_url | xml_escape }}{% assign title = site.title | default: site.name %}{% if page.collection != "posts" %}{% assign collection = page.collection | capitalize %}{% assign title = title | append: " | " | append: collection %}{% endif %}{% if page.category %}{% assign category = page.category | capitalize %}{% assign title = title | append: " | " | append: category %}{% endif %}{% if title %}{{ title | smartify | xml_escape }}{% endif %}{% if site.description %}{{ site.description | xml_escape }}{% endif %}{% if site.author %}{{ site.author.name | default: site.author | xml_escape }}{% if site.author.email %}{{ site.author.email | xml_escape }}{% endif %}{% if site.author.uri %}{{ site.author.uri | xml_escape }}{% endif %}{% endif %}{% if page.tags %}{% assign posts = site.tags[page.tags] %}{% else %}{% assign posts = site[page.collection] %}{% endif %}{% if page.category %}{% assign posts = posts | where: "categories", page.category %}{% endif %}{% unless site.show_drafts %}{% assign posts = posts | where_exp: "post", "post.draft != true" %}{% endunless %}{% assign posts = posts | sort: "date" | reverse %}{% assign posts_limit = site.feed.posts_limit | default: 10 %}{% for post in posts limit: posts_limit %}<entry{% if post.lang %}{{" "}}xml:lang="{{ post.lang }}"{% endif %}>{% assign post_title = post.title | smartify | strip_html | normalize_whitespace | xml_escape %}{{ post_title }} {{ post.date | date_to_xmlschema }}{{ post.last_modified_at | default: post.date | date_to_xmlschema }}{{ post.id | absolute_url | xml_escape }}{% assign excerpt_only = post.feed.excerpt_only | default: site.feed.excerpt_only %}{% unless excerpt_only %}<![CDATA[{{ post.content | strip }}]]>{% endunless %}{% assign post_author = post.author | default: post.authors[0] | default: site.author %}{% assign post_author = site.data.authors[post_author] | default: post_author %}{% assign post_author_email = post_author.email | default: nil %}{% assign post_author_uri = post_author.uri | default: nil %}{% assign post_author_name = post_author.name | default: post_author %}{{ post_author_name | default: "" | xml_escape }}{% if post_author_email %}{{ post_author_email | xml_escape }}{% endif %}{% if post_author_uri %}{{ post_author_uri | xml_escape }}{% endif %}{% if post.category %}{% elsif post.categories %}{% for category in post.categories %}{% endfor %}{% endif %}{% for tag in post.tags %}{% endfor %}{% assign post_summary = post.description | default: post.excerpt %}{% if post_summary and post_summary != empty %}<![CDATA[{{ post_summary | strip_html | normalize_whitespace }}]]>{% endif %}{% assign post_image = post.image.path | default: post.image %}{% if post_image %}{% unless post_image contains "://" %}{% assign post_image = post_image | absolute_url %}{% endunless %}{% endif %}</entry>{% endfor %}</feed>

{% if page.xsl %} {% endif %} {% assign collections = site.collections | where_exp:'collection','collection.output != false' %}{% for collection in collections %}{% assign docs = collection.docs | where_exp:'doc','doc.sitemap != false' %}{% for doc in docs %} {{ doc.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if doc.last_modified_at or doc.date %}{{ doc.last_modified_at | default: doc.date | date_to_xmlschema }} {% endif %} {% endfor %}{% endfor %}{% assign pages = site.html_pages | where_exp:'doc','doc.sitemap != false' | where_exp:'doc','doc.url != "/404.html"' %}{% for page in pages %} {{ page.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if page.last_modified_at %}{{ page.last_modified_at | date_to_xmlschema }} {% endif %} {% endfor %}{% assign static_files = page.static_files | where_exp:'page','page.sitemap != false' | where_exp:'page','page.name != "404.html"' %}{% for file in static_files %} {{ file.path | replace:'/index.html','/' | absolute_url | xml_escape }} {{ file.modified_time | date_to_xmlschema }} {% endfor %}

Sitemap: {{ "sitemap.xml" | absolute_url }}
    </div>     -->

    <!--  -->

A variety of common markup showing how the theme styles them.

Header one

Header two

Header three

Header four

Header five
Header six

Blockquotes

Single line blockquote:

Quotes are cool.

Tables

Entry Item  
John Doe 2016 Description of the item in the list
Jane Doe 2019 Description of the item in the list
Doe Doe 2022 Description of the item in the list
Header1 Header2 Header3
cell1 cell2 cell3
cell4 cell5 cell6
cell1 cell2 cell3
cell4 cell5 cell6
Foot1 Foot2 Foot3

Definition Lists

Definition List Title
Definition list division.
Startup
A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model.
#dowork
Coined by Rob Dyrdek and his personal body guard Christopher “Big Black” Boykins, “Do Work” works as a self motivator, to motivating your friends.
Do It Live
I’ll let Bill O’Reilly explain this one.

Unordered Lists (Nested)

  • List item one
    • List item one
      • List item one
      • List item two
      • List item three
      • List item four
    • List item two
    • List item three
    • List item four
  • List item two
  • List item three
  • List item four

Ordered List (Nested)

  1. List item one
    1. List item one
      1. List item one
      2. List item two
      3. List item three
      4. List item four
    2. List item two
    3. List item three
    4. List item four
  2. List item two
  3. List item three
  4. List item four

Buttons

Make any link standout more when applying the .btn class.

Notices

Watch out! You can also add notices by appending {: .notice} to a paragraph.

HTML Tags

Address Tag

1 Infinite Loop
Cupertino, CA 95014
United States

This is an example of a link.

Abbreviation Tag

The abbreviation CSS stands for “Cascading Style Sheets”.

Cite Tag

“Code is poetry.” —Automattic

Code Tag

You will learn later on in these tests that word-wrap: break-word; will be your best friend.

Strike Tag

This tag will let you strikeout text.

Emphasize Tag

The emphasize tag should italicize text.

Insert Tag

This tag should denote inserted text.

Keyboard Tag

This scarcely known tag emulates keyboard text, which is usually styled like the <code> tag.

Preformatted Tag

This tag styles large blocks of code.

.post-title {
  margin: 0 0 5px;
  font-weight: bold;
  font-size: 38px;
  line-height: 1.2;
  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}

Quote Tag

Developers, developers, developers… –Steve Ballmer

Strong Tag

This tag shows bold text.

Subscript Tag

Getting our science styling on with H2O, which should push the “2” down.

Superscript Tag

Still sticking with science and Isaac Newton’s E = MC2, which should lift the 2 up.

Variable Tag

This allows you to denote variables.

Page Not Found

Sorry, but the page you were trying to view does not exist.

Dr. Fan Chen

Dr. Fan Chen is a computational mechanics and advanced manufacturing researcher with cross-disciplinary expertise in additive manufacturing, AI-integrated modeling, and high-performance simulation. His recent work involves implementing visco-plasticity laws in Lagamine and developing creep models for metallic systems. His technical strengths include advanced numerical simulation and multi-scale modeling for process–structure–property relationships in manufacturing. He also has teaching assistance experience in mechanics and materials science at NUS and mentoring students on computational mechanics in different institutions.

Main Research Topics (published)


• Coupled CFD-FEM modeling for AM

Poster description

Fan Chen… - Materials & Design, 2020


• Origin of dislocation density in AM

Poster description

G Wang,…,Fan Chen… - Materials Research Letters, 2020


• 4D metal-based printing

Poster description

Wu, W.,…,Fan Chen… - Advanced Science 2023


• Data-driven temperature field prediction with rational physic constraints

Poster description

Fan Chen… - CMAME, 2022


• Heat accumulation analysis for samples clusters (over 100 AM samples)

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


• Incremetnal sheet metal forming - English wheel

Poster description

D Suarez, Fan Chen…- Journal of Manufacturing Systems


• Incremetnal sheet metal forming - DED on sheet metal

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


Ongoing works


• Coupled CFD-FEM modeling for AM – DED

Poster description

Poster description


• Colding cracking mechanism in AM

Poster description


• Micro-Casting of Titanium Alloy in Self-boiling Molds

Poster description


• Pattern oriented equivalent strain attribution

Poster description


• Creep modeling framework for 30CrMoNiV11-5 alloy application of Morch phenomenological law and mean-field creep model

Poster description

Poster description



Share this page:
LinkedIn | Twitter | Email
</div> -->

Poster description

Dr. Fan Chen is a computational mechanics and advanced manufacturing researcher with cross-disciplinary expertise in additive manufacturing, AI-integrated modeling, and high-performance simulation. His recent work involves implementing visco-plasticity laws in Lagamine and developing creep models for metallic systems. His technical strengths include advanced numerical simulation and multi-scale modeling for process–structure–property relationships in manufacturing. He also has teaching assistance experience in mechanics and materials science at NUS and mentoring students on computational mechanics in different institutions.

Main Research Topics (published)


• Coupled CFD-FEM modeling for AM

Poster description

Fan Chen… - Materials & Design, 2020


• Origin of dislocation density in AM

Poster description

G Wang,…,Fan Chen… - Materials Research Letters, 2020


• 4D metal-based printing

Poster description

Wu, W.,…,Fan Chen… - Advanced Science 2023


• Data-driven temperature field prediction with rational physic constraints

Poster description

Fan Chen… - CMAME, 2022


• Heat accumulation analysis for samples clusters (over 100 AM samples)

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


• Incremetnal sheet metal forming - English wheel

Poster description

D Suarez, Fan Chen…- Journal of Manufacturing Systems


• Incremetnal sheet metal forming - DED on sheet metal

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


Ongoing works


• Coupled CFD-FEM modeling for AM – DED

Poster description

Poster description


• Colding cracking mechanism in AM

Poster description


• Micro-Casting of Titanium Alloy in Self-boiling Molds

Poster description


• Pattern oriented equivalent strain attribution

Poster description


• Creep modeling framework for 30CrMoNiV11-5 alloy application of Morch phenomenological law and mean-field creep model

Poster description

Poster description



Share this page:
LinkedIn | Twitter | Email

Archive Layout with Content

A variety of common markup showing how the theme styles them. # Header one ## Header two ### Header three #### Header four ##### Header five ###### Header six ## Blockquotes Single line blockquote: > Quotes are cool. ## Tables | Entry | Item | | | -------- | ------ | ------------------------------------------------------------ | | [John Doe](#) | 2016 | Description of the item in the list | | [Jane Doe](#) | 2019 | Description of the item in the list | | [Doe Doe](#) | 2022 | Description of the item in the list | | Header1 | Header2 | Header3 | |:--------|:-------:|--------:| | cell1 | cell2 | cell3 | | cell4 | cell5 | cell6 | |-----------------------------| | cell1 | cell2 | cell3 | | cell4 | cell5 | cell6 | |=============================| | Foot1 | Foot2 | Foot3 | ## Definition Lists Definition List Title : Definition list division. Startup : A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model. #dowork : Coined by Rob Dyrdek and his personal body guard Christopher "Big Black" Boykins, "Do Work" works as a self motivator, to motivating your friends. Do It Live : I'll let Bill O'Reilly [explain](https://www.youtube.com/watch?v=O_HyZ5aW76c "We'll Do It Live") this one. ## Unordered Lists (Nested) * List item one * List item one * List item one * List item two * List item three * List item four * List item two * List item three * List item four * List item two * List item three * List item four ## Ordered List (Nested) 1. List item one 1. List item one 1. List item one 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four ## Buttons Make any link standout more when applying the `.btn` class. ## Notices **Watch out!** You can also add notices by appending `{: .notice}` to a paragraph. {: .notice} ## HTML Tags ### Address Tag
1 Infinite Loop
Cupertino, CA 95014
United States
### Anchor Tag (aka. Link) This is an example of a [link](http://github.com "GitHub"). ### Abbreviation Tag The abbreviation CSS stands for "Cascading Style Sheets". *[CSS]: Cascading Style Sheets ### Cite Tag "Code is poetry." ---Automattic ### Code Tag You will learn later on in these tests that `word-wrap: break-word;` will be your best friend. ### Strike Tag This tag will let you strikeout text. ### Emphasize Tag The emphasize tag should _italicize_ text. ### Insert Tag This tag should denote inserted text. ### Keyboard Tag This scarcely known tag emulates keyboard text, which is usually styled like the `` tag. ### Preformatted Tag This tag styles large blocks of code.
.post-title {
  margin: 0 0 5px;
  font-weight: bold;
  font-size: 38px;
  line-height: 1.2;
  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}
### Quote Tag Developers, developers, developers… –Steve Ballmer ### Strong Tag This tag shows **bold text**. ### Subscript Tag Getting our science styling on with H2O, which should push the "2" down. ### Superscript Tag Still sticking with science and Isaac Newton's E = MC2, which should lift the 2 up. ### Variable Tag This allows you to denote variables. {% include base_path %} {% for post in site.pages %} {% include archive-single.html %} {% endfor %} </div> </article> </div>

Posts by Category

{% include base_path %} {% include group-by-array collection=site.posts field="categories" %} {% for category in group_names %} {% assign posts = group_items[forloop.index0] %}

{{ category }}

{% for post in posts %} {% include archive-single.html %} {% endfor %} {% endfor %}

Posts by Collection

{% include base_path %} {% capture written_label %}'None'{% endcapture %} {% for collection in site.collections %} {% unless collection.output == false or collection.label == "posts" %} {% capture label %}{{ collection.label }}{% endcapture %} {% if label != written_label %}

{{ label }}

{% capture written_label %}{{ label }}{% endcapture %} {% endif %} {% endunless %} {% for post in collection.docs %} {% unless collection.output == false or collection.label == "posts" %} {% include archive-single.html %} {% endunless %} {% endfor %} {% endfor %}

CV

{% include base_path %} {% include cv-template.html %}

CV

{% include base_path %} Education ====== * Ph.D in Version Control Theory, GitHub University, 2018 (expected) * M.S. in Jekyll, GitHub University, 2014 * B.S. in GitHub, GitHub University, 2012 Work experience ====== * Spring 2024: Academic Pages Collaborator * GitHub University * Duties includes: Updates and improvements to template * Supervisor: The Users * Fall 2015: Research Assistant * GitHub University * Duties included: Merging pull requests * Supervisor: Professor Hub * Summer 2015: Research Assistant * GitHub University * Duties included: Tagging issues * Supervisor: Professor Git Skills ====== * Skill 1 * Skill 2 * Sub-skill 2.1 * Sub-skill 2.2 * Sub-skill 2.3 * Skill 3 Publications ======
    {% for post in site.publications reversed %} {% include archive-single-cv.html %} {% endfor %}
Talks ======
    {% for post in site.talks reversed %} {% include archive-single-talk-cv.html %} {% endfor %}
Teaching ======
    {% for post in site.teaching reversed %} {% include archive-single-cv.html %} {% endfor %}
Service and leadership ====== * Currently signed in to 43 different slack teams

/* * This file controls what is imported from /_sass * * Note that the files are processed in the order they are imported, so they are partly sorted by the dependencies. Also, the first two lines of the file are required by Jekyll. */ @import "vendor/breakpoint/breakpoint", "themes", "theme/default", "theme/dark", "include/mixins", "vendor/susy/susy", "layout/reset", "layout/base", "include/utilities", "layout/tables", "layout/buttons", "layout/notices", "layout/masthead", "layout/navigation", "layout/footer", "syntax", "layout/forms", "layout/page", "layout/archive", "layout/sidebar", "vendor/font-awesome/fontawesome", "vendor/font-awesome/solid", "vendor/font-awesome/brands", "vendor/magnific-popup/magnific-popup" ;

Markdown

{% include toc %} ## Locations of key files/directories * Basic config options: _config.yml * Top navigation bar config: _data/navigation.yml * Single pages: _pages/ * Collections of pages are .md or .html files in: * _publications/ * _portfolio/ * _posts/ * _teaching/ * _talks/ * Footer: _includes/footer.html * Static files (like PDFs): /files/ * Profile image (can set in _config.yml): images/profile.png ## Tips and hints * Name a file ".md" to have it render in markdown, name it ".html" to render in HTML. * Go to the [commit list](https://github.com/academicpages/academicpages.github.io/commits/master) (on your repo) to find the last version GitHub built with Jekyll. * Green check: successful build * Orange circle: building * Red X: error * No icon: not built * Academic Pages uses [Jekyll Kramdown](https://jekyllrb.com/docs/configuration/markdown/), GitHub Flavored Markdown (GFM) parser, which is similar to the version of Markdown used on GitHub, but may have some minor differences. * Some of emoji supported on GitHub should be supposed via the [Jemoji](https://github.com/jekyll/jemoji) plugin :computer:. * The best list of the supported emoji can be found in the [Emojis for Jekyll via Jemoji](https://www.fabriziomusacchio.com/blog/2021-08-16-emojis_for_Jekyll/#computer) blog post. * While GitHub Pages prevents server side code from running, client-side scripts are supported. * This means that Google Analytics is supported, and [the wiki](https://github.com/academicpages/academicpages.github.io/wiki/Adding-Google-Analytics) should contain the most up-to-date information on getting it working. * Your CV can be written using either Markdown ([preview](https://academicpages.github.io/cv/)) or generated via JSON ([preview](https://academicpages.github.io/cv-json/)) and the layouts are slightly different. You can update the path to the one being used in `_data/navigation.yml` with the JSON formatted CV being hidden by default. ## Resources * [Liquid syntax guide](https://shopify.github.io/liquid/tags/control-flow/) * [MathJax Documentation](https://docs.mathjax.org/en/latest/) ## MathJax Support for MathJax Version 3.0 is included in the template: $$ \displaylines{ \nabla \cdot E= \frac{\rho}{\epsilon_0} \\\ \nabla \cdot B=0 \\\ \nabla \times E= -\partial_tB \\\ \nabla \times B = \mu_0 \left(J + \varepsilon_0 \partial_t E \right) } $$ The default delimiters of `$$...$$` and `\\[...\\]` are supported for displayed mathematics, while `\\(...\\)` should be used for in-line mathematics (ex., \\(a^2 + b^2 = c^2\\)) **Note** that since Academic Pages uses Markdown which cases some interference with MathJax and LaTeX for escaping characters and new lines, although [some workarounds exist](https://math.codidact.com/posts/278763/278772#answer-278772). In some cases, such as when you are including MathJax in a `citation` field for publications, it may be necessary to use `\(...\)` for inline delineation. ## Markdown guide Academic Pages uses [kramdown](https://kramdown.gettalong.org/index.html) for Markdown rendering, which has some differences from other Markdown implementations such as GitHub's. In addition to this guide, please see the [kramdown Syntax page](https://kramdown.gettalong.org/syntax.html) for full documentation. ### Header three #### Header four ##### Header five ###### Header six ## Blockquotes Single line blockquote: > Quotes are cool. ## Tables ### Table 1 | Entry | Item | | | -------- | ------ | ------------------------------------------------------------ | | [John Doe](#) | 2016 | Description of the item in the list | | [Jane Doe](#) | 2019 | Description of the item in the list | | [Doe Doe](#) | 2022 | Description of the item in the list | ### Table 2 | Header1 | Header2 | Header3 | |:--------|:-------:|--------:| | cell1 | cell2 | cell3 | | cell4 | ce ll5 | cell6 | |-----------------------------| | cell1 | cell2 | cell3 | | cell4 | cell5 | cell6 | |=============================| | Foot1 | Foot2 | Foot3 | ## Definition Lists Definition List Title : Definition list division. Startup : A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model. #dowork : Coined by Rob Dyrdek and his personal body guard Christopher "Big Black" Boykins, "Do Work" works as a self motivator, to motivating your friends. Do It Live : I'll let Bill O'Reilly [explain](https://www.youtube.com/watch?v=O_HyZ5aW76c "We'll Do It Live") this one. ## Unordered Lists (Nested) * List item one * List item one * List item one * List item two * List item three * List item four * List item two * List item three * List item four * List item two * List item three * List item four ## Ordered List (Nested) 1. List item one 1. List item one 1. List item one 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four ## Buttons Make any link standout more when applying the `.btn` class. ## Notices Basic notices or call-outs are supported using the following syntax: ```markdown **Watch out!** You can also add notices by appending `{: .notice}` to the line following paragraph. {: .notice} ``` which wil render as: **Watch out!** You can also add notices by appending `{: .notice}` to the line following paragraph. {: .notice} ### Footnotes Footnotes can be useful for clarifying points in the text, or citing information.[^1] Markdown support numeric footnotes, as well as text as long as the values are unique.[^note] ```markdown This is the regular text.[^1] This is more regular text.[^note] [^1]: This is the footnote itself. [^note]: This is another footnote. ``` [^1]: Such as this footnote. [^note]: When using text for footnotes markers, no spaces are permitted in the name. ## HTML Tags ### Address Tag
1 Infinite Loop
Cupertino, CA 95014
United States
### Anchor Tag (aka. Link) This is an example of a [link](http://github.com "GitHub"). ### Abbreviation Tag The abbreviation CSS stands for "Cascading Style Sheets". *[CSS]: Cascading Style Sheets ### Cite Tag "Code is poetry." ---Automattic ### Code Tag You will learn later on in these tests that `word-wrap: break-word;` will be your best friend. You can also write larger blocks of code with syntax highlighting supported for some languages, such as Python: ```python print('Hello World!') ``` or R: ```R print("Hello World!", quote = FALSE) ``` ### Details Tag (collapsible sections) The HTML `
` tag works well with Markdown and allows you to include collapsible sections, see [W3Schools](https://www.w3schools.com/tags/tag_details.asp) for more information on how to use the tag.
Collapsed by default This section was collapsed by default!
The source code: ```HTML
Collapsed by default This section was collapsed by default!
``` Or, you can leave a section open by default by including the `open` attribute in the tag:
Open by default This section is open by default thanks to open in the <details open> tag!
### Emphasize Tag The emphasize tag should _italicize_ text. ### Insert Tag This tag should denote inserted text. ### Keyboard Tag This scarcely known tag emulates keyboard text, which is usually styled like the `` tag. ### Preformatted Tag This tag styles large blocks of code.
.post-title {
  margin: 0 0 5px;
  font-weight: bold;
  font-size: 38px;
  line-height: 1.2;
  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}
### Quote Tag Developers, developers, developers… –Steve Ballmer ### Strike Tag This tag will let you strikeout text. ### Strong Tag This tag shows **bold text**. ### Subscript Tag Getting our science styling on with H2O, which should push the "2" down. ### Superscript Tag Still sticking with science and Isaac Newton's E = MC2, which should lift the 2 up. ### Variable Tag This allows you to denote variables. *** **Footnotes** The footnotes in the page will be returned following this line, return to the section on Markdown Footnotes. </div> </article> </div>

Page not in menu

This is a page not in the menu. You can use markdown in this page. Heading 1 ====== Heading 2 ======

Page Archive

{% include base_path %} {% for post in site.pages %} {% include archive-single.html %} {% endfor %}

Publications

{% if site.publication_category %} {% for category in site.publication_category %} {% assign title_shown = false %} {% for post in site.publications reversed %} {% if post.category != category[0] %} {% continue %} {% endif %} {% unless title_shown %}

{{ category[1].title }}


{% assign title_shown = true %} {% endunless %} {% include archive-single.html %} {% endfor %} {% endfor %} {% else %} {% for post in site.publications reversed %} {% include archive-single.html %} {% endfor %} {% endif %} </div> -->
{% if site.author.googlescholar %}
You can also find my articles on my Google Scholar profile.
{% endif %} {% include base_path %} {% if site.publication_category %} {% for category in site.publication_category %} {% assign title_shown = false %} {% for post in site.publications reversed %} {% if post.category != category[0] %} {% continue %} {% endif %} {% unless title_shown %}

{{ category[1].title }}


{% assign title_shown = true %} {% endunless %} {% include archive-single.html %} {% endfor %} {% endfor %} {% else %} {% for post in site.publications reversed %} {% include archive-single.html %} {% endfor %} {% endif %}

Sitemap

{% include base_path %} A list of all the posts and pages found on the site. For you robots out there, there is an [XML version]({{ base_path }}/sitemap.xml) available for digesting as well.

Pages

{% for post in site.pages %} {% include archive-single.html %} {% endfor %}

Posts

{% for post in site.posts %} {% include archive-single.html %} {% endfor %} {% capture written_label %}'None'{% endcapture %} {% for collection in site.collections %} {% unless collection.output == false or collection.label == "posts" %} {% capture label %}{{ collection.label }}{% endcapture %} {% if label != written_label %}

{{ label }}

{% capture written_label %}{{ label }}{% endcapture %} {% endif %} {% endunless %} {% for post in collection.docs %} {% unless collection.output == false or collection.label == "posts" %} {% include archive-single.html %} {% endunless %} {% endfor %} {% endfor %}

Posts by Tags

{% include base_path %} {% include group-by-array collection=site.posts field="tags" %} {% for tag in group_names %} {% assign posts = group_items[forloop.index0] %}

{{ tag }}

{% for post in posts %} {% include archive-single.html %} {% endfor %} {% endfor %}

Talk map

This map is generated from a Jupyter Notebook file in talkmap.ipynb, which mines the location fields in the .md files in _talks/.


Eduacation & Employment

2024–2025: University of Liege

  • Research Scientist/Project Leader, Urban and Environmental Engineering -Funded by European Union,
    Principal investigator – Anne Marie Habraken: anne.habraken@uliege.be

2022–2023: Northwestern University

  • Postdoc, McCormick School of Engineering, AMPL -supported by USA Vannevar Bush Faculty Fellowship award,
    Principal investigator – Jian Cao: jcao@northwestern.edu

2018–2022: National University of Singapore


2011-2018: Huazhong University of Science & Technology

  • 2015-2018: Master of Engineering, Design & Manufacture of Ships and Marine Structure (China Graduate Scholarship)
  • 2011-2015: Bachelor of Engineering, Naval Architecture & Ocean Engineering (2012 China National Scholarship)

Teaching

{% include base_path %} {% for post in site.teaching reversed %} {% include archive-single.html %} {% endfor %}

Terms and Privacy Policy

{% include base_path %} {% include toc %} ## Privacy Policy The privacy of my visitors is extremely important. This Privacy Policy outlines the types of personal information that is received and collected and how it is used. First and foremost, I will never share your email address or any other personal information to anyone without your direct consent. ### Log Files Like many other websites, this site uses log files to help learn about when, from where, and how often traffic flows to this site. The information in these log files include: * Internet Protocol addresses (IP) * Types of browser * Internet Service Provider (ISP) * Date and time stamp * Referring and exit pages * Number of clicks All of this information is not linked to anything that is personally identifiable. ### Cookies and Web Beacons When you visit this site "convenience" cookies are stored on your computer when you submit a comment to help you log in faster to [Disqus](http://disqus.com) the next time you leave a comment. Third-party advertisers may also place and read cookies on your browser and/or use web beacons to collect information. This site has no access or control over these cookies. You should review the respective privacy policies on any and all third-party ad servers for more information regarding their practices and how to opt-out. If you wish to disable cookies, you may do so through your web browser options. Instructions for doing so can be found on the specific web browsers' websites. #### Google Analytics Google Analytics is a web analytics tool I use to help understand how visitors engage with this website. It reports website trends using cookies and web beacons without identifying individual visitors. You can read [Google Analytics Privacy Policy](http://www.google.com/analytics/learn/privacy.html).

@import "jekyll-theme-primer";

{"/about/":"https://fanchennus.github.io/","/about.html":"https://fanchennus.github.io/","/resume-json":"https://fanchennus.github.io/cv-json/","/resume":"https://fanchennus.github.io/cv/","/md/":"https://fanchennus.github.io/markdown/","/markdown.html":"https://fanchennus.github.io/markdown/","/nmp/":"https://fanchennus.github.io/non-menu-page/","/nmp.html":"https://fanchennus.github.io/non-menu-page/","/posts/":"https://fanchennus.github.io/year-archive/"}

Jupyter notebook markdown generator

# Jupyter notebook markdown generator These .ipynb files are Jupyter notebook files that convert a TSV containing structured data about talks (`talks.tsv`) or presentations (`presentations.tsv`) into individual markdown files that will be properly formatted for the academicpages template. The notebooks contain a lot of documentation about the process. The .py files are pure python that do the same things if they are executed in a terminal, they just don't have pretty documentation.

{% if page.xsl %}{% endif %}<feed xmlns="http://www.w3.org/2005/Atom" {% if site.lang %}xml:lang="{{ site.lang }}"{% endif %}>Jekyll<link href="{{ '/' | absolute_url }}" rel="alternate" type="text/html" {% if site.lang %}hreflang="{{ site.lang }}" {% endif %}/>{{ site.time | date_to_xmlschema }}{{ page.url | absolute_url | xml_escape }}{% assign title = site.title | default: site.name %}{% if page.collection != "posts" %}{% assign collection = page.collection | capitalize %}{% assign title = title | append: " | " | append: collection %}{% endif %}{% if page.category %}{% assign category = page.category | capitalize %}{% assign title = title | append: " | " | append: category %}{% endif %}{% if title %}{{ title | smartify | xml_escape }}{% endif %}{% if site.description %}{{ site.description | xml_escape }}{% endif %}{% if site.author %}{{ site.author.name | default: site.author | xml_escape }}{% if site.author.email %}{{ site.author.email | xml_escape }}{% endif %}{% if site.author.uri %}{{ site.author.uri | xml_escape }}{% endif %}{% endif %}{% if page.tags %}{% assign posts = site.tags[page.tags] %}{% else %}{% assign posts = site[page.collection] %}{% endif %}{% if page.category %}{% assign posts = posts | where: "categories", page.category %}{% endif %}{% unless site.show_drafts %}{% assign posts = posts | where_exp: "post", "post.draft != true" %}{% endunless %}{% assign posts = posts | sort: "date" | reverse %}{% assign posts_limit = site.feed.posts_limit | default: 10 %}{% for post in posts limit: posts_limit %}<entry{% if post.lang %}{{" "}}xml:lang="{{ post.lang }}"{% endif %}>{% assign post_title = post.title | smartify | strip_html | normalize_whitespace | xml_escape %}{{ post_title }} {{ post.date | date_to_xmlschema }}{{ post.last_modified_at | default: post.date | date_to_xmlschema }}{{ post.id | absolute_url | xml_escape }}{% assign excerpt_only = post.feed.excerpt_only | default: site.feed.excerpt_only %}{% unless excerpt_only %}<![CDATA[{{ post.content | strip }}]]>{% endunless %}{% assign post_author = post.author | default: post.authors[0] | default: site.author %}{% assign post_author = site.data.authors[post_author] | default: post_author %}{% assign post_author_email = post_author.email | default: nil %}{% assign post_author_uri = post_author.uri | default: nil %}{% assign post_author_name = post_author.name | default: post_author %}{{ post_author_name | default: "" | xml_escape }}{% if post_author_email %}{{ post_author_email | xml_escape }}{% endif %}{% if post_author_uri %}{{ post_author_uri | xml_escape }}{% endif %}{% if post.category %}{% elsif post.categories %}{% for category in post.categories %}{% endfor %}{% endif %}{% for tag in post.tags %}{% endfor %}{% assign post_summary = post.description | default: post.excerpt %}{% if post_summary and post_summary != empty %}<![CDATA[{{ post_summary | strip_html | normalize_whitespace }}]]>{% endif %}{% assign post_image = post.image.path | default: post.image %}{% if post_image %}{% unless post_image contains "://" %}{% assign post_image = post_image | absolute_url %}{% endunless %}{% endif %}</entry>{% endfor %}</feed>

{% if page.xsl %} {% endif %} {% assign collections = site.collections | where_exp:'collection','collection.output != false' %}{% for collection in collections %}{% assign docs = collection.docs | where_exp:'doc','doc.sitemap != false' %}{% for doc in docs %} {{ doc.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if doc.last_modified_at or doc.date %}{{ doc.last_modified_at | default: doc.date | date_to_xmlschema }} {% endif %} {% endfor %}{% endfor %}{% assign pages = site.html_pages | where_exp:'doc','doc.sitemap != false' | where_exp:'doc','doc.url != "/404.html"' %}{% for page in pages %} {{ page.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if page.last_modified_at %}{{ page.last_modified_at | date_to_xmlschema }} {% endif %} {% endfor %}{% assign static_files = page.static_files | where_exp:'page','page.sitemap != false' | where_exp:'page','page.name != "404.html"' %}{% for file in static_files %} {{ file.path | replace:'/index.html','/' | absolute_url | xml_escape }} {{ file.modified_time | date_to_xmlschema }} {% endfor %}

Sitemap: {{ "sitemap.xml" | absolute_url }}

</article> </div>

Posts by Collection

High-fidelity coupled CFD-FEM simulation on DED and LPBF

– corporation with ANSYS

Linked the high-fidelity molten pool dynamics model with the finite element solver for thermal stress simulation.

High-density dislocations in additively manufactured metals

– corporation with Shanghai Jiaotong University

Demonstrated that thermal stresses are the origin of high-density dislocations in additively manufactured metals using the coupled CFD-FEM simulation.

Physically informed data-driven prognostic model for the temperature prediction in AM

– corporation with Singapore A*STAR

High accuracy and significantly faster computation speed for the track-scale AM modeling based on the data-driven prediction (CNN, GPR, QR) of the isotherms and the isotherm-reconstructed temperature attribution on FEM model.

Pattern-oriented Strain Attribution in Part-scale Modeling of Additive Manufacturing

– corporation with Singapore A*STAR

Efficient large-scale AM modeling approaches with sound physical basis, where the layer-wise element progressive activation is applied with base strain pattern attributed onto the sample layers.

From 2022 to 2023

Hybrid Autonomous Manufacturing, Moving from Evolution to Revolution (HAMMER)

– corporation with The OHIO State University and so on.

High-fidelity English wheel simulation: distortion analysis of the sheet metal under rolling of two wheel of different size and curvature.

Micro-Casting of Titanium Alloy in Self-boiling Molds

Heat transfer analysis of liquid materials in multiple self-boiling molds for micro-casting.

DED on sheet metal forming

– corporation with Nissan

Deformation prediction using bulking analysis under the residual stress pattern achieved by track-scale DED simulation.

From 2024 to 2025

(AID4Greenest) - AI powered characterization and modelling for green steel technology

Funded by European Union

– corporation with Fraunhofer, IWM and IMDEA et al.

Fortran-based self-developed Lagamine coding platform for implementation of H. Morch visco-plasticity law & Development of the mean field creep model on Gitlab using Python.

  <h2 id="publications" class="archive__subtitle">publications</h2>

The origin of high-density dislocations in additively manufactured metals

Published in Materials Research Letters, 2020

The origin of dense dislocations in many additively manufactured metals remains a mystery. We here employed pure Cu as a prototype and fabricated the very challenging high-purity (>99.9%) bulk Cu by laser powder-bed-fusion (L-PBF) technique. We found that high-density dislocations were present in the as-built samples and these high-density dislocations were introduced on the fly during the L-PBF process. A newly developed multi-physics modeling was further employed to interpret the origin of these pre-existing dislocations, demonstrating that the compression-tension cycles rendered by the localized heating/cooling heterogeneity upon laser scanning are responsible for the residual high-density dislocations.

Doi:https://doi.org/10.1080/21663831.2020.1751739

Download Paper

High-fidelity modelling of thermal stress for additive manufacturing by linking thermal-fluid and mechanical models

Published in Materials & Design, 2020

The prediction of thermal stress and distortion is a prerequisite for high-quality additive manufacturing (AM). The widely applied thermo-mechanical model using the finite element method (FEM) leaves much to be improved due to their oversimplifications on material deposition, molten pool flow, etc. In this study, a high-fidelity modelling approach by linking the thermal-fluid (computational fluid dynamics, CFD) and mechanical models (named as CFD-FEM model) is developed to predict the thermal stress for AM taking into account the influences of thermal-fluid flow. Profiting from the precise temperature profiles and melt track geometry extracted from the thermal-fluid model as well as the remarkable flexibility of the quiet element method of FEM, this work aims at simulating the thermal stress distribution by involving physical changes in the AM process, e.g., melting and solidification of powder particles, molten pool evolution and inter-track inter-layer re-melting. Unlike the conventional thermo-mechanical analysis, in this approach, thermal stress calculation is purely based on a mechanical model where the thermal loads are applied by using a linear interpolation function to spatially and temporally map the temperature values from the thermal-fluid model’s cell centres into the FEM element nodes. With the proposed approach, the thermal stress evolution in the AM process of single track, multiple tracks and multiple layers are simulated, where the rough surfaces and internal voids can be well incorporated. Moreover, a conventional thermo-mechanical simulation of two tracks with predefined track geometry is conducted for cross comparison. Finally, the simulated thermal stress distribution can rationally explain the crack distribution observed in the experiments.

Doi:https://doi.org/10.1016/j.matdes.2020.109185

Download Paper

Enhanced strengthening and hardening via self-stabilized dislocation network in additively manufactured metals

Published in Materials Today, 2021

The advent of additive manufacturing (AM) offers the possibility of creating high-performance metallic materials with unique microstructure. Ultrafine dislocation cell structure in AM metals is believed to play a critical role in strengthening and hardening. However, its behavior is typically considered to be associated with alloying elements. Here we report that dislocations in AM metallic materials are self-stabilized even without the alloying effect. The heating–cooling cycles that are inherent to laser power-bed-fusion processes can stabilize dislocation network in situ by forming Lomer locks and a complex dislocation network. This unique dislocation assembly blocks and accumulates dislocations for strengthening and steady strain hardening, thereby rendering better material strength but several folds improvements in uniform tensile elongation compared to those made by traditional methods. The principles of dislocation manipulation and self-assembly are applicable to metals/alloys obtained by conventional routes in turn, through a simple post-cyclic deformation processing that mimics the micromechanics of AM. This work demonstrates the capability of AM to locally tune dislocation structures and achieve high-performance metallic materials.

Doi:https://doi.org/10.1016/j.mattod.2021.06.002

Download Paper

Crystal plasticity model of residual stress in additive manufacturing using the element elimination and reactivation method

Published in Computational Mechanics, 2021

Selective laser melting is receiving increasing interest as an additive manufacturing technique. Residual stresses induced by the large temperature gradients and inhomogeneous cooling process can favour the generation of cracks. In this work, a crystal plasticity finite element model is developed to simulate the formation of residual stresses and to understand the correlation between plastic deformation, grain orientation and residual stresses in the additive manufacturing process. The temperature profile and grain structure from thermal-fluid flow and grain growth simulations are implemented into the crystal plasticity model. An element elimination and reactivation method is proposed to model the melting and solidification and to reinitialize state variables, such as the plastic deformation, in the reactivated elements. The accuracy of this method is judged against previous method based on the stiffness degradation of liquid regions by comparing the plastic deformation as a function of time induced by thermal stresses. The method is used to investigate residual stresses parallel and perpendicular to the laser scan direction, and the correlation with the maximum Schmid factor of the grains along those directions. The magnitude of the residual stress can be predicted as a function of the depth, grain orientation and position with respect to the molten pool. The simulation results are directly comparable to X-ray diffraction experiments and stress–strain curves.

Doi:https://doi.org/10.1007/s00466-021-02116-z

Download Paper

Data-driven prognostic model for temperature field in additive manufacturing based on the high-fidelity thermal-fluid flow simulation

Published in Computer Methods in Applied Mechanics and Engineering, 2022

The process-structure–property relationship for additive manufacturing (AM) is typically derived starting from the temperature profile which can be achieved by the meso-scale thermal-fluid flow simulation with huge computational cost. We propose a data-driven prognostic approach with specialized physical constraints to rapidly predict the temperature profiles. The dataset is constructed from the physics-based thermal-fluid flow simulation results under different manufacturing parameters. The temperature field around the molten pool region is statistically characterized by the function parameters of the individual isotherms, which are essentially the output of the data-driven model based on the input manufacturing parameters, while the temperature field is reconstructed using the interpolation approach based on the predicted isotherms. The data-driven predicted temperature profiles are validated against those from the thermal-fluid flow simulations, and then further applied in the thermal stress and grain growth simulations, of which the results are compared with those using the temperature profile directly from thermal-fluid flow simulations. The results demonstrate that our data-driven approach is highly feasible in predicting the geometry features of the isotherms and temperature profiles around the molten pool regions.

Doi:https://doi.org/10.1016/j.cma.2022.114652

Download Paper

Metallic 4D Printing of Laser Stimulation

Published in Advanced Science, 2023

4D printing of metallic shape-morphing systems can be applied in many fields, including aerospace, smart manufacturing, naval equipment, and biomedical engineering. The existing forming materials for metallic 4D printing are still very limited except shape memory alloys. Herein, a 4D printing method to endow non-shape-memory metallic materials with active properties is presented, which could overcome the shape-forming limitation of traditional material processing technologies. The thermal stress spatial control of 316L stainless steel forming parts is achieved by programming the processing parameters during a laser powder bed fusion (LPBF) process. The printed parts can realize the shape changing of selected areas during or after forming process owing to stress release generated. It is demonstrated that complex metallic shape-morphing structures can be manufactured by this method. The principles of printing parameters programmed and thermal stress pre-set are also applicable to other thermoforming materials and additive manufacturing processes, which can expand not only the materials used for 4D printing but also the applications of 4D printing technologies.

Doi:https://doi.org/10.1002/advs.202206486

Download Paper

Factorial design analytics on effects of material parameter uncertainties in multiphysics modeling of additive manufacturing

Published in npj Computational Materials, 2023

A bottleneck in Laser Powder Bed Fusion (L-PBF) metal additive manufacturing (AM) is the quality inconsistency of its products. To address this issue without costly experimentation, computational multi-physics modeling has been used, but the effectiveness is limited by parameter uncertainties and their interactions. We propose a full factorial design and variable selection approach for the analytics of main and interaction effects arising from material parameter uncertainties in multi-physics models. Data is collected from high-fidelity thermal-fluid simulations based on a 2-level full factorial design for 5 selected material parameters. Crucial physical phenomena of the L-PBF process are analyzed to extract physics-based domain knowledge, which are used to establish a validation checkpoint for our study. Initial data visualization with half-normal probability plots, interaction plots and standard deviation plots, is used to assess if the checkpoint is being met. We then apply the combination of best subset selection and the LASSO method on multiple linear regression models for comprehensive variable selection. Analytics yield statistically and phyiscally validated findings with practical implications, emphasizing the importance of parameter interactions under uncertainty, and their relation to the underlying physics of L-PBF.

Doi:https://doi.org/10.1038/s41524-023-01004-9

Download Paper

Biomimetic 4D Printing Catapult: From Biological Prototype to Practical Implementation

Published in Advanced Functional Materials, 2023

4D printing technologies are currently suffering from the inability to produce rapid motions, which limit their applications that require fast shape transformation such as rapid unlocking and deployment of aerospace equipment. Herein, inspired by the shooting mechanisms of Viola verecunda fruit for seed dispersal, the 4D-printed biomimetic catapult is developed. Based on the structure change characteristics of gradient fan-shaped cells of the fruit pods during seed ejection, the biomimetic smart catapult is processed via the programming of spatial distribution of heterogeneous materials with various storage modulus enabled by additive manufacturing. This catapult can achieve high-speed ejection with the logically stimuli of external force, temperature, light, humidity, or electricity. The proposed biomimetic 4D printing strategy has broken through the limitations in motion speed, which helps fully unleash the potential of 4D printing.

Doi:https://doi.org/10.1002/adfm.202301286

Download Paper

Data-driven prediction of keyhole features in metal additive manufacturing based on physics-based simulation

Published in Journal of Intelligent Manufacturing, 2023

The defect formation is closely related to molten pool and keyhole features in metal additive manufacturing. Experimentation and physics-based simulation methods to capture the molten pool and keyhole features are expensive and time-consuming. A data-driven method is proposed in this work to efficiently predict the molten pool and keyhole features characterized by a series of fitting curves under given manufacturing parameters, instead of simply predicting the molten pool and keyhole sizes. The database consists of simulation cases with the high-fidelity thermal-fluid flow model. Molten pool melting regime, keyhole stability and keyhole type are recognized with the neural net pattern recognition. With the Gaussian process regression model, the keyhole dimensions are predicted and the keyhole contour is reconstructed. The comparison between predicted data and physics-based simulation results demonstrates the feasibility and accuracy of our data-driven model. Meanwhile, the predicted results can guide the selection of manufacturing parameters in actual production, and are also helpful to the further study of pores in additive manufacturing in academic research.

Doi:https://doi.org/10.1007/s10845-023-02157-6

Download Paper

A creep survey: from creep mechanism to macroscopic and microscopic models.

Published in METALLIC MICROSTRUCTURES EUROPEAN LECTURES ONLINE, 2024

At high temperature, metallic material creep is difficult to avoid. The understanding of the creep mechanisms helps metallurgists to design optimal alloy compositions and the prediction of a component life is a key input to manage safe maintenance and to define operational cost of any production line (solar plant parts, heat exchanger, any turbine parts loaded at high temperature…).

📥 Download slides (PPTX)

On the feasibility of an integrated English wheel system

Published in Journal of Manufacturing Systems, 2024

The English wheel is a highly flexible traditional metalworking tool that allows skilled craftsmen to form compound curves on sheet metal panels. Historically, geometric accuracy and repeatability of formed panels using the English wheel have been tied to the operator leading to limited industrial adoption. This paper presents a novel framework for an integrated English wheeling system that leverages robot forming with a newly developed adaptable gripper/end-effector, metrology for deformed geometry tracking and tolerance measurements, integrated sensors for real-time forming force measurements and control, computational modeling for tracking pattern/toolpath generation, and virtual reality (VR) for seamless integration. Sample panels are formed using the integrated system revealing new insights on the forming forces during the process – highlighting why an integrated system is desirable. Concepts from the proposed framework can be applied to other robotic forming processes and its merit is discussed under current digital manufacturing and industry 4.0 literature.

Doi:https://doi.org/10.1016/j.jmsy.2024.04.022

Download Paper

Efficient Representative Volume Element of a Matrix–Precipitate Microstructure—Application on AlSi10Mg Alloy

Published in Metals, 2024

In finite element models (FEMs), two- or three-dimensional Representative Volume Elements (RVEs) based on a statistical distribution of particles in a matrix can predict mechanical material properties. This article studies an alternative to 3D RVEs with a 2.5D RVE approach defined by a one-plane layer of 3D elements to model the material behavior. This 2.5D RVE relies on springs applied in the out-of-plane direction to constrain the two lateral deformations to be compatible, with the goal of achieving the isotropy of the studied material. The method is experimentally validated by the prediction of the tensile stress–strain curve of a bi-phasic microstructure of the AlSi10Mg alloy. Produced by additive manufacturing, the sample material becomes isotropic after friction stir processing post treatment. If a classical plane strain 2D RVE simulation is clearly too stiff compared to the experiment, the predictions of the stress–strain curves based on 2.5D RVE, 2D RVE with no transversal constraint (called 2D free RVE), and 3D RVE simulations are close to the experiments. The local stress fields within a 2.5D RVE present an interesting similarity with 3D RVE local fields, but differences with the 2D free RVE local results. Since a 2.5D RVE simplifies one spatial dimension, the simulations with this model are faster than the 3D RVE (factor 2580 in CPU or taking into account an optimal parallel computation, a factor 417 in real time). Such a discrepancy can affect the FEM2 multi-scale simulations or the time required to train a neural network, enhancing the interest in a 2.5D RVE model.

Doi:https://doi.org/10.3390/met14111244

Download Paper

Review of the Microstructural Impact on Creep Mechanisms and Performance for Laser Powder Bed Fusion Inconel 718

Published in Materials, 2025

Inconel 718 (IN718) is a polycrystalline nickel-based superalloy and one of the most widely used materials in the aerospace industry owing to its excellent mechanical performances at high temperatures, including creep resistance. Interest in additively manufactured components in aerospace is greatly increasing due to their ability to reduce material consumption, to manufacture complex parts, and to produce out-of-equilibrium microstructures, which can be beneficial for mechanical behavior. IN718’s properties are, however, very sensitive to microstructural features, which strongly depend on the manufacturing process and subsequent heat treatments. Additive manufacturing and, more specifically, Laser Powder Bed Fusion (LPBF) induces very high thermal gradients and anisotropic features due to its inherently directional nature, which largely defines the microstructure of the alloy. Hence, defining appropriate manufacturing parameters and heat treatments is critical to obtain appropriate mechanical behavior. This review aims to present the main microstructural features of IN718 produced by LPBF, the creep mechanisms taking place, the optimal microstructure for creep strength, and the most efficient heat treatments to yield such an optimized microstructure.

Doi:https://doi.org/10.3390/ma18020276

Download Paper

Acceleration of powder-bed-size thermal simulation considering scanning-path-scale through a pseudo-layer-wise equivalent heat flux model

Published in Journal of Manufacturing Processes, 2025

Part-scale modeling of the temperature field in metal powder bed additive manufacturing (AM) is critical for predicting mechanical properties of the AM-ed parts. Track-by-track heat transfer analysis is impractical due to the extensive number of layers and the intricate design of scan strategies for the heat source, particularly in the fabrication of specimen clusters or parts with complex geometry, where multiple regions in the powder bed are manufactured simultaneously. Many part-scale modeling approaches only focus on the thermal behavior of a single part without considering the thermal interaction from the surrounding parts to reduce computational cost. However, experimental observations have revealed that the temperature distribution along the building direction can vary among samples with identical local geometries. This discrepancy can be attributed to the heating effects from neighboring samples. In this study, we propose an integrated part-scale modeling framework that combines layer-wise equivalent heat flux attribution with layer-wise element activation. Before the layer-wise attribution, we justify the equivalent heat flux of individual layers through high-fidelity track-scale simulations. Unlike traditional heat transfer analysis for single parts, our analysis incorporates heat conduction effects through the powder bed between different fusion zones. The temperature data obtained from each equivalent layer using our approach shows consistency when compared to the experimental observations. This research presents an efficient, physically grounded method for modeling the thermal behavior of large AM specimen clusters, enhancing our understanding of temperature field evolution in AM and supporting the design of optimized scanning path strategies for large samples.

Doi:https://doi.org/10.1016/j.jmapro.2024.12.057

Download Paper

Exceptional strength paired with increased cold cracking susceptibility in laser powder bed fusion of a Mg-RE alloy

Published in Journal of Materials Science & Technology, 2025

Additive manufacturing (AM) of high-strength metallic alloys frequently encounters detrimental distortion and cracking, attributed to the accumulation of thermal stresses. These issues significantly impede the practical application of as-printed components. This study examines the Mg-15Gd-1Zn-0.4Zr (GZ151K, wt.%) alloy, a prototypical high-strength casting Mg-RE alloy, fabricated through laser powder bed fusion (LPBF). Despite achieving ultra-high strength, the GZ151K alloy concurrently exhibits a pronounced cold-cracking susceptibility. The as-printed GZ151K alloy consists of almost fully fine equiaxed grains with an average grain size of merely 2.87 µm. Subsequent direct aging (T5) heat treatment induces the formation of dense prismatic β’ precipitates. Consequently, the LPBF-T5 GZ151K alloy manifests an ultra-high yield strength of 405 MPa, surpassing all previously reported yield strengths for Mg alloys fabricated via LPBF and even exceeding that of its extrusion-T5 counterpart. Interestingly, as-printed GZ151K samples with a build height of 2 mm exhibit no cracking, whereas samples with build heights ranging from 4 to 18 mm demonstrate severe cold cracking. Thermal stress simulation also suggests that the cold cracking susceptibility increases significantly with increasing build height. The combination of high thermal stress and low ductility in the as-printed GZ151K alloy culminates in a high cold cracking susceptibility. This study offers novel insights into the intricate issue of cold cracking in the LPBF process of high-strength Mg alloys, highlighting the critical balance between achieving high strength and mitigating cold cracking susceptibility.

Doi:https://doi.org/10.1016/j.jmst.2024.07.005

Download Paper

Directed energy deposition on sheet metal forming for reinforcement structures

Published in Journal of Manufacturing Processes, 2025

While incremental forming processes can inexpensively create complex geometries from sheet metal, they struggle with adding sharp out of plane features for stiffness enhancement. With the implementation of directed-energy deposition (DED), an additive manufacturing process that locally deposits metal onto metallic substrates, reinforcement structures can be formed on the sheet metal. Furthermore, a design engineer may take advantage of the high residual stresses of DED to directly alter shapes in the substrate metal sheet. This hybrid forming-deposition process, as well as the application of local reinforcement, requires a good understanding of the process mechanism to predict expected shapes and minimize undesired deformations. In this work, numerical approaches are applied to evaluate heat transfer, thermal stress, and buckling of thin sheets under the stresses of deposition. These results are compared to analogous experiments conducted on an open-architecture laser-powder DED machine. The results of the thermal-mechanical analysis resemble the deformation trends observed in the experiments. However, the small-displacement formulation in the simulation used for ease of convergence does not fully capture the magnitude of the observed deformations. Nevertheless, the simulations effectively illustrate the effect of different scan strategies on the final deformed shape of the sheet metal.

Doi:https://doi.org/10.1016/j.jmapro.2025.03.120

Download Paper

  <h2 id="talks" class="archive__subtitle">talks</h2>
  <h2 id="teaching" class="archive__subtitle">teaching</h2>

From 2018 to 2022

Undergraduate course, Department of Mechanical Engineering, National University of Singapore

2018-2022, Department of Mechanical Engineering, National University of Singapore:

-ME1102 - Engineering Principles and Practice I

-ME2112 - Strength of Materials

-ME2115 - Mechanics of Machines: Vibration Lab


From 2022 to 2025

Student superviosion, , 2022

2018-2022, Department of Mechanical Engineering, National University of Singapore:

-Paper, software and coding supervision assistance for NUS Ph.D, Master and undergraduate students


2022-2023, Department of Mechanical Engineering, Northwestern University, USA:

-Software and coding supervision assistance for Ph.D students

    </div>     -->

    <!--  -->

portfolio

From 2018 to 2022

High-fidelity coupled CFD-FEM simulation on DED and LPBF

– corporation with ANSYS

Linked the high-fidelity molten pool dynamics model with the finite element solver for thermal stress simulation.

High-density dislocations in additively manufactured metals

– corporation with Shanghai Jiaotong University

Demonstrated that thermal stresses are the origin of high-density dislocations in additively manufactured metals using the coupled CFD-FEM simulation.

Physically informed data-driven prognostic model for the temperature prediction in AM

– corporation with Singapore A*STAR

High accuracy and significantly faster computation speed for the track-scale AM modeling based on the data-driven prediction (CNN, GPR, QR) of the isotherms and the isotherm-reconstructed temperature attribution on FEM model.

Pattern-oriented Strain Attribution in Part-scale Modeling of Additive Manufacturing

– corporation with Singapore A*STAR

Efficient large-scale AM modeling approaches with sound physical basis, where the layer-wise element progressive activation is applied with base strain pattern attributed onto the sample layers.

From 2022 to 2023

Hybrid Autonomous Manufacturing, Moving from Evolution to Revolution (HAMMER)

– corporation with The OHIO State University and so on.

High-fidelity English wheel simulation: distortion analysis of the sheet metal under rolling of two wheel of different size and curvature.

Micro-Casting of Titanium Alloy in Self-boiling Molds

Heat transfer analysis of liquid materials in multiple self-boiling molds for micro-casting.

DED on sheet metal forming

– corporation with Nissan

Deformation prediction using bulking analysis under the residual stress pattern achieved by track-scale DED simulation.

From 2024 to 2025

(AID4Greenest) - AI powered characterization and modelling for green steel technology

Funded by European Union

– corporation with Fraunhofer, IWM and IMDEA et al.

Fortran-based self-developed Lagamine coding platform for implementation of H. Morch visco-plasticity law & Development of the mean field creep model on Gitlab using Python.

publications

The origin of high-density dislocations in additively manufactured metals

Published in Materials Research Letters, 2020

The origin of dense dislocations in many additively manufactured metals remains a mystery. We here employed pure Cu as a prototype and fabricated the very challenging high-purity (>99.9%) bulk Cu by laser powder-bed-fusion (L-PBF) technique. We found that high-density dislocations were present in the as-built samples and these high-density dislocations were introduced on the fly during the L-PBF process. A newly developed multi-physics modeling was further employed to interpret the origin of these pre-existing dislocations, demonstrating that the compression-tension cycles rendered by the localized heating/cooling heterogeneity upon laser scanning are responsible for the residual high-density dislocations.

Doi:https://doi.org/10.1080/21663831.2020.1751739

Download Paper

High-fidelity modelling of thermal stress for additive manufacturing by linking thermal-fluid and mechanical models

Published in Materials & Design, 2020

The prediction of thermal stress and distortion is a prerequisite for high-quality additive manufacturing (AM). The widely applied thermo-mechanical model using the finite element method (FEM) leaves much to be improved due to their oversimplifications on material deposition, molten pool flow, etc. In this study, a high-fidelity modelling approach by linking the thermal-fluid (computational fluid dynamics, CFD) and mechanical models (named as CFD-FEM model) is developed to predict the thermal stress for AM taking into account the influences of thermal-fluid flow. Profiting from the precise temperature profiles and melt track geometry extracted from the thermal-fluid model as well as the remarkable flexibility of the quiet element method of FEM, this work aims at simulating the thermal stress distribution by involving physical changes in the AM process, e.g., melting and solidification of powder particles, molten pool evolution and inter-track inter-layer re-melting. Unlike the conventional thermo-mechanical analysis, in this approach, thermal stress calculation is purely based on a mechanical model where the thermal loads are applied by using a linear interpolation function to spatially and temporally map the temperature values from the thermal-fluid model’s cell centres into the FEM element nodes. With the proposed approach, the thermal stress evolution in the AM process of single track, multiple tracks and multiple layers are simulated, where the rough surfaces and internal voids can be well incorporated. Moreover, a conventional thermo-mechanical simulation of two tracks with predefined track geometry is conducted for cross comparison. Finally, the simulated thermal stress distribution can rationally explain the crack distribution observed in the experiments.

Doi:https://doi.org/10.1016/j.matdes.2020.109185

Download Paper

Enhanced strengthening and hardening via self-stabilized dislocation network in additively manufactured metals

Published in Materials Today, 2021

The advent of additive manufacturing (AM) offers the possibility of creating high-performance metallic materials with unique microstructure. Ultrafine dislocation cell structure in AM metals is believed to play a critical role in strengthening and hardening. However, its behavior is typically considered to be associated with alloying elements. Here we report that dislocations in AM metallic materials are self-stabilized even without the alloying effect. The heating–cooling cycles that are inherent to laser power-bed-fusion processes can stabilize dislocation network in situ by forming Lomer locks and a complex dislocation network. This unique dislocation assembly blocks and accumulates dislocations for strengthening and steady strain hardening, thereby rendering better material strength but several folds improvements in uniform tensile elongation compared to those made by traditional methods. The principles of dislocation manipulation and self-assembly are applicable to metals/alloys obtained by conventional routes in turn, through a simple post-cyclic deformation processing that mimics the micromechanics of AM. This work demonstrates the capability of AM to locally tune dislocation structures and achieve high-performance metallic materials.

Doi:https://doi.org/10.1016/j.mattod.2021.06.002

Download Paper

Crystal plasticity model of residual stress in additive manufacturing using the element elimination and reactivation method

Published in Computational Mechanics, 2021

Selective laser melting is receiving increasing interest as an additive manufacturing technique. Residual stresses induced by the large temperature gradients and inhomogeneous cooling process can favour the generation of cracks. In this work, a crystal plasticity finite element model is developed to simulate the formation of residual stresses and to understand the correlation between plastic deformation, grain orientation and residual stresses in the additive manufacturing process. The temperature profile and grain structure from thermal-fluid flow and grain growth simulations are implemented into the crystal plasticity model. An element elimination and reactivation method is proposed to model the melting and solidification and to reinitialize state variables, such as the plastic deformation, in the reactivated elements. The accuracy of this method is judged against previous method based on the stiffness degradation of liquid regions by comparing the plastic deformation as a function of time induced by thermal stresses. The method is used to investigate residual stresses parallel and perpendicular to the laser scan direction, and the correlation with the maximum Schmid factor of the grains along those directions. The magnitude of the residual stress can be predicted as a function of the depth, grain orientation and position with respect to the molten pool. The simulation results are directly comparable to X-ray diffraction experiments and stress–strain curves.

Doi:https://doi.org/10.1007/s00466-021-02116-z

Download Paper

Data-driven prognostic model for temperature field in additive manufacturing based on the high-fidelity thermal-fluid flow simulation

Published in Computer Methods in Applied Mechanics and Engineering, 2022

The process-structure–property relationship for additive manufacturing (AM) is typically derived starting from the temperature profile which can be achieved by the meso-scale thermal-fluid flow simulation with huge computational cost. We propose a data-driven prognostic approach with specialized physical constraints to rapidly predict the temperature profiles. The dataset is constructed from the physics-based thermal-fluid flow simulation results under different manufacturing parameters. The temperature field around the molten pool region is statistically characterized by the function parameters of the individual isotherms, which are essentially the output of the data-driven model based on the input manufacturing parameters, while the temperature field is reconstructed using the interpolation approach based on the predicted isotherms. The data-driven predicted temperature profiles are validated against those from the thermal-fluid flow simulations, and then further applied in the thermal stress and grain growth simulations, of which the results are compared with those using the temperature profile directly from thermal-fluid flow simulations. The results demonstrate that our data-driven approach is highly feasible in predicting the geometry features of the isotherms and temperature profiles around the molten pool regions.

Doi:https://doi.org/10.1016/j.cma.2022.114652

Download Paper

Metallic 4D Printing of Laser Stimulation

Published in Advanced Science, 2023

4D printing of metallic shape-morphing systems can be applied in many fields, including aerospace, smart manufacturing, naval equipment, and biomedical engineering. The existing forming materials for metallic 4D printing are still very limited except shape memory alloys. Herein, a 4D printing method to endow non-shape-memory metallic materials with active properties is presented, which could overcome the shape-forming limitation of traditional material processing technologies. The thermal stress spatial control of 316L stainless steel forming parts is achieved by programming the processing parameters during a laser powder bed fusion (LPBF) process. The printed parts can realize the shape changing of selected areas during or after forming process owing to stress release generated. It is demonstrated that complex metallic shape-morphing structures can be manufactured by this method. The principles of printing parameters programmed and thermal stress pre-set are also applicable to other thermoforming materials and additive manufacturing processes, which can expand not only the materials used for 4D printing but also the applications of 4D printing technologies.

Doi:https://doi.org/10.1002/advs.202206486

Download Paper

Factorial design analytics on effects of material parameter uncertainties in multiphysics modeling of additive manufacturing

Published in npj Computational Materials, 2023

A bottleneck in Laser Powder Bed Fusion (L-PBF) metal additive manufacturing (AM) is the quality inconsistency of its products. To address this issue without costly experimentation, computational multi-physics modeling has been used, but the effectiveness is limited by parameter uncertainties and their interactions. We propose a full factorial design and variable selection approach for the analytics of main and interaction effects arising from material parameter uncertainties in multi-physics models. Data is collected from high-fidelity thermal-fluid simulations based on a 2-level full factorial design for 5 selected material parameters. Crucial physical phenomena of the L-PBF process are analyzed to extract physics-based domain knowledge, which are used to establish a validation checkpoint for our study. Initial data visualization with half-normal probability plots, interaction plots and standard deviation plots, is used to assess if the checkpoint is being met. We then apply the combination of best subset selection and the LASSO method on multiple linear regression models for comprehensive variable selection. Analytics yield statistically and phyiscally validated findings with practical implications, emphasizing the importance of parameter interactions under uncertainty, and their relation to the underlying physics of L-PBF.

Doi:https://doi.org/10.1038/s41524-023-01004-9

Download Paper

Biomimetic 4D Printing Catapult: From Biological Prototype to Practical Implementation

Published in Advanced Functional Materials, 2023

4D printing technologies are currently suffering from the inability to produce rapid motions, which limit their applications that require fast shape transformation such as rapid unlocking and deployment of aerospace equipment. Herein, inspired by the shooting mechanisms of Viola verecunda fruit for seed dispersal, the 4D-printed biomimetic catapult is developed. Based on the structure change characteristics of gradient fan-shaped cells of the fruit pods during seed ejection, the biomimetic smart catapult is processed via the programming of spatial distribution of heterogeneous materials with various storage modulus enabled by additive manufacturing. This catapult can achieve high-speed ejection with the logically stimuli of external force, temperature, light, humidity, or electricity. The proposed biomimetic 4D printing strategy has broken through the limitations in motion speed, which helps fully unleash the potential of 4D printing.

Doi:https://doi.org/10.1002/adfm.202301286

Download Paper

Data-driven prediction of keyhole features in metal additive manufacturing based on physics-based simulation

Published in Journal of Intelligent Manufacturing, 2023

The defect formation is closely related to molten pool and keyhole features in metal additive manufacturing. Experimentation and physics-based simulation methods to capture the molten pool and keyhole features are expensive and time-consuming. A data-driven method is proposed in this work to efficiently predict the molten pool and keyhole features characterized by a series of fitting curves under given manufacturing parameters, instead of simply predicting the molten pool and keyhole sizes. The database consists of simulation cases with the high-fidelity thermal-fluid flow model. Molten pool melting regime, keyhole stability and keyhole type are recognized with the neural net pattern recognition. With the Gaussian process regression model, the keyhole dimensions are predicted and the keyhole contour is reconstructed. The comparison between predicted data and physics-based simulation results demonstrates the feasibility and accuracy of our data-driven model. Meanwhile, the predicted results can guide the selection of manufacturing parameters in actual production, and are also helpful to the further study of pores in additive manufacturing in academic research.

Doi:https://doi.org/10.1007/s10845-023-02157-6

Download Paper

A creep survey: from creep mechanism to macroscopic and microscopic models.

Published in METALLIC MICROSTRUCTURES EUROPEAN LECTURES ONLINE, 2024

At high temperature, metallic material creep is difficult to avoid. The understanding of the creep mechanisms helps metallurgists to design optimal alloy compositions and the prediction of a component life is a key input to manage safe maintenance and to define operational cost of any production line (solar plant parts, heat exchanger, any turbine parts loaded at high temperature…).

📥 Download slides (PPTX)

On the feasibility of an integrated English wheel system

Published in Journal of Manufacturing Systems, 2024

The English wheel is a highly flexible traditional metalworking tool that allows skilled craftsmen to form compound curves on sheet metal panels. Historically, geometric accuracy and repeatability of formed panels using the English wheel have been tied to the operator leading to limited industrial adoption. This paper presents a novel framework for an integrated English wheeling system that leverages robot forming with a newly developed adaptable gripper/end-effector, metrology for deformed geometry tracking and tolerance measurements, integrated sensors for real-time forming force measurements and control, computational modeling for tracking pattern/toolpath generation, and virtual reality (VR) for seamless integration. Sample panels are formed using the integrated system revealing new insights on the forming forces during the process – highlighting why an integrated system is desirable. Concepts from the proposed framework can be applied to other robotic forming processes and its merit is discussed under current digital manufacturing and industry 4.0 literature.

Doi:https://doi.org/10.1016/j.jmsy.2024.04.022

Download Paper

Efficient Representative Volume Element of a Matrix–Precipitate Microstructure—Application on AlSi10Mg Alloy

Published in Metals, 2024

In finite element models (FEMs), two- or three-dimensional Representative Volume Elements (RVEs) based on a statistical distribution of particles in a matrix can predict mechanical material properties. This article studies an alternative to 3D RVEs with a 2.5D RVE approach defined by a one-plane layer of 3D elements to model the material behavior. This 2.5D RVE relies on springs applied in the out-of-plane direction to constrain the two lateral deformations to be compatible, with the goal of achieving the isotropy of the studied material. The method is experimentally validated by the prediction of the tensile stress–strain curve of a bi-phasic microstructure of the AlSi10Mg alloy. Produced by additive manufacturing, the sample material becomes isotropic after friction stir processing post treatment. If a classical plane strain 2D RVE simulation is clearly too stiff compared to the experiment, the predictions of the stress–strain curves based on 2.5D RVE, 2D RVE with no transversal constraint (called 2D free RVE), and 3D RVE simulations are close to the experiments. The local stress fields within a 2.5D RVE present an interesting similarity with 3D RVE local fields, but differences with the 2D free RVE local results. Since a 2.5D RVE simplifies one spatial dimension, the simulations with this model are faster than the 3D RVE (factor 2580 in CPU or taking into account an optimal parallel computation, a factor 417 in real time). Such a discrepancy can affect the FEM2 multi-scale simulations or the time required to train a neural network, enhancing the interest in a 2.5D RVE model.

Doi:https://doi.org/10.3390/met14111244

Download Paper

Review of the Microstructural Impact on Creep Mechanisms and Performance for Laser Powder Bed Fusion Inconel 718

Published in Materials, 2025

Inconel 718 (IN718) is a polycrystalline nickel-based superalloy and one of the most widely used materials in the aerospace industry owing to its excellent mechanical performances at high temperatures, including creep resistance. Interest in additively manufactured components in aerospace is greatly increasing due to their ability to reduce material consumption, to manufacture complex parts, and to produce out-of-equilibrium microstructures, which can be beneficial for mechanical behavior. IN718’s properties are, however, very sensitive to microstructural features, which strongly depend on the manufacturing process and subsequent heat treatments. Additive manufacturing and, more specifically, Laser Powder Bed Fusion (LPBF) induces very high thermal gradients and anisotropic features due to its inherently directional nature, which largely defines the microstructure of the alloy. Hence, defining appropriate manufacturing parameters and heat treatments is critical to obtain appropriate mechanical behavior. This review aims to present the main microstructural features of IN718 produced by LPBF, the creep mechanisms taking place, the optimal microstructure for creep strength, and the most efficient heat treatments to yield such an optimized microstructure.

Doi:https://doi.org/10.3390/ma18020276

Download Paper

Acceleration of powder-bed-size thermal simulation considering scanning-path-scale through a pseudo-layer-wise equivalent heat flux model

Published in Journal of Manufacturing Processes, 2025

Part-scale modeling of the temperature field in metal powder bed additive manufacturing (AM) is critical for predicting mechanical properties of the AM-ed parts. Track-by-track heat transfer analysis is impractical due to the extensive number of layers and the intricate design of scan strategies for the heat source, particularly in the fabrication of specimen clusters or parts with complex geometry, where multiple regions in the powder bed are manufactured simultaneously. Many part-scale modeling approaches only focus on the thermal behavior of a single part without considering the thermal interaction from the surrounding parts to reduce computational cost. However, experimental observations have revealed that the temperature distribution along the building direction can vary among samples with identical local geometries. This discrepancy can be attributed to the heating effects from neighboring samples. In this study, we propose an integrated part-scale modeling framework that combines layer-wise equivalent heat flux attribution with layer-wise element activation. Before the layer-wise attribution, we justify the equivalent heat flux of individual layers through high-fidelity track-scale simulations. Unlike traditional heat transfer analysis for single parts, our analysis incorporates heat conduction effects through the powder bed between different fusion zones. The temperature data obtained from each equivalent layer using our approach shows consistency when compared to the experimental observations. This research presents an efficient, physically grounded method for modeling the thermal behavior of large AM specimen clusters, enhancing our understanding of temperature field evolution in AM and supporting the design of optimized scanning path strategies for large samples.

Doi:https://doi.org/10.1016/j.jmapro.2024.12.057

Download Paper

Exceptional strength paired with increased cold cracking susceptibility in laser powder bed fusion of a Mg-RE alloy

Published in Journal of Materials Science & Technology, 2025

Additive manufacturing (AM) of high-strength metallic alloys frequently encounters detrimental distortion and cracking, attributed to the accumulation of thermal stresses. These issues significantly impede the practical application of as-printed components. This study examines the Mg-15Gd-1Zn-0.4Zr (GZ151K, wt.%) alloy, a prototypical high-strength casting Mg-RE alloy, fabricated through laser powder bed fusion (LPBF). Despite achieving ultra-high strength, the GZ151K alloy concurrently exhibits a pronounced cold-cracking susceptibility. The as-printed GZ151K alloy consists of almost fully fine equiaxed grains with an average grain size of merely 2.87 µm. Subsequent direct aging (T5) heat treatment induces the formation of dense prismatic β’ precipitates. Consequently, the LPBF-T5 GZ151K alloy manifests an ultra-high yield strength of 405 MPa, surpassing all previously reported yield strengths for Mg alloys fabricated via LPBF and even exceeding that of its extrusion-T5 counterpart. Interestingly, as-printed GZ151K samples with a build height of 2 mm exhibit no cracking, whereas samples with build heights ranging from 4 to 18 mm demonstrate severe cold cracking. Thermal stress simulation also suggests that the cold cracking susceptibility increases significantly with increasing build height. The combination of high thermal stress and low ductility in the as-printed GZ151K alloy culminates in a high cold cracking susceptibility. This study offers novel insights into the intricate issue of cold cracking in the LPBF process of high-strength Mg alloys, highlighting the critical balance between achieving high strength and mitigating cold cracking susceptibility.

Doi:https://doi.org/10.1016/j.jmst.2024.07.005

Download Paper

Directed energy deposition on sheet metal forming for reinforcement structures

Published in Journal of Manufacturing Processes, 2025

While incremental forming processes can inexpensively create complex geometries from sheet metal, they struggle with adding sharp out of plane features for stiffness enhancement. With the implementation of directed-energy deposition (DED), an additive manufacturing process that locally deposits metal onto metallic substrates, reinforcement structures can be formed on the sheet metal. Furthermore, a design engineer may take advantage of the high residual stresses of DED to directly alter shapes in the substrate metal sheet. This hybrid forming-deposition process, as well as the application of local reinforcement, requires a good understanding of the process mechanism to predict expected shapes and minimize undesired deformations. In this work, numerical approaches are applied to evaluate heat transfer, thermal stress, and buckling of thin sheets under the stresses of deposition. These results are compared to analogous experiments conducted on an open-architecture laser-powder DED machine. The results of the thermal-mechanical analysis resemble the deformation trends observed in the experiments. However, the small-displacement formulation in the simulation used for ease of convergence does not fully capture the magnitude of the observed deformations. Nevertheless, the simulations effectively illustrate the effect of different scan strategies on the final deformed shape of the sheet metal.

Doi:https://doi.org/10.1016/j.jmapro.2025.03.120

Download Paper

talks

teaching

From 2018 to 2022

Undergraduate course, Department of Mechanical Engineering, National University of Singapore

2018-2022, Department of Mechanical Engineering, National University of Singapore:

-ME1102 - Engineering Principles and Practice I

-ME2112 - Strength of Materials

-ME2115 - Mechanics of Machines: Vibration Lab


From 2022 to 2025

Student superviosion, , 2022

2018-2022, Department of Mechanical Engineering, National University of Singapore:

-Paper, software and coding supervision assistance for NUS Ph.D, Master and undergraduate students


2022-2023, Department of Mechanical Engineering, Northwestern University, USA:

-Software and coding supervision assistance for Ph.D students

</article> </div>

CV

Your Sidebar Name

none@example.org
Earth, , US

Summary

Currently employed at Red Brick University. Short biography for the left-hand sidebar

Education

  • Ph.D in Version Control Theory
    2018
    GitHub University
  • M.S. in Jekyll
    2014
    GitHub University
  • B.S. in GitHub
    2012
    GitHub University

Publications

  • Paper Title Number 1
    2009
    Journal 1
    This paper is about the number 1. The number 2 is left for future work.
  • Paper Title Number 2
    2010
    Journal 1
    This paper is about the number 2. The number 3 is left for future work.
  • Paper Title Number 3
    2015
    Journal 1
    This paper is about the number 3. The number 4 is left for future work.
  • Paper Title Number 4
    2024
    GitHub Journal of Bugs
    This paper is about fixing template issue #693.

Presentations

  • Talk 1 on Relevant Topic in Your Field
    2012
    UC San Francisco, Department of Testing
    San Francisco, CA, USA
  • Tutorial 1 on Relevant Topic in Your Field
    2013
    UC-Berkeley Institute for Testing Science
    Berkeley, CA, USA
  • Talk 2 on Relevant Topic in Your Field
    2014
    London School of Testing
    London, UK
  • Conference Proceeding talk 3 on Relevant Topic in Your Field
    2014
    Testing Institute of America 2014 Annual Conference
    Los Angeles, CA, USA

Teaching

  • Teaching experience 1
    2014
    University 1, Department
    Role: Undergraduate course
  • Teaching experience 2
    2015
    University 1, Department
    Role: Workshop

Portfolio

  • Portfolio item number 1
    Portfolio
    Short description of portfolio item number 1
</div></div> -->

Your Sidebar Name

none@example.org
Earth, , US

Summary

Currently employed at Red Brick University. Short biography for the left-hand sidebar

Education

  • Ph.D in Version Control Theory
    2018
    GitHub University
  • M.S. in Jekyll
    2014
    GitHub University
  • B.S. in GitHub
    2012
    GitHub University

Publications

  • Paper Title Number 1
    2009
    Journal 1
    This paper is about the number 1. The number 2 is left for future work.
  • Paper Title Number 2
    2010
    Journal 1
    This paper is about the number 2. The number 3 is left for future work.
  • Paper Title Number 3
    2015
    Journal 1
    This paper is about the number 3. The number 4 is left for future work.
  • Paper Title Number 4
    2024
    GitHub Journal of Bugs
    This paper is about fixing template issue #693.

Presentations

  • Talk 1 on Relevant Topic in Your Field
    2012
    UC San Francisco, Department of Testing
    San Francisco, CA, USA
  • Tutorial 1 on Relevant Topic in Your Field
    2013
    UC-Berkeley Institute for Testing Science
    Berkeley, CA, USA
  • Talk 2 on Relevant Topic in Your Field
    2014
    London School of Testing
    London, UK
  • Conference Proceeding talk 3 on Relevant Topic in Your Field
    2014
    Testing Institute of America 2014 Annual Conference
    Los Angeles, CA, USA

Teaching

  • Teaching experience 1
    2014
    University 1, Department
    Role: Undergraduate course
  • Teaching experience 2
    2015
    University 1, Department
    Role: Workshop

Portfolio

  • Portfolio item number 1
    Portfolio
    Short description of portfolio item number 1

CV

Education

  • Ph.D in Version Control Theory, GitHub University, 2018 (expected)
  • M.S. in Jekyll, GitHub University, 2014
  • B.S. in GitHub, GitHub University, 2012

Work experience

  • Spring 2024: Academic Pages Collaborator
    • GitHub University
    • Duties includes: Updates and improvements to template
    • Supervisor: The Users
  • Fall 2015: Research Assistant
    • GitHub University
    • Duties included: Merging pull requests
    • Supervisor: Professor Hub
  • Summer 2015: Research Assistant
    • GitHub University
    • Duties included: Tagging issues
    • Supervisor: Professor Git

Skills

  • Skill 1
  • Skill 2
    • Sub-skill 2.1
    • Sub-skill 2.2
    • Sub-skill 2.3
  • Skill 3

Publications

Talks

Teaching

Service and leadership

  • Currently signed in to 43 different slack teams

:root{--global-base-color: #7a8288;--global-bg-color: #fff;--global-footer-bg-color: #f2f3f3;--global-border-color: #f2f3f3;--global-dark-border-color: #bdc1c4;--global-code-background-color: #fafafa;--global-code-text-color: #313436;--global-fig-caption-color: mix(#fff, #494e52, 25%);--global-link-color: #52adc8;--global-link-color-hover: mix(#000, #2f7f93, 25%);--global-link-color-visited: mix(#fff, #2f7f93, 25%);--global-masthead-link-color: #494e52;--global-masthead-link-color-hover: mix(#000, #7a8288, 25%);--global-text-color: #494e52;--global-text-color-light: #9ba1a6;--global-thead-color: #f2f3f3}html[data-theme="dark"]{--global-base-color: #474747;--global-bg-color: #474747;--global-footer-bg-color: #474747;--global-border-color: #bdc1c4;--global-dark-border-color: #dadada;--global-code-background-color: #fafafa;--global-code-text-color: #313436;--global-fig-caption-color: #bdc1c4;--global-link-color: #0ea1c5;--global-link-color-hover: #0b7994;--global-link-color-visited: #4ab9d4;--global-masthead-link-color: #fff;--global-masthead-link-color-hover: #dadada;--global-text-color: #fff;--global-text-color-light: #bdc1c4;--global-thead-color: #ededed}a:focus{outline:thin dotted #f89406;outline:5px auto #f89406;outline-offset:-2px}*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}html{box-sizing:border-box;background-color:var(--global-bg-color);font-size:16px;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}@media (min-width: 48em){html{font-size:18px}}body{margin:0}::-moz-selection{color:#fff;background:#000}::selection{color:#fff;background:#000}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}a{color:var(--global-link-color)}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}html{position:relative;min-height:100%}body{color:var(--global-text-color);background-color:var(--global-bg-color);margin:0;padding:70px 0 0;padding-bottom:9em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;line-height:1.5}body.overflow--hidden{overflow:hidden}h1,h2,h3,h4,h5,h6{margin:2em 0 0.5em;line-height:1.2;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-weight:bold}h1{margin-top:0;font-size:1.563em}h2{font-size:1.25em}h3{font-size:1em}h4{font-size:.75em}h5{font-size:.75em}h6{font-size:.75em}small,.small{font-size:.75em}p{margin-bottom:1.3em}u,ins{text-decoration:none;border-bottom:1px solid var(--global-text-color)}u a,ins a{color:inherit}del a{color:inherit}p,pre,blockquote,ul,ol,dl,figure,table,fieldset{orphans:3;widows:3}abbr[title],abbr[data-original-title]{text-decoration:none;cursor:help;border-bottom:1px dotted var(--global-text-color)}blockquote{margin:2em 1em 2em 0;padding-left:1em;padding-right:1em;font-style:italic;border-left:0.25em solid var(--global-border-color)}blockquote cite{font-style:italic}blockquote cite:before{content:"\2014";padding-right:5px}a:hover,a:active{outline:0}tt,code,kbd,samp,pre{font-family:Monaco,Consolas,"Lucida Console",monospace}pre{overflow-x:auto}a>code,figcaption>code,li>code,p>code,td>code{color:var(--global-code-text-color);padding-top:0.1rem;padding-bottom:0.1rem;font-size:.75em;background:var(--global-code-background-color);border:1px solid var(--global-thead-color);border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}a>code:before,a>code:after,figcaption>code:before,figcaption>code:after,li>code:before,li>code:after,p>code:before,p>code:after,td>code:before,td>code:after{letter-spacing:-0.2em;content:"\00a0"}a>code{color:inherit}pre>code{color:var(--global-code-text-color)}hr{display:block;margin:1em 0;border:0;border-top:1px solid var(--global-border-color)}ul li,ol li{margin-bottom:0.5em}li ul,li ol{margin-top:0.5em}figure{display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:start;align-items:flex-start;flex-wrap:wrap;margin:2em 0}figure img,figure iframe,figure .fluid-width-video-wrapper{margin-bottom:1em}figure img{width:100%;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}figure>a{display:block}@media (min-width: 37.5em){figure.half>a,figure.half>img{width:calc(50% - 0.5em)}}figure.half figcaption{width:100%}@media (min-width: 37.5em){figure.third>a,figure.third>img{width:calc(33.3333% - 0.5em)}}figure.third figcaption{width:100%}figcaption{margin-bottom:0.5em;color:var(--global-fig-caption-color);font-family:Georgia,Times,serif;font-size:.75em}figcaption a{color:inherit;text-decoration:none;border-bottom:1px solid var(--global-border-color);-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}figcaption a:hover{color:#000;border-bottom-color:#000}svg:not(:root){overflow:hidden}nav ul{margin:0;padding:0}nav li{list-style:none}nav a{text-decoration:none}nav ul li,nav ol li{margin-bottom:0}nav li ul,nav li ol{margin-top:0}@-webkit-keyframes intro{0%{opacity:0}100%{opacity:1}}@keyframes intro{0%{opacity:0}100%{opacity:1}}b,i,strong,em,blockquote,p,q,span,figure,img,h1,h2,header,input,a,tr,td,form button,input[type="submit"],.btn,#goog-wm-sb,.highlight,.archive__item-teaser{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}@media print{.masthead,.toc,.page__share,.page__related,.ads,.page__footer{display:none}}.hidden{display:none;visibility:hidden}.load{display:none}.transparent{opacity:0}.visually-hidden,.screen-reader-text,.screen-reader-text span,.screen-reader-shortcut{position:absolute !important;clip:rect(1px, 1px, 1px, 1px);height:1px !important;width:1px !important;border:0 !important;overflow:hidden}body:hover .visually-hidden a,body:hover .visually-hidden input,body:hover .visually-hidden button{display:none !important}.screen-reader-text:focus,.screen-reader-shortcut:focus{clip:auto !important;height:auto !important;width:auto !important;display:block;font-size:1em;font-weight:bold;padding:15px 23px 14px;background:#fff;z-index:100000;text-decoration:none;box-shadow:0 0 2px 2px rgba(0,0,0,0.6)}.skip-link{position:fixed;z-index:20;margin:0;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;white-space:nowrap}.skip-link li{height:0;width:0;list-style:none}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.cf{clear:both}.wrapper{max-width:925px;margin-left:auto;margin-right:auto}.wrapper:after{content:" ";display:block;clear:both}.wordwrap{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}.align-left{display:block;margin-left:auto;margin-right:auto}@media (min-width: 37.5em){.align-left{float:left;margin-right:1em}}.align-right{display:block;margin-left:auto;margin-right:auto}@media (min-width: 37.5em){.align-right{float:right;margin-left:1em}}.align-center{display:block;margin-left:auto;margin-right:auto}@media (min-width: 57.8125em){.full{margin-right:-19.4915254237% !important}}.icon{display:inline-block;fill:currentColor;width:1em;height:1.1em;line-height:1;position:relative;top:-0.1em;vertical-align:middle}.icon-pad-right{padding-right:0.5em;margin-right:0.5em}.social-icons .fa{color:#000}.social-icons .fa-bluesky,.social-icons .fa-bluesky-square{color:#1184fe}.social-icons .fa-behance,.social-icons .fa-behance-square{color:#1769FF}.social-icons .fa-dribbble{color:#ea4c89}.social-icons .fa-facebook,.social-icons .fa-facebook-square{color:#3b5998}.social-icons .fa-flickr{color:#ff0084}.social-icons .fa-foursquare{color:#0072b1}.social-icons .fa-github,.social-icons .fa-github-alt,.social-icons .fa-github-square{color:#171516}.social-icons .fa-google-plus,.social-icons .fa-google-plus-square{color:#dd4b39}.social-icons .fa-instagram{color:#517fa4}.social-icons .fa-kaggle,.social-icons .fa-kaggle-square{color:#20c0ff}.social-icons .fa-lastfm,.social-icons .fa-lastfm-square{color:#d51007}.social-icons .fa-linkedin,.social-icons .fa-linkedin-square{color:#007bb6}.social-icons .fa-mastodon,.social-icons .fa-mastodon-square{color:#6364ff}.social-icons .ai-orcid,.social-icons .ai-orcid-square{color:#a6ce39}.social-icons .fa-pinterest,.social-icons .fa-pinterest-p,.social-icons .fa-pinterest-square{color:#cb2027}.social-icons .fa-rss,.social-icons .fa-rss-square{color:#fa9b39}.social-icons .fa-soundcloud{color:#f30}.social-icons .fa-stack-exchange,.social-icons .fa-stack-overflow{color:#fe7a15}.social-icons .fa-tumblr,.social-icons .fa-tumblr-square{color:#32506d}.social-icons .fa-twitter,.social-icons .fa-twitter-square{color:#55acee}.social-icons .fa-vimeo,.social-icons .fa-vimeo-square{color:#1ab7ea}.social-icons .fa-vine{color:#00bf8f}.social-icons .fa-youtube,.social-icons .fa-youtube-square,.social-icons .fa-youtube-play{color:#b00}.social-icons .fa-xing,.social-icons .fa-xing-square{color:#006567}.navicon{position:relative;width:28px;height:4px;background:#fff;margin:auto;-webkit-transition:0.3s;transition:0.3s}.navicon:before,.navicon:after{content:"";position:absolute;left:0;width:28px;height:4px;background:#fff;-webkit-transition:0.3s;transition:0.3s}.navicon:before{top:-8px}.navicon:after{bottom:-8px}.close .navicon{background:transparent}.close .navicon:before,.close .navicon:after{-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;top:0;width:28px}.close .navicon:before{-webkit-transform:rotate3d(0, 0, 1, 45deg);transform:rotate3d(0, 0, 1, 45deg)}.close .navicon:after{-webkit-transform:rotate3d(0, 0, 1, -45deg);transform:rotate3d(0, 0, 1, -45deg)}@media (min-width: 57.8125em){.sticky{clear:both;position:-webkit-sticky;position:sticky;top:2em}.sticky::after{clear:both;content:"";display:table}.sticky>*{display:block}}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.show-modal{overflow:hidden;position:relative}.show-modal:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;z-index:999;background-color:rgba(255,255,255,0.85)}.show-modal .modal{display:block}.modal{display:none;position:fixed;width:300px;top:50%;left:50%;margin-left:-150px;margin-top:-150px;min-height:0;z-index:9999;background:#fff;border:1px solid var(--global-border-color);border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}.modal__title{margin:0;padding:0.5em 1em}.modal__supporting-text{padding:0 1em 0.5em 1em}.modal__actions{padding:0.5em 1em;border-top:1px solid var(--global-border-color)}.footnote{color:var(--global-text-color-light);text-decoration:none}.footnotes{color:var(--global-text-color-light)}.footnotes ol,.footnotes li,.footnotes p{margin-bottom:0;font-size:.75em}a.reversefootnote{color:var(--global-text-color-light);text-decoration:none}a.reversefootnote:hover{text-decoration:underline}.required{color:#ee5f5b;font-weight:bold}table{margin-bottom:1em;width:100%;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;border-collapse:collapse;border:1px solid var(--global-border-color)}table+table{margin-top:1em}thead{background-color:var(--global-border-color);border-bottom:1px solid var(--global-border-color)}th{padding:0.5em;font-weight:bold;text-align:left;border-right:1px solid var(--global-border-color)}td{padding:0.5em;border-bottom:1px solid var(--global-border-color);border-right:1px solid var(--global-border-color)}tr,td,th{vertical-align:middle}.btn,#goog-wm-sb{display:inline-block;margin-bottom:0.25em;padding:0.5em 1em;color:#fff !important;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;font-weight:bold;text-align:center;text-decoration:none;background-color:var(--global-base-color);border:0 !important;border-radius:4px;cursor:pointer}.btn:hover,#goog-wm-sb:hover{background-color:#333}.btn .icon,#goog-wm-sb .icon{margin-right:0.5em}.btn .icon+.hidden,#goog-wm-sb .icon+.hidden{margin-left:-0.5em}.btn--block{display:block;width:100%}.btn--block+.btn--block{margin-top:0.25em}.btn--inverse{color:var(--global-text-color-light) !important;border:1px solid var(--global-border-color) !important;background-color:var(--global-bg-color)}.btn--inverse:hover{color:#fff !important;border-color:var(--global-text-color-light)}.btn--light-outline{border:1px solid #fff !important;background-color:transparent}.btn--info{background-color:#2f7f93}.btn--info:hover{background-color:#266676}.btn--warning{background-color:#f89406}.btn--warning:hover{background-color:#c67605}.btn--success{background-color:#62c462}.btn--success:hover{background-color:#4e9d4e}.btn--danger{background-color:#ee5f5b}.btn--danger:hover{background-color:#be4c49}.btn--disabled{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:0.65}.btn--bluesky{background-color:#1184fe}.btn--bluesky:hover{background-color:#0e6acb}.btn--facebook{background-color:#3b5998}.btn--facebook:hover{background-color:#2f477a}.btn--twitter{background-color:#55acee}.btn--twitter:hover{background-color:#448abe}.btn--google-plus{background-color:#dd4b39}.btn--google-plus:hover{background-color:#b13c2e}.btn--linkedin{background-color:#007bb6}.btn--linkedin:hover{background-color:#006292}.btn--x-large{font-size:1.25em}.btn--large{font-size:1em}.btn--small{font-size:.6875em}.notice{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(122,130,136,0.25);color:var(--global-code-text-color)}.notice h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice h4{margin-bottom:0;font-size:1em}.notice p:last-child{margin-bottom:0 !important}.notice h4+p{margin-top:0;padding-top:0}.notice a{color:#7a8288}.notice a:hover{color:#494e52}.notice code{background-color:#f8f9f9}.notice ul:last-child{margin-bottom:0}.notice--primary{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(122,130,136,0.25);color:var(--global-code-text-color)}.notice--primary h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--primary h4{margin-bottom:0;font-size:1em}.notice--primary p:last-child{margin-bottom:0 !important}.notice--primary h4+p{margin-top:0;padding-top:0}.notice--primary a{color:#7a8288}.notice--primary a:hover{color:#494e52}.notice--primary code{background-color:#f8f9f9}.notice--primary ul:last-child{margin-bottom:0}.notice--info{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#eaf2f4;border-radius:4px;box-shadow:0 1px 1px rgba(47,127,147,0.25);color:var(--global-code-text-color)}.notice--info h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--info h4{margin-bottom:0;font-size:1em}.notice--info p:last-child{margin-bottom:0 !important}.notice--info h4+p{margin-top:0;padding-top:0}.notice--info a{color:#2f7f93}.notice--info a:hover{color:#1c4c58}.notice--info code{background-color:#f5f9fa}.notice--info ul:last-child{margin-bottom:0}.notice--warning{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#fef4e6;border-radius:4px;box-shadow:0 1px 1px rgba(248,148,6,0.25);color:var(--global-code-text-color)}.notice--warning h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--warning h4{margin-bottom:0;font-size:1em}.notice--warning p:last-child{margin-bottom:0 !important}.notice--warning h4+p{margin-top:0;padding-top:0}.notice--warning a{color:#f89406}.notice--warning a:hover{color:#955904}.notice--warning code{background-color:#fffaf3}.notice--warning ul:last-child{margin-bottom:0}.notice--success{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#eff9ef;border-radius:4px;box-shadow:0 1px 1px rgba(98,196,98,0.25);color:var(--global-code-text-color)}.notice--success h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--success h4{margin-bottom:0;font-size:1em}.notice--success p:last-child{margin-bottom:0 !important}.notice--success h4+p{margin-top:0;padding-top:0}.notice--success a{color:#62c462}.notice--success a:hover{color:#3b763b}.notice--success code{background-color:#f7fcf7}.notice--success ul:last-child{margin-bottom:0}.notice--danger{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#fdefef;border-radius:4px;box-shadow:0 1px 1px rgba(238,95,91,0.25);color:var(--global-code-text-color)}.notice--danger h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--danger h4{margin-bottom:0;font-size:1em}.notice--danger p:last-child{margin-bottom:0 !important}.notice--danger h4+p{margin-top:0;padding-top:0}.notice--danger a{color:#ee5f5b}.notice--danger a:hover{color:#8f3937}.notice--danger code{background-color:#fef7f7}.notice--danger ul:last-child{margin-bottom:0}.masthead{position:fixed;background:var(--global-bg-color);height:fit-content;top:0;width:100%;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.15s;animation-delay:0.15s;z-index:20}.masthead::after{content:"";position:absolute;bottom:0;height:1px;background:var(--global-border-color);width:100%}.masthead__inner-wrap{max-width:925px;margin-left:auto;margin-right:auto;clear:both;padding:0.5em 1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.masthead__inner-wrap:after{content:" ";display:block;clear:both}.masthead__inner-wrap::after{clear:both;content:"";display:table}@media (min-width: 80em){.masthead__inner-wrap{max-width:1280px}}.masthead__inner-wrap nav{z-index:10}.masthead__inner-wrap a{text-decoration:none}.masthead__menu ul{margin:0;padding:0;clear:both;list-style-type:none}.masthead__menu-item{background-color:var(--global-bg-color);display:block;list-style-type:none;white-space:nowrap}.masthead__menu-item--lg{padding-right:2em;font-weight:700}.breadcrumbs{max-width:925px;margin-left:auto;margin-right:auto;clear:both;margin-top:0;margin-bottom:0;padding-left:2em;padding-right:2em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.30s;animation-delay:0.30s}.breadcrumbs:after{content:" ";display:block;clear:both}.breadcrumbs::after{clear:both;content:"";display:table}@media (min-width: 57.8125em){.breadcrumbs{padding-left:1em;padding-right:1em}}@media (min-width: 80em){.breadcrumbs{max-width:1280px}}.breadcrumbs ol{padding:0;list-style:none;font-size:.75em}@media (min-width: 57.8125em){.breadcrumbs ol{width:83.0508474576%;float:right;margin-right:0}}@media (min-width: 80em){.breadcrumbs ol{padding-left:4.2372881356%}}.breadcrumbs li{display:inline}.breadcrumbs .current{font-weight:bold}.pagination{clear:both;width:100%;float:left;margin-left:0;margin-right:0;clear:both;margin-top:1em;padding-top:1em}.pagination::after{clear:both;content:"";display:table}.pagination ul{margin:0;padding:0;list-style-type:none;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.pagination li{display:block;float:left;margin-left:-1px}.pagination li a{margin-bottom:0.25em;padding:0.5em 1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:14px;font-weight:bold;line-height:1.5;text-align:center;text-decoration:none;color:var(--global-text-color-light);border:1px solid var(--global-border-color);border-radius:0}.pagination li a:hover{color:var(--global-link-color-hover)}.pagination li a.current{color:#fff;background:var(--global-base-color)}.pagination li a.disabled{color:var(--global-text-color-light);pointer-events:none;cursor:not-allowed}.pagination li:first-child{margin-left:0}.pagination li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination--pager{display:block;padding:1em 2em;float:left;width:50%;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em;font-weight:bold;text-align:center;text-decoration:none;color:var(--global-text-color-light);border:1px solid var(--global-border-color);border-radius:4px}.pagination--pager:hover{color:var(--global-link-color-hover)}.pagination--pager:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.pagination--pager:last-child{margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.pagination--pager.disabled{color:var(--global-text-color-light);pointer-events:none;cursor:not-allowed}.page__content+.pagination,.page__meta+.pagination,.comment__date+.pagination,.page__share+.pagination,.page__comments+.pagination{margin-top:2em;padding-top:2em;border-top:1px solid var(--global-border-color)}.greedy-nav{position:relative;min-width:250px;background:var(--global-bg-color)}.greedy-nav a{display:block;margin:0 1rem;padding:0.5rem 0;color:var(--global-masthead-link-color);text-decoration:none}.greedy-nav a:hover{color:var(--global-masthead-link-color-hover)}.greedy-nav button{position:absolute;height:2.5rem;right:0;padding:0 0.5rem;border:0;outline:none;background-color:var(--global-base-color);color:#fff;cursor:pointer;z-index:100}.greedy-nav .visible-links{display:table}.greedy-nav .visible-links li{display:table-cell;vertical-align:middle}.greedy-nav .visible-links li:first-child{font-weight:bold;text-wrap:wrap}.greedy-nav .visible-links li:first-child a{margin-left:0}.greedy-nav .visible-links li:last-child a{margin-right:0}.greedy-nav .visible-links #theme-toggle a{width:25px;display:flex;justify-content:center;cursor:pointer}.greedy-nav .visible-links a{position:relative}.greedy-nav .visible-links a:before{content:"";position:absolute;left:0;bottom:0;height:4px;background:var(--global-border-color);width:100%;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;-webkit-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0)}.greedy-nav .visible-links a:hover:before{-webkit-transform:scaleX(1);-ms-transform:scaleX(1);transform:scaleX(1)}.greedy-nav .hidden-links{position:absolute;top:100%;right:0;margin-top:15px;padding:5px;border:1px solid var(--global-border-color);border-radius:4px;background:#fff;box-shadow:0 0 10px rgba(0,0,0,0.25)}.greedy-nav .hidden-links a{margin:0;padding:10px 20px;font-size:1em}.greedy-nav .hidden-links a:hover{color:var(--global-masthead-link-color-hover);background:var(--global-border-color)}.greedy-nav .hidden-links:before{content:"";position:absolute;top:-11px;right:10px;width:0;border-style:solid;border-width:0 10px 10px;border-color:var(--global-border-color) transparent;display:block;z-index:0}.greedy-nav .hidden-links:after{content:"";position:absolute;top:-10px;right:10px;width:0;border-style:solid;border-width:0 10px 10px;border-color:#fff transparent;display:block;z-index:1}.greedy-nav .hidden-links li{display:block;border-bottom:1px solid var(--global-border-color)}.greedy-nav .hidden-links li:last-child{border-bottom:none}.nav__list{font-size:1.25rem}.nav__list ul{margin-bottom:1em}.nav__list a{display:block;padding:0.125em 0;color:inherit}.nav__list a:hover{text-decoration:underline}.nav__list .active{margin-left:-0.5em;padding-left:0.5em;padding-right:0.5em;color:#fff;font-weight:bold;background:var(--global-base-color);border-radius:4px}.nav__list .active:hover{color:#fff}.nav__title{margin:0;padding:0.5rem 1rem;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em;font-weight:bold}.nav__sub-title{display:block;margin:0.5rem 0;padding:0.5rem 0;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;font-weight:bold;text-transform:uppercase;border-bottom:1px solid var(--global-border-color)}.toc{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;color:var(--global-text-color-light);text-transform:uppercase;letter-spacing:1px;background-color:#fff;border:1px solid var(--global-border-color);border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}.toc .nav__title{color:#fff;font-size:.75em;background:var(--global-base-color);border-top-left-radius:4px;border-top-right-radius:4px}.toc__menu{margin:0;padding:0;width:100%;list-style:none;font-size:0.8rem}.toc__menu a{display:block;padding:0.5rem 1rem;color:var(--global-code-text-color);font-size:.6875em;font-weight:bold;line-height:1.5;border-bottom:1px solid var(--global-border-color);text-decoration-line:none !important}.toc__menu a:hover{color:#000;background:var(--global-link-color-hover)}.toc__menu>li:last-child a{border-bottom:none}.toc__menu li ul>li a{padding-left:2rem;font-weight:normal}.toc__menu li>ul li{display:none}@media (min-width: 48em){.toc__menu li>ul li{display:block}}.page__footer{clear:both;background-color:var(--global-footer-bg-color);color:var(--global-text-color-light);float:left;margin-left:0;margin-right:0;width:100%;clear:both;position:absolute;bottom:0em;height:auto;margin-top:3em;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.45s;animation-delay:0.45s;border-top:1px solid var(--global-dark-border-color)}.page__footer::after{clear:both;content:"";display:table}.page__footer footer{clear:both;margin-left:auto;margin-right:auto;margin-top:1em;max-width:100%;padding:0 1em 1em}.page__footer footer::after{clear:both;content:"";display:table}@media (min-width: 80em){.page__footer footer{max-width:1280px}}.page__footer a{color:inherit;text-decoration:none}.page__footer a:hover{text-decoration:underline}.page__footer .fas,.page__footer .fab,.page__footer .far,.page__footer .fal{color:var(--global-text-color-light)}.page__footer-copyright{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.6875em}.page__footer-follow ul{margin:0;padding:0;list-style-type:none}.page__footer-follow li{display:inline-block;padding-top:5px;padding-bottom:5px;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;text-transform:uppercase}.page__footer-follow li+li:before{content:"";padding-right:5px}.page__footer-follow a{padding-right:10px;font-weight:bold}.page__footer-follow .social-icons a{white-space:nowrap}div.highlighter-rouge,figure.highlight{position:relative;margin-bottom:1em;padding:1em;border:1px solid var(--global-border-color);border-radius:4px;background-color:var(--global-code-background-color);box-shadow:0 1px 1px rgba(0,0,0,0.125);font-size:1.25em}div.highlighter-rouge:before,figure.highlight:before{position:absolute;top:0;right:0;padding:0.5em;background-color:#f2f3f3;content:"\f121";font-family:"Font Awesome 6 Free" !important;font-size:.75em;line-height:1;text-transform:none;speak:none}div.highlighter-rouge .highlight,figure.highlight .highlight{margin:0;font-family:Monaco,Consolas,"Lucida Console",monospace;font-size:.75em;line-height:1.8}.highlight table td{padding:5px}.highlight table pre{margin:0}.highlight .c{color:#93a1a1}.highlight .err{color:#586e75}.highlight .g{color:#586e75}.highlight .k{color:#859900}.highlight .l{color:#586e75}.highlight .n{color:#586e75}.highlight .o{color:#859900}.highlight .x{color:#cb4b16}.highlight .p{color:#586e75}.highlight .cm{color:#93a1a1}.highlight .cp{color:#859900}.highlight .c1{color:#93a1a1}.highlight .cs{color:#859900}.highlight .gd{color:#2aa198}.highlight .ge{color:#586e75;font-style:italic}.highlight .gr{color:#dc322f}.highlight .gh{color:#cb4b16}.highlight .gi{color:#859900}.highlight .go{color:#586e75}.highlight .gp{color:#586e75}.highlight .gs{color:#586e75;font-weight:bold}.highlight .gu{color:#cb4b16}.highlight .gt{color:#586e75}.highlight .kc{color:#cb4b16}.highlight .kd{color:#22b3eb}.highlight .kn{color:#859900}.highlight .kp{color:#859900}.highlight .kr{color:#22b3eb}.highlight .kt{color:#dc322f}.highlight .ld{color:#586e75}.highlight .m{color:#2aa198}.highlight .s{color:#2aa198}.highlight .na{color:#586e75}.highlight .nb{color:#B58900}.highlight .nc{color:#22b3eb}.highlight .no{color:#cb4b16}.highlight .nd{color:#22b3eb}.highlight .ni{color:#cb4b16}.highlight .ne{color:#cb4b16}.highlight .nf{color:#22b3eb}.highlight .nl{color:#586e75}.highlight .nn{color:#586e75}.highlight .nx{color:#586e75}.highlight .py{color:#586e75}.highlight .nt{color:#22b3eb}.highlight .nv{color:#22b3eb}.highlight .ow{color:#859900}.highlight .w{color:#586e75}.highlight .mf{color:#2aa198}.highlight .mh{color:#2aa198}.highlight .mi{color:#2aa198}.highlight .mo{color:#2aa198}.highlight .sb{color:#93a1a1}.highlight .sc{color:#2aa198}.highlight .sd{color:#586e75}.highlight .s2{color:#2aa198}.highlight .se{color:#cb4b16}.highlight .sh{color:#586e75}.highlight .si{color:#2aa198}.highlight .sx{color:#2aa198}.highlight .sr{color:#dc322f}.highlight .s1{color:#2aa198}.highlight .ss{color:#2aa198}.highlight .bp{color:#22b3eb}.highlight .vc{color:#22b3eb}.highlight .vg{color:#22b3eb}.highlight .vi{color:#22b3eb}.highlight .il{color:#2aa198}form{margin:0 0 5px 0}form fieldset{margin-bottom:5px;padding:0;border-width:0}form legend{display:block;width:100%;margin-bottom:10px;*margin-left:-7px;padding:0;color:var(--global-text-color);border:0;border-bottom:1px solid #ccc;white-space:normal}form p{margin-bottom:5px / 2}form ul{list-style-type:none;margin:0 0 5px 0;padding:0}form br{display:none}label,input,button,select,textarea{vertical-align:baseline;*vertical-align:middle}input,button,select,textarea{box-sizing:border-box;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}label{display:block;margin-bottom:0.25em;color:var(--global-text-color);cursor:pointer}label small{font-size:.75em}label input,label textarea,label select{display:block}input,textarea,select{display:inline-block;width:100%;padding:0.25em;margin-bottom:0.5em;color:var(--global-text-color);background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}input:hover,textarea:hover,select:hover{border-color:var(--global-base-color)}.input-mini{width:60px}.input-small{width:90px}input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer;border-radius:0;border:0 \9}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="image"]{border:0;box-shadow:none}input[type="file"]{width:auto;padding:initial;line-height:initial;border:initial;background-color:transparent;background-color:initial;box-shadow:none}input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;cursor:pointer;*overflow:visible}select,input[type="file"]{*margin-top:4px}select{width:auto;background-color:#fff}select[multiple],select[size]{height:auto}textarea{resize:vertical;height:auto;overflow:auto;vertical-align:top}input[type="hidden"]{display:none}.form{position:relative}.radio,.checkbox{padding-left:18px;font-weight:normal}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{opacity:0.5;cursor:not-allowed}input:focus,textarea:focus{border-color:var(--global-border-color);outline:0;outline:thin dotted \9}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus,select:focus{box-shadow:none}.help-block,.help-inline{color:#2f7f93}.help-block{display:block;margin-bottom:1em;line-height:1em}.help-inline{display:inline-block;vertical-align:middle;padding-left:5px}.form-inline input,.form-inline textarea,.form-inline select{display:inline-block;margin-bottom:0}.form-inline label{display:inline-block}.form-inline .radio,.form-inline .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px}.form-search input,.form-search textarea,.form-search select{display:inline-block;margin-bottom:0}.form-search .search-query{padding-left:14px;padding-right:14px;margin-bottom:0;border-radius:14px}.form-search label{display:inline-block}.form-search .radio,.form-search .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px}.form--loading:before{content:''}.form--loading .form__spinner{display:block}.form:before{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(255,255,255,0.7);z-index:10}.form__spinner{display:none;position:absolute;top:50%;left:50%;z-index:11}#goog-fixurl ul{list-style:none;margin-left:0;padding-left:0}#goog-fixurl ul li{list-style-type:none}#goog-wm-qt{width:auto;margin-right:10px;margin-bottom:20px;padding:8px 20px;display:inline-block;font-size:.75em;background-color:#fff;color:#000;border-width:2px !important;border-style:solid !important;border-color:gray;border-radius:4px}#main{max-width:925px;margin-left:auto;margin-right:auto;clear:both;margin-top:2em;padding-left:1em;padding-right:1em;animation:intro 0.3s both;animation-delay:0.35s}#main:after{content:" ";display:block;clear:both}#main::after{clear:both;content:"";display:table}@media (min-width: 80em){#main{max-width:1280px}}@media (min-width: 57.8125em){.page{width:83.0508474576%;float:right;margin-right:0;padding-left:4.2372881356%;padding-right:16.9491525424%}}.page .page__inner-wrap{clear:both;width:100%;float:left;margin-left:0;margin-right:0}.page .page__inner-wrap .page__content,.page .page__inner-wrap .page__meta,.page .page__inner-wrap .comment__date,.page .page__inner-wrap .page__share{clear:both;width:100%;float:left;margin-left:0;margin-right:0}.page__title{margin-top:0;line-height:1}.page__title+.page__meta,.page__title+.comment__date{margin-top:-0.5em}.page__lead{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1.25em}.page__content h2{padding-bottom:0.5em;border-bottom:1px solid var(--global-border-color)}.page__content p,.page__content li,.page__content dl{font-size:1em}.page__content p{margin:0 0 1.3em}.page__content a{text-decoration:underline}.page__content a:hover{text-decoration:underline}.page__content a:hover img{box-shadow:0 0 10px rgba(0,0,0,0.25)}.page__content dt{margin-top:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-weight:bold}.page__content dd{margin-left:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em}.page__content .small{font-size:.75em}.page__content blockquote+.small{margin-top:-1.5em;padding-left:1.25rem}.page__hero{position:relative;margin-bottom:2em;clear:both;animation:intro 0.3s both;animation-delay:0.25s}.page__hero::after{clear:both;content:"";display:table}.page__hero--overlay{position:relative;margin-bottom:2em;padding:3em 0;clear:both;background-size:cover;background-repeat:no-repeat;background-position:center;animation:intro 0.3s both;animation-delay:0.25s}.page__hero--overlay::after{clear:both;content:"";display:table}.page__hero--overlay a{color:#fff}.page__hero--overlay .wrapper{padding-left:1em;padding-right:1em}@media (min-width: 80em){.page__hero--overlay .wrapper{max-width:1280px}}.page__hero--overlay .page__title,.page__hero--overlay .page__meta,.page__hero--overlay .comment__date,.page__hero--overlay .page__lead,.page__hero--overlay .btn,.page__hero--overlay #goog-wm-sb{color:#fff;text-shadow:1px 1px 4px rgba(0,0,0,0.5)}.page__hero--overlay .page__lead{max-width:768px}.page__hero--overlay .page__title{font-size:1.953em}@media (min-width: 37.5em){.page__hero--overlay .page__title{font-size:2.441em}}.page__hero-image{width:100%;height:auto;-ms-interpolation-mode:bicubic}.page__hero-caption{position:absolute;bottom:0;right:0;margin:0 auto;padding:2px 5px;color:#fff;font-family:Georgia,Times,serif;font-size:.6875em;background:#000;text-align:right;z-index:5;opacity:0.5;border-radius:4px 0 4px 0}@media (min-width: 57.8125em){.page__hero-caption{padding:5px 10px}}.page__hero-caption a{color:#fff;text-decoration:none}.page__share{margin-top:2em;padding-top:1em;border-top:1px solid var(--global-border-color)}@media (max-width: 37.5em){.page__share .btn span,.page__share #goog-wm-sb span{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}}.page__share-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}.page__meta,.comment__date{margin-top:2em;color:var(--global-text-color-light);font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em}.page__meta p,.comment__date p{margin:0}.page__meta a,.comment__date a{color:inherit}.page__meta-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}.page__taxonomy .sep{display:none}.page__taxonomy strong{margin-right:10px}.page__taxonomy-item{display:inline-block;margin-right:5px;margin-bottom:8px;padding:5px 10px;text-decoration:none;border:1px solid var(--global-border-color);border-radius:4px}.page__taxonomy-item:hover{text-decoration:none;color:var(--global-link-color-hover)}.page__comments{clear:both;width:100%;float:left;margin-left:0;margin-right:0}.page__comments-title{margin-top:2rem;margin-bottom:10px;padding-top:2rem;font-size:.75em;border-top:1px solid var(--global-border-color);text-transform:uppercase}.page__comments-form{padding:1em;background:var(--global-border-color);transition:all 0.2s ease-in-out}.page__comments-form.disabled input,.page__comments-form.disabled button,.page__comments-form.disabled textarea,.page__comments-form.disabled label{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:0.65}.comment{clear:both;margin:1em 0}.comment::after{clear:both;content:"";display:table}.comment:not(:last-child){border-bottom:1px solid var(--global-border-color)}.comment__avatar-wrapper{float:left;width:60px;height:60px}@media (min-width: 57.8125em){.comment__avatar-wrapper{width:100px;height:100px}}.comment__avatar{width:40px;height:40px;border-radius:50%}@media (min-width: 57.8125em){.comment__avatar{width:80px;height:80px;padding:5px;border:1px solid var(--global-border-color)}}.comment__content-wrapper{float:right;width:calc(100% - 60px)}@media (min-width: 57.8125em){.comment__content-wrapper{width:calc(100% - 100px)}}.comment__author{margin:0}.comment__author a{text-decoration:none}.comment__date{margin:0}.comment__date a{text-decoration:none}.page__related{margin-top:2em;padding-top:1em;border-top:1px solid var(--global-border-color);clear:both;float:left}.page__related::after{clear:both;content:"";display:table}@media (min-width: 57.8125em){.page__related{margin-left:21.186440678%}}.page__related a{color:inherit;text-decoration:none}.page__related-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}.archive{margin-bottom:2em}@media (min-width: 48em){.archive{width:100%;float:left;margin-left:0;margin-right:0}}@media (min-width: 57.8125em){.archive{width:83.0508474576%;float:right;margin-right:0;padding-left:4.2372881356%}}.archive a{text-decoration:underline}.archive a:hover{text-decoration:underline}.archive a:hover img{box-shadow:0 0 10px rgba(0,0,0,0.25)}.archive__subtitle{margin:1.414em 0 0;padding-bottom:0.5em;font-size:1em;color:var(--global-text-color-light);border-bottom:1px solid var(--global-border-color)}.archive__subtitle+.list__item .archive__item-title{margin-top:0.5em}.archive__item-title{margin-bottom:0.25em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.archive__item-title a+a{opacity:0.5}.page__content .archive__item-title{margin-top:1em;border-bottom:none}.archive__item-excerpt{margin-top:0;font-size:.75em}.archive__item-excerpt+p{text-indent:0}.archive__item-teaser{border-radius:4px;overflow:hidden}.archive__item-teaser img{width:100%}.archive__item:hover .archive__item-teaser{box-shadow:0 0 10px rgba(0,0,0,0.25)}.archive__item:hover .archive__item-title{text-decoration:underline}@media (min-width: 48em){.list__item{padding-right:auto}}@media (min-width: 57.8125em){.list__item{padding-right:auto}}@media (min-width: 80em){.list__item{padding-right:auto}}.list__item .page__meta,.list__item .comment__date{margin:0 0 4px}.grid__item{margin-bottom:2em}.grid__item .page__meta,.grid__item .comment__date{margin:0 0 4px}.grid__item .archive__item-title{margin-top:0.5em;font-size:1em}.grid__item .archive__item-excerpt{display:none}@media (min-width: 37.5em){.grid__item{width:48.9795918367%;float:left}.grid__item:nth-child(2n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.grid__item:nth-child(2n+2){margin-left:51.0204081633%;margin-right:-100%;clear:none}.grid__item .archive__item-teaser{max-height:200px}}@media (min-width: 48em){.grid__item{margin-left:0;margin-right:0;width:23.4693877551%;float:left}.grid__item:nth-child(4n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.grid__item:nth-child(4n+2){margin-left:25.5102040816%;margin-right:-100%;clear:none}.grid__item:nth-child(4n+3){margin-left:51.0204081633%;margin-right:-100%;clear:none}.grid__item:nth-child(4n+4){margin-left:76.5306122449%;margin-right:-100%;clear:none}.grid__item .archive__item-teaser{max-height:120px}.grid__item .archive__item-excerpt{display:block;font-size:.75em}}.feature__wrapper{clear:both;margin-bottom:2em;border-bottom:1px solid var(--global-border-color)}.feature__wrapper::after{clear:both;content:"";display:table}.feature__item{margin-bottom:2em;font-size:1.25rem}@media (min-width: 37.5em){.feature__item{margin-bottom:0;width:32.2033898305%;float:left}.feature__item:nth-child(3n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.feature__item:nth-child(3n+2){margin-left:33.8983050847%;margin-right:-100%;clear:none}.feature__item:nth-child(3n+3){margin-left:67.7966101695%;margin-right:-100%;clear:none}.feature__item .feature__item-teaser{max-height:200px;overflow:hidden}}.feature__item--left{clear:both;width:100%;float:left;margin-left:0;margin-right:0;font-size:1.25rem}.feature__item--left .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item--left .archive__item-teaser{width:40.6779661017%;float:left;margin-right:1.6949152542%}.feature__item--left .archive__item-body{width:57.6271186441%;float:right;margin-right:0;padding-left:4.2372881356%;padding-right:8.4745762712%}}.feature__item--right{clear:both;width:100%;float:left;margin-left:0;margin-right:0;font-size:1.25rem}.feature__item--right .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item--right{text-align:right}.feature__item--right .archive__item-teaser{width:40.6779661017%;float:right;margin-left:1.6949152542%}.feature__item--right .archive__item-body{width:57.6271186441%;float:left;margin-left:0;padding-left:4.2372881356%;padding-right:8.4745762712%}}.feature__item--center{clear:both;width:100%;float:left;margin-left:0;margin-right:0;font-size:1.25rem}.feature__item--center .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item--center{text-align:center}.feature__item--center .archive__item-teaser{margin:0 auto;width:40.6779661017%}.feature__item--center .archive__item-body{margin:0 auto;width:57.6271186441%}}.sidebar{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);clear:both;margin-bottom:1em}.sidebar::after{clear:both;content:"";display:table}@media (orientation: portrait){.sidebar{margin-top:1em}}@media screen and (min-width: 1024px){.sidebar{height:100vh;overflow-y:auto;position:fixed;padding-top:70px}}@media (min-width: 57.8125em){.sidebar{width:15.2542372881%;float:left;margin-right:1.6949152542%;opacity:1;-webkit-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out}.sidebar:hover{opacity:1}}@media (min-width: 80em){.sidebar{max-width:250px;padding-right:0}}.sidebar h2,.sidebar h3,.sidebar h4,.sidebar h5,.sidebar h6{margin-bottom:0;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.sidebar h3,.sidebar h4{font-size:1em}.sidebar p,.sidebar li{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;line-height:1.5}.sidebar img{width:100%}.sidebar__right{margin-bottom:1em}@media (min-width: 57.8125em){.sidebar__right{position:relative;float:right;width:auto;margin-left:2.5423728814%;z-index:10}}@media (min-width: 80em){.sidebar__right{width:auto}}.author__avatar{display:table-cell;vertical-align:top;width:36px}@media (min-width: 57.8125em){.author__avatar{display:block;width:auto;height:auto}}.author__avatar img{max-width:175px;border-radius:50%}@media (min-width: 57.8125em){.author__avatar img{padding:5px;border:1px solid var(--global-border-color)}}.author__content{display:table-cell;vertical-align:top;padding-left:15px;padding-right:25px;line-height:1}@media (min-width: 57.8125em){.author__content{display:block;width:100%;padding-left:0;padding-right:0}}.author__name{margin:0}@media (min-width: 57.8125em){.author__name{margin-top:10px;margin-bottom:10px}}.sidebar .author__name{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em}.sidebar .author__desktop{display:none}@media screen and (min-width: 1024px){.sidebar .author__desktop{display:block}}.author__pronouns{margin:0}@media (min-width: 57.8125em){.author__pronouns{margin-top:10px;margin-bottom:10px}}.author__bio{margin:0}@media (min-width: 57.8125em){.author__bio{margin-top:10px;margin-bottom:20px}}.author__urls-wrapper{position:relative;display:table-cell;vertical-align:middle;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;z-index:10;position:relative;cursor:pointer}.author__urls-wrapper li:last-child a{margin-bottom:0}@media (min-width: 57.8125em){.author__urls-wrapper{display:block}}.author__urls-wrapper button{margin-bottom:0}@media (min-width: 57.8125em){.author__urls-wrapper button{display:none}}.author__urls{display:none;position:absolute;right:0;margin-top:15px;padding:10px;list-style-type:none;border:1px solid var(--global-border-color);border-radius:4px;background:var(--global-bg-color);z-index:-1;box-shadow:0 0 10px rgba(0,0,0,0.25);cursor:default}@media (min-width: 57.8125em){.author__urls{display:block;position:relative;margin:0;padding:0;border:0;background:transparent;box-shadow:none}}.author__urls:before{display:block;content:"";position:absolute;top:-11px;left:calc(50% - 10px);width:0;border-style:solid;border-width:0 10px 10px;border-color:var(--global-border-color) transparent;z-index:0}@media (min-width: 57.8125em){.author__urls:before{display:none}}.author__urls:after{display:block;content:"";position:absolute;top:-10px;left:calc(50% - 10px);width:0;border-style:solid;border-width:0 10px 10px;border-color:#fff transparent;z-index:1}@media (min-width: 57.8125em){.author__urls:after{display:none}}.author__urls li{white-space:nowrap}.author__urls a{display:block;margin-bottom:5px;padding-right:5px;padding-top:2px;padding-bottom:2px;color:inherit;font-size:1em;text-decoration:none}.author__urls a:hover{text-decoration:underline}/*! * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fa,.fa-classic,.fa-sharp,.fas,.fa-solid,.far,.fa-regular,.fab,.fa-brands{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fas,.fa-classic,.fa-solid,.far,.fa-regular{font-family:'Font Awesome 6 Free'}.fab,.fa-brands{font-family:'Font Awesome 6 Brands'}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color, #eee);border-radius:var(--fa-border-radius, .1em);border-style:var(--fa-border-style, solid);border-width:var(--fa-border-width, .08em);padding:var(--fa-border-padding, 0.2em 0.25em 0.15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, .3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, .3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1))}.fa-fade{animation-name:fa-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1))}.fa-beat-fade{animation-name:fa-beat-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{animation-name:fa-shake;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin{animation-name:fa-spin;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 2s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, steps(8))}@media (prefers-reduced-motion: reduce){.fa-beat,.fa-bounce,.fa-fade,.fa-beat-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%, 90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-bounce{0%{transform:scale(1, 1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0)}57%{transform:scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em))}64%{transform:scale(1, 1) translateY(0)}100%{transform:scale(1, 1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, 0.4)}}@keyframes fa-beat-fade{0%, 100%{opacity:var(--fa-beat-fade-opacity, 0.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%, 24%{transform:rotate(-18deg)}12%, 28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%, 100%{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scale(-1, 1)}.fa-flip-vertical{transform:scale(1, -1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1, -1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle, 0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0::before{content:"\30 "}.fa-1::before{content:"\31 "}.fa-2::before{content:"\32 "}.fa-3::before{content:"\33 "}.fa-4::before{content:"\34 "}.fa-5::before{content:"\35 "}.fa-6::before{content:"\36 "}.fa-7::before{content:"\37 "}.fa-8::before{content:"\38 "}.fa-9::before{content:"\39 "}.fa-fill-drip::before{content:""}.fa-arrows-to-circle::before{content:""}.fa-circle-chevron-right::before{content:""}.fa-chevron-circle-right::before{content:""}.fa-at::before{content:"\@"}.fa-trash-can::before{content:""}.fa-trash-alt::before{content:""}.fa-text-height::before{content:""}.fa-user-xmark::before{content:""}.fa-user-times::before{content:""}.fa-stethoscope::before{content:""}.fa-message::before{content:""}.fa-comment-alt::before{content:""}.fa-info::before{content:""}.fa-down-left-and-up-right-to-center::before{content:""}.fa-compress-alt::before{content:""}.fa-explosion::before{content:""}.fa-file-lines::before{content:""}.fa-file-alt::before{content:""}.fa-file-text::before{content:""}.fa-wave-square::before{content:""}.fa-ring::before{content:""}.fa-building-un::before{content:""}.fa-dice-three::before{content:""}.fa-calendar-days::before{content:""}.fa-calendar-alt::before{content:""}.fa-anchor-circle-check::before{content:""}.fa-building-circle-arrow-right::before{content:""}.fa-volleyball::before{content:""}.fa-volleyball-ball::before{content:""}.fa-arrows-up-to-line::before{content:""}.fa-sort-down::before{content:""}.fa-sort-desc::before{content:""}.fa-circle-minus::before{content:""}.fa-minus-circle::before{content:""}.fa-door-open::before{content:""}.fa-right-from-bracket::before{content:""}.fa-sign-out-alt::before{content:""}.fa-atom::before{content:""}.fa-soap::before{content:""}.fa-icons::before{content:""}.fa-heart-music-camera-bolt::before{content:""}.fa-microphone-lines-slash::before{content:""}.fa-microphone-alt-slash::before{content:""}.fa-bridge-circle-check::before{content:""}.fa-pump-medical::before{content:""}.fa-fingerprint::before{content:""}.fa-hand-point-right::before{content:""}.fa-magnifying-glass-location::before{content:""}.fa-search-location::before{content:""}.fa-forward-step::before{content:""}.fa-step-forward::before{content:""}.fa-face-smile-beam::before{content:""}.fa-smile-beam::before{content:""}.fa-flag-checkered::before{content:""}.fa-football::before{content:""}.fa-football-ball::before{content:""}.fa-school-circle-exclamation::before{content:""}.fa-crop::before{content:""}.fa-angles-down::before{content:""}.fa-angle-double-down::before{content:""}.fa-users-rectangle::before{content:""}.fa-people-roof::before{content:""}.fa-people-line::before{content:""}.fa-beer-mug-empty::before{content:""}.fa-beer::before{content:""}.fa-diagram-predecessor::before{content:""}.fa-arrow-up-long::before{content:""}.fa-long-arrow-up::before{content:""}.fa-fire-flame-simple::before{content:""}.fa-burn::before{content:""}.fa-person::before{content:""}.fa-male::before{content:""}.fa-laptop::before{content:""}.fa-file-csv::before{content:""}.fa-menorah::before{content:""}.fa-truck-plane::before{content:""}.fa-record-vinyl::before{content:""}.fa-face-grin-stars::before{content:""}.fa-grin-stars::before{content:""}.fa-bong::before{content:""}.fa-spaghetti-monster-flying::before{content:""}.fa-pastafarianism::before{content:""}.fa-arrow-down-up-across-line::before{content:""}.fa-spoon::before{content:""}.fa-utensil-spoon::before{content:""}.fa-jar-wheat::before{content:""}.fa-envelopes-bulk::before{content:""}.fa-mail-bulk::before{content:""}.fa-file-circle-exclamation::before{content:""}.fa-circle-h::before{content:""}.fa-hospital-symbol::before{content:""}.fa-pager::before{content:""}.fa-address-book::before{content:""}.fa-contact-book::before{content:""}.fa-strikethrough::before{content:""}.fa-k::before{content:"K"}.fa-landmark-flag::before{content:""}.fa-pencil::before{content:""}.fa-pencil-alt::before{content:""}.fa-backward::before{content:""}.fa-caret-right::before{content:""}.fa-comments::before{content:""}.fa-paste::before{content:""}.fa-file-clipboard::before{content:""}.fa-code-pull-request::before{content:""}.fa-clipboard-list::before{content:""}.fa-truck-ramp-box::before{content:""}.fa-truck-loading::before{content:""}.fa-user-check::before{content:""}.fa-vial-virus::before{content:""}.fa-sheet-plastic::before{content:""}.fa-blog::before{content:""}.fa-user-ninja::before{content:""}.fa-person-arrow-up-from-line::before{content:""}.fa-scroll-torah::before{content:""}.fa-torah::before{content:""}.fa-broom-ball::before{content:""}.fa-quidditch::before{content:""}.fa-quidditch-broom-ball::before{content:""}.fa-toggle-off::before{content:""}.fa-box-archive::before{content:""}.fa-archive::before{content:""}.fa-person-drowning::before{content:""}.fa-arrow-down-9-1::before{content:""}.fa-sort-numeric-desc::before{content:""}.fa-sort-numeric-down-alt::before{content:""}.fa-face-grin-tongue-squint::before{content:""}.fa-grin-tongue-squint::before{content:""}.fa-spray-can::before{content:""}.fa-truck-monster::before{content:""}.fa-w::before{content:"W"}.fa-earth-africa::before{content:""}.fa-globe-africa::before{content:""}.fa-rainbow::before{content:""}.fa-circle-notch::before{content:""}.fa-tablet-screen-button::before{content:""}.fa-tablet-alt::before{content:""}.fa-paw::before{content:""}.fa-cloud::before{content:""}.fa-trowel-bricks::before{content:""}.fa-face-flushed::before{content:""}.fa-flushed::before{content:""}.fa-hospital-user::before{content:""}.fa-tent-arrow-left-right::before{content:""}.fa-gavel::before{content:""}.fa-legal::before{content:""}.fa-binoculars::before{content:""}.fa-microphone-slash::before{content:""}.fa-box-tissue::before{content:""}.fa-motorcycle::before{content:""}.fa-bell-concierge::before{content:""}.fa-concierge-bell::before{content:""}.fa-pen-ruler::before{content:""}.fa-pencil-ruler::before{content:""}.fa-people-arrows::before{content:""}.fa-people-arrows-left-right::before{content:""}.fa-mars-and-venus-burst::before{content:""}.fa-square-caret-right::before{content:""}.fa-caret-square-right::before{content:""}.fa-scissors::before{content:""}.fa-cut::before{content:""}.fa-sun-plant-wilt::before{content:""}.fa-toilets-portable::before{content:""}.fa-hockey-puck::before{content:""}.fa-table::before{content:""}.fa-magnifying-glass-arrow-right::before{content:""}.fa-tachograph-digital::before{content:""}.fa-digital-tachograph::before{content:""}.fa-users-slash::before{content:""}.fa-clover::before{content:""}.fa-reply::before{content:""}.fa-mail-reply::before{content:""}.fa-star-and-crescent::before{content:""}.fa-house-fire::before{content:""}.fa-square-minus::before{content:""}.fa-minus-square::before{content:""}.fa-helicopter::before{content:""}.fa-compass::before{content:""}.fa-square-caret-down::before{content:""}.fa-caret-square-down::before{content:""}.fa-file-circle-question::before{content:""}.fa-laptop-code::before{content:""}.fa-swatchbook::before{content:""}.fa-prescription-bottle::before{content:""}.fa-bars::before{content:""}.fa-navicon::before{content:""}.fa-people-group::before{content:""}.fa-hourglass-end::before{content:""}.fa-hourglass-3::before{content:""}.fa-heart-crack::before{content:""}.fa-heart-broken::before{content:""}.fa-square-up-right::before{content:""}.fa-external-link-square-alt::before{content:""}.fa-face-kiss-beam::before{content:""}.fa-kiss-beam::before{content:""}.fa-film::before{content:""}.fa-ruler-horizontal::before{content:""}.fa-people-robbery::before{content:""}.fa-lightbulb::before{content:""}.fa-caret-left::before{content:""}.fa-circle-exclamation::before{content:""}.fa-exclamation-circle::before{content:""}.fa-school-circle-xmark::before{content:""}.fa-arrow-right-from-bracket::before{content:""}.fa-sign-out::before{content:""}.fa-circle-chevron-down::before{content:""}.fa-chevron-circle-down::before{content:""}.fa-unlock-keyhole::before{content:""}.fa-unlock-alt::before{content:""}.fa-cloud-showers-heavy::before{content:""}.fa-headphones-simple::before{content:""}.fa-headphones-alt::before{content:""}.fa-sitemap::before{content:""}.fa-circle-dollar-to-slot::before{content:""}.fa-donate::before{content:""}.fa-memory::before{content:""}.fa-road-spikes::before{content:""}.fa-fire-burner::before{content:""}.fa-flag::before{content:""}.fa-hanukiah::before{content:""}.fa-feather::before{content:""}.fa-volume-low::before{content:""}.fa-volume-down::before{content:""}.fa-comment-slash::before{content:""}.fa-cloud-sun-rain::before{content:""}.fa-compress::before{content:""}.fa-wheat-awn::before{content:""}.fa-wheat-alt::before{content:""}.fa-ankh::before{content:""}.fa-hands-holding-child::before{content:""}.fa-asterisk::before{content:"\*"}.fa-square-check::before{content:""}.fa-check-square::before{content:""}.fa-peseta-sign::before{content:""}.fa-heading::before{content:""}.fa-header::before{content:""}.fa-ghost::before{content:""}.fa-list::before{content:""}.fa-list-squares::before{content:""}.fa-square-phone-flip::before{content:""}.fa-phone-square-alt::before{content:""}.fa-cart-plus::before{content:""}.fa-gamepad::before{content:""}.fa-circle-dot::before{content:""}.fa-dot-circle::before{content:""}.fa-face-dizzy::before{content:""}.fa-dizzy::before{content:""}.fa-egg::before{content:""}.fa-house-medical-circle-xmark::before{content:""}.fa-campground::before{content:""}.fa-folder-plus::before{content:""}.fa-futbol::before{content:""}.fa-futbol-ball::before{content:""}.fa-soccer-ball::before{content:""}.fa-paintbrush::before{content:""}.fa-paint-brush::before{content:""}.fa-lock::before{content:""}.fa-gas-pump::before{content:""}.fa-hot-tub-person::before{content:""}.fa-hot-tub::before{content:""}.fa-map-location::before{content:""}.fa-map-marked::before{content:""}.fa-house-flood-water::before{content:""}.fa-tree::before{content:""}.fa-bridge-lock::before{content:""}.fa-sack-dollar::before{content:""}.fa-pen-to-square::before{content:""}.fa-edit::before{content:""}.fa-car-side::before{content:""}.fa-share-nodes::before{content:""}.fa-share-alt::before{content:""}.fa-heart-circle-minus::before{content:""}.fa-hourglass-half::before{content:""}.fa-hourglass-2::before{content:""}.fa-microscope::before{content:""}.fa-sink::before{content:""}.fa-bag-shopping::before{content:""}.fa-shopping-bag::before{content:""}.fa-arrow-down-z-a::before{content:""}.fa-sort-alpha-desc::before{content:""}.fa-sort-alpha-down-alt::before{content:""}.fa-mitten::before{content:""}.fa-person-rays::before{content:""}.fa-users::before{content:""}.fa-eye-slash::before{content:""}.fa-flask-vial::before{content:""}.fa-hand::before{content:""}.fa-hand-paper::before{content:""}.fa-om::before{content:""}.fa-worm::before{content:""}.fa-house-circle-xmark::before{content:""}.fa-plug::before{content:""}.fa-chevron-up::before{content:""}.fa-hand-spock::before{content:""}.fa-stopwatch::before{content:""}.fa-face-kiss::before{content:""}.fa-kiss::before{content:""}.fa-bridge-circle-xmark::before{content:""}.fa-face-grin-tongue::before{content:""}.fa-grin-tongue::before{content:""}.fa-chess-bishop::before{content:""}.fa-face-grin-wink::before{content:""}.fa-grin-wink::before{content:""}.fa-ear-deaf::before{content:""}.fa-deaf::before{content:""}.fa-deafness::before{content:""}.fa-hard-of-hearing::before{content:""}.fa-road-circle-check::before{content:""}.fa-dice-five::before{content:""}.fa-square-rss::before{content:""}.fa-rss-square::before{content:""}.fa-land-mine-on::before{content:""}.fa-i-cursor::before{content:""}.fa-stamp::before{content:""}.fa-stairs::before{content:""}.fa-i::before{content:"I"}.fa-hryvnia-sign::before{content:""}.fa-hryvnia::before{content:""}.fa-pills::before{content:""}.fa-face-grin-wide::before{content:""}.fa-grin-alt::before{content:""}.fa-tooth::before{content:""}.fa-v::before{content:"V"}.fa-bangladeshi-taka-sign::before{content:""}.fa-bicycle::before{content:""}.fa-staff-snake::before{content:""}.fa-rod-asclepius::before{content:""}.fa-rod-snake::before{content:""}.fa-staff-aesculapius::before{content:""}.fa-head-side-cough-slash::before{content:""}.fa-truck-medical::before{content:""}.fa-ambulance::before{content:""}.fa-wheat-awn-circle-exclamation::before{content:""}.fa-snowman::before{content:""}.fa-mortar-pestle::before{content:""}.fa-road-barrier::before{content:""}.fa-school::before{content:""}.fa-igloo::before{content:""}.fa-joint::before{content:""}.fa-angle-right::before{content:""}.fa-horse::before{content:""}.fa-q::before{content:"Q"}.fa-g::before{content:"G"}.fa-notes-medical::before{content:""}.fa-temperature-half::before{content:""}.fa-temperature-2::before{content:""}.fa-thermometer-2::before{content:""}.fa-thermometer-half::before{content:""}.fa-dong-sign::before{content:""}.fa-capsules::before{content:""}.fa-poo-storm::before{content:""}.fa-poo-bolt::before{content:""}.fa-face-frown-open::before{content:""}.fa-frown-open::before{content:""}.fa-hand-point-up::before{content:""}.fa-money-bill::before{content:""}.fa-bookmark::before{content:""}.fa-align-justify::before{content:""}.fa-umbrella-beach::before{content:""}.fa-helmet-un::before{content:""}.fa-bullseye::before{content:""}.fa-bacon::before{content:""}.fa-hand-point-down::before{content:""}.fa-arrow-up-from-bracket::before{content:""}.fa-folder::before{content:""}.fa-folder-blank::before{content:""}.fa-file-waveform::before{content:""}.fa-file-medical-alt::before{content:""}.fa-radiation::before{content:""}.fa-chart-simple::before{content:""}.fa-mars-stroke::before{content:""}.fa-vial::before{content:""}.fa-gauge::before{content:""}.fa-dashboard::before{content:""}.fa-gauge-med::before{content:""}.fa-tachometer-alt-average::before{content:""}.fa-wand-magic-sparkles::before{content:""}.fa-magic-wand-sparkles::before{content:""}.fa-e::before{content:"E"}.fa-pen-clip::before{content:""}.fa-pen-alt::before{content:""}.fa-bridge-circle-exclamation::before{content:""}.fa-user::before{content:""}.fa-school-circle-check::before{content:""}.fa-dumpster::before{content:""}.fa-van-shuttle::before{content:""}.fa-shuttle-van::before{content:""}.fa-building-user::before{content:""}.fa-square-caret-left::before{content:""}.fa-caret-square-left::before{content:""}.fa-highlighter::before{content:""}.fa-key::before{content:""}.fa-bullhorn::before{content:""}.fa-globe::before{content:""}.fa-synagogue::before{content:""}.fa-person-half-dress::before{content:""}.fa-road-bridge::before{content:""}.fa-location-arrow::before{content:""}.fa-c::before{content:"C"}.fa-tablet-button::before{content:""}.fa-building-lock::before{content:""}.fa-pizza-slice::before{content:""}.fa-money-bill-wave::before{content:""}.fa-chart-area::before{content:""}.fa-area-chart::before{content:""}.fa-house-flag::before{content:""}.fa-person-circle-minus::before{content:""}.fa-ban::before{content:""}.fa-cancel::before{content:""}.fa-camera-rotate::before{content:""}.fa-spray-can-sparkles::before{content:""}.fa-air-freshener::before{content:""}.fa-star::before{content:""}.fa-repeat::before{content:""}.fa-cross::before{content:""}.fa-box::before{content:""}.fa-venus-mars::before{content:""}.fa-arrow-pointer::before{content:""}.fa-mouse-pointer::before{content:""}.fa-maximize::before{content:""}.fa-expand-arrows-alt::before{content:""}.fa-charging-station::before{content:""}.fa-shapes::before{content:""}.fa-triangle-circle-square::before{content:""}.fa-shuffle::before{content:""}.fa-random::before{content:""}.fa-person-running::before{content:""}.fa-running::before{content:""}.fa-mobile-retro::before{content:""}.fa-grip-lines-vertical::before{content:""}.fa-spider::before{content:""}.fa-hands-bound::before{content:""}.fa-file-invoice-dollar::before{content:""}.fa-plane-circle-exclamation::before{content:""}.fa-x-ray::before{content:""}.fa-spell-check::before{content:""}.fa-slash::before{content:""}.fa-computer-mouse::before{content:""}.fa-mouse::before{content:""}.fa-arrow-right-to-bracket::before{content:""}.fa-sign-in::before{content:""}.fa-shop-slash::before{content:""}.fa-store-alt-slash::before{content:""}.fa-server::before{content:""}.fa-virus-covid-slash::before{content:""}.fa-shop-lock::before{content:""}.fa-hourglass-start::before{content:""}.fa-hourglass-1::before{content:""}.fa-blender-phone::before{content:""}.fa-building-wheat::before{content:""}.fa-person-breastfeeding::before{content:""}.fa-right-to-bracket::before{content:""}.fa-sign-in-alt::before{content:""}.fa-venus::before{content:""}.fa-passport::before{content:""}.fa-heart-pulse::before{content:""}.fa-heartbeat::before{content:""}.fa-people-carry-box::before{content:""}.fa-people-carry::before{content:""}.fa-temperature-high::before{content:""}.fa-microchip::before{content:""}.fa-crown::before{content:""}.fa-weight-hanging::before{content:""}.fa-xmarks-lines::before{content:""}.fa-file-prescription::before{content:""}.fa-weight-scale::before{content:""}.fa-weight::before{content:""}.fa-user-group::before{content:""}.fa-user-friends::before{content:""}.fa-arrow-up-a-z::before{content:""}.fa-sort-alpha-up::before{content:""}.fa-chess-knight::before{content:""}.fa-face-laugh-squint::before{content:""}.fa-laugh-squint::before{content:""}.fa-wheelchair::before{content:""}.fa-circle-arrow-up::before{content:""}.fa-arrow-circle-up::before{content:""}.fa-toggle-on::before{content:""}.fa-person-walking::before{content:""}.fa-walking::before{content:""}.fa-l::before{content:"L"}.fa-fire::before{content:""}.fa-bed-pulse::before{content:""}.fa-procedures::before{content:""}.fa-shuttle-space::before{content:""}.fa-space-shuttle::before{content:""}.fa-face-laugh::before{content:""}.fa-laugh::before{content:""}.fa-folder-open::before{content:""}.fa-heart-circle-plus::before{content:""}.fa-code-fork::before{content:""}.fa-city::before{content:""}.fa-microphone-lines::before{content:""}.fa-microphone-alt::before{content:""}.fa-pepper-hot::before{content:""}.fa-unlock::before{content:""}.fa-colon-sign::before{content:""}.fa-headset::before{content:""}.fa-store-slash::before{content:""}.fa-road-circle-xmark::before{content:""}.fa-user-minus::before{content:""}.fa-mars-stroke-up::before{content:""}.fa-mars-stroke-v::before{content:""}.fa-champagne-glasses::before{content:""}.fa-glass-cheers::before{content:""}.fa-clipboard::before{content:""}.fa-house-circle-exclamation::before{content:""}.fa-file-arrow-up::before{content:""}.fa-file-upload::before{content:""}.fa-wifi::before{content:""}.fa-wifi-3::before{content:""}.fa-wifi-strong::before{content:""}.fa-bath::before{content:""}.fa-bathtub::before{content:""}.fa-underline::before{content:""}.fa-user-pen::before{content:""}.fa-user-edit::before{content:""}.fa-signature::before{content:""}.fa-stroopwafel::before{content:""}.fa-bold::before{content:""}.fa-anchor-lock::before{content:""}.fa-building-ngo::before{content:""}.fa-manat-sign::before{content:""}.fa-not-equal::before{content:""}.fa-border-top-left::before{content:""}.fa-border-style::before{content:""}.fa-map-location-dot::before{content:""}.fa-map-marked-alt::before{content:""}.fa-jedi::before{content:""}.fa-square-poll-vertical::before{content:""}.fa-poll::before{content:""}.fa-mug-hot::before{content:""}.fa-car-battery::before{content:""}.fa-battery-car::before{content:""}.fa-gift::before{content:""}.fa-dice-two::before{content:""}.fa-chess-queen::before{content:""}.fa-glasses::before{content:""}.fa-chess-board::before{content:""}.fa-building-circle-check::before{content:""}.fa-person-chalkboard::before{content:""}.fa-mars-stroke-right::before{content:""}.fa-mars-stroke-h::before{content:""}.fa-hand-back-fist::before{content:""}.fa-hand-rock::before{content:""}.fa-square-caret-up::before{content:""}.fa-caret-square-up::before{content:""}.fa-cloud-showers-water::before{content:""}.fa-chart-bar::before{content:""}.fa-bar-chart::before{content:""}.fa-hands-bubbles::before{content:""}.fa-hands-wash::before{content:""}.fa-less-than-equal::before{content:""}.fa-train::before{content:""}.fa-eye-low-vision::before{content:""}.fa-low-vision::before{content:""}.fa-crow::before{content:""}.fa-sailboat::before{content:""}.fa-window-restore::before{content:""}.fa-square-plus::before{content:""}.fa-plus-square::before{content:""}.fa-torii-gate::before{content:""}.fa-frog::before{content:""}.fa-bucket::before{content:""}.fa-image::before{content:""}.fa-microphone::before{content:""}.fa-cow::before{content:""}.fa-caret-up::before{content:""}.fa-screwdriver::before{content:""}.fa-folder-closed::before{content:""}.fa-house-tsunami::before{content:""}.fa-square-nfi::before{content:""}.fa-arrow-up-from-ground-water::before{content:""}.fa-martini-glass::before{content:""}.fa-glass-martini-alt::before{content:""}.fa-rotate-left::before{content:""}.fa-rotate-back::before{content:""}.fa-rotate-backward::before{content:""}.fa-undo-alt::before{content:""}.fa-table-columns::before{content:""}.fa-columns::before{content:""}.fa-lemon::before{content:""}.fa-head-side-mask::before{content:""}.fa-handshake::before{content:""}.fa-gem::before{content:""}.fa-dolly::before{content:""}.fa-dolly-box::before{content:""}.fa-smoking::before{content:""}.fa-minimize::before{content:""}.fa-compress-arrows-alt::before{content:""}.fa-monument::before{content:""}.fa-snowplow::before{content:""}.fa-angles-right::before{content:""}.fa-angle-double-right::before{content:""}.fa-cannabis::before{content:""}.fa-circle-play::before{content:""}.fa-play-circle::before{content:""}.fa-tablets::before{content:""}.fa-ethernet::before{content:""}.fa-euro-sign::before{content:""}.fa-eur::before{content:""}.fa-euro::before{content:""}.fa-chair::before{content:""}.fa-circle-check::before{content:""}.fa-check-circle::before{content:""}.fa-circle-stop::before{content:""}.fa-stop-circle::before{content:""}.fa-compass-drafting::before{content:""}.fa-drafting-compass::before{content:""}.fa-plate-wheat::before{content:""}.fa-icicles::before{content:""}.fa-person-shelter::before{content:""}.fa-neuter::before{content:""}.fa-id-badge::before{content:""}.fa-marker::before{content:""}.fa-face-laugh-beam::before{content:""}.fa-laugh-beam::before{content:""}.fa-helicopter-symbol::before{content:""}.fa-universal-access::before{content:""}.fa-circle-chevron-up::before{content:""}.fa-chevron-circle-up::before{content:""}.fa-lari-sign::before{content:""}.fa-volcano::before{content:""}.fa-person-walking-dashed-line-arrow-right::before{content:""}.fa-sterling-sign::before{content:""}.fa-gbp::before{content:""}.fa-pound-sign::before{content:""}.fa-viruses::before{content:""}.fa-square-person-confined::before{content:""}.fa-user-tie::before{content:""}.fa-arrow-down-long::before{content:""}.fa-long-arrow-down::before{content:""}.fa-tent-arrow-down-to-line::before{content:""}.fa-certificate::before{content:""}.fa-reply-all::before{content:""}.fa-mail-reply-all::before{content:""}.fa-suitcase::before{content:""}.fa-person-skating::before{content:""}.fa-skating::before{content:""}.fa-filter-circle-dollar::before{content:""}.fa-funnel-dollar::before{content:""}.fa-camera-retro::before{content:""}.fa-circle-arrow-down::before{content:""}.fa-arrow-circle-down::before{content:""}.fa-file-import::before{content:""}.fa-arrow-right-to-file::before{content:""}.fa-square-arrow-up-right::before{content:""}.fa-external-link-square::before{content:""}.fa-box-open::before{content:""}.fa-scroll::before{content:""}.fa-spa::before{content:""}.fa-location-pin-lock::before{content:""}.fa-pause::before{content:""}.fa-hill-avalanche::before{content:""}.fa-temperature-empty::before{content:""}.fa-temperature-0::before{content:""}.fa-thermometer-0::before{content:""}.fa-thermometer-empty::before{content:""}.fa-bomb::before{content:""}.fa-registered::before{content:""}.fa-address-card::before{content:""}.fa-contact-card::before{content:""}.fa-vcard::before{content:""}.fa-scale-unbalanced-flip::before{content:""}.fa-balance-scale-right::before{content:""}.fa-subscript::before{content:""}.fa-diamond-turn-right::before{content:""}.fa-directions::before{content:""}.fa-burst::before{content:""}.fa-house-laptop::before{content:""}.fa-laptop-house::before{content:""}.fa-face-tired::before{content:""}.fa-tired::before{content:""}.fa-money-bills::before{content:""}.fa-smog::before{content:""}.fa-crutch::before{content:""}.fa-cloud-arrow-up::before{content:""}.fa-cloud-upload::before{content:""}.fa-cloud-upload-alt::before{content:""}.fa-palette::before{content:""}.fa-arrows-turn-right::before{content:""}.fa-vest::before{content:""}.fa-ferry::before{content:""}.fa-arrows-down-to-people::before{content:""}.fa-seedling::before{content:""}.fa-sprout::before{content:""}.fa-left-right::before{content:""}.fa-arrows-alt-h::before{content:""}.fa-boxes-packing::before{content:""}.fa-circle-arrow-left::before{content:""}.fa-arrow-circle-left::before{content:""}.fa-group-arrows-rotate::before{content:""}.fa-bowl-food::before{content:""}.fa-candy-cane::before{content:""}.fa-arrow-down-wide-short::before{content:""}.fa-sort-amount-asc::before{content:""}.fa-sort-amount-down::before{content:""}.fa-cloud-bolt::before{content:""}.fa-thunderstorm::before{content:""}.fa-text-slash::before{content:""}.fa-remove-format::before{content:""}.fa-face-smile-wink::before{content:""}.fa-smile-wink::before{content:""}.fa-file-word::before{content:""}.fa-file-powerpoint::before{content:""}.fa-arrows-left-right::before{content:""}.fa-arrows-h::before{content:""}.fa-house-lock::before{content:""}.fa-cloud-arrow-down::before{content:""}.fa-cloud-download::before{content:""}.fa-cloud-download-alt::before{content:""}.fa-children::before{content:""}.fa-chalkboard::before{content:""}.fa-blackboard::before{content:""}.fa-user-large-slash::before{content:""}.fa-user-alt-slash::before{content:""}.fa-envelope-open::before{content:""}.fa-handshake-simple-slash::before{content:""}.fa-handshake-alt-slash::before{content:""}.fa-mattress-pillow::before{content:""}.fa-guarani-sign::before{content:""}.fa-arrows-rotate::before{content:""}.fa-refresh::before{content:""}.fa-sync::before{content:""}.fa-fire-extinguisher::before{content:""}.fa-cruzeiro-sign::before{content:""}.fa-greater-than-equal::before{content:""}.fa-shield-halved::before{content:""}.fa-shield-alt::before{content:""}.fa-book-atlas::before{content:""}.fa-atlas::before{content:""}.fa-virus::before{content:""}.fa-envelope-circle-check::before{content:""}.fa-layer-group::before{content:""}.fa-arrows-to-dot::before{content:""}.fa-archway::before{content:""}.fa-heart-circle-check::before{content:""}.fa-house-chimney-crack::before{content:""}.fa-house-damage::before{content:""}.fa-file-zipper::before{content:""}.fa-file-archive::before{content:""}.fa-square::before{content:""}.fa-martini-glass-empty::before{content:""}.fa-glass-martini::before{content:""}.fa-couch::before{content:""}.fa-cedi-sign::before{content:""}.fa-italic::before{content:""}.fa-table-cells-column-lock::before{content:""}.fa-church::before{content:""}.fa-comments-dollar::before{content:""}.fa-democrat::before{content:""}.fa-z::before{content:"Z"}.fa-person-skiing::before{content:""}.fa-skiing::before{content:""}.fa-road-lock::before{content:""}.fa-a::before{content:"A"}.fa-temperature-arrow-down::before{content:""}.fa-temperature-down::before{content:""}.fa-feather-pointed::before{content:""}.fa-feather-alt::before{content:""}.fa-p::before{content:"P"}.fa-snowflake::before{content:""}.fa-newspaper::before{content:""}.fa-rectangle-ad::before{content:""}.fa-ad::before{content:""}.fa-circle-arrow-right::before{content:""}.fa-arrow-circle-right::before{content:""}.fa-filter-circle-xmark::before{content:""}.fa-locust::before{content:""}.fa-sort::before{content:""}.fa-unsorted::before{content:""}.fa-list-ol::before{content:""}.fa-list-1-2::before{content:""}.fa-list-numeric::before{content:""}.fa-person-dress-burst::before{content:""}.fa-money-check-dollar::before{content:""}.fa-money-check-alt::before{content:""}.fa-vector-square::before{content:""}.fa-bread-slice::before{content:""}.fa-language::before{content:""}.fa-face-kiss-wink-heart::before{content:""}.fa-kiss-wink-heart::before{content:""}.fa-filter::before{content:""}.fa-question::before{content:"\?"}.fa-file-signature::before{content:""}.fa-up-down-left-right::before{content:""}.fa-arrows-alt::before{content:""}.fa-house-chimney-user::before{content:""}.fa-hand-holding-heart::before{content:""}.fa-puzzle-piece::before{content:""}.fa-money-check::before{content:""}.fa-star-half-stroke::before{content:""}.fa-star-half-alt::before{content:""}.fa-code::before{content:""}.fa-whiskey-glass::before{content:""}.fa-glass-whiskey::before{content:""}.fa-building-circle-exclamation::before{content:""}.fa-magnifying-glass-chart::before{content:""}.fa-arrow-up-right-from-square::before{content:""}.fa-external-link::before{content:""}.fa-cubes-stacked::before{content:""}.fa-won-sign::before{content:""}.fa-krw::before{content:""}.fa-won::before{content:""}.fa-virus-covid::before{content:""}.fa-austral-sign::before{content:""}.fa-f::before{content:"F"}.fa-leaf::before{content:""}.fa-road::before{content:""}.fa-taxi::before{content:""}.fa-cab::before{content:""}.fa-person-circle-plus::before{content:""}.fa-chart-pie::before{content:""}.fa-pie-chart::before{content:""}.fa-bolt-lightning::before{content:""}.fa-sack-xmark::before{content:""}.fa-file-excel::before{content:""}.fa-file-contract::before{content:""}.fa-fish-fins::before{content:""}.fa-building-flag::before{content:""}.fa-face-grin-beam::before{content:""}.fa-grin-beam::before{content:""}.fa-object-ungroup::before{content:""}.fa-poop::before{content:""}.fa-location-pin::before{content:""}.fa-map-marker::before{content:""}.fa-kaaba::before{content:""}.fa-toilet-paper::before{content:""}.fa-helmet-safety::before{content:""}.fa-hard-hat::before{content:""}.fa-hat-hard::before{content:""}.fa-eject::before{content:""}.fa-circle-right::before{content:""}.fa-arrow-alt-circle-right::before{content:""}.fa-plane-circle-check::before{content:""}.fa-face-rolling-eyes::before{content:""}.fa-meh-rolling-eyes::before{content:""}.fa-object-group::before{content:""}.fa-chart-line::before{content:""}.fa-line-chart::before{content:""}.fa-mask-ventilator::before{content:""}.fa-arrow-right::before{content:""}.fa-signs-post::before{content:""}.fa-map-signs::before{content:""}.fa-cash-register::before{content:""}.fa-person-circle-question::before{content:""}.fa-h::before{content:"H"}.fa-tarp::before{content:""}.fa-screwdriver-wrench::before{content:""}.fa-tools::before{content:""}.fa-arrows-to-eye::before{content:""}.fa-plug-circle-bolt::before{content:""}.fa-heart::before{content:""}.fa-mars-and-venus::before{content:""}.fa-house-user::before{content:""}.fa-home-user::before{content:""}.fa-dumpster-fire::before{content:""}.fa-house-crack::before{content:""}.fa-martini-glass-citrus::before{content:""}.fa-cocktail::before{content:""}.fa-face-surprise::before{content:""}.fa-surprise::before{content:""}.fa-bottle-water::before{content:""}.fa-circle-pause::before{content:""}.fa-pause-circle::before{content:""}.fa-toilet-paper-slash::before{content:""}.fa-apple-whole::before{content:""}.fa-apple-alt::before{content:""}.fa-kitchen-set::before{content:""}.fa-r::before{content:"R"}.fa-temperature-quarter::before{content:""}.fa-temperature-1::before{content:""}.fa-thermometer-1::before{content:""}.fa-thermometer-quarter::before{content:""}.fa-cube::before{content:""}.fa-bitcoin-sign::before{content:""}.fa-shield-dog::before{content:""}.fa-solar-panel::before{content:""}.fa-lock-open::before{content:""}.fa-elevator::before{content:""}.fa-money-bill-transfer::before{content:""}.fa-money-bill-trend-up::before{content:""}.fa-house-flood-water-circle-arrow-right::before{content:""}.fa-square-poll-horizontal::before{content:""}.fa-poll-h::before{content:""}.fa-circle::before{content:""}.fa-backward-fast::before{content:""}.fa-fast-backward::before{content:""}.fa-recycle::before{content:""}.fa-user-astronaut::before{content:""}.fa-plane-slash::before{content:""}.fa-trademark::before{content:""}.fa-basketball::before{content:""}.fa-basketball-ball::before{content:""}.fa-satellite-dish::before{content:""}.fa-circle-up::before{content:""}.fa-arrow-alt-circle-up::before{content:""}.fa-mobile-screen-button::before{content:""}.fa-mobile-alt::before{content:""}.fa-volume-high::before{content:""}.fa-volume-up::before{content:""}.fa-users-rays::before{content:""}.fa-wallet::before{content:""}.fa-clipboard-check::before{content:""}.fa-file-audio::before{content:""}.fa-burger::before{content:""}.fa-hamburger::before{content:""}.fa-wrench::before{content:""}.fa-bugs::before{content:""}.fa-rupee-sign::before{content:""}.fa-rupee::before{content:""}.fa-file-image::before{content:""}.fa-circle-question::before{content:""}.fa-question-circle::before{content:""}.fa-plane-departure::before{content:""}.fa-handshake-slash::before{content:""}.fa-book-bookmark::before{content:""}.fa-code-branch::before{content:""}.fa-hat-cowboy::before{content:""}.fa-bridge::before{content:""}.fa-phone-flip::before{content:""}.fa-phone-alt::before{content:""}.fa-truck-front::before{content:""}.fa-cat::before{content:""}.fa-anchor-circle-exclamation::before{content:""}.fa-truck-field::before{content:""}.fa-route::before{content:""}.fa-clipboard-question::before{content:""}.fa-panorama::before{content:""}.fa-comment-medical::before{content:""}.fa-teeth-open::before{content:""}.fa-file-circle-minus::before{content:""}.fa-tags::before{content:""}.fa-wine-glass::before{content:""}.fa-forward-fast::before{content:""}.fa-fast-forward::before{content:""}.fa-face-meh-blank::before{content:""}.fa-meh-blank::before{content:""}.fa-square-parking::before{content:""}.fa-parking::before{content:""}.fa-house-signal::before{content:""}.fa-bars-progress::before{content:""}.fa-tasks-alt::before{content:""}.fa-faucet-drip::before{content:""}.fa-cart-flatbed::before{content:""}.fa-dolly-flatbed::before{content:""}.fa-ban-smoking::before{content:""}.fa-smoking-ban::before{content:""}.fa-terminal::before{content:""}.fa-mobile-button::before{content:""}.fa-house-medical-flag::before{content:""}.fa-basket-shopping::before{content:""}.fa-shopping-basket::before{content:""}.fa-tape::before{content:""}.fa-bus-simple::before{content:""}.fa-bus-alt::before{content:""}.fa-eye::before{content:""}.fa-face-sad-cry::before{content:""}.fa-sad-cry::before{content:""}.fa-audio-description::before{content:""}.fa-person-military-to-person::before{content:""}.fa-file-shield::before{content:""}.fa-user-slash::before{content:""}.fa-pen::before{content:""}.fa-tower-observation::before{content:""}.fa-file-code::before{content:""}.fa-signal::before{content:""}.fa-signal-5::before{content:""}.fa-signal-perfect::before{content:""}.fa-bus::before{content:""}.fa-heart-circle-xmark::before{content:""}.fa-house-chimney::before{content:""}.fa-home-lg::before{content:""}.fa-window-maximize::before{content:""}.fa-face-frown::before{content:""}.fa-frown::before{content:""}.fa-prescription::before{content:""}.fa-shop::before{content:""}.fa-store-alt::before{content:""}.fa-floppy-disk::before{content:""}.fa-save::before{content:""}.fa-vihara::before{content:""}.fa-scale-unbalanced::before{content:""}.fa-balance-scale-left::before{content:""}.fa-sort-up::before{content:""}.fa-sort-asc::before{content:""}.fa-comment-dots::before{content:""}.fa-commenting::before{content:""}.fa-plant-wilt::before{content:""}.fa-diamond::before{content:""}.fa-face-grin-squint::before{content:""}.fa-grin-squint::before{content:""}.fa-hand-holding-dollar::before{content:""}.fa-hand-holding-usd::before{content:""}.fa-bacterium::before{content:""}.fa-hand-pointer::before{content:""}.fa-drum-steelpan::before{content:""}.fa-hand-scissors::before{content:""}.fa-hands-praying::before{content:""}.fa-praying-hands::before{content:""}.fa-arrow-rotate-right::before{content:""}.fa-arrow-right-rotate::before{content:""}.fa-arrow-rotate-forward::before{content:""}.fa-redo::before{content:""}.fa-biohazard::before{content:""}.fa-location-crosshairs::before{content:""}.fa-location::before{content:""}.fa-mars-double::before{content:""}.fa-child-dress::before{content:""}.fa-users-between-lines::before{content:""}.fa-lungs-virus::before{content:""}.fa-face-grin-tears::before{content:""}.fa-grin-tears::before{content:""}.fa-phone::before{content:""}.fa-calendar-xmark::before{content:""}.fa-calendar-times::before{content:""}.fa-child-reaching::before{content:""}.fa-head-side-virus::before{content:""}.fa-user-gear::before{content:""}.fa-user-cog::before{content:""}.fa-arrow-up-1-9::before{content:""}.fa-sort-numeric-up::before{content:""}.fa-door-closed::before{content:""}.fa-shield-virus::before{content:""}.fa-dice-six::before{content:""}.fa-mosquito-net::before{content:""}.fa-bridge-water::before{content:""}.fa-person-booth::before{content:""}.fa-text-width::before{content:""}.fa-hat-wizard::before{content:""}.fa-pen-fancy::before{content:""}.fa-person-digging::before{content:""}.fa-digging::before{content:""}.fa-trash::before{content:""}.fa-gauge-simple::before{content:""}.fa-gauge-simple-med::before{content:""}.fa-tachometer-average::before{content:""}.fa-book-medical::before{content:""}.fa-poo::before{content:""}.fa-quote-right::before{content:""}.fa-quote-right-alt::before{content:""}.fa-shirt::before{content:""}.fa-t-shirt::before{content:""}.fa-tshirt::before{content:""}.fa-cubes::before{content:""}.fa-divide::before{content:""}.fa-tenge-sign::before{content:""}.fa-tenge::before{content:""}.fa-headphones::before{content:""}.fa-hands-holding::before{content:""}.fa-hands-clapping::before{content:""}.fa-republican::before{content:""}.fa-arrow-left::before{content:""}.fa-person-circle-xmark::before{content:""}.fa-ruler::before{content:""}.fa-align-left::before{content:""}.fa-dice-d6::before{content:""}.fa-restroom::before{content:""}.fa-j::before{content:"J"}.fa-users-viewfinder::before{content:""}.fa-file-video::before{content:""}.fa-up-right-from-square::before{content:""}.fa-external-link-alt::before{content:""}.fa-table-cells::before{content:""}.fa-th::before{content:""}.fa-file-pdf::before{content:""}.fa-book-bible::before{content:""}.fa-bible::before{content:""}.fa-o::before{content:"O"}.fa-suitcase-medical::before{content:""}.fa-medkit::before{content:""}.fa-user-secret::before{content:""}.fa-otter::before{content:""}.fa-person-dress::before{content:""}.fa-female::before{content:""}.fa-comment-dollar::before{content:""}.fa-business-time::before{content:""}.fa-briefcase-clock::before{content:""}.fa-table-cells-large::before{content:""}.fa-th-large::before{content:""}.fa-book-tanakh::before{content:""}.fa-tanakh::before{content:""}.fa-phone-volume::before{content:""}.fa-volume-control-phone::before{content:""}.fa-hat-cowboy-side::before{content:""}.fa-clipboard-user::before{content:""}.fa-child::before{content:""}.fa-lira-sign::before{content:""}.fa-satellite::before{content:""}.fa-plane-lock::before{content:""}.fa-tag::before{content:""}.fa-comment::before{content:""}.fa-cake-candles::before{content:""}.fa-birthday-cake::before{content:""}.fa-cake::before{content:""}.fa-envelope::before{content:""}.fa-angles-up::before{content:""}.fa-angle-double-up::before{content:""}.fa-paperclip::before{content:""}.fa-arrow-right-to-city::before{content:""}.fa-ribbon::before{content:""}.fa-lungs::before{content:""}.fa-arrow-up-9-1::before{content:""}.fa-sort-numeric-up-alt::before{content:""}.fa-litecoin-sign::before{content:""}.fa-border-none::before{content:""}.fa-circle-nodes::before{content:""}.fa-parachute-box::before{content:""}.fa-indent::before{content:""}.fa-truck-field-un::before{content:""}.fa-hourglass::before{content:""}.fa-hourglass-empty::before{content:""}.fa-mountain::before{content:""}.fa-user-doctor::before{content:""}.fa-user-md::before{content:""}.fa-circle-info::before{content:""}.fa-info-circle::before{content:""}.fa-cloud-meatball::before{content:""}.fa-camera::before{content:""}.fa-camera-alt::before{content:""}.fa-square-virus::before{content:""}.fa-meteor::before{content:""}.fa-car-on::before{content:""}.fa-sleigh::before{content:""}.fa-arrow-down-1-9::before{content:""}.fa-sort-numeric-asc::before{content:""}.fa-sort-numeric-down::before{content:""}.fa-hand-holding-droplet::before{content:""}.fa-hand-holding-water::before{content:""}.fa-water::before{content:""}.fa-calendar-check::before{content:""}.fa-braille::before{content:""}.fa-prescription-bottle-medical::before{content:""}.fa-prescription-bottle-alt::before{content:""}.fa-landmark::before{content:""}.fa-truck::before{content:""}.fa-crosshairs::before{content:""}.fa-person-cane::before{content:""}.fa-tent::before{content:""}.fa-vest-patches::before{content:""}.fa-check-double::before{content:""}.fa-arrow-down-a-z::before{content:""}.fa-sort-alpha-asc::before{content:""}.fa-sort-alpha-down::before{content:""}.fa-money-bill-wheat::before{content:""}.fa-cookie::before{content:""}.fa-arrow-rotate-left::before{content:""}.fa-arrow-left-rotate::before{content:""}.fa-arrow-rotate-back::before{content:""}.fa-arrow-rotate-backward::before{content:""}.fa-undo::before{content:""}.fa-hard-drive::before{content:""}.fa-hdd::before{content:""}.fa-face-grin-squint-tears::before{content:""}.fa-grin-squint-tears::before{content:""}.fa-dumbbell::before{content:""}.fa-rectangle-list::before{content:""}.fa-list-alt::before{content:""}.fa-tarp-droplet::before{content:""}.fa-house-medical-circle-check::before{content:""}.fa-person-skiing-nordic::before{content:""}.fa-skiing-nordic::before{content:""}.fa-calendar-plus::before{content:""}.fa-plane-arrival::before{content:""}.fa-circle-left::before{content:""}.fa-arrow-alt-circle-left::before{content:""}.fa-train-subway::before{content:""}.fa-subway::before{content:""}.fa-chart-gantt::before{content:""}.fa-indian-rupee-sign::before{content:""}.fa-indian-rupee::before{content:""}.fa-inr::before{content:""}.fa-crop-simple::before{content:""}.fa-crop-alt::before{content:""}.fa-money-bill-1::before{content:""}.fa-money-bill-alt::before{content:""}.fa-left-long::before{content:""}.fa-long-arrow-alt-left::before{content:""}.fa-dna::before{content:""}.fa-virus-slash::before{content:""}.fa-minus::before{content:""}.fa-subtract::before{content:""}.fa-chess::before{content:""}.fa-arrow-left-long::before{content:""}.fa-long-arrow-left::before{content:""}.fa-plug-circle-check::before{content:""}.fa-street-view::before{content:""}.fa-franc-sign::before{content:""}.fa-volume-off::before{content:""}.fa-hands-asl-interpreting::before{content:""}.fa-american-sign-language-interpreting::before{content:""}.fa-asl-interpreting::before{content:""}.fa-hands-american-sign-language-interpreting::before{content:""}.fa-gear::before{content:""}.fa-cog::before{content:""}.fa-droplet-slash::before{content:""}.fa-tint-slash::before{content:""}.fa-mosque::before{content:""}.fa-mosquito::before{content:""}.fa-star-of-david::before{content:""}.fa-person-military-rifle::before{content:""}.fa-cart-shopping::before{content:""}.fa-shopping-cart::before{content:""}.fa-vials::before{content:""}.fa-plug-circle-plus::before{content:""}.fa-place-of-worship::before{content:""}.fa-grip-vertical::before{content:""}.fa-arrow-turn-up::before{content:""}.fa-level-up::before{content:""}.fa-u::before{content:"U"}.fa-square-root-variable::before{content:""}.fa-square-root-alt::before{content:""}.fa-clock::before{content:""}.fa-clock-four::before{content:""}.fa-backward-step::before{content:""}.fa-step-backward::before{content:""}.fa-pallet::before{content:""}.fa-faucet::before{content:""}.fa-baseball-bat-ball::before{content:""}.fa-s::before{content:"S"}.fa-timeline::before{content:""}.fa-keyboard::before{content:""}.fa-caret-down::before{content:""}.fa-house-chimney-medical::before{content:""}.fa-clinic-medical::before{content:""}.fa-temperature-three-quarters::before{content:""}.fa-temperature-3::before{content:""}.fa-thermometer-3::before{content:""}.fa-thermometer-three-quarters::before{content:""}.fa-mobile-screen::before{content:""}.fa-mobile-android-alt::before{content:""}.fa-plane-up::before{content:""}.fa-piggy-bank::before{content:""}.fa-battery-half::before{content:""}.fa-battery-3::before{content:""}.fa-mountain-city::before{content:""}.fa-coins::before{content:""}.fa-khanda::before{content:""}.fa-sliders::before{content:""}.fa-sliders-h::before{content:""}.fa-folder-tree::before{content:""}.fa-network-wired::before{content:""}.fa-map-pin::before{content:""}.fa-hamsa::before{content:""}.fa-cent-sign::before{content:""}.fa-flask::before{content:""}.fa-person-pregnant::before{content:""}.fa-wand-sparkles::before{content:""}.fa-ellipsis-vertical::before{content:""}.fa-ellipsis-v::before{content:""}.fa-ticket::before{content:""}.fa-power-off::before{content:""}.fa-right-long::before{content:""}.fa-long-arrow-alt-right::before{content:""}.fa-flag-usa::before{content:""}.fa-laptop-file::before{content:""}.fa-tty::before{content:""}.fa-teletype::before{content:""}.fa-diagram-next::before{content:""}.fa-person-rifle::before{content:""}.fa-house-medical-circle-exclamation::before{content:""}.fa-closed-captioning::before{content:""}.fa-person-hiking::before{content:""}.fa-hiking::before{content:""}.fa-venus-double::before{content:""}.fa-images::before{content:""}.fa-calculator::before{content:""}.fa-people-pulling::before{content:""}.fa-n::before{content:"N"}.fa-cable-car::before{content:""}.fa-tram::before{content:""}.fa-cloud-rain::before{content:""}.fa-building-circle-xmark::before{content:""}.fa-ship::before{content:""}.fa-arrows-down-to-line::before{content:""}.fa-download::before{content:""}.fa-face-grin::before{content:""}.fa-grin::before{content:""}.fa-delete-left::before{content:""}.fa-backspace::before{content:""}.fa-eye-dropper::before{content:""}.fa-eye-dropper-empty::before{content:""}.fa-eyedropper::before{content:""}.fa-file-circle-check::before{content:""}.fa-forward::before{content:""}.fa-mobile::before{content:""}.fa-mobile-android::before{content:""}.fa-mobile-phone::before{content:""}.fa-face-meh::before{content:""}.fa-meh::before{content:""}.fa-align-center::before{content:""}.fa-book-skull::before{content:""}.fa-book-dead::before{content:""}.fa-id-card::before{content:""}.fa-drivers-license::before{content:""}.fa-outdent::before{content:""}.fa-dedent::before{content:""}.fa-heart-circle-exclamation::before{content:""}.fa-house::before{content:""}.fa-home::before{content:""}.fa-home-alt::before{content:""}.fa-home-lg-alt::before{content:""}.fa-calendar-week::before{content:""}.fa-laptop-medical::before{content:""}.fa-b::before{content:"B"}.fa-file-medical::before{content:""}.fa-dice-one::before{content:""}.fa-kiwi-bird::before{content:""}.fa-arrow-right-arrow-left::before{content:""}.fa-exchange::before{content:""}.fa-rotate-right::before{content:""}.fa-redo-alt::before{content:""}.fa-rotate-forward::before{content:""}.fa-utensils::before{content:""}.fa-cutlery::before{content:""}.fa-arrow-up-wide-short::before{content:""}.fa-sort-amount-up::before{content:""}.fa-mill-sign::before{content:""}.fa-bowl-rice::before{content:""}.fa-skull::before{content:""}.fa-tower-broadcast::before{content:""}.fa-broadcast-tower::before{content:""}.fa-truck-pickup::before{content:""}.fa-up-long::before{content:""}.fa-long-arrow-alt-up::before{content:""}.fa-stop::before{content:""}.fa-code-merge::before{content:""}.fa-upload::before{content:""}.fa-hurricane::before{content:""}.fa-mound::before{content:""}.fa-toilet-portable::before{content:""}.fa-compact-disc::before{content:""}.fa-file-arrow-down::before{content:""}.fa-file-download::before{content:""}.fa-caravan::before{content:""}.fa-shield-cat::before{content:""}.fa-bolt::before{content:""}.fa-zap::before{content:""}.fa-glass-water::before{content:""}.fa-oil-well::before{content:""}.fa-vault::before{content:""}.fa-mars::before{content:""}.fa-toilet::before{content:""}.fa-plane-circle-xmark::before{content:""}.fa-yen-sign::before{content:""}.fa-cny::before{content:""}.fa-jpy::before{content:""}.fa-rmb::before{content:""}.fa-yen::before{content:""}.fa-ruble-sign::before{content:""}.fa-rouble::before{content:""}.fa-rub::before{content:""}.fa-ruble::before{content:""}.fa-sun::before{content:""}.fa-guitar::before{content:""}.fa-face-laugh-wink::before{content:""}.fa-laugh-wink::before{content:""}.fa-horse-head::before{content:""}.fa-bore-hole::before{content:""}.fa-industry::before{content:""}.fa-circle-down::before{content:""}.fa-arrow-alt-circle-down::before{content:""}.fa-arrows-turn-to-dots::before{content:""}.fa-florin-sign::before{content:""}.fa-arrow-down-short-wide::before{content:""}.fa-sort-amount-desc::before{content:""}.fa-sort-amount-down-alt::before{content:""}.fa-less-than::before{content:"\<"}.fa-angle-down::before{content:""}.fa-car-tunnel::before{content:""}.fa-head-side-cough::before{content:""}.fa-grip-lines::before{content:""}.fa-thumbs-down::before{content:""}.fa-user-lock::before{content:""}.fa-arrow-right-long::before{content:""}.fa-long-arrow-right::before{content:""}.fa-anchor-circle-xmark::before{content:""}.fa-ellipsis::before{content:""}.fa-ellipsis-h::before{content:""}.fa-chess-pawn::before{content:""}.fa-kit-medical::before{content:""}.fa-first-aid::before{content:""}.fa-person-through-window::before{content:""}.fa-toolbox::before{content:""}.fa-hands-holding-circle::before{content:""}.fa-bug::before{content:""}.fa-credit-card::before{content:""}.fa-credit-card-alt::before{content:""}.fa-car::before{content:""}.fa-automobile::before{content:""}.fa-hand-holding-hand::before{content:""}.fa-book-open-reader::before{content:""}.fa-book-reader::before{content:""}.fa-mountain-sun::before{content:""}.fa-arrows-left-right-to-line::before{content:""}.fa-dice-d20::before{content:""}.fa-truck-droplet::before{content:""}.fa-file-circle-xmark::before{content:""}.fa-temperature-arrow-up::before{content:""}.fa-temperature-up::before{content:""}.fa-medal::before{content:""}.fa-bed::before{content:""}.fa-square-h::before{content:""}.fa-h-square::before{content:""}.fa-podcast::before{content:""}.fa-temperature-full::before{content:""}.fa-temperature-4::before{content:""}.fa-thermometer-4::before{content:""}.fa-thermometer-full::before{content:""}.fa-bell::before{content:""}.fa-superscript::before{content:""}.fa-plug-circle-xmark::before{content:""}.fa-star-of-life::before{content:""}.fa-phone-slash::before{content:""}.fa-paint-roller::before{content:""}.fa-handshake-angle::before{content:""}.fa-hands-helping::before{content:""}.fa-location-dot::before{content:""}.fa-map-marker-alt::before{content:""}.fa-file::before{content:""}.fa-greater-than::before{content:"\>"}.fa-person-swimming::before{content:""}.fa-swimmer::before{content:""}.fa-arrow-down::before{content:""}.fa-droplet::before{content:""}.fa-tint::before{content:""}.fa-eraser::before{content:""}.fa-earth-americas::before{content:""}.fa-earth::before{content:""}.fa-earth-america::before{content:""}.fa-globe-americas::before{content:""}.fa-person-burst::before{content:""}.fa-dove::before{content:""}.fa-battery-empty::before{content:""}.fa-battery-0::before{content:""}.fa-socks::before{content:""}.fa-inbox::before{content:""}.fa-section::before{content:""}.fa-gauge-high::before{content:""}.fa-tachometer-alt::before{content:""}.fa-tachometer-alt-fast::before{content:""}.fa-envelope-open-text::before{content:""}.fa-hospital::before{content:""}.fa-hospital-alt::before{content:""}.fa-hospital-wide::before{content:""}.fa-wine-bottle::before{content:""}.fa-chess-rook::before{content:""}.fa-bars-staggered::before{content:""}.fa-reorder::before{content:""}.fa-stream::before{content:""}.fa-dharmachakra::before{content:""}.fa-hotdog::before{content:""}.fa-person-walking-with-cane::before{content:""}.fa-blind::before{content:""}.fa-drum::before{content:""}.fa-ice-cream::before{content:""}.fa-heart-circle-bolt::before{content:""}.fa-fax::before{content:""}.fa-paragraph::before{content:""}.fa-check-to-slot::before{content:""}.fa-vote-yea::before{content:""}.fa-star-half::before{content:""}.fa-boxes-stacked::before{content:""}.fa-boxes::before{content:""}.fa-boxes-alt::before{content:""}.fa-link::before{content:""}.fa-chain::before{content:""}.fa-ear-listen::before{content:""}.fa-assistive-listening-systems::before{content:""}.fa-tree-city::before{content:""}.fa-play::before{content:""}.fa-font::before{content:""}.fa-table-cells-row-lock::before{content:""}.fa-rupiah-sign::before{content:""}.fa-magnifying-glass::before{content:""}.fa-search::before{content:""}.fa-table-tennis-paddle-ball::before{content:""}.fa-ping-pong-paddle-ball::before{content:""}.fa-table-tennis::before{content:""}.fa-person-dots-from-line::before{content:""}.fa-diagnoses::before{content:""}.fa-trash-can-arrow-up::before{content:""}.fa-trash-restore-alt::before{content:""}.fa-naira-sign::before{content:""}.fa-cart-arrow-down::before{content:""}.fa-walkie-talkie::before{content:""}.fa-file-pen::before{content:""}.fa-file-edit::before{content:""}.fa-receipt::before{content:""}.fa-square-pen::before{content:""}.fa-pen-square::before{content:""}.fa-pencil-square::before{content:""}.fa-suitcase-rolling::before{content:""}.fa-person-circle-exclamation::before{content:""}.fa-chevron-down::before{content:""}.fa-battery-full::before{content:""}.fa-battery::before{content:""}.fa-battery-5::before{content:""}.fa-skull-crossbones::before{content:""}.fa-code-compare::before{content:""}.fa-list-ul::before{content:""}.fa-list-dots::before{content:""}.fa-school-lock::before{content:""}.fa-tower-cell::before{content:""}.fa-down-long::before{content:""}.fa-long-arrow-alt-down::before{content:""}.fa-ranking-star::before{content:""}.fa-chess-king::before{content:""}.fa-person-harassing::before{content:""}.fa-brazilian-real-sign::before{content:""}.fa-landmark-dome::before{content:""}.fa-landmark-alt::before{content:""}.fa-arrow-up::before{content:""}.fa-tv::before{content:""}.fa-television::before{content:""}.fa-tv-alt::before{content:""}.fa-shrimp::before{content:""}.fa-list-check::before{content:""}.fa-tasks::before{content:""}.fa-jug-detergent::before{content:""}.fa-circle-user::before{content:""}.fa-user-circle::before{content:""}.fa-user-shield::before{content:""}.fa-wind::before{content:""}.fa-car-burst::before{content:""}.fa-car-crash::before{content:""}.fa-y::before{content:"Y"}.fa-person-snowboarding::before{content:""}.fa-snowboarding::before{content:""}.fa-truck-fast::before{content:""}.fa-shipping-fast::before{content:""}.fa-fish::before{content:""}.fa-user-graduate::before{content:""}.fa-circle-half-stroke::before{content:""}.fa-adjust::before{content:""}.fa-clapperboard::before{content:""}.fa-circle-radiation::before{content:""}.fa-radiation-alt::before{content:""}.fa-baseball::before{content:""}.fa-baseball-ball::before{content:""}.fa-jet-fighter-up::before{content:""}.fa-diagram-project::before{content:""}.fa-project-diagram::before{content:""}.fa-copy::before{content:""}.fa-volume-xmark::before{content:""}.fa-volume-mute::before{content:""}.fa-volume-times::before{content:""}.fa-hand-sparkles::before{content:""}.fa-grip::before{content:""}.fa-grip-horizontal::before{content:""}.fa-share-from-square::before{content:""}.fa-share-square::before{content:""}.fa-child-combatant::before{content:""}.fa-child-rifle::before{content:""}.fa-gun::before{content:""}.fa-square-phone::before{content:""}.fa-phone-square::before{content:""}.fa-plus::before{content:"\+"}.fa-add::before{content:"\+"}.fa-expand::before{content:""}.fa-computer::before{content:""}.fa-xmark::before{content:""}.fa-close::before{content:""}.fa-multiply::before{content:""}.fa-remove::before{content:""}.fa-times::before{content:""}.fa-arrows-up-down-left-right::before{content:""}.fa-arrows::before{content:""}.fa-chalkboard-user::before{content:""}.fa-chalkboard-teacher::before{content:""}.fa-peso-sign::before{content:""}.fa-building-shield::before{content:""}.fa-baby::before{content:""}.fa-users-line::before{content:""}.fa-quote-left::before{content:""}.fa-quote-left-alt::before{content:""}.fa-tractor::before{content:""}.fa-trash-arrow-up::before{content:""}.fa-trash-restore::before{content:""}.fa-arrow-down-up-lock::before{content:""}.fa-lines-leaning::before{content:""}.fa-ruler-combined::before{content:""}.fa-copyright::before{content:""}.fa-equals::before{content:"\="}.fa-blender::before{content:""}.fa-teeth::before{content:""}.fa-shekel-sign::before{content:""}.fa-ils::before{content:""}.fa-shekel::before{content:""}.fa-sheqel::before{content:""}.fa-sheqel-sign::before{content:""}.fa-map::before{content:""}.fa-rocket::before{content:""}.fa-photo-film::before{content:""}.fa-photo-video::before{content:""}.fa-folder-minus::before{content:""}.fa-store::before{content:""}.fa-arrow-trend-up::before{content:""}.fa-plug-circle-minus::before{content:""}.fa-sign-hanging::before{content:""}.fa-sign::before{content:""}.fa-bezier-curve::before{content:""}.fa-bell-slash::before{content:""}.fa-tablet::before{content:""}.fa-tablet-android::before{content:""}.fa-school-flag::before{content:""}.fa-fill::before{content:""}.fa-angle-up::before{content:""}.fa-drumstick-bite::before{content:""}.fa-holly-berry::before{content:""}.fa-chevron-left::before{content:""}.fa-bacteria::before{content:""}.fa-hand-lizard::before{content:""}.fa-notdef::before{content:""}.fa-disease::before{content:""}.fa-briefcase-medical::before{content:""}.fa-genderless::before{content:""}.fa-chevron-right::before{content:""}.fa-retweet::before{content:""}.fa-car-rear::before{content:""}.fa-car-alt::before{content:""}.fa-pump-soap::before{content:""}.fa-video-slash::before{content:""}.fa-battery-quarter::before{content:""}.fa-battery-2::before{content:""}.fa-radio::before{content:""}.fa-baby-carriage::before{content:""}.fa-carriage-baby::before{content:""}.fa-traffic-light::before{content:""}.fa-thermometer::before{content:""}.fa-vr-cardboard::before{content:""}.fa-hand-middle-finger::before{content:""}.fa-percent::before{content:"\%"}.fa-percentage::before{content:"\%"}.fa-truck-moving::before{content:""}.fa-glass-water-droplet::before{content:""}.fa-display::before{content:""}.fa-face-smile::before{content:""}.fa-smile::before{content:""}.fa-thumbtack::before{content:""}.fa-thumb-tack::before{content:""}.fa-trophy::before{content:""}.fa-person-praying::before{content:""}.fa-pray::before{content:""}.fa-hammer::before{content:""}.fa-hand-peace::before{content:""}.fa-rotate::before{content:""}.fa-sync-alt::before{content:""}.fa-spinner::before{content:""}.fa-robot::before{content:""}.fa-peace::before{content:""}.fa-gears::before{content:""}.fa-cogs::before{content:""}.fa-warehouse::before{content:""}.fa-arrow-up-right-dots::before{content:""}.fa-splotch::before{content:""}.fa-face-grin-hearts::before{content:""}.fa-grin-hearts::before{content:""}.fa-dice-four::before{content:""}.fa-sim-card::before{content:""}.fa-transgender::before{content:""}.fa-transgender-alt::before{content:""}.fa-mercury::before{content:""}.fa-arrow-turn-down::before{content:""}.fa-level-down::before{content:""}.fa-person-falling-burst::before{content:""}.fa-award::before{content:""}.fa-ticket-simple::before{content:""}.fa-ticket-alt::before{content:""}.fa-building::before{content:""}.fa-angles-left::before{content:""}.fa-angle-double-left::before{content:""}.fa-qrcode::before{content:""}.fa-clock-rotate-left::before{content:""}.fa-history::before{content:""}.fa-face-grin-beam-sweat::before{content:""}.fa-grin-beam-sweat::before{content:""}.fa-file-export::before{content:""}.fa-arrow-right-from-file::before{content:""}.fa-shield::before{content:""}.fa-shield-blank::before{content:""}.fa-arrow-up-short-wide::before{content:""}.fa-sort-amount-up-alt::before{content:""}.fa-house-medical::before{content:""}.fa-golf-ball-tee::before{content:""}.fa-golf-ball::before{content:""}.fa-circle-chevron-left::before{content:""}.fa-chevron-circle-left::before{content:""}.fa-house-chimney-window::before{content:""}.fa-pen-nib::before{content:""}.fa-tent-arrow-turn-left::before{content:""}.fa-tents::before{content:""}.fa-wand-magic::before{content:""}.fa-magic::before{content:""}.fa-dog::before{content:""}.fa-carrot::before{content:""}.fa-moon::before{content:""}.fa-wine-glass-empty::before{content:""}.fa-wine-glass-alt::before{content:""}.fa-cheese::before{content:""}.fa-yin-yang::before{content:""}.fa-music::before{content:""}.fa-code-commit::before{content:""}.fa-temperature-low::before{content:""}.fa-person-biking::before{content:""}.fa-biking::before{content:""}.fa-broom::before{content:""}.fa-shield-heart::before{content:""}.fa-gopuram::before{content:""}.fa-earth-oceania::before{content:""}.fa-globe-oceania::before{content:""}.fa-square-xmark::before{content:""}.fa-times-square::before{content:""}.fa-xmark-square::before{content:""}.fa-hashtag::before{content:"\#"}.fa-up-right-and-down-left-from-center::before{content:""}.fa-expand-alt::before{content:""}.fa-oil-can::before{content:""}.fa-t::before{content:"T"}.fa-hippo::before{content:""}.fa-chart-column::before{content:""}.fa-infinity::before{content:""}.fa-vial-circle-check::before{content:""}.fa-person-arrow-down-to-line::before{content:""}.fa-voicemail::before{content:""}.fa-fan::before{content:""}.fa-person-walking-luggage::before{content:""}.fa-up-down::before{content:""}.fa-arrows-alt-v::before{content:""}.fa-cloud-moon-rain::before{content:""}.fa-calendar::before{content:""}.fa-trailer::before{content:""}.fa-bahai::before{content:""}.fa-haykal::before{content:""}.fa-sd-card::before{content:""}.fa-dragon::before{content:""}.fa-shoe-prints::before{content:""}.fa-circle-plus::before{content:""}.fa-plus-circle::before{content:""}.fa-face-grin-tongue-wink::before{content:""}.fa-grin-tongue-wink::before{content:""}.fa-hand-holding::before{content:""}.fa-plug-circle-exclamation::before{content:""}.fa-link-slash::before{content:""}.fa-chain-broken::before{content:""}.fa-chain-slash::before{content:""}.fa-unlink::before{content:""}.fa-clone::before{content:""}.fa-person-walking-arrow-loop-left::before{content:""}.fa-arrow-up-z-a::before{content:""}.fa-sort-alpha-up-alt::before{content:""}.fa-fire-flame-curved::before{content:""}.fa-fire-alt::before{content:""}.fa-tornado::before{content:""}.fa-file-circle-plus::before{content:""}.fa-book-quran::before{content:""}.fa-quran::before{content:""}.fa-anchor::before{content:""}.fa-border-all::before{content:""}.fa-face-angry::before{content:""}.fa-angry::before{content:""}.fa-cookie-bite::before{content:""}.fa-arrow-trend-down::before{content:""}.fa-rss::before{content:""}.fa-feed::before{content:""}.fa-draw-polygon::before{content:""}.fa-scale-balanced::before{content:""}.fa-balance-scale::before{content:""}.fa-gauge-simple-high::before{content:""}.fa-tachometer::before{content:""}.fa-tachometer-fast::before{content:""}.fa-shower::before{content:""}.fa-desktop::before{content:""}.fa-desktop-alt::before{content:""}.fa-m::before{content:"M"}.fa-table-list::before{content:""}.fa-th-list::before{content:""}.fa-comment-sms::before{content:""}.fa-sms::before{content:""}.fa-book::before{content:""}.fa-user-plus::before{content:""}.fa-check::before{content:""}.fa-battery-three-quarters::before{content:""}.fa-battery-4::before{content:""}.fa-house-circle-check::before{content:""}.fa-angle-left::before{content:""}.fa-diagram-successor::before{content:""}.fa-truck-arrow-right::before{content:""}.fa-arrows-split-up-and-left::before{content:""}.fa-hand-fist::before{content:""}.fa-fist-raised::before{content:""}.fa-cloud-moon::before{content:""}.fa-briefcase::before{content:""}.fa-person-falling::before{content:""}.fa-image-portrait::before{content:""}.fa-portrait::before{content:""}.fa-user-tag::before{content:""}.fa-rug::before{content:""}.fa-earth-europe::before{content:""}.fa-globe-europe::before{content:""}.fa-cart-flatbed-suitcase::before{content:""}.fa-luggage-cart::before{content:""}.fa-rectangle-xmark::before{content:""}.fa-rectangle-times::before{content:""}.fa-times-rectangle::before{content:""}.fa-window-close::before{content:""}.fa-baht-sign::before{content:""}.fa-book-open::before{content:""}.fa-book-journal-whills::before{content:""}.fa-journal-whills::before{content:""}.fa-handcuffs::before{content:""}.fa-triangle-exclamation::before{content:""}.fa-exclamation-triangle::before{content:""}.fa-warning::before{content:""}.fa-database::before{content:""}.fa-share::before{content:""}.fa-mail-forward::before{content:""}.fa-bottle-droplet::before{content:""}.fa-mask-face::before{content:""}.fa-hill-rockslide::before{content:""}.fa-right-left::before{content:""}.fa-exchange-alt::before{content:""}.fa-paper-plane::before{content:""}.fa-road-circle-exclamation::before{content:""}.fa-dungeon::before{content:""}.fa-align-right::before{content:""}.fa-money-bill-1-wave::before{content:""}.fa-money-bill-wave-alt::before{content:""}.fa-life-ring::before{content:""}.fa-hands::before{content:""}.fa-sign-language::before{content:""}.fa-signing::before{content:""}.fa-calendar-day::before{content:""}.fa-water-ladder::before{content:""}.fa-ladder-water::before{content:""}.fa-swimming-pool::before{content:""}.fa-arrows-up-down::before{content:""}.fa-arrows-v::before{content:""}.fa-face-grimace::before{content:""}.fa-grimace::before{content:""}.fa-wheelchair-move::before{content:""}.fa-wheelchair-alt::before{content:""}.fa-turn-down::before{content:""}.fa-level-down-alt::before{content:""}.fa-person-walking-arrow-right::before{content:""}.fa-square-envelope::before{content:""}.fa-envelope-square::before{content:""}.fa-dice::before{content:""}.fa-bowling-ball::before{content:""}.fa-brain::before{content:""}.fa-bandage::before{content:""}.fa-band-aid::before{content:""}.fa-calendar-minus::before{content:""}.fa-circle-xmark::before{content:""}.fa-times-circle::before{content:""}.fa-xmark-circle::before{content:""}.fa-gifts::before{content:""}.fa-hotel::before{content:""}.fa-earth-asia::before{content:""}.fa-globe-asia::before{content:""}.fa-id-card-clip::before{content:""}.fa-id-card-alt::before{content:""}.fa-magnifying-glass-plus::before{content:""}.fa-search-plus::before{content:""}.fa-thumbs-up::before{content:""}.fa-user-clock::before{content:""}.fa-hand-dots::before{content:""}.fa-allergies::before{content:""}.fa-file-invoice::before{content:""}.fa-window-minimize::before{content:""}.fa-mug-saucer::before{content:""}.fa-coffee::before{content:""}.fa-brush::before{content:""}.fa-mask::before{content:""}.fa-magnifying-glass-minus::before{content:""}.fa-search-minus::before{content:""}.fa-ruler-vertical::before{content:""}.fa-user-large::before{content:""}.fa-user-alt::before{content:""}.fa-train-tram::before{content:""}.fa-user-nurse::before{content:""}.fa-syringe::before{content:""}.fa-cloud-sun::before{content:""}.fa-stopwatch-20::before{content:""}.fa-square-full::before{content:""}.fa-magnet::before{content:""}.fa-jar::before{content:""}.fa-note-sticky::before{content:""}.fa-sticky-note::before{content:""}.fa-bug-slash::before{content:""}.fa-arrow-up-from-water-pump::before{content:""}.fa-bone::before{content:""}.fa-user-injured::before{content:""}.fa-face-sad-tear::before{content:""}.fa-sad-tear::before{content:""}.fa-plane::before{content:""}.fa-tent-arrows-down::before{content:""}.fa-exclamation::before{content:"\!"}.fa-arrows-spin::before{content:""}.fa-print::before{content:""}.fa-turkish-lira-sign::before{content:""}.fa-try::before{content:""}.fa-turkish-lira::before{content:""}.fa-dollar-sign::before{content:"\$"}.fa-dollar::before{content:"\$"}.fa-usd::before{content:"\$"}.fa-x::before{content:"X"}.fa-magnifying-glass-dollar::before{content:""}.fa-search-dollar::before{content:""}.fa-users-gear::before{content:""}.fa-users-cog::before{content:""}.fa-person-military-pointing::before{content:""}.fa-building-columns::before{content:""}.fa-bank::before{content:""}.fa-institution::before{content:""}.fa-museum::before{content:""}.fa-university::before{content:""}.fa-umbrella::before{content:""}.fa-trowel::before{content:""}.fa-d::before{content:"D"}.fa-stapler::before{content:""}.fa-masks-theater::before{content:""}.fa-theater-masks::before{content:""}.fa-kip-sign::before{content:""}.fa-hand-point-left::before{content:""}.fa-handshake-simple::before{content:""}.fa-handshake-alt::before{content:""}.fa-jet-fighter::before{content:""}.fa-fighter-jet::before{content:""}.fa-square-share-nodes::before{content:""}.fa-share-alt-square::before{content:""}.fa-barcode::before{content:""}.fa-plus-minus::before{content:""}.fa-video::before{content:""}.fa-video-camera::before{content:""}.fa-graduation-cap::before{content:""}.fa-mortar-board::before{content:""}.fa-hand-holding-medical::before{content:""}.fa-person-circle-check::before{content:""}.fa-turn-up::before{content:""}.fa-level-up-alt::before{content:""}.sr-only,.fa-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.sr-only-focusable:not(:focus),.fa-sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}/*! * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */:root,:host{--fa-style-family-classic: 'Font Awesome 6 Free';--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'}@font-face{font-family:'Font Awesome 6 Free';font-style:normal;font-weight:900;font-display:block;src:url("../webfonts/fa-solid-900.woff2") format("woff2"),url("../webfonts/fa-solid-900.ttf") format("truetype")}.fas,.fa-solid{font-weight:900}/*! * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */:root,:host{--fa-style-family-brands: 'Font Awesome 6 Brands';--fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'}@font-face{font-family:'Font Awesome 6 Brands';font-style:normal;font-weight:400;font-display:block;src:url("../webfonts/fa-brands-400.woff2") format("woff2"),url("../webfonts/fa-brands-400.ttf") format("truetype")}.fab,.fa-brands{font-weight:400}.fa-monero:before{content:""}.fa-hooli:before{content:""}.fa-yelp:before{content:""}.fa-cc-visa:before{content:""}.fa-lastfm:before{content:""}.fa-shopware:before{content:""}.fa-creative-commons-nc:before{content:""}.fa-aws:before{content:""}.fa-redhat:before{content:""}.fa-yoast:before{content:""}.fa-cloudflare:before{content:""}.fa-ups:before{content:""}.fa-pixiv:before{content:""}.fa-wpexplorer:before{content:""}.fa-dyalog:before{content:""}.fa-bity:before{content:""}.fa-stackpath:before{content:""}.fa-buysellads:before{content:""}.fa-first-order:before{content:""}.fa-modx:before{content:""}.fa-guilded:before{content:""}.fa-vnv:before{content:""}.fa-square-js:before{content:""}.fa-js-square:before{content:""}.fa-microsoft:before{content:""}.fa-qq:before{content:""}.fa-orcid:before{content:""}.fa-java:before{content:""}.fa-invision:before{content:""}.fa-creative-commons-pd-alt:before{content:""}.fa-centercode:before{content:""}.fa-glide-g:before{content:""}.fa-drupal:before{content:""}.fa-jxl:before{content:""}.fa-hire-a-helper:before{content:""}.fa-creative-commons-by:before{content:""}.fa-unity:before{content:""}.fa-whmcs:before{content:""}.fa-rocketchat:before{content:""}.fa-vk:before{content:""}.fa-untappd:before{content:""}.fa-mailchimp:before{content:""}.fa-css3-alt:before{content:""}.fa-square-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-vimeo-v:before{content:""}.fa-contao:before{content:""}.fa-square-font-awesome:before{content:""}.fa-deskpro:before{content:""}.fa-brave:before{content:""}.fa-sistrix:before{content:""}.fa-square-instagram:before{content:""}.fa-instagram-square:before{content:""}.fa-battle-net:before{content:""}.fa-the-red-yeti:before{content:""}.fa-square-hacker-news:before{content:""}.fa-hacker-news-square:before{content:""}.fa-edge:before{content:""}.fa-threads:before{content:""}.fa-napster:before{content:""}.fa-square-snapchat:before{content:""}.fa-snapchat-square:before{content:""}.fa-google-plus-g:before{content:""}.fa-artstation:before{content:""}.fa-markdown:before{content:""}.fa-sourcetree:before{content:""}.fa-google-plus:before{content:""}.fa-diaspora:before{content:""}.fa-foursquare:before{content:""}.fa-stack-overflow:before{content:""}.fa-github-alt:before{content:""}.fa-phoenix-squadron:before{content:""}.fa-pagelines:before{content:""}.fa-algolia:before{content:""}.fa-red-river:before{content:""}.fa-creative-commons-sa:before{content:""}.fa-safari:before{content:""}.fa-google:before{content:""}.fa-square-font-awesome-stroke:before{content:""}.fa-font-awesome-alt:before{content:""}.fa-atlassian:before{content:""}.fa-linkedin-in:before{content:""}.fa-digital-ocean:before{content:""}.fa-nimblr:before{content:""}.fa-chromecast:before{content:""}.fa-evernote:before{content:""}.fa-hacker-news:before{content:""}.fa-creative-commons-sampling:before{content:""}.fa-adversal:before{content:""}.fa-creative-commons:before{content:""}.fa-watchman-monitoring:before{content:""}.fa-fonticons:before{content:""}.fa-weixin:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-codepen:before{content:""}.fa-git-alt:before{content:""}.fa-lyft:before{content:""}.fa-rev:before{content:""}.fa-windows:before{content:""}.fa-wizards-of-the-coast:before{content:""}.fa-square-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-meetup:before{content:""}.fa-centos:before{content:""}.fa-adn:before{content:""}.fa-cloudsmith:before{content:""}.fa-opensuse:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-square-dribbble:before{content:""}.fa-dribbble-square:before{content:""}.fa-codiepie:before{content:""}.fa-node:before{content:""}.fa-mix:before{content:""}.fa-steam:before{content:""}.fa-cc-apple-pay:before{content:""}.fa-scribd:before{content:""}.fa-debian:before{content:""}.fa-openid:before{content:""}.fa-instalod:before{content:""}.fa-expeditedssl:before{content:""}.fa-sellcast:before{content:""}.fa-square-twitter:before{content:""}.fa-twitter-square:before{content:""}.fa-r-project:before{content:""}.fa-delicious:before{content:""}.fa-freebsd:before{content:""}.fa-vuejs:before{content:""}.fa-accusoft:before{content:""}.fa-ioxhost:before{content:""}.fa-fonticons-fi:before{content:""}.fa-app-store:before{content:""}.fa-cc-mastercard:before{content:""}.fa-itunes-note:before{content:""}.fa-golang:before{content:""}.fa-kickstarter:before{content:""}.fa-square-kickstarter:before{content:""}.fa-grav:before{content:""}.fa-weibo:before{content:""}.fa-uncharted:before{content:""}.fa-firstdraft:before{content:""}.fa-square-youtube:before{content:""}.fa-youtube-square:before{content:""}.fa-wikipedia-w:before{content:""}.fa-wpressr:before{content:""}.fa-rendact:before{content:""}.fa-angellist:before{content:""}.fa-galactic-republic:before{content:""}.fa-nfc-directional:before{content:""}.fa-skype:before{content:""}.fa-joget:before{content:""}.fa-fedora:before{content:""}.fa-stripe-s:before{content:""}.fa-meta:before{content:""}.fa-laravel:before{content:""}.fa-hotjar:before{content:""}.fa-bluetooth-b:before{content:""}.fa-square-letterboxd:before{content:""}.fa-sticker-mule:before{content:""}.fa-creative-commons-zero:before{content:""}.fa-hips:before{content:""}.fa-behance:before{content:""}.fa-reddit:before{content:""}.fa-discord:before{content:""}.fa-chrome:before{content:""}.fa-app-store-ios:before{content:""}.fa-cc-discover:before{content:""}.fa-wpbeginner:before{content:""}.fa-confluence:before{content:""}.fa-shoelace:before{content:""}.fa-mdb:before{content:""}.fa-dochub:before{content:""}.fa-accessible-icon:before{content:""}.fa-ebay:before{content:""}.fa-amazon:before{content:""}.fa-unsplash:before{content:""}.fa-yarn:before{content:""}.fa-square-steam:before{content:""}.fa-steam-square:before{content:""}.fa-500px:before{content:""}.fa-square-vimeo:before{content:""}.fa-vimeo-square:before{content:""}.fa-asymmetrik:before{content:""}.fa-font-awesome:before{content:""}.fa-font-awesome-flag:before{content:""}.fa-font-awesome-logo-full:before{content:""}.fa-gratipay:before{content:""}.fa-apple:before{content:""}.fa-hive:before{content:""}.fa-gitkraken:before{content:""}.fa-keybase:before{content:""}.fa-apple-pay:before{content:""}.fa-padlet:before{content:""}.fa-amazon-pay:before{content:""}.fa-square-github:before{content:""}.fa-github-square:before{content:""}.fa-stumbleupon:before{content:""}.fa-fedex:before{content:""}.fa-phoenix-framework:before{content:""}.fa-shopify:before{content:""}.fa-neos:before{content:""}.fa-square-threads:before{content:""}.fa-hackerrank:before{content:""}.fa-researchgate:before{content:""}.fa-swift:before{content:""}.fa-angular:before{content:""}.fa-speakap:before{content:""}.fa-angrycreative:before{content:""}.fa-y-combinator:before{content:""}.fa-empire:before{content:""}.fa-envira:before{content:""}.fa-google-scholar:before{content:""}.fa-square-gitlab:before{content:""}.fa-gitlab-square:before{content:""}.fa-studiovinari:before{content:""}.fa-pied-piper:before{content:""}.fa-wordpress:before{content:""}.fa-product-hunt:before{content:""}.fa-firefox:before{content:""}.fa-linode:before{content:""}.fa-goodreads:before{content:""}.fa-square-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-jsfiddle:before{content:""}.fa-sith:before{content:""}.fa-themeisle:before{content:""}.fa-page4:before{content:""}.fa-hashnode:before{content:""}.fa-react:before{content:""}.fa-cc-paypal:before{content:""}.fa-squarespace:before{content:""}.fa-cc-stripe:before{content:""}.fa-creative-commons-share:before{content:""}.fa-bitcoin:before{content:""}.fa-keycdn:before{content:""}.fa-opera:before{content:""}.fa-itch-io:before{content:""}.fa-umbraco:before{content:""}.fa-galactic-senate:before{content:""}.fa-ubuntu:before{content:""}.fa-draft2digital:before{content:""}.fa-stripe:before{content:""}.fa-houzz:before{content:""}.fa-gg:before{content:""}.fa-dhl:before{content:""}.fa-square-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-xing:before{content:""}.fa-blackberry:before{content:""}.fa-creative-commons-pd:before{content:""}.fa-playstation:before{content:""}.fa-quinscape:before{content:""}.fa-less:before{content:""}.fa-blogger-b:before{content:""}.fa-opencart:before{content:""}.fa-vine:before{content:""}.fa-signal-messenger:before{content:""}.fa-paypal:before{content:""}.fa-gitlab:before{content:""}.fa-typo3:before{content:""}.fa-reddit-alien:before{content:""}.fa-yahoo:before{content:""}.fa-dailymotion:before{content:""}.fa-affiliatetheme:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-bootstrap:before{content:""}.fa-odnoklassniki:before{content:""}.fa-nfc-symbol:before{content:""}.fa-mintbit:before{content:""}.fa-ethereum:before{content:""}.fa-speaker-deck:before{content:""}.fa-creative-commons-nc-eu:before{content:""}.fa-patreon:before{content:""}.fa-avianex:before{content:""}.fa-ello:before{content:""}.fa-gofore:before{content:""}.fa-bimobject:before{content:""}.fa-brave-reverse:before{content:""}.fa-facebook-f:before{content:""}.fa-square-google-plus:before{content:""}.fa-google-plus-square:before{content:""}.fa-web-awesome:before{content:""}.fa-mandalorian:before{content:""}.fa-first-order-alt:before{content:""}.fa-osi:before{content:""}.fa-google-wallet:before{content:""}.fa-d-and-d-beyond:before{content:""}.fa-periscope:before{content:""}.fa-fulcrum:before{content:""}.fa-cloudscale:before{content:""}.fa-forumbee:before{content:""}.fa-mizuni:before{content:""}.fa-schlix:before{content:""}.fa-square-xing:before{content:""}.fa-xing-square:before{content:""}.fa-bandcamp:before{content:""}.fa-wpforms:before{content:""}.fa-cloudversify:before{content:""}.fa-usps:before{content:""}.fa-megaport:before{content:""}.fa-magento:before{content:""}.fa-spotify:before{content:""}.fa-optin-monster:before{content:""}.fa-fly:before{content:""}.fa-aviato:before{content:""}.fa-itunes:before{content:""}.fa-cuttlefish:before{content:""}.fa-blogger:before{content:""}.fa-flickr:before{content:""}.fa-viber:before{content:""}.fa-soundcloud:before{content:""}.fa-digg:before{content:""}.fa-tencent-weibo:before{content:""}.fa-letterboxd:before{content:""}.fa-symfony:before{content:""}.fa-maxcdn:before{content:""}.fa-etsy:before{content:""}.fa-facebook-messenger:before{content:""}.fa-audible:before{content:""}.fa-think-peaks:before{content:""}.fa-bilibili:before{content:""}.fa-erlang:before{content:""}.fa-x-twitter:before{content:""}.fa-cotton-bureau:before{content:""}.fa-dashcube:before{content:""}.fa-42-group:before{content:""}.fa-innosoft:before{content:""}.fa-stack-exchange:before{content:""}.fa-elementor:before{content:""}.fa-square-pied-piper:before{content:""}.fa-pied-piper-square:before{content:""}.fa-creative-commons-nd:before{content:""}.fa-palfed:before{content:""}.fa-superpowers:before{content:""}.fa-resolving:before{content:""}.fa-xbox:before{content:""}.fa-square-web-awesome-stroke:before{content:""}.fa-searchengin:before{content:""}.fa-tiktok:before{content:""}.fa-square-facebook:before{content:""}.fa-facebook-square:before{content:""}.fa-renren:before{content:""}.fa-linux:before{content:""}.fa-glide:before{content:""}.fa-linkedin:before{content:""}.fa-hubspot:before{content:""}.fa-deploydog:before{content:""}.fa-twitch:before{content:""}.fa-ravelry:before{content:""}.fa-mixer:before{content:""}.fa-square-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-vimeo:before{content:""}.fa-mendeley:before{content:""}.fa-uniregistry:before{content:""}.fa-figma:before{content:""}.fa-creative-commons-remix:before{content:""}.fa-cc-amazon-pay:before{content:""}.fa-dropbox:before{content:""}.fa-instagram:before{content:""}.fa-cmplid:before{content:""}.fa-upwork:before{content:""}.fa-facebook:before{content:""}.fa-gripfire:before{content:""}.fa-jedi-order:before{content:""}.fa-uikit:before{content:""}.fa-fort-awesome-alt:before{content:""}.fa-phabricator:before{content:""}.fa-ussunnah:before{content:""}.fa-earlybirds:before{content:""}.fa-trade-federation:before{content:""}.fa-autoprefixer:before{content:""}.fa-whatsapp:before{content:""}.fa-square-upwork:before{content:""}.fa-slideshare:before{content:""}.fa-google-play:before{content:""}.fa-viadeo:before{content:""}.fa-line:before{content:""}.fa-google-drive:before{content:""}.fa-servicestack:before{content:""}.fa-simplybuilt:before{content:""}.fa-bitbucket:before{content:""}.fa-imdb:before{content:""}.fa-deezer:before{content:""}.fa-raspberry-pi:before{content:""}.fa-jira:before{content:""}.fa-docker:before{content:""}.fa-screenpal:before{content:""}.fa-bluetooth:before{content:""}.fa-gitter:before{content:""}.fa-d-and-d:before{content:""}.fa-microblog:before{content:""}.fa-cc-diners-club:before{content:""}.fa-gg-circle:before{content:""}.fa-pied-piper-hat:before{content:""}.fa-kickstarter-k:before{content:""}.fa-yandex:before{content:""}.fa-readme:before{content:""}.fa-html5:before{content:""}.fa-sellsy:before{content:""}.fa-square-web-awesome:before{content:""}.fa-sass:before{content:""}.fa-wirsindhandwerk:before{content:""}.fa-wsh:before{content:""}.fa-buromobelexperte:before{content:""}.fa-salesforce:before{content:""}.fa-octopus-deploy:before{content:""}.fa-medapps:before{content:""}.fa-ns8:before{content:""}.fa-pinterest-p:before{content:""}.fa-apper:before{content:""}.fa-fort-awesome:before{content:""}.fa-waze:before{content:""}.fa-bluesky:before{content:""}.fa-cc-jcb:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-fantasy-flight-games:before{content:""}.fa-rust:before{content:""}.fa-wix:before{content:""}.fa-square-behance:before{content:""}.fa-behance-square:before{content:""}.fa-supple:before{content:""}.fa-webflow:before{content:""}.fa-rebel:before{content:""}.fa-css3:before{content:""}.fa-staylinked:before{content:""}.fa-kaggle:before{content:""}.fa-space-awesome:before{content:""}.fa-deviantart:before{content:""}.fa-cpanel:before{content:""}.fa-goodreads-g:before{content:""}.fa-square-git:before{content:""}.fa-git-square:before{content:""}.fa-square-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-trello:before{content:""}.fa-creative-commons-nc-jp:before{content:""}.fa-get-pocket:before{content:""}.fa-perbyte:before{content:""}.fa-grunt:before{content:""}.fa-weebly:before{content:""}.fa-connectdevelop:before{content:""}.fa-leanpub:before{content:""}.fa-black-tie:before{content:""}.fa-themeco:before{content:""}.fa-python:before{content:""}.fa-android:before{content:""}.fa-bots:before{content:""}.fa-free-code-camp:before{content:""}.fa-hornbill:before{content:""}.fa-js:before{content:""}.fa-ideal:before{content:""}.fa-git:before{content:""}.fa-dev:before{content:""}.fa-sketch:before{content:""}.fa-yandex-international:before{content:""}.fa-cc-amex:before{content:""}.fa-uber:before{content:""}.fa-github:before{content:""}.fa-php:before{content:""}.fa-alipay:before{content:""}.fa-youtube:before{content:""}.fa-skyatlas:before{content:""}.fa-firefox-browser:before{content:""}.fa-replyd:before{content:""}.fa-suse:before{content:""}.fa-jenkins:before{content:""}.fa-twitter:before{content:""}.fa-rockrms:before{content:""}.fa-pinterest:before{content:""}.fa-buffer:before{content:""}.fa-npm:before{content:""}.fa-yammer:before{content:""}.fa-btc:before{content:""}.fa-dribbble:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-internet-explorer:before{content:""}.fa-stubber:before{content:""}.fa-telegram:before{content:""}.fa-telegram-plane:before{content:""}.fa-old-republic:before{content:""}.fa-odysee:before{content:""}.fa-square-whatsapp:before{content:""}.fa-whatsapp-square:before{content:""}.fa-node-js:before{content:""}.fa-edge-legacy:before{content:""}.fa-slack:before{content:""}.fa-slack-hash:before{content:""}.fa-medrt:before{content:""}.fa-usb:before{content:""}.fa-tumblr:before{content:""}.fa-vaadin:before{content:""}.fa-quora:before{content:""}.fa-square-x-twitter:before{content:""}.fa-reacteurope:before{content:""}.fa-medium:before{content:""}.fa-medium-m:before{content:""}.fa-amilia:before{content:""}.fa-mixcloud:before{content:""}.fa-flipboard:before{content:""}.fa-viacoin:before{content:""}.fa-critical-role:before{content:""}.fa-sitrox:before{content:""}.fa-discourse:before{content:""}.fa-joomla:before{content:""}.fa-mastodon:before{content:""}.fa-airbnb:before{content:""}.fa-wolf-pack-battalion:before{content:""}.fa-buy-n-large:before{content:""}.fa-gulp:before{content:""}.fa-creative-commons-sampling-plus:before{content:""}.fa-strava:before{content:""}.fa-ember:before{content:""}.fa-canadian-maple-leaf:before{content:""}.fa-teamspeak:before{content:""}.fa-pushed:before{content:""}.fa-wordpress-simple:before{content:""}.fa-nutritionix:before{content:""}.fa-wodu:before{content:""}.fa-google-pay:before{content:""}.fa-intercom:before{content:""}.fa-zhihu:before{content:""}.fa-korvue:before{content:""}.fa-pix:before{content:""}.fa-steam-symbol:before{content:""}.mfp-counter{font-family:Georgia,Times,serif}.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#000;opacity:.8;filter:alpha(opacity=80)}.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:none !important;-webkit-backface-visibility:hidden}.mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:0 8px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-container:before{content:'';display:inline-block;height:100%;vertical-align:middle}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.mfp-inline-holder .mfp-content,.mfp-ajax-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-close,.mfp-arrow,.mfp-preloader,.mfp-counter{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none !important}.mfp-preloader{color:#ccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-0.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#ccc}.mfp-preloader a:hover{color:#fff}.mfp-s-ready .mfp-preloader{display:none}.mfp-s-error .mfp-content{display:none}button.mfp-close,button.mfp-arrow{overflow:visible;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;display:block;outline:none;padding:0;z-index:1046;-webkit-box-shadow:none;box-shadow:none}button::-moz-focus-inner{padding:0;border:0}.mfp-close{width:44px;height:44px;line-height:44px;position:absolute;right:0;top:0;text-decoration:none;text-align:center;opacity:1;filter:alpha(opacity=100);padding:0 0 18px 10px;color:#fff;font-style:normal;font-size:28px;font-family:Georgia,Times,serif}.mfp-close:hover,.mfp-close:focus{opacity:1;filter:alpha(opacity=100)}.mfp-close:active{top:1px}.mfp-close-btn-in .mfp-close{color:#fff}.mfp-image-holder .mfp-close,.mfp-iframe-holder .mfp-close{color:#fff;right:-6px;text-align:right;padding-right:6px;width:100%}.mfp-counter{position:absolute;top:0;right:0;color:#ccc;font-size:12px;line-height:18px}.mfp-arrow{position:absolute;opacity:1;filter:alpha(opacity=100);margin:0;top:50%;margin-top:-55px;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:transparent}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:hover,.mfp-arrow:focus{opacity:1;filter:alpha(opacity=100)}.mfp-arrow:before,.mfp-arrow:after,.mfp-arrow .mfp-b,.mfp-arrow .mfp-a{content:'';display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:medium inset transparent}.mfp-arrow:after,.mfp-arrow .mfp-a{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow:before,.mfp-arrow .mfp-b{border-top-width:21px;border-bottom-width:21px;opacity:0.7}.mfp-arrow-left{left:0}.mfp-arrow-left:after,.mfp-arrow-left .mfp-a{border-right:17px solid #fff;margin-left:31px}.mfp-arrow-left:before,.mfp-arrow-left .mfp-b{margin-left:25px;border-right:27px solid #fff}.mfp-arrow-right{right:0}.mfp-arrow-right:after,.mfp-arrow-right .mfp-a{border-left:17px solid #fff;margin-left:39px}.mfp-arrow-right:before,.mfp-arrow-right .mfp-b{border-left:27px solid #fff}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,0.6);background:#000}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;line-height:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:40px 0 40px;margin:0 auto}.mfp-figure{line-height:0}.mfp-figure:after{content:'';position:absolute;left:0;top:40px;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,0.6);background:#444}.mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.mfp-figure figure{margin:0}.mfp-figure figcaption{margin-top:0;margin-bottom:0}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{text-align:left;line-height:18px;color:#f3f3f3;word-wrap:break-word;padding-right:36px}.mfp-image-holder .mfp-content{max-width:100%}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,0.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .mfp-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,0.6);position:fixed;text-align:center;padding:0}}@media all and (max-width: 900px){.mfp-arrow{-webkit-transform:scale(0.75);transform:scale(0.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}.mfp-ie7 .mfp-img{padding:0}.mfp-ie7 .mfp-bottom-bar{width:600px;left:50%;margin-left:-300px;margin-top:5px;padding-bottom:5px}.mfp-ie7 .mfp-container{padding:0}.mfp-ie7 .mfp-content{padding-top:44px}.mfp-ie7 .mfp-close{top:0;right:0;padding-top:0}

Markdown

Locations of key files/directories

  • Basic config options: _config.yml
  • Top navigation bar config: _data/navigation.yml
  • Single pages: _pages/
  • Collections of pages are .md or .html files in:
    • _publications/
    • _portfolio/
    • _posts/
    • _teaching/
    • _talks/
  • Footer: _includes/footer.html
  • Static files (like PDFs): /files/
  • Profile image (can set in _config.yml): images/profile.png

Tips and hints

  • Name a file “.md” to have it render in markdown, name it “.html” to render in HTML.
  • Go to the commit list (on your repo) to find the last version GitHub built with Jekyll.
    • Green check: successful build
    • Orange circle: building
    • Red X: error
    • No icon: not built
  • Academic Pages uses Jekyll Kramdown, GitHub Flavored Markdown (GFM) parser, which is similar to the version of Markdown used on GitHub, but may have some minor differences.
    • Some of emoji supported on GitHub should be supposed via the Jemoji plugin :computer:.
    • The best list of the supported emoji can be found in the Emojis for Jekyll via Jemoji blog post.
  • While GitHub Pages prevents server side code from running, client-side scripts are supported.
    • This means that Google Analytics is supported, and the wiki should contain the most up-to-date information on getting it working.
  • Your CV can be written using either Markdown (preview) or generated via JSON (preview) and the layouts are slightly different. You can update the path to the one being used in _data/navigation.yml with the JSON formatted CV being hidden by default.

Resources

MathJax

Support for MathJax Version 3.0 is included in the template:

\[\displaylines{ \nabla \cdot E= \frac{\rho}{\epsilon_0} \\\ \nabla \cdot B=0 \\\ \nabla \times E= -\partial_tB \\\ \nabla \times B = \mu_0 \left(J + \varepsilon_0 \partial_t E \right) }\]

The default delimiters of $$...$$ and \\[...\\] are supported for displayed mathematics, while \\(...\\) should be used for in-line mathematics (ex., \(a^2 + b^2 = c^2\))

Note that since Academic Pages uses Markdown which cases some interference with MathJax and LaTeX for escaping characters and new lines, although some workarounds exist. In some cases, such as when you are including MathJax in a citation field for publications, it may be necessary to use \(...\) for inline delineation.

Markdown guide

Academic Pages uses kramdown for Markdown rendering, which has some differences from other Markdown implementations such as GitHub’s. In addition to this guide, please see the kramdown Syntax page for full documentation.

Header three

Header four

Header five
Header six

Blockquotes

Single line blockquote:

Quotes are cool.

Tables

Table 1

Entry Item  
John Doe 2016 Description of the item in the list
Jane Doe 2019 Description of the item in the list
Doe Doe 2022 Description of the item in the list

Table 2

Header1 Header2 Header3
cell1 cell2 cell3
cell4 ce  
ll5 cell6  
cell1 cell2 cell3
cell4 cell5 cell6
Foot1 Foot2 Foot3

Definition Lists

Definition List Title
Definition list division.
Startup
A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model.
#dowork
Coined by Rob Dyrdek and his personal body guard Christopher “Big Black” Boykins, “Do Work” works as a self motivator, to motivating your friends.
Do It Live
I’ll let Bill O’Reilly explain this one.

Unordered Lists (Nested)

  • List item one
    • List item one
      • List item one
      • List item two
      • List item three
      • List item four
    • List item two
    • List item three
    • List item four
  • List item two
  • List item three
  • List item four

Ordered List (Nested)

  1. List item one
    1. List item one
      1. List item one
      2. List item two
      3. List item three
      4. List item four
    2. List item two
    3. List item three
    4. List item four
  2. List item two
  3. List item three
  4. List item four

Buttons

Make any link standout more when applying the .btn class.

Notices

Basic notices or call-outs are supported using the following syntax:

**Watch out!** You can also add notices by appending `{: .notice}` to the line following paragraph.
{: .notice}

which wil render as:

Watch out! You can also add notices by appending {: .notice} to the line following paragraph.

Footnotes

Footnotes can be useful for clarifying points in the text, or citing information.1 Markdown support numeric footnotes, as well as text as long as the values are unique.2

This is the regular text.[^1] This is more regular text.[^note]

[^1]: This is the footnote itself.
[^note]: This is another footnote.

HTML Tags

Address Tag

1 Infinite Loop
Cupertino, CA 95014
United States

This is an example of a link.

Abbreviation Tag

The abbreviation CSS stands for “Cascading Style Sheets”.

Cite Tag

“Code is poetry.” —Automattic

Code Tag

You will learn later on in these tests that word-wrap: break-word; will be your best friend.

You can also write larger blocks of code with syntax highlighting supported for some languages, such as Python:

print('Hello World!')

or R:

print("Hello World!", quote = FALSE)

Details Tag (collapsible sections)

The HTML <details> tag works well with Markdown and allows you to include collapsible sections, see W3Schools for more information on how to use the tag.

Collapsed by default This section was collapsed by default!

The source code:

<details>
  <summary>Collapsed by default</summary>
  This section was collapsed by default!
</details>

Or, you can leave a section open by default by including the open attribute in the tag:

Open by default This section is open by default thanks to open in the <details open> tag!

Emphasize Tag

The emphasize tag should italicize text.

Insert Tag

This tag should denote inserted text.

Keyboard Tag

This scarcely known tag emulates keyboard text, which is usually styled like the <code> tag.

Preformatted Tag

This tag styles large blocks of code.

.post-title {
  margin: 0 0 5px;
  font-weight: bold;
  font-size: 38px;
  line-height: 1.2;
  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}

Quote Tag

Developers, developers, developers… –Steve Ballmer

Strike Tag

This tag will let you strikeout text.

Strong Tag

This tag shows bold text.

Subscript Tag

Getting our science styling on with H2O, which should push the “2” down.

Superscript Tag

Still sticking with science and Isaac Newton’s E = MC2, which should lift the 2 up.

Variable Tag

This allows you to denote variables.


Footnotes

The footnotes in the page will be returned following this line, return to the section on Markdown Footnotes.

  1. Such as this footnote. 

  2. When using text for footnotes markers, no spaces are permitted in the name. 

Page not in menu

This is a page not in the menu. You can use markdown in this page.

Heading 1

Heading 2

Page Archive

Sorry, but the page you were trying to view does not exist.

Dr. Fan Chen

Dr. Fan Chen is a computational mechanics and advanced manufacturing researcher with cross-disciplinary expertise in additive manufacturing, AI-integrated modeling, and high-performance simulation. His recent work involves implementing visco-plasticity laws in Lagamine and developing creep models for metallic systems. His technical strengths include advanced numerical simulation and multi-scale modeling for process–structure–property relationships in manufacturing. He also has teaching assistance experience in mechanics and materials science at NUS and mentoring students on computational mechanics in different institutions.

Main Research Topics (published)


• Coupled CFD-FEM modeling for AM

Poster description

Fan Chen… - Materials & Design, 2020


• Origin of dislocation density in AM

Poster description

G Wang,…,Fan Chen… - Materials Research Letters, 2020


• 4D metal-based printing

Poster description

Wu, W.,…,Fan Chen… - Advanced Science 2023


• Data-driven temperature field prediction with rational physic constraints

Poster description

Fan Chen… - CMAME, 2022


• Heat accumulation analysis for samples clusters (over 100 AM samples)

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


• Incremetnal sheet metal forming - English wheel

Poster description

D Suarez, Fan Chen…- Journal of Manufacturing Systems


• Incremetnal sheet metal forming - DED on sheet metal

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


Ongoing works


• Coupled CFD-FEM modeling for AM – DED

Poster description

Poster description


• Colding cracking mechanism in AM

Poster description


• Micro-Casting of Titanium Alloy in Self-boiling Molds

Poster description


• Pattern oriented equivalent strain attribution

Poster description


• Creep modeling framework for 30CrMoNiV11-5 alloy application of Morch phenomenological law and mean-field creep model

Poster description

Poster description



Share this page:
LinkedIn | Twitter | Email
</div> -->

Poster description

Dr. Fan Chen is a computational mechanics and advanced manufacturing researcher with cross-disciplinary expertise in additive manufacturing, AI-integrated modeling, and high-performance simulation. His recent work involves implementing visco-plasticity laws in Lagamine and developing creep models for metallic systems. His technical strengths include advanced numerical simulation and multi-scale modeling for process–structure–property relationships in manufacturing. He also has teaching assistance experience in mechanics and materials science at NUS and mentoring students on computational mechanics in different institutions.

Main Research Topics (published)


• Coupled CFD-FEM modeling for AM

Poster description

Fan Chen… - Materials & Design, 2020


• Origin of dislocation density in AM

Poster description

G Wang,…,Fan Chen… - Materials Research Letters, 2020


• 4D metal-based printing

Poster description

Wu, W.,…,Fan Chen… - Advanced Science 2023


• Data-driven temperature field prediction with rational physic constraints

Poster description

Fan Chen… - CMAME, 2022


• Heat accumulation analysis for samples clusters (over 100 AM samples)

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


• Incremetnal sheet metal forming - English wheel

Poster description

D Suarez, Fan Chen…- Journal of Manufacturing Systems


• Incremetnal sheet metal forming - DED on sheet metal

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


Ongoing works


• Coupled CFD-FEM modeling for AM – DED

Poster description

Poster description


• Colding cracking mechanism in AM

Poster description


• Micro-Casting of Titanium Alloy in Self-boiling Molds

Poster description


• Pattern oriented equivalent strain attribution

Poster description


• Creep modeling framework for 30CrMoNiV11-5 alloy application of Morch phenomenological law and mean-field creep model

Poster description

Poster description



Share this page:
LinkedIn | Twitter | Email

Dr. Fan Chen

Dr. Fan Chen is a computational mechanics and advanced manufacturing researcher with cross-disciplinary expertise in additive manufacturing, AI-integrated modeling, and high-performance simulation. His recent work involves implementing visco-plasticity laws in Lagamine and developing creep models for metallic systems. His technical strengths include advanced numerical simulation and multi-scale modeling for process–structure–property relationships in manufacturing. He also has teaching assistance experience in mechanics and materials science at NUS and mentoring students on computational mechanics in different institutions.

Main Research Topics (published)


• Coupled CFD-FEM modeling for AM

Poster description

Fan Chen… - Materials & Design, 2020


• Origin of dislocation density in AM

Poster description

G Wang,…,Fan Chen… - Materials Research Letters, 2020


• 4D metal-based printing

Poster description

Wu, W.,…,Fan Chen… - Advanced Science 2023


• Data-driven temperature field prediction with rational physic constraints

Poster description

Fan Chen… - CMAME, 2022


• Heat accumulation analysis for samples clusters (over 100 AM samples)

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


• Incremetnal sheet metal forming - English wheel

Poster description

D Suarez, Fan Chen…- Journal of Manufacturing Systems


• Incremetnal sheet metal forming - DED on sheet metal

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


Ongoing works


• Coupled CFD-FEM modeling for AM – DED

Poster description

Poster description


• Colding cracking mechanism in AM

Poster description


• Micro-Casting of Titanium Alloy in Self-boiling Molds

Poster description


• Pattern oriented equivalent strain attribution

Poster description


• Creep modeling framework for 30CrMoNiV11-5 alloy application of Morch phenomenological law and mean-field creep model

Poster description

Poster description



Share this page:
LinkedIn | Twitter | Email
</div> -->

Poster description

Dr. Fan Chen is a computational mechanics and advanced manufacturing researcher with cross-disciplinary expertise in additive manufacturing, AI-integrated modeling, and high-performance simulation. His recent work involves implementing visco-plasticity laws in Lagamine and developing creep models for metallic systems. His technical strengths include advanced numerical simulation and multi-scale modeling for process–structure–property relationships in manufacturing. He also has teaching assistance experience in mechanics and materials science at NUS and mentoring students on computational mechanics in different institutions.

Main Research Topics (published)


• Coupled CFD-FEM modeling for AM

Poster description

Fan Chen… - Materials & Design, 2020


• Origin of dislocation density in AM

Poster description

G Wang,…,Fan Chen… - Materials Research Letters, 2020


• 4D metal-based printing

Poster description

Wu, W.,…,Fan Chen… - Advanced Science 2023


• Data-driven temperature field prediction with rational physic constraints

Poster description

Fan Chen… - CMAME, 2022


• Heat accumulation analysis for samples clusters (over 100 AM samples)

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


• Incremetnal sheet metal forming - English wheel

Poster description

D Suarez, Fan Chen…- Journal of Manufacturing Systems


• Incremetnal sheet metal forming - DED on sheet metal

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


Ongoing works


• Coupled CFD-FEM modeling for AM – DED

Poster description

Poster description


• Colding cracking mechanism in AM

Poster description


• Micro-Casting of Titanium Alloy in Self-boiling Molds

Poster description


• Pattern oriented equivalent strain attribution

Poster description


• Creep modeling framework for 30CrMoNiV11-5 alloy application of Morch phenomenological law and mean-field creep model

Poster description

Poster description



Share this page:
LinkedIn | Twitter | Email

Archive Layout with Content

A variety of common markup showing how the theme styles them. # Header one ## Header two ### Header three #### Header four ##### Header five ###### Header six ## Blockquotes Single line blockquote: > Quotes are cool. ## Tables | Entry | Item | | | -------- | ------ | ------------------------------------------------------------ | | [John Doe](#) | 2016 | Description of the item in the list | | [Jane Doe](#) | 2019 | Description of the item in the list | | [Doe Doe](#) | 2022 | Description of the item in the list | | Header1 | Header2 | Header3 | |:--------|:-------:|--------:| | cell1 | cell2 | cell3 | | cell4 | cell5 | cell6 | |-----------------------------| | cell1 | cell2 | cell3 | | cell4 | cell5 | cell6 | |=============================| | Foot1 | Foot2 | Foot3 | ## Definition Lists Definition List Title : Definition list division. Startup : A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model. #dowork : Coined by Rob Dyrdek and his personal body guard Christopher "Big Black" Boykins, "Do Work" works as a self motivator, to motivating your friends. Do It Live : I'll let Bill O'Reilly [explain](https://www.youtube.com/watch?v=O_HyZ5aW76c "We'll Do It Live") this one. ## Unordered Lists (Nested) * List item one * List item one * List item one * List item two * List item three * List item four * List item two * List item three * List item four * List item two * List item three * List item four ## Ordered List (Nested) 1. List item one 1. List item one 1. List item one 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four ## Buttons Make any link standout more when applying the `.btn` class. ## Notices **Watch out!** You can also add notices by appending `{: .notice}` to a paragraph. {: .notice} ## HTML Tags ### Address Tag
1 Infinite Loop
Cupertino, CA 95014
United States
### Anchor Tag (aka. Link) This is an example of a [link](http://github.com "GitHub"). ### Abbreviation Tag The abbreviation CSS stands for "Cascading Style Sheets". *[CSS]: Cascading Style Sheets ### Cite Tag "Code is poetry." ---Automattic ### Code Tag You will learn later on in these tests that `word-wrap: break-word;` will be your best friend. ### Strike Tag This tag will let you strikeout text. ### Emphasize Tag The emphasize tag should _italicize_ text. ### Insert Tag This tag should denote inserted text. ### Keyboard Tag This scarcely known tag emulates keyboard text, which is usually styled like the `` tag. ### Preformatted Tag This tag styles large blocks of code.
.post-title {
  margin: 0 0 5px;
  font-weight: bold;
  font-size: 38px;
  line-height: 1.2;
  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}
### Quote Tag Developers, developers, developers… –Steve Ballmer ### Strong Tag This tag shows **bold text**. ### Subscript Tag Getting our science styling on with H2O, which should push the "2" down. ### Superscript Tag Still sticking with science and Isaac Newton's E = MC2, which should lift the 2 up. ### Variable Tag This allows you to denote variables. {% include base_path %} {% for post in site.pages %} {% include archive-single.html %} {% endfor %} </div> </article> </div>

Posts by Category

{% include base_path %} {% include group-by-array collection=site.posts field="categories" %} {% for category in group_names %} {% assign posts = group_items[forloop.index0] %}

{{ category }}

{% for post in posts %} {% include archive-single.html %} {% endfor %} {% endfor %}

Posts by Collection

{% include base_path %} {% capture written_label %}'None'{% endcapture %} {% for collection in site.collections %} {% unless collection.output == false or collection.label == "posts" %} {% capture label %}{{ collection.label }}{% endcapture %} {% if label != written_label %}

{{ label }}

{% capture written_label %}{{ label }}{% endcapture %} {% endif %} {% endunless %} {% for post in collection.docs %} {% unless collection.output == false or collection.label == "posts" %} {% include archive-single.html %} {% endunless %} {% endfor %} {% endfor %}

CV

{% include base_path %} {% include cv-template.html %}

CV

{% include base_path %} Education ====== * Ph.D in Version Control Theory, GitHub University, 2018 (expected) * M.S. in Jekyll, GitHub University, 2014 * B.S. in GitHub, GitHub University, 2012 Work experience ====== * Spring 2024: Academic Pages Collaborator * GitHub University * Duties includes: Updates and improvements to template * Supervisor: The Users * Fall 2015: Research Assistant * GitHub University * Duties included: Merging pull requests * Supervisor: Professor Hub * Summer 2015: Research Assistant * GitHub University * Duties included: Tagging issues * Supervisor: Professor Git Skills ====== * Skill 1 * Skill 2 * Sub-skill 2.1 * Sub-skill 2.2 * Sub-skill 2.3 * Skill 3 Publications ======
    {% for post in site.publications reversed %} {% include archive-single-cv.html %} {% endfor %}
Talks ======
    {% for post in site.talks reversed %} {% include archive-single-talk-cv.html %} {% endfor %}
Teaching ======
    {% for post in site.teaching reversed %} {% include archive-single-cv.html %} {% endfor %}
Service and leadership ====== * Currently signed in to 43 different slack teams

/* * This file controls what is imported from /_sass * * Note that the files are processed in the order they are imported, so they are partly sorted by the dependencies. Also, the first two lines of the file are required by Jekyll. */ @import "vendor/breakpoint/breakpoint", "themes", "theme/default", "theme/dark", "include/mixins", "vendor/susy/susy", "layout/reset", "layout/base", "include/utilities", "layout/tables", "layout/buttons", "layout/notices", "layout/masthead", "layout/navigation", "layout/footer", "syntax", "layout/forms", "layout/page", "layout/archive", "layout/sidebar", "vendor/font-awesome/fontawesome", "vendor/font-awesome/solid", "vendor/font-awesome/brands", "vendor/magnific-popup/magnific-popup" ;

Markdown

{% include toc %} ## Locations of key files/directories * Basic config options: _config.yml * Top navigation bar config: _data/navigation.yml * Single pages: _pages/ * Collections of pages are .md or .html files in: * _publications/ * _portfolio/ * _posts/ * _teaching/ * _talks/ * Footer: _includes/footer.html * Static files (like PDFs): /files/ * Profile image (can set in _config.yml): images/profile.png ## Tips and hints * Name a file ".md" to have it render in markdown, name it ".html" to render in HTML. * Go to the [commit list](https://github.com/academicpages/academicpages.github.io/commits/master) (on your repo) to find the last version GitHub built with Jekyll. * Green check: successful build * Orange circle: building * Red X: error * No icon: not built * Academic Pages uses [Jekyll Kramdown](https://jekyllrb.com/docs/configuration/markdown/), GitHub Flavored Markdown (GFM) parser, which is similar to the version of Markdown used on GitHub, but may have some minor differences. * Some of emoji supported on GitHub should be supposed via the [Jemoji](https://github.com/jekyll/jemoji) plugin :computer:. * The best list of the supported emoji can be found in the [Emojis for Jekyll via Jemoji](https://www.fabriziomusacchio.com/blog/2021-08-16-emojis_for_Jekyll/#computer) blog post. * While GitHub Pages prevents server side code from running, client-side scripts are supported. * This means that Google Analytics is supported, and [the wiki](https://github.com/academicpages/academicpages.github.io/wiki/Adding-Google-Analytics) should contain the most up-to-date information on getting it working. * Your CV can be written using either Markdown ([preview](https://academicpages.github.io/cv/)) or generated via JSON ([preview](https://academicpages.github.io/cv-json/)) and the layouts are slightly different. You can update the path to the one being used in `_data/navigation.yml` with the JSON formatted CV being hidden by default. ## Resources * [Liquid syntax guide](https://shopify.github.io/liquid/tags/control-flow/) * [MathJax Documentation](https://docs.mathjax.org/en/latest/) ## MathJax Support for MathJax Version 3.0 is included in the template: $$ \displaylines{ \nabla \cdot E= \frac{\rho}{\epsilon_0} \\\ \nabla \cdot B=0 \\\ \nabla \times E= -\partial_tB \\\ \nabla \times B = \mu_0 \left(J + \varepsilon_0 \partial_t E \right) } $$ The default delimiters of `$$...$$` and `\\[...\\]` are supported for displayed mathematics, while `\\(...\\)` should be used for in-line mathematics (ex., \\(a^2 + b^2 = c^2\\)) **Note** that since Academic Pages uses Markdown which cases some interference with MathJax and LaTeX for escaping characters and new lines, although [some workarounds exist](https://math.codidact.com/posts/278763/278772#answer-278772). In some cases, such as when you are including MathJax in a `citation` field for publications, it may be necessary to use `\(...\)` for inline delineation. ## Markdown guide Academic Pages uses [kramdown](https://kramdown.gettalong.org/index.html) for Markdown rendering, which has some differences from other Markdown implementations such as GitHub's. In addition to this guide, please see the [kramdown Syntax page](https://kramdown.gettalong.org/syntax.html) for full documentation. ### Header three #### Header four ##### Header five ###### Header six ## Blockquotes Single line blockquote: > Quotes are cool. ## Tables ### Table 1 | Entry | Item | | | -------- | ------ | ------------------------------------------------------------ | | [John Doe](#) | 2016 | Description of the item in the list | | [Jane Doe](#) | 2019 | Description of the item in the list | | [Doe Doe](#) | 2022 | Description of the item in the list | ### Table 2 | Header1 | Header2 | Header3 | |:--------|:-------:|--------:| | cell1 | cell2 | cell3 | | cell4 | ce ll5 | cell6 | |-----------------------------| | cell1 | cell2 | cell3 | | cell4 | cell5 | cell6 | |=============================| | Foot1 | Foot2 | Foot3 | ## Definition Lists Definition List Title : Definition list division. Startup : A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model. #dowork : Coined by Rob Dyrdek and his personal body guard Christopher "Big Black" Boykins, "Do Work" works as a self motivator, to motivating your friends. Do It Live : I'll let Bill O'Reilly [explain](https://www.youtube.com/watch?v=O_HyZ5aW76c "We'll Do It Live") this one. ## Unordered Lists (Nested) * List item one * List item one * List item one * List item two * List item three * List item four * List item two * List item three * List item four * List item two * List item three * List item four ## Ordered List (Nested) 1. List item one 1. List item one 1. List item one 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four ## Buttons Make any link standout more when applying the `.btn` class. ## Notices Basic notices or call-outs are supported using the following syntax: ```markdown **Watch out!** You can also add notices by appending `{: .notice}` to the line following paragraph. {: .notice} ``` which wil render as: **Watch out!** You can also add notices by appending `{: .notice}` to the line following paragraph. {: .notice} ### Footnotes Footnotes can be useful for clarifying points in the text, or citing information.[^1] Markdown support numeric footnotes, as well as text as long as the values are unique.[^note] ```markdown This is the regular text.[^1] This is more regular text.[^note] [^1]: This is the footnote itself. [^note]: This is another footnote. ``` [^1]: Such as this footnote. [^note]: When using text for footnotes markers, no spaces are permitted in the name. ## HTML Tags ### Address Tag
1 Infinite Loop
Cupertino, CA 95014
United States
### Anchor Tag (aka. Link) This is an example of a [link](http://github.com "GitHub"). ### Abbreviation Tag The abbreviation CSS stands for "Cascading Style Sheets". *[CSS]: Cascading Style Sheets ### Cite Tag "Code is poetry." ---Automattic ### Code Tag You will learn later on in these tests that `word-wrap: break-word;` will be your best friend. You can also write larger blocks of code with syntax highlighting supported for some languages, such as Python: ```python print('Hello World!') ``` or R: ```R print("Hello World!", quote = FALSE) ``` ### Details Tag (collapsible sections) The HTML `
` tag works well with Markdown and allows you to include collapsible sections, see [W3Schools](https://www.w3schools.com/tags/tag_details.asp) for more information on how to use the tag.
Collapsed by default This section was collapsed by default!
The source code: ```HTML
Collapsed by default This section was collapsed by default!
``` Or, you can leave a section open by default by including the `open` attribute in the tag:
Open by default This section is open by default thanks to open in the <details open> tag!
### Emphasize Tag The emphasize tag should _italicize_ text. ### Insert Tag This tag should denote inserted text. ### Keyboard Tag This scarcely known tag emulates keyboard text, which is usually styled like the `` tag. ### Preformatted Tag This tag styles large blocks of code.
.post-title {
  margin: 0 0 5px;
  font-weight: bold;
  font-size: 38px;
  line-height: 1.2;
  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}
### Quote Tag Developers, developers, developers… –Steve Ballmer ### Strike Tag This tag will let you strikeout text. ### Strong Tag This tag shows **bold text**. ### Subscript Tag Getting our science styling on with H2O, which should push the "2" down. ### Superscript Tag Still sticking with science and Isaac Newton's E = MC2, which should lift the 2 up. ### Variable Tag This allows you to denote variables. *** **Footnotes** The footnotes in the page will be returned following this line, return to the section on Markdown Footnotes. </div> </article> </div>

Page not in menu

This is a page not in the menu. You can use markdown in this page. Heading 1 ====== Heading 2 ======

Page Archive

{% include base_path %} {% for post in site.pages %} {% include archive-single.html %} {% endfor %}

Publications

{% if site.publication_category %} {% for category in site.publication_category %} {% assign title_shown = false %} {% for post in site.publications reversed %} {% if post.category != category[0] %} {% continue %} {% endif %} {% unless title_shown %}

{{ category[1].title }}


{% assign title_shown = true %} {% endunless %} {% include archive-single.html %} {% endfor %} {% endfor %} {% else %} {% for post in site.publications reversed %} {% include archive-single.html %} {% endfor %} {% endif %} </div> -->
{% if site.author.googlescholar %}
You can also find my articles on my Google Scholar profile.
{% endif %} {% include base_path %} {% if site.publication_category %} {% for category in site.publication_category %} {% assign title_shown = false %} {% for post in site.publications reversed %} {% if post.category != category[0] %} {% continue %} {% endif %} {% unless title_shown %}

{{ category[1].title }}


{% assign title_shown = true %} {% endunless %} {% include archive-single.html %} {% endfor %} {% endfor %} {% else %} {% for post in site.publications reversed %} {% include archive-single.html %} {% endfor %} {% endif %}

Sitemap

{% include base_path %} A list of all the posts and pages found on the site. For you robots out there, there is an [XML version]({{ base_path }}/sitemap.xml) available for digesting as well.

Pages

{% for post in site.pages %} {% include archive-single.html %} {% endfor %}

Posts

{% for post in site.posts %} {% include archive-single.html %} {% endfor %} {% capture written_label %}'None'{% endcapture %} {% for collection in site.collections %} {% unless collection.output == false or collection.label == "posts" %} {% capture label %}{{ collection.label }}{% endcapture %} {% if label != written_label %}

{{ label }}

{% capture written_label %}{{ label }}{% endcapture %} {% endif %} {% endunless %} {% for post in collection.docs %} {% unless collection.output == false or collection.label == "posts" %} {% include archive-single.html %} {% endunless %} {% endfor %} {% endfor %}

Posts by Tags

{% include base_path %} {% include group-by-array collection=site.posts field="tags" %} {% for tag in group_names %} {% assign posts = group_items[forloop.index0] %}

{{ tag }}

{% for post in posts %} {% include archive-single.html %} {% endfor %} {% endfor %}

Talk map

This map is generated from a Jupyter Notebook file in talkmap.ipynb, which mines the location fields in the .md files in _talks/.


Eduacation & Employment

2024–2025: University of Liege

  • Research Scientist/Project Leader, Urban and Environmental Engineering -Funded by European Union,
    Principal investigator – Anne Marie Habraken: anne.habraken@uliege.be

2022–2023: Northwestern University

  • Postdoc, McCormick School of Engineering, AMPL -supported by USA Vannevar Bush Faculty Fellowship award,
    Principal investigator – Jian Cao: jcao@northwestern.edu

2018–2022: National University of Singapore


2011-2018: Huazhong University of Science & Technology

  • 2015-2018: Master of Engineering, Design & Manufacture of Ships and Marine Structure (China Graduate Scholarship)
  • 2011-2015: Bachelor of Engineering, Naval Architecture & Ocean Engineering (2012 China National Scholarship)

Teaching

{% include base_path %} {% for post in site.teaching reversed %} {% include archive-single.html %} {% endfor %}

Terms and Privacy Policy

{% include base_path %} {% include toc %} ## Privacy Policy The privacy of my visitors is extremely important. This Privacy Policy outlines the types of personal information that is received and collected and how it is used. First and foremost, I will never share your email address or any other personal information to anyone without your direct consent. ### Log Files Like many other websites, this site uses log files to help learn about when, from where, and how often traffic flows to this site. The information in these log files include: * Internet Protocol addresses (IP) * Types of browser * Internet Service Provider (ISP) * Date and time stamp * Referring and exit pages * Number of clicks All of this information is not linked to anything that is personally identifiable. ### Cookies and Web Beacons When you visit this site "convenience" cookies are stored on your computer when you submit a comment to help you log in faster to [Disqus](http://disqus.com) the next time you leave a comment. Third-party advertisers may also place and read cookies on your browser and/or use web beacons to collect information. This site has no access or control over these cookies. You should review the respective privacy policies on any and all third-party ad servers for more information regarding their practices and how to opt-out. If you wish to disable cookies, you may do so through your web browser options. Instructions for doing so can be found on the specific web browsers' websites. #### Google Analytics Google Analytics is a web analytics tool I use to help understand how visitors engage with this website. It reports website trends using cookies and web beacons without identifying individual visitors. You can read [Google Analytics Privacy Policy](http://www.google.com/analytics/learn/privacy.html).

@import "jekyll-theme-primer";

{"/about/":"https://fanchennus.github.io/","/about.html":"https://fanchennus.github.io/","/resume-json":"https://fanchennus.github.io/cv-json/","/resume":"https://fanchennus.github.io/cv/","/md/":"https://fanchennus.github.io/markdown/","/markdown.html":"https://fanchennus.github.io/markdown/","/nmp/":"https://fanchennus.github.io/non-menu-page/","/nmp.html":"https://fanchennus.github.io/non-menu-page/","/posts/":"https://fanchennus.github.io/year-archive/"}

Jupyter notebook markdown generator

# Jupyter notebook markdown generator These .ipynb files are Jupyter notebook files that convert a TSV containing structured data about talks (`talks.tsv`) or presentations (`presentations.tsv`) into individual markdown files that will be properly formatted for the academicpages template. The notebooks contain a lot of documentation about the process. The .py files are pure python that do the same things if they are executed in a terminal, they just don't have pretty documentation.

{% if page.xsl %}{% endif %}<feed xmlns="http://www.w3.org/2005/Atom" {% if site.lang %}xml:lang="{{ site.lang }}"{% endif %}>Jekyll<link href="{{ '/' | absolute_url }}" rel="alternate" type="text/html" {% if site.lang %}hreflang="{{ site.lang }}" {% endif %}/>{{ site.time | date_to_xmlschema }}{{ page.url | absolute_url | xml_escape }}{% assign title = site.title | default: site.name %}{% if page.collection != "posts" %}{% assign collection = page.collection | capitalize %}{% assign title = title | append: " | " | append: collection %}{% endif %}{% if page.category %}{% assign category = page.category | capitalize %}{% assign title = title | append: " | " | append: category %}{% endif %}{% if title %}{{ title | smartify | xml_escape }}{% endif %}{% if site.description %}{{ site.description | xml_escape }}{% endif %}{% if site.author %}{{ site.author.name | default: site.author | xml_escape }}{% if site.author.email %}{{ site.author.email | xml_escape }}{% endif %}{% if site.author.uri %}{{ site.author.uri | xml_escape }}{% endif %}{% endif %}{% if page.tags %}{% assign posts = site.tags[page.tags] %}{% else %}{% assign posts = site[page.collection] %}{% endif %}{% if page.category %}{% assign posts = posts | where: "categories", page.category %}{% endif %}{% unless site.show_drafts %}{% assign posts = posts | where_exp: "post", "post.draft != true" %}{% endunless %}{% assign posts = posts | sort: "date" | reverse %}{% assign posts_limit = site.feed.posts_limit | default: 10 %}{% for post in posts limit: posts_limit %}<entry{% if post.lang %}{{" "}}xml:lang="{{ post.lang }}"{% endif %}>{% assign post_title = post.title | smartify | strip_html | normalize_whitespace | xml_escape %}{{ post_title }} {{ post.date | date_to_xmlschema }}{{ post.last_modified_at | default: post.date | date_to_xmlschema }}{{ post.id | absolute_url | xml_escape }}{% assign excerpt_only = post.feed.excerpt_only | default: site.feed.excerpt_only %}{% unless excerpt_only %}<![CDATA[{{ post.content | strip }}]]>{% endunless %}{% assign post_author = post.author | default: post.authors[0] | default: site.author %}{% assign post_author = site.data.authors[post_author] | default: post_author %}{% assign post_author_email = post_author.email | default: nil %}{% assign post_author_uri = post_author.uri | default: nil %}{% assign post_author_name = post_author.name | default: post_author %}{{ post_author_name | default: "" | xml_escape }}{% if post_author_email %}{{ post_author_email | xml_escape }}{% endif %}{% if post_author_uri %}{{ post_author_uri | xml_escape }}{% endif %}{% if post.category %}{% elsif post.categories %}{% for category in post.categories %}{% endfor %}{% endif %}{% for tag in post.tags %}{% endfor %}{% assign post_summary = post.description | default: post.excerpt %}{% if post_summary and post_summary != empty %}<![CDATA[{{ post_summary | strip_html | normalize_whitespace }}]]>{% endif %}{% assign post_image = post.image.path | default: post.image %}{% if post_image %}{% unless post_image contains "://" %}{% assign post_image = post_image | absolute_url %}{% endunless %}{% endif %}</entry>{% endfor %}</feed>

{% if page.xsl %} {% endif %} {% assign collections = site.collections | where_exp:'collection','collection.output != false' %}{% for collection in collections %}{% assign docs = collection.docs | where_exp:'doc','doc.sitemap != false' %}{% for doc in docs %} {{ doc.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if doc.last_modified_at or doc.date %}{{ doc.last_modified_at | default: doc.date | date_to_xmlschema }} {% endif %} {% endfor %}{% endfor %}{% assign pages = site.html_pages | where_exp:'doc','doc.sitemap != false' | where_exp:'doc','doc.url != "/404.html"' %}{% for page in pages %} {{ page.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if page.last_modified_at %}{{ page.last_modified_at | date_to_xmlschema }} {% endif %} {% endfor %}{% assign static_files = page.static_files | where_exp:'page','page.sitemap != false' | where_exp:'page','page.name != "404.html"' %}{% for file in static_files %} {{ file.path | replace:'/index.html','/' | absolute_url | xml_escape }} {{ file.modified_time | date_to_xmlschema }} {% endfor %}

Sitemap: {{ "sitemap.xml" | absolute_url }}
    </div>     -->

    <!--  -->

A variety of common markup showing how the theme styles them.

Header one

Header two

Header three

Header four

Header five
Header six

Blockquotes

Single line blockquote:

Quotes are cool.

Tables

Entry Item  
John Doe 2016 Description of the item in the list
Jane Doe 2019 Description of the item in the list
Doe Doe 2022 Description of the item in the list
Header1 Header2 Header3
cell1 cell2 cell3
cell4 cell5 cell6
cell1 cell2 cell3
cell4 cell5 cell6
Foot1 Foot2 Foot3

Definition Lists

Definition List Title
Definition list division.
Startup
A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model.
#dowork
Coined by Rob Dyrdek and his personal body guard Christopher “Big Black” Boykins, “Do Work” works as a self motivator, to motivating your friends.
Do It Live
I’ll let Bill O’Reilly explain this one.

Unordered Lists (Nested)

  • List item one
    • List item one
      • List item one
      • List item two
      • List item three
      • List item four
    • List item two
    • List item three
    • List item four
  • List item two
  • List item three
  • List item four

Ordered List (Nested)

  1. List item one
    1. List item one
      1. List item one
      2. List item two
      3. List item three
      4. List item four
    2. List item two
    3. List item three
    4. List item four
  2. List item two
  3. List item three
  4. List item four

Buttons

Make any link standout more when applying the .btn class.

Notices

Watch out! You can also add notices by appending {: .notice} to a paragraph.

HTML Tags

Address Tag

1 Infinite Loop
Cupertino, CA 95014
United States

This is an example of a link.

Abbreviation Tag

The abbreviation CSS stands for “Cascading Style Sheets”.

Cite Tag

“Code is poetry.” —Automattic

Code Tag

You will learn later on in these tests that word-wrap: break-word; will be your best friend.

Strike Tag

This tag will let you strikeout text.

Emphasize Tag

The emphasize tag should italicize text.

Insert Tag

This tag should denote inserted text.

Keyboard Tag

This scarcely known tag emulates keyboard text, which is usually styled like the <code> tag.

Preformatted Tag

This tag styles large blocks of code.

.post-title {
  margin: 0 0 5px;
  font-weight: bold;
  font-size: 38px;
  line-height: 1.2;
  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}

Quote Tag

Developers, developers, developers… –Steve Ballmer

Strong Tag

This tag shows bold text.

Subscript Tag

Getting our science styling on with H2O, which should push the “2” down.

Superscript Tag

Still sticking with science and Isaac Newton’s E = MC2, which should lift the 2 up.

Variable Tag

This allows you to denote variables.

Page Not Found

Sorry, but the page you were trying to view does not exist.

Dr. Fan Chen

Dr. Fan Chen is a computational mechanics and advanced manufacturing researcher with cross-disciplinary expertise in additive manufacturing, AI-integrated modeling, and high-performance simulation. His recent work involves implementing visco-plasticity laws in Lagamine and developing creep models for metallic systems. His technical strengths include advanced numerical simulation and multi-scale modeling for process–structure–property relationships in manufacturing. He also has teaching assistance experience in mechanics and materials science at NUS and mentoring students on computational mechanics in different institutions.

Main Research Topics (published)


• Coupled CFD-FEM modeling for AM

Poster description

Fan Chen… - Materials & Design, 2020


• Origin of dislocation density in AM

Poster description

G Wang,…,Fan Chen… - Materials Research Letters, 2020


• 4D metal-based printing

Poster description

Wu, W.,…,Fan Chen… - Advanced Science 2023


• Data-driven temperature field prediction with rational physic constraints

Poster description

Fan Chen… - CMAME, 2022


• Heat accumulation analysis for samples clusters (over 100 AM samples)

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


• Incremetnal sheet metal forming - English wheel

Poster description

D Suarez, Fan Chen…- Journal of Manufacturing Systems


• Incremetnal sheet metal forming - DED on sheet metal

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


Ongoing works


• Coupled CFD-FEM modeling for AM – DED

Poster description

Poster description


• Colding cracking mechanism in AM

Poster description


• Micro-Casting of Titanium Alloy in Self-boiling Molds

Poster description


• Pattern oriented equivalent strain attribution

Poster description


• Creep modeling framework for 30CrMoNiV11-5 alloy application of Morch phenomenological law and mean-field creep model

Poster description

Poster description



Share this page:
LinkedIn | Twitter | Email
</div> -->

Poster description

Dr. Fan Chen is a computational mechanics and advanced manufacturing researcher with cross-disciplinary expertise in additive manufacturing, AI-integrated modeling, and high-performance simulation. His recent work involves implementing visco-plasticity laws in Lagamine and developing creep models for metallic systems. His technical strengths include advanced numerical simulation and multi-scale modeling for process–structure–property relationships in manufacturing. He also has teaching assistance experience in mechanics and materials science at NUS and mentoring students on computational mechanics in different institutions.

Main Research Topics (published)


• Coupled CFD-FEM modeling for AM

Poster description

Fan Chen… - Materials & Design, 2020


• Origin of dislocation density in AM

Poster description

G Wang,…,Fan Chen… - Materials Research Letters, 2020


• 4D metal-based printing

Poster description

Wu, W.,…,Fan Chen… - Advanced Science 2023


• Data-driven temperature field prediction with rational physic constraints

Poster description

Fan Chen… - CMAME, 2022


• Heat accumulation analysis for samples clusters (over 100 AM samples)

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


• Incremetnal sheet metal forming - English wheel

Poster description

D Suarez, Fan Chen…- Journal of Manufacturing Systems


• Incremetnal sheet metal forming - DED on sheet metal

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


Ongoing works


• Coupled CFD-FEM modeling for AM – DED

Poster description

Poster description


• Colding cracking mechanism in AM

Poster description


• Micro-Casting of Titanium Alloy in Self-boiling Molds

Poster description


• Pattern oriented equivalent strain attribution

Poster description


• Creep modeling framework for 30CrMoNiV11-5 alloy application of Morch phenomenological law and mean-field creep model

Poster description

Poster description



Share this page:
LinkedIn | Twitter | Email

Archive Layout with Content

A variety of common markup showing how the theme styles them. # Header one ## Header two ### Header three #### Header four ##### Header five ###### Header six ## Blockquotes Single line blockquote: > Quotes are cool. ## Tables | Entry | Item | | | -------- | ------ | ------------------------------------------------------------ | | [John Doe](#) | 2016 | Description of the item in the list | | [Jane Doe](#) | 2019 | Description of the item in the list | | [Doe Doe](#) | 2022 | Description of the item in the list | | Header1 | Header2 | Header3 | |:--------|:-------:|--------:| | cell1 | cell2 | cell3 | | cell4 | cell5 | cell6 | |-----------------------------| | cell1 | cell2 | cell3 | | cell4 | cell5 | cell6 | |=============================| | Foot1 | Foot2 | Foot3 | ## Definition Lists Definition List Title : Definition list division. Startup : A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model. #dowork : Coined by Rob Dyrdek and his personal body guard Christopher "Big Black" Boykins, "Do Work" works as a self motivator, to motivating your friends. Do It Live : I'll let Bill O'Reilly [explain](https://www.youtube.com/watch?v=O_HyZ5aW76c "We'll Do It Live") this one. ## Unordered Lists (Nested) * List item one * List item one * List item one * List item two * List item three * List item four * List item two * List item three * List item four * List item two * List item three * List item four ## Ordered List (Nested) 1. List item one 1. List item one 1. List item one 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four ## Buttons Make any link standout more when applying the `.btn` class. ## Notices **Watch out!** You can also add notices by appending `{: .notice}` to a paragraph. {: .notice} ## HTML Tags ### Address Tag
1 Infinite Loop
Cupertino, CA 95014
United States
### Anchor Tag (aka. Link) This is an example of a [link](http://github.com "GitHub"). ### Abbreviation Tag The abbreviation CSS stands for "Cascading Style Sheets". *[CSS]: Cascading Style Sheets ### Cite Tag "Code is poetry." ---Automattic ### Code Tag You will learn later on in these tests that `word-wrap: break-word;` will be your best friend. ### Strike Tag This tag will let you strikeout text. ### Emphasize Tag The emphasize tag should _italicize_ text. ### Insert Tag This tag should denote inserted text. ### Keyboard Tag This scarcely known tag emulates keyboard text, which is usually styled like the `` tag. ### Preformatted Tag This tag styles large blocks of code.
.post-title {
  margin: 0 0 5px;
  font-weight: bold;
  font-size: 38px;
  line-height: 1.2;
  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}
### Quote Tag Developers, developers, developers… –Steve Ballmer ### Strong Tag This tag shows **bold text**. ### Subscript Tag Getting our science styling on with H2O, which should push the "2" down. ### Superscript Tag Still sticking with science and Isaac Newton's E = MC2, which should lift the 2 up. ### Variable Tag This allows you to denote variables. {% include base_path %} {% for post in site.pages %} {% include archive-single.html %} {% endfor %} </div> </article> </div>

Posts by Category

{% include base_path %} {% include group-by-array collection=site.posts field="categories" %} {% for category in group_names %} {% assign posts = group_items[forloop.index0] %}

{{ category }}

{% for post in posts %} {% include archive-single.html %} {% endfor %} {% endfor %}

Posts by Collection

{% include base_path %} {% capture written_label %}'None'{% endcapture %} {% for collection in site.collections %} {% unless collection.output == false or collection.label == "posts" %} {% capture label %}{{ collection.label }}{% endcapture %} {% if label != written_label %}

{{ label }}

{% capture written_label %}{{ label }}{% endcapture %} {% endif %} {% endunless %} {% for post in collection.docs %} {% unless collection.output == false or collection.label == "posts" %} {% include archive-single.html %} {% endunless %} {% endfor %} {% endfor %}

CV

{% include base_path %} {% include cv-template.html %}

CV

{% include base_path %} Education ====== * Ph.D in Version Control Theory, GitHub University, 2018 (expected) * M.S. in Jekyll, GitHub University, 2014 * B.S. in GitHub, GitHub University, 2012 Work experience ====== * Spring 2024: Academic Pages Collaborator * GitHub University * Duties includes: Updates and improvements to template * Supervisor: The Users * Fall 2015: Research Assistant * GitHub University * Duties included: Merging pull requests * Supervisor: Professor Hub * Summer 2015: Research Assistant * GitHub University * Duties included: Tagging issues * Supervisor: Professor Git Skills ====== * Skill 1 * Skill 2 * Sub-skill 2.1 * Sub-skill 2.2 * Sub-skill 2.3 * Skill 3 Publications ======
    {% for post in site.publications reversed %} {% include archive-single-cv.html %} {% endfor %}
Talks ======
    {% for post in site.talks reversed %} {% include archive-single-talk-cv.html %} {% endfor %}
Teaching ======
    {% for post in site.teaching reversed %} {% include archive-single-cv.html %} {% endfor %}
Service and leadership ====== * Currently signed in to 43 different slack teams

/* * This file controls what is imported from /_sass * * Note that the files are processed in the order they are imported, so they are partly sorted by the dependencies. Also, the first two lines of the file are required by Jekyll. */ @import "vendor/breakpoint/breakpoint", "themes", "theme/default", "theme/dark", "include/mixins", "vendor/susy/susy", "layout/reset", "layout/base", "include/utilities", "layout/tables", "layout/buttons", "layout/notices", "layout/masthead", "layout/navigation", "layout/footer", "syntax", "layout/forms", "layout/page", "layout/archive", "layout/sidebar", "vendor/font-awesome/fontawesome", "vendor/font-awesome/solid", "vendor/font-awesome/brands", "vendor/magnific-popup/magnific-popup" ;

Markdown

{% include toc %} ## Locations of key files/directories * Basic config options: _config.yml * Top navigation bar config: _data/navigation.yml * Single pages: _pages/ * Collections of pages are .md or .html files in: * _publications/ * _portfolio/ * _posts/ * _teaching/ * _talks/ * Footer: _includes/footer.html * Static files (like PDFs): /files/ * Profile image (can set in _config.yml): images/profile.png ## Tips and hints * Name a file ".md" to have it render in markdown, name it ".html" to render in HTML. * Go to the [commit list](https://github.com/academicpages/academicpages.github.io/commits/master) (on your repo) to find the last version GitHub built with Jekyll. * Green check: successful build * Orange circle: building * Red X: error * No icon: not built * Academic Pages uses [Jekyll Kramdown](https://jekyllrb.com/docs/configuration/markdown/), GitHub Flavored Markdown (GFM) parser, which is similar to the version of Markdown used on GitHub, but may have some minor differences. * Some of emoji supported on GitHub should be supposed via the [Jemoji](https://github.com/jekyll/jemoji) plugin :computer:. * The best list of the supported emoji can be found in the [Emojis for Jekyll via Jemoji](https://www.fabriziomusacchio.com/blog/2021-08-16-emojis_for_Jekyll/#computer) blog post. * While GitHub Pages prevents server side code from running, client-side scripts are supported. * This means that Google Analytics is supported, and [the wiki](https://github.com/academicpages/academicpages.github.io/wiki/Adding-Google-Analytics) should contain the most up-to-date information on getting it working. * Your CV can be written using either Markdown ([preview](https://academicpages.github.io/cv/)) or generated via JSON ([preview](https://academicpages.github.io/cv-json/)) and the layouts are slightly different. You can update the path to the one being used in `_data/navigation.yml` with the JSON formatted CV being hidden by default. ## Resources * [Liquid syntax guide](https://shopify.github.io/liquid/tags/control-flow/) * [MathJax Documentation](https://docs.mathjax.org/en/latest/) ## MathJax Support for MathJax Version 3.0 is included in the template: $$ \displaylines{ \nabla \cdot E= \frac{\rho}{\epsilon_0} \\\ \nabla \cdot B=0 \\\ \nabla \times E= -\partial_tB \\\ \nabla \times B = \mu_0 \left(J + \varepsilon_0 \partial_t E \right) } $$ The default delimiters of `$$...$$` and `\\[...\\]` are supported for displayed mathematics, while `\\(...\\)` should be used for in-line mathematics (ex., \\(a^2 + b^2 = c^2\\)) **Note** that since Academic Pages uses Markdown which cases some interference with MathJax and LaTeX for escaping characters and new lines, although [some workarounds exist](https://math.codidact.com/posts/278763/278772#answer-278772). In some cases, such as when you are including MathJax in a `citation` field for publications, it may be necessary to use `\(...\)` for inline delineation. ## Markdown guide Academic Pages uses [kramdown](https://kramdown.gettalong.org/index.html) for Markdown rendering, which has some differences from other Markdown implementations such as GitHub's. In addition to this guide, please see the [kramdown Syntax page](https://kramdown.gettalong.org/syntax.html) for full documentation. ### Header three #### Header four ##### Header five ###### Header six ## Blockquotes Single line blockquote: > Quotes are cool. ## Tables ### Table 1 | Entry | Item | | | -------- | ------ | ------------------------------------------------------------ | | [John Doe](#) | 2016 | Description of the item in the list | | [Jane Doe](#) | 2019 | Description of the item in the list | | [Doe Doe](#) | 2022 | Description of the item in the list | ### Table 2 | Header1 | Header2 | Header3 | |:--------|:-------:|--------:| | cell1 | cell2 | cell3 | | cell4 | ce ll5 | cell6 | |-----------------------------| | cell1 | cell2 | cell3 | | cell4 | cell5 | cell6 | |=============================| | Foot1 | Foot2 | Foot3 | ## Definition Lists Definition List Title : Definition list division. Startup : A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model. #dowork : Coined by Rob Dyrdek and his personal body guard Christopher "Big Black" Boykins, "Do Work" works as a self motivator, to motivating your friends. Do It Live : I'll let Bill O'Reilly [explain](https://www.youtube.com/watch?v=O_HyZ5aW76c "We'll Do It Live") this one. ## Unordered Lists (Nested) * List item one * List item one * List item one * List item two * List item three * List item four * List item two * List item three * List item four * List item two * List item three * List item four ## Ordered List (Nested) 1. List item one 1. List item one 1. List item one 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four ## Buttons Make any link standout more when applying the `.btn` class. ## Notices Basic notices or call-outs are supported using the following syntax: ```markdown **Watch out!** You can also add notices by appending `{: .notice}` to the line following paragraph. {: .notice} ``` which wil render as: **Watch out!** You can also add notices by appending `{: .notice}` to the line following paragraph. {: .notice} ### Footnotes Footnotes can be useful for clarifying points in the text, or citing information.[^1] Markdown support numeric footnotes, as well as text as long as the values are unique.[^note] ```markdown This is the regular text.[^1] This is more regular text.[^note] [^1]: This is the footnote itself. [^note]: This is another footnote. ``` [^1]: Such as this footnote. [^note]: When using text for footnotes markers, no spaces are permitted in the name. ## HTML Tags ### Address Tag
1 Infinite Loop
Cupertino, CA 95014
United States
### Anchor Tag (aka. Link) This is an example of a [link](http://github.com "GitHub"). ### Abbreviation Tag The abbreviation CSS stands for "Cascading Style Sheets". *[CSS]: Cascading Style Sheets ### Cite Tag "Code is poetry." ---Automattic ### Code Tag You will learn later on in these tests that `word-wrap: break-word;` will be your best friend. You can also write larger blocks of code with syntax highlighting supported for some languages, such as Python: ```python print('Hello World!') ``` or R: ```R print("Hello World!", quote = FALSE) ``` ### Details Tag (collapsible sections) The HTML `
` tag works well with Markdown and allows you to include collapsible sections, see [W3Schools](https://www.w3schools.com/tags/tag_details.asp) for more information on how to use the tag.
Collapsed by default This section was collapsed by default!
The source code: ```HTML
Collapsed by default This section was collapsed by default!
``` Or, you can leave a section open by default by including the `open` attribute in the tag:
Open by default This section is open by default thanks to open in the <details open> tag!
### Emphasize Tag The emphasize tag should _italicize_ text. ### Insert Tag This tag should denote inserted text. ### Keyboard Tag This scarcely known tag emulates keyboard text, which is usually styled like the `` tag. ### Preformatted Tag This tag styles large blocks of code.
.post-title {
  margin: 0 0 5px;
  font-weight: bold;
  font-size: 38px;
  line-height: 1.2;
  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}
### Quote Tag Developers, developers, developers… –Steve Ballmer ### Strike Tag This tag will let you strikeout text. ### Strong Tag This tag shows **bold text**. ### Subscript Tag Getting our science styling on with H2O, which should push the "2" down. ### Superscript Tag Still sticking with science and Isaac Newton's E = MC2, which should lift the 2 up. ### Variable Tag This allows you to denote variables. *** **Footnotes** The footnotes in the page will be returned following this line, return to the section on Markdown Footnotes. </div> </article> </div>

Page not in menu

This is a page not in the menu. You can use markdown in this page. Heading 1 ====== Heading 2 ======

Page Archive

{% include base_path %} {% for post in site.pages %} {% include archive-single.html %} {% endfor %}

Publications

{% if site.publication_category %} {% for category in site.publication_category %} {% assign title_shown = false %} {% for post in site.publications reversed %} {% if post.category != category[0] %} {% continue %} {% endif %} {% unless title_shown %}

{{ category[1].title }}


{% assign title_shown = true %} {% endunless %} {% include archive-single.html %} {% endfor %} {% endfor %} {% else %} {% for post in site.publications reversed %} {% include archive-single.html %} {% endfor %} {% endif %} </div> -->
{% if site.author.googlescholar %}
You can also find my articles on my Google Scholar profile.
{% endif %} {% include base_path %} {% if site.publication_category %} {% for category in site.publication_category %} {% assign title_shown = false %} {% for post in site.publications reversed %} {% if post.category != category[0] %} {% continue %} {% endif %} {% unless title_shown %}

{{ category[1].title }}


{% assign title_shown = true %} {% endunless %} {% include archive-single.html %} {% endfor %} {% endfor %} {% else %} {% for post in site.publications reversed %} {% include archive-single.html %} {% endfor %} {% endif %}

Sitemap

{% include base_path %} A list of all the posts and pages found on the site. For you robots out there, there is an [XML version]({{ base_path }}/sitemap.xml) available for digesting as well.

Pages

{% for post in site.pages %} {% include archive-single.html %} {% endfor %}

Posts

{% for post in site.posts %} {% include archive-single.html %} {% endfor %} {% capture written_label %}'None'{% endcapture %} {% for collection in site.collections %} {% unless collection.output == false or collection.label == "posts" %} {% capture label %}{{ collection.label }}{% endcapture %} {% if label != written_label %}

{{ label }}

{% capture written_label %}{{ label }}{% endcapture %} {% endif %} {% endunless %} {% for post in collection.docs %} {% unless collection.output == false or collection.label == "posts" %} {% include archive-single.html %} {% endunless %} {% endfor %} {% endfor %}

Posts by Tags

{% include base_path %} {% include group-by-array collection=site.posts field="tags" %} {% for tag in group_names %} {% assign posts = group_items[forloop.index0] %}

{{ tag }}

{% for post in posts %} {% include archive-single.html %} {% endfor %} {% endfor %}

Talk map

This map is generated from a Jupyter Notebook file in talkmap.ipynb, which mines the location fields in the .md files in _talks/.


Eduacation & Employment

2024–2025: University of Liege

  • Research Scientist/Project Leader, Urban and Environmental Engineering -Funded by European Union,
    Principal investigator – Anne Marie Habraken: anne.habraken@uliege.be

2022–2023: Northwestern University

  • Postdoc, McCormick School of Engineering, AMPL -supported by USA Vannevar Bush Faculty Fellowship award,
    Principal investigator – Jian Cao: jcao@northwestern.edu

2018–2022: National University of Singapore


2011-2018: Huazhong University of Science & Technology

  • 2015-2018: Master of Engineering, Design & Manufacture of Ships and Marine Structure (China Graduate Scholarship)
  • 2011-2015: Bachelor of Engineering, Naval Architecture & Ocean Engineering (2012 China National Scholarship)

Teaching

{% include base_path %} {% for post in site.teaching reversed %} {% include archive-single.html %} {% endfor %}

Terms and Privacy Policy

{% include base_path %} {% include toc %} ## Privacy Policy The privacy of my visitors is extremely important. This Privacy Policy outlines the types of personal information that is received and collected and how it is used. First and foremost, I will never share your email address or any other personal information to anyone without your direct consent. ### Log Files Like many other websites, this site uses log files to help learn about when, from where, and how often traffic flows to this site. The information in these log files include: * Internet Protocol addresses (IP) * Types of browser * Internet Service Provider (ISP) * Date and time stamp * Referring and exit pages * Number of clicks All of this information is not linked to anything that is personally identifiable. ### Cookies and Web Beacons When you visit this site "convenience" cookies are stored on your computer when you submit a comment to help you log in faster to [Disqus](http://disqus.com) the next time you leave a comment. Third-party advertisers may also place and read cookies on your browser and/or use web beacons to collect information. This site has no access or control over these cookies. You should review the respective privacy policies on any and all third-party ad servers for more information regarding their practices and how to opt-out. If you wish to disable cookies, you may do so through your web browser options. Instructions for doing so can be found on the specific web browsers' websites. #### Google Analytics Google Analytics is a web analytics tool I use to help understand how visitors engage with this website. It reports website trends using cookies and web beacons without identifying individual visitors. You can read [Google Analytics Privacy Policy](http://www.google.com/analytics/learn/privacy.html).

@import "jekyll-theme-primer";

{"/about/":"https://fanchennus.github.io/","/about.html":"https://fanchennus.github.io/","/resume-json":"https://fanchennus.github.io/cv-json/","/resume":"https://fanchennus.github.io/cv/","/md/":"https://fanchennus.github.io/markdown/","/markdown.html":"https://fanchennus.github.io/markdown/","/nmp/":"https://fanchennus.github.io/non-menu-page/","/nmp.html":"https://fanchennus.github.io/non-menu-page/","/posts/":"https://fanchennus.github.io/year-archive/"}

Jupyter notebook markdown generator

# Jupyter notebook markdown generator These .ipynb files are Jupyter notebook files that convert a TSV containing structured data about talks (`talks.tsv`) or presentations (`presentations.tsv`) into individual markdown files that will be properly formatted for the academicpages template. The notebooks contain a lot of documentation about the process. The .py files are pure python that do the same things if they are executed in a terminal, they just don't have pretty documentation.

{% if page.xsl %}{% endif %}<feed xmlns="http://www.w3.org/2005/Atom" {% if site.lang %}xml:lang="{{ site.lang }}"{% endif %}>Jekyll<link href="{{ '/' | absolute_url }}" rel="alternate" type="text/html" {% if site.lang %}hreflang="{{ site.lang }}" {% endif %}/>{{ site.time | date_to_xmlschema }}{{ page.url | absolute_url | xml_escape }}{% assign title = site.title | default: site.name %}{% if page.collection != "posts" %}{% assign collection = page.collection | capitalize %}{% assign title = title | append: " | " | append: collection %}{% endif %}{% if page.category %}{% assign category = page.category | capitalize %}{% assign title = title | append: " | " | append: category %}{% endif %}{% if title %}{{ title | smartify | xml_escape }}{% endif %}{% if site.description %}{{ site.description | xml_escape }}{% endif %}{% if site.author %}{{ site.author.name | default: site.author | xml_escape }}{% if site.author.email %}{{ site.author.email | xml_escape }}{% endif %}{% if site.author.uri %}{{ site.author.uri | xml_escape }}{% endif %}{% endif %}{% if page.tags %}{% assign posts = site.tags[page.tags] %}{% else %}{% assign posts = site[page.collection] %}{% endif %}{% if page.category %}{% assign posts = posts | where: "categories", page.category %}{% endif %}{% unless site.show_drafts %}{% assign posts = posts | where_exp: "post", "post.draft != true" %}{% endunless %}{% assign posts = posts | sort: "date" | reverse %}{% assign posts_limit = site.feed.posts_limit | default: 10 %}{% for post in posts limit: posts_limit %}<entry{% if post.lang %}{{" "}}xml:lang="{{ post.lang }}"{% endif %}>{% assign post_title = post.title | smartify | strip_html | normalize_whitespace | xml_escape %}{{ post_title }} {{ post.date | date_to_xmlschema }}{{ post.last_modified_at | default: post.date | date_to_xmlschema }}{{ post.id | absolute_url | xml_escape }}{% assign excerpt_only = post.feed.excerpt_only | default: site.feed.excerpt_only %}{% unless excerpt_only %}<![CDATA[{{ post.content | strip }}]]>{% endunless %}{% assign post_author = post.author | default: post.authors[0] | default: site.author %}{% assign post_author = site.data.authors[post_author] | default: post_author %}{% assign post_author_email = post_author.email | default: nil %}{% assign post_author_uri = post_author.uri | default: nil %}{% assign post_author_name = post_author.name | default: post_author %}{{ post_author_name | default: "" | xml_escape }}{% if post_author_email %}{{ post_author_email | xml_escape }}{% endif %}{% if post_author_uri %}{{ post_author_uri | xml_escape }}{% endif %}{% if post.category %}{% elsif post.categories %}{% for category in post.categories %}{% endfor %}{% endif %}{% for tag in post.tags %}{% endfor %}{% assign post_summary = post.description | default: post.excerpt %}{% if post_summary and post_summary != empty %}<![CDATA[{{ post_summary | strip_html | normalize_whitespace }}]]>{% endif %}{% assign post_image = post.image.path | default: post.image %}{% if post_image %}{% unless post_image contains "://" %}{% assign post_image = post_image | absolute_url %}{% endunless %}{% endif %}</entry>{% endfor %}</feed>

{% if page.xsl %} {% endif %} {% assign collections = site.collections | where_exp:'collection','collection.output != false' %}{% for collection in collections %}{% assign docs = collection.docs | where_exp:'doc','doc.sitemap != false' %}{% for doc in docs %} {{ doc.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if doc.last_modified_at or doc.date %}{{ doc.last_modified_at | default: doc.date | date_to_xmlschema }} {% endif %} {% endfor %}{% endfor %}{% assign pages = site.html_pages | where_exp:'doc','doc.sitemap != false' | where_exp:'doc','doc.url != "/404.html"' %}{% for page in pages %} {{ page.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if page.last_modified_at %}{{ page.last_modified_at | date_to_xmlschema }} {% endif %} {% endfor %}{% assign static_files = page.static_files | where_exp:'page','page.sitemap != false' | where_exp:'page','page.name != "404.html"' %}{% for file in static_files %} {{ file.path | replace:'/index.html','/' | absolute_url | xml_escape }} {{ file.modified_time | date_to_xmlschema }} {% endfor %}

Sitemap: {{ "sitemap.xml" | absolute_url }}

</article> </div>

Posts by Collection

High-fidelity coupled CFD-FEM simulation on DED and LPBF

– corporation with ANSYS

Linked the high-fidelity molten pool dynamics model with the finite element solver for thermal stress simulation.

High-density dislocations in additively manufactured metals

– corporation with Shanghai Jiaotong University

Demonstrated that thermal stresses are the origin of high-density dislocations in additively manufactured metals using the coupled CFD-FEM simulation.

Physically informed data-driven prognostic model for the temperature prediction in AM

– corporation with Singapore A*STAR

High accuracy and significantly faster computation speed for the track-scale AM modeling based on the data-driven prediction (CNN, GPR, QR) of the isotherms and the isotherm-reconstructed temperature attribution on FEM model.

Pattern-oriented Strain Attribution in Part-scale Modeling of Additive Manufacturing

– corporation with Singapore A*STAR

Efficient large-scale AM modeling approaches with sound physical basis, where the layer-wise element progressive activation is applied with base strain pattern attributed onto the sample layers.

From 2022 to 2023

Hybrid Autonomous Manufacturing, Moving from Evolution to Revolution (HAMMER)

– corporation with The OHIO State University and so on.

High-fidelity English wheel simulation: distortion analysis of the sheet metal under rolling of two wheel of different size and curvature.

Micro-Casting of Titanium Alloy in Self-boiling Molds

Heat transfer analysis of liquid materials in multiple self-boiling molds for micro-casting.

DED on sheet metal forming

– corporation with Nissan

Deformation prediction using bulking analysis under the residual stress pattern achieved by track-scale DED simulation.

From 2024 to 2025

(AID4Greenest) - AI powered characterization and modelling for green steel technology

Funded by European Union

– corporation with Fraunhofer, IWM and IMDEA et al.

Fortran-based self-developed Lagamine coding platform for implementation of H. Morch visco-plasticity law & Development of the mean field creep model on Gitlab using Python.

  <h2 id="publications" class="archive__subtitle">publications</h2>

The origin of high-density dislocations in additively manufactured metals

Published in Materials Research Letters, 2020

The origin of dense dislocations in many additively manufactured metals remains a mystery. We here employed pure Cu as a prototype and fabricated the very challenging high-purity (>99.9%) bulk Cu by laser powder-bed-fusion (L-PBF) technique. We found that high-density dislocations were present in the as-built samples and these high-density dislocations were introduced on the fly during the L-PBF process. A newly developed multi-physics modeling was further employed to interpret the origin of these pre-existing dislocations, demonstrating that the compression-tension cycles rendered by the localized heating/cooling heterogeneity upon laser scanning are responsible for the residual high-density dislocations.

Doi:https://doi.org/10.1080/21663831.2020.1751739

Download Paper

High-fidelity modelling of thermal stress for additive manufacturing by linking thermal-fluid and mechanical models

Published in Materials & Design, 2020

The prediction of thermal stress and distortion is a prerequisite for high-quality additive manufacturing (AM). The widely applied thermo-mechanical model using the finite element method (FEM) leaves much to be improved due to their oversimplifications on material deposition, molten pool flow, etc. In this study, a high-fidelity modelling approach by linking the thermal-fluid (computational fluid dynamics, CFD) and mechanical models (named as CFD-FEM model) is developed to predict the thermal stress for AM taking into account the influences of thermal-fluid flow. Profiting from the precise temperature profiles and melt track geometry extracted from the thermal-fluid model as well as the remarkable flexibility of the quiet element method of FEM, this work aims at simulating the thermal stress distribution by involving physical changes in the AM process, e.g., melting and solidification of powder particles, molten pool evolution and inter-track inter-layer re-melting. Unlike the conventional thermo-mechanical analysis, in this approach, thermal stress calculation is purely based on a mechanical model where the thermal loads are applied by using a linear interpolation function to spatially and temporally map the temperature values from the thermal-fluid model’s cell centres into the FEM element nodes. With the proposed approach, the thermal stress evolution in the AM process of single track, multiple tracks and multiple layers are simulated, where the rough surfaces and internal voids can be well incorporated. Moreover, a conventional thermo-mechanical simulation of two tracks with predefined track geometry is conducted for cross comparison. Finally, the simulated thermal stress distribution can rationally explain the crack distribution observed in the experiments.

Doi:https://doi.org/10.1016/j.matdes.2020.109185

Download Paper

Enhanced strengthening and hardening via self-stabilized dislocation network in additively manufactured metals

Published in Materials Today, 2021

The advent of additive manufacturing (AM) offers the possibility of creating high-performance metallic materials with unique microstructure. Ultrafine dislocation cell structure in AM metals is believed to play a critical role in strengthening and hardening. However, its behavior is typically considered to be associated with alloying elements. Here we report that dislocations in AM metallic materials are self-stabilized even without the alloying effect. The heating–cooling cycles that are inherent to laser power-bed-fusion processes can stabilize dislocation network in situ by forming Lomer locks and a complex dislocation network. This unique dislocation assembly blocks and accumulates dislocations for strengthening and steady strain hardening, thereby rendering better material strength but several folds improvements in uniform tensile elongation compared to those made by traditional methods. The principles of dislocation manipulation and self-assembly are applicable to metals/alloys obtained by conventional routes in turn, through a simple post-cyclic deformation processing that mimics the micromechanics of AM. This work demonstrates the capability of AM to locally tune dislocation structures and achieve high-performance metallic materials.

Doi:https://doi.org/10.1016/j.mattod.2021.06.002

Download Paper

Crystal plasticity model of residual stress in additive manufacturing using the element elimination and reactivation method

Published in Computational Mechanics, 2021

Selective laser melting is receiving increasing interest as an additive manufacturing technique. Residual stresses induced by the large temperature gradients and inhomogeneous cooling process can favour the generation of cracks. In this work, a crystal plasticity finite element model is developed to simulate the formation of residual stresses and to understand the correlation between plastic deformation, grain orientation and residual stresses in the additive manufacturing process. The temperature profile and grain structure from thermal-fluid flow and grain growth simulations are implemented into the crystal plasticity model. An element elimination and reactivation method is proposed to model the melting and solidification and to reinitialize state variables, such as the plastic deformation, in the reactivated elements. The accuracy of this method is judged against previous method based on the stiffness degradation of liquid regions by comparing the plastic deformation as a function of time induced by thermal stresses. The method is used to investigate residual stresses parallel and perpendicular to the laser scan direction, and the correlation with the maximum Schmid factor of the grains along those directions. The magnitude of the residual stress can be predicted as a function of the depth, grain orientation and position with respect to the molten pool. The simulation results are directly comparable to X-ray diffraction experiments and stress–strain curves.

Doi:https://doi.org/10.1007/s00466-021-02116-z

Download Paper

Data-driven prognostic model for temperature field in additive manufacturing based on the high-fidelity thermal-fluid flow simulation

Published in Computer Methods in Applied Mechanics and Engineering, 2022

The process-structure–property relationship for additive manufacturing (AM) is typically derived starting from the temperature profile which can be achieved by the meso-scale thermal-fluid flow simulation with huge computational cost. We propose a data-driven prognostic approach with specialized physical constraints to rapidly predict the temperature profiles. The dataset is constructed from the physics-based thermal-fluid flow simulation results under different manufacturing parameters. The temperature field around the molten pool region is statistically characterized by the function parameters of the individual isotherms, which are essentially the output of the data-driven model based on the input manufacturing parameters, while the temperature field is reconstructed using the interpolation approach based on the predicted isotherms. The data-driven predicted temperature profiles are validated against those from the thermal-fluid flow simulations, and then further applied in the thermal stress and grain growth simulations, of which the results are compared with those using the temperature profile directly from thermal-fluid flow simulations. The results demonstrate that our data-driven approach is highly feasible in predicting the geometry features of the isotherms and temperature profiles around the molten pool regions.

Doi:https://doi.org/10.1016/j.cma.2022.114652

Download Paper

Metallic 4D Printing of Laser Stimulation

Published in Advanced Science, 2023

4D printing of metallic shape-morphing systems can be applied in many fields, including aerospace, smart manufacturing, naval equipment, and biomedical engineering. The existing forming materials for metallic 4D printing are still very limited except shape memory alloys. Herein, a 4D printing method to endow non-shape-memory metallic materials with active properties is presented, which could overcome the shape-forming limitation of traditional material processing technologies. The thermal stress spatial control of 316L stainless steel forming parts is achieved by programming the processing parameters during a laser powder bed fusion (LPBF) process. The printed parts can realize the shape changing of selected areas during or after forming process owing to stress release generated. It is demonstrated that complex metallic shape-morphing structures can be manufactured by this method. The principles of printing parameters programmed and thermal stress pre-set are also applicable to other thermoforming materials and additive manufacturing processes, which can expand not only the materials used for 4D printing but also the applications of 4D printing technologies.

Doi:https://doi.org/10.1002/advs.202206486

Download Paper

Factorial design analytics on effects of material parameter uncertainties in multiphysics modeling of additive manufacturing

Published in npj Computational Materials, 2023

A bottleneck in Laser Powder Bed Fusion (L-PBF) metal additive manufacturing (AM) is the quality inconsistency of its products. To address this issue without costly experimentation, computational multi-physics modeling has been used, but the effectiveness is limited by parameter uncertainties and their interactions. We propose a full factorial design and variable selection approach for the analytics of main and interaction effects arising from material parameter uncertainties in multi-physics models. Data is collected from high-fidelity thermal-fluid simulations based on a 2-level full factorial design for 5 selected material parameters. Crucial physical phenomena of the L-PBF process are analyzed to extract physics-based domain knowledge, which are used to establish a validation checkpoint for our study. Initial data visualization with half-normal probability plots, interaction plots and standard deviation plots, is used to assess if the checkpoint is being met. We then apply the combination of best subset selection and the LASSO method on multiple linear regression models for comprehensive variable selection. Analytics yield statistically and phyiscally validated findings with practical implications, emphasizing the importance of parameter interactions under uncertainty, and their relation to the underlying physics of L-PBF.

Doi:https://doi.org/10.1038/s41524-023-01004-9

Download Paper

Biomimetic 4D Printing Catapult: From Biological Prototype to Practical Implementation

Published in Advanced Functional Materials, 2023

4D printing technologies are currently suffering from the inability to produce rapid motions, which limit their applications that require fast shape transformation such as rapid unlocking and deployment of aerospace equipment. Herein, inspired by the shooting mechanisms of Viola verecunda fruit for seed dispersal, the 4D-printed biomimetic catapult is developed. Based on the structure change characteristics of gradient fan-shaped cells of the fruit pods during seed ejection, the biomimetic smart catapult is processed via the programming of spatial distribution of heterogeneous materials with various storage modulus enabled by additive manufacturing. This catapult can achieve high-speed ejection with the logically stimuli of external force, temperature, light, humidity, or electricity. The proposed biomimetic 4D printing strategy has broken through the limitations in motion speed, which helps fully unleash the potential of 4D printing.

Doi:https://doi.org/10.1002/adfm.202301286

Download Paper

Data-driven prediction of keyhole features in metal additive manufacturing based on physics-based simulation

Published in Journal of Intelligent Manufacturing, 2023

The defect formation is closely related to molten pool and keyhole features in metal additive manufacturing. Experimentation and physics-based simulation methods to capture the molten pool and keyhole features are expensive and time-consuming. A data-driven method is proposed in this work to efficiently predict the molten pool and keyhole features characterized by a series of fitting curves under given manufacturing parameters, instead of simply predicting the molten pool and keyhole sizes. The database consists of simulation cases with the high-fidelity thermal-fluid flow model. Molten pool melting regime, keyhole stability and keyhole type are recognized with the neural net pattern recognition. With the Gaussian process regression model, the keyhole dimensions are predicted and the keyhole contour is reconstructed. The comparison between predicted data and physics-based simulation results demonstrates the feasibility and accuracy of our data-driven model. Meanwhile, the predicted results can guide the selection of manufacturing parameters in actual production, and are also helpful to the further study of pores in additive manufacturing in academic research.

Doi:https://doi.org/10.1007/s10845-023-02157-6

Download Paper

A creep survey: from creep mechanism to macroscopic and microscopic models.

Published in METALLIC MICROSTRUCTURES EUROPEAN LECTURES ONLINE, 2024

At high temperature, metallic material creep is difficult to avoid. The understanding of the creep mechanisms helps metallurgists to design optimal alloy compositions and the prediction of a component life is a key input to manage safe maintenance and to define operational cost of any production line (solar plant parts, heat exchanger, any turbine parts loaded at high temperature…).

📥 Download slides (PPTX)

On the feasibility of an integrated English wheel system

Published in Journal of Manufacturing Systems, 2024

The English wheel is a highly flexible traditional metalworking tool that allows skilled craftsmen to form compound curves on sheet metal panels. Historically, geometric accuracy and repeatability of formed panels using the English wheel have been tied to the operator leading to limited industrial adoption. This paper presents a novel framework for an integrated English wheeling system that leverages robot forming with a newly developed adaptable gripper/end-effector, metrology for deformed geometry tracking and tolerance measurements, integrated sensors for real-time forming force measurements and control, computational modeling for tracking pattern/toolpath generation, and virtual reality (VR) for seamless integration. Sample panels are formed using the integrated system revealing new insights on the forming forces during the process – highlighting why an integrated system is desirable. Concepts from the proposed framework can be applied to other robotic forming processes and its merit is discussed under current digital manufacturing and industry 4.0 literature.

Doi:https://doi.org/10.1016/j.jmsy.2024.04.022

Download Paper

Efficient Representative Volume Element of a Matrix–Precipitate Microstructure—Application on AlSi10Mg Alloy

Published in Metals, 2024

In finite element models (FEMs), two- or three-dimensional Representative Volume Elements (RVEs) based on a statistical distribution of particles in a matrix can predict mechanical material properties. This article studies an alternative to 3D RVEs with a 2.5D RVE approach defined by a one-plane layer of 3D elements to model the material behavior. This 2.5D RVE relies on springs applied in the out-of-plane direction to constrain the two lateral deformations to be compatible, with the goal of achieving the isotropy of the studied material. The method is experimentally validated by the prediction of the tensile stress–strain curve of a bi-phasic microstructure of the AlSi10Mg alloy. Produced by additive manufacturing, the sample material becomes isotropic after friction stir processing post treatment. If a classical plane strain 2D RVE simulation is clearly too stiff compared to the experiment, the predictions of the stress–strain curves based on 2.5D RVE, 2D RVE with no transversal constraint (called 2D free RVE), and 3D RVE simulations are close to the experiments. The local stress fields within a 2.5D RVE present an interesting similarity with 3D RVE local fields, but differences with the 2D free RVE local results. Since a 2.5D RVE simplifies one spatial dimension, the simulations with this model are faster than the 3D RVE (factor 2580 in CPU or taking into account an optimal parallel computation, a factor 417 in real time). Such a discrepancy can affect the FEM2 multi-scale simulations or the time required to train a neural network, enhancing the interest in a 2.5D RVE model.

Doi:https://doi.org/10.3390/met14111244

Download Paper

Review of the Microstructural Impact on Creep Mechanisms and Performance for Laser Powder Bed Fusion Inconel 718

Published in Materials, 2025

Inconel 718 (IN718) is a polycrystalline nickel-based superalloy and one of the most widely used materials in the aerospace industry owing to its excellent mechanical performances at high temperatures, including creep resistance. Interest in additively manufactured components in aerospace is greatly increasing due to their ability to reduce material consumption, to manufacture complex parts, and to produce out-of-equilibrium microstructures, which can be beneficial for mechanical behavior. IN718’s properties are, however, very sensitive to microstructural features, which strongly depend on the manufacturing process and subsequent heat treatments. Additive manufacturing and, more specifically, Laser Powder Bed Fusion (LPBF) induces very high thermal gradients and anisotropic features due to its inherently directional nature, which largely defines the microstructure of the alloy. Hence, defining appropriate manufacturing parameters and heat treatments is critical to obtain appropriate mechanical behavior. This review aims to present the main microstructural features of IN718 produced by LPBF, the creep mechanisms taking place, the optimal microstructure for creep strength, and the most efficient heat treatments to yield such an optimized microstructure.

Doi:https://doi.org/10.3390/ma18020276

Download Paper

Acceleration of powder-bed-size thermal simulation considering scanning-path-scale through a pseudo-layer-wise equivalent heat flux model

Published in Journal of Manufacturing Processes, 2025

Part-scale modeling of the temperature field in metal powder bed additive manufacturing (AM) is critical for predicting mechanical properties of the AM-ed parts. Track-by-track heat transfer analysis is impractical due to the extensive number of layers and the intricate design of scan strategies for the heat source, particularly in the fabrication of specimen clusters or parts with complex geometry, where multiple regions in the powder bed are manufactured simultaneously. Many part-scale modeling approaches only focus on the thermal behavior of a single part without considering the thermal interaction from the surrounding parts to reduce computational cost. However, experimental observations have revealed that the temperature distribution along the building direction can vary among samples with identical local geometries. This discrepancy can be attributed to the heating effects from neighboring samples. In this study, we propose an integrated part-scale modeling framework that combines layer-wise equivalent heat flux attribution with layer-wise element activation. Before the layer-wise attribution, we justify the equivalent heat flux of individual layers through high-fidelity track-scale simulations. Unlike traditional heat transfer analysis for single parts, our analysis incorporates heat conduction effects through the powder bed between different fusion zones. The temperature data obtained from each equivalent layer using our approach shows consistency when compared to the experimental observations. This research presents an efficient, physically grounded method for modeling the thermal behavior of large AM specimen clusters, enhancing our understanding of temperature field evolution in AM and supporting the design of optimized scanning path strategies for large samples.

Doi:https://doi.org/10.1016/j.jmapro.2024.12.057

Download Paper

Exceptional strength paired with increased cold cracking susceptibility in laser powder bed fusion of a Mg-RE alloy

Published in Journal of Materials Science & Technology, 2025

Additive manufacturing (AM) of high-strength metallic alloys frequently encounters detrimental distortion and cracking, attributed to the accumulation of thermal stresses. These issues significantly impede the practical application of as-printed components. This study examines the Mg-15Gd-1Zn-0.4Zr (GZ151K, wt.%) alloy, a prototypical high-strength casting Mg-RE alloy, fabricated through laser powder bed fusion (LPBF). Despite achieving ultra-high strength, the GZ151K alloy concurrently exhibits a pronounced cold-cracking susceptibility. The as-printed GZ151K alloy consists of almost fully fine equiaxed grains with an average grain size of merely 2.87 µm. Subsequent direct aging (T5) heat treatment induces the formation of dense prismatic β’ precipitates. Consequently, the LPBF-T5 GZ151K alloy manifests an ultra-high yield strength of 405 MPa, surpassing all previously reported yield strengths for Mg alloys fabricated via LPBF and even exceeding that of its extrusion-T5 counterpart. Interestingly, as-printed GZ151K samples with a build height of 2 mm exhibit no cracking, whereas samples with build heights ranging from 4 to 18 mm demonstrate severe cold cracking. Thermal stress simulation also suggests that the cold cracking susceptibility increases significantly with increasing build height. The combination of high thermal stress and low ductility in the as-printed GZ151K alloy culminates in a high cold cracking susceptibility. This study offers novel insights into the intricate issue of cold cracking in the LPBF process of high-strength Mg alloys, highlighting the critical balance between achieving high strength and mitigating cold cracking susceptibility.

Doi:https://doi.org/10.1016/j.jmst.2024.07.005

Download Paper

Directed energy deposition on sheet metal forming for reinforcement structures

Published in Journal of Manufacturing Processes, 2025

While incremental forming processes can inexpensively create complex geometries from sheet metal, they struggle with adding sharp out of plane features for stiffness enhancement. With the implementation of directed-energy deposition (DED), an additive manufacturing process that locally deposits metal onto metallic substrates, reinforcement structures can be formed on the sheet metal. Furthermore, a design engineer may take advantage of the high residual stresses of DED to directly alter shapes in the substrate metal sheet. This hybrid forming-deposition process, as well as the application of local reinforcement, requires a good understanding of the process mechanism to predict expected shapes and minimize undesired deformations. In this work, numerical approaches are applied to evaluate heat transfer, thermal stress, and buckling of thin sheets under the stresses of deposition. These results are compared to analogous experiments conducted on an open-architecture laser-powder DED machine. The results of the thermal-mechanical analysis resemble the deformation trends observed in the experiments. However, the small-displacement formulation in the simulation used for ease of convergence does not fully capture the magnitude of the observed deformations. Nevertheless, the simulations effectively illustrate the effect of different scan strategies on the final deformed shape of the sheet metal.

Doi:https://doi.org/10.1016/j.jmapro.2025.03.120

Download Paper

  <h2 id="talks" class="archive__subtitle">talks</h2>
  <h2 id="teaching" class="archive__subtitle">teaching</h2>

From 2018 to 2022

Undergraduate course, Department of Mechanical Engineering, National University of Singapore

2018-2022, Department of Mechanical Engineering, National University of Singapore:

-ME1102 - Engineering Principles and Practice I

-ME2112 - Strength of Materials

-ME2115 - Mechanics of Machines: Vibration Lab


From 2022 to 2025

Student superviosion, , 2022

2018-2022, Department of Mechanical Engineering, National University of Singapore:

-Paper, software and coding supervision assistance for NUS Ph.D, Master and undergraduate students


2022-2023, Department of Mechanical Engineering, Northwestern University, USA:

-Software and coding supervision assistance for Ph.D students

    </div>     -->

    <!--  -->

portfolio

From 2018 to 2022

High-fidelity coupled CFD-FEM simulation on DED and LPBF

– corporation with ANSYS

Linked the high-fidelity molten pool dynamics model with the finite element solver for thermal stress simulation.

High-density dislocations in additively manufactured metals

– corporation with Shanghai Jiaotong University

Demonstrated that thermal stresses are the origin of high-density dislocations in additively manufactured metals using the coupled CFD-FEM simulation.

Physically informed data-driven prognostic model for the temperature prediction in AM

– corporation with Singapore A*STAR

High accuracy and significantly faster computation speed for the track-scale AM modeling based on the data-driven prediction (CNN, GPR, QR) of the isotherms and the isotherm-reconstructed temperature attribution on FEM model.

Pattern-oriented Strain Attribution in Part-scale Modeling of Additive Manufacturing

– corporation with Singapore A*STAR

Efficient large-scale AM modeling approaches with sound physical basis, where the layer-wise element progressive activation is applied with base strain pattern attributed onto the sample layers.

From 2022 to 2023

Hybrid Autonomous Manufacturing, Moving from Evolution to Revolution (HAMMER)

– corporation with The OHIO State University and so on.

High-fidelity English wheel simulation: distortion analysis of the sheet metal under rolling of two wheel of different size and curvature.

Micro-Casting of Titanium Alloy in Self-boiling Molds

Heat transfer analysis of liquid materials in multiple self-boiling molds for micro-casting.

DED on sheet metal forming

– corporation with Nissan

Deformation prediction using bulking analysis under the residual stress pattern achieved by track-scale DED simulation.

From 2024 to 2025

(AID4Greenest) - AI powered characterization and modelling for green steel technology

Funded by European Union

– corporation with Fraunhofer, IWM and IMDEA et al.

Fortran-based self-developed Lagamine coding platform for implementation of H. Morch visco-plasticity law & Development of the mean field creep model on Gitlab using Python.

publications

The origin of high-density dislocations in additively manufactured metals

Published in Materials Research Letters, 2020

The origin of dense dislocations in many additively manufactured metals remains a mystery. We here employed pure Cu as a prototype and fabricated the very challenging high-purity (>99.9%) bulk Cu by laser powder-bed-fusion (L-PBF) technique. We found that high-density dislocations were present in the as-built samples and these high-density dislocations were introduced on the fly during the L-PBF process. A newly developed multi-physics modeling was further employed to interpret the origin of these pre-existing dislocations, demonstrating that the compression-tension cycles rendered by the localized heating/cooling heterogeneity upon laser scanning are responsible for the residual high-density dislocations.

Doi:https://doi.org/10.1080/21663831.2020.1751739

Download Paper

High-fidelity modelling of thermal stress for additive manufacturing by linking thermal-fluid and mechanical models

Published in Materials & Design, 2020

The prediction of thermal stress and distortion is a prerequisite for high-quality additive manufacturing (AM). The widely applied thermo-mechanical model using the finite element method (FEM) leaves much to be improved due to their oversimplifications on material deposition, molten pool flow, etc. In this study, a high-fidelity modelling approach by linking the thermal-fluid (computational fluid dynamics, CFD) and mechanical models (named as CFD-FEM model) is developed to predict the thermal stress for AM taking into account the influences of thermal-fluid flow. Profiting from the precise temperature profiles and melt track geometry extracted from the thermal-fluid model as well as the remarkable flexibility of the quiet element method of FEM, this work aims at simulating the thermal stress distribution by involving physical changes in the AM process, e.g., melting and solidification of powder particles, molten pool evolution and inter-track inter-layer re-melting. Unlike the conventional thermo-mechanical analysis, in this approach, thermal stress calculation is purely based on a mechanical model where the thermal loads are applied by using a linear interpolation function to spatially and temporally map the temperature values from the thermal-fluid model’s cell centres into the FEM element nodes. With the proposed approach, the thermal stress evolution in the AM process of single track, multiple tracks and multiple layers are simulated, where the rough surfaces and internal voids can be well incorporated. Moreover, a conventional thermo-mechanical simulation of two tracks with predefined track geometry is conducted for cross comparison. Finally, the simulated thermal stress distribution can rationally explain the crack distribution observed in the experiments.

Doi:https://doi.org/10.1016/j.matdes.2020.109185

Download Paper

Enhanced strengthening and hardening via self-stabilized dislocation network in additively manufactured metals

Published in Materials Today, 2021

The advent of additive manufacturing (AM) offers the possibility of creating high-performance metallic materials with unique microstructure. Ultrafine dislocation cell structure in AM metals is believed to play a critical role in strengthening and hardening. However, its behavior is typically considered to be associated with alloying elements. Here we report that dislocations in AM metallic materials are self-stabilized even without the alloying effect. The heating–cooling cycles that are inherent to laser power-bed-fusion processes can stabilize dislocation network in situ by forming Lomer locks and a complex dislocation network. This unique dislocation assembly blocks and accumulates dislocations for strengthening and steady strain hardening, thereby rendering better material strength but several folds improvements in uniform tensile elongation compared to those made by traditional methods. The principles of dislocation manipulation and self-assembly are applicable to metals/alloys obtained by conventional routes in turn, through a simple post-cyclic deformation processing that mimics the micromechanics of AM. This work demonstrates the capability of AM to locally tune dislocation structures and achieve high-performance metallic materials.

Doi:https://doi.org/10.1016/j.mattod.2021.06.002

Download Paper

Crystal plasticity model of residual stress in additive manufacturing using the element elimination and reactivation method

Published in Computational Mechanics, 2021

Selective laser melting is receiving increasing interest as an additive manufacturing technique. Residual stresses induced by the large temperature gradients and inhomogeneous cooling process can favour the generation of cracks. In this work, a crystal plasticity finite element model is developed to simulate the formation of residual stresses and to understand the correlation between plastic deformation, grain orientation and residual stresses in the additive manufacturing process. The temperature profile and grain structure from thermal-fluid flow and grain growth simulations are implemented into the crystal plasticity model. An element elimination and reactivation method is proposed to model the melting and solidification and to reinitialize state variables, such as the plastic deformation, in the reactivated elements. The accuracy of this method is judged against previous method based on the stiffness degradation of liquid regions by comparing the plastic deformation as a function of time induced by thermal stresses. The method is used to investigate residual stresses parallel and perpendicular to the laser scan direction, and the correlation with the maximum Schmid factor of the grains along those directions. The magnitude of the residual stress can be predicted as a function of the depth, grain orientation and position with respect to the molten pool. The simulation results are directly comparable to X-ray diffraction experiments and stress–strain curves.

Doi:https://doi.org/10.1007/s00466-021-02116-z

Download Paper

Data-driven prognostic model for temperature field in additive manufacturing based on the high-fidelity thermal-fluid flow simulation

Published in Computer Methods in Applied Mechanics and Engineering, 2022

The process-structure–property relationship for additive manufacturing (AM) is typically derived starting from the temperature profile which can be achieved by the meso-scale thermal-fluid flow simulation with huge computational cost. We propose a data-driven prognostic approach with specialized physical constraints to rapidly predict the temperature profiles. The dataset is constructed from the physics-based thermal-fluid flow simulation results under different manufacturing parameters. The temperature field around the molten pool region is statistically characterized by the function parameters of the individual isotherms, which are essentially the output of the data-driven model based on the input manufacturing parameters, while the temperature field is reconstructed using the interpolation approach based on the predicted isotherms. The data-driven predicted temperature profiles are validated against those from the thermal-fluid flow simulations, and then further applied in the thermal stress and grain growth simulations, of which the results are compared with those using the temperature profile directly from thermal-fluid flow simulations. The results demonstrate that our data-driven approach is highly feasible in predicting the geometry features of the isotherms and temperature profiles around the molten pool regions.

Doi:https://doi.org/10.1016/j.cma.2022.114652

Download Paper

Metallic 4D Printing of Laser Stimulation

Published in Advanced Science, 2023

4D printing of metallic shape-morphing systems can be applied in many fields, including aerospace, smart manufacturing, naval equipment, and biomedical engineering. The existing forming materials for metallic 4D printing are still very limited except shape memory alloys. Herein, a 4D printing method to endow non-shape-memory metallic materials with active properties is presented, which could overcome the shape-forming limitation of traditional material processing technologies. The thermal stress spatial control of 316L stainless steel forming parts is achieved by programming the processing parameters during a laser powder bed fusion (LPBF) process. The printed parts can realize the shape changing of selected areas during or after forming process owing to stress release generated. It is demonstrated that complex metallic shape-morphing structures can be manufactured by this method. The principles of printing parameters programmed and thermal stress pre-set are also applicable to other thermoforming materials and additive manufacturing processes, which can expand not only the materials used for 4D printing but also the applications of 4D printing technologies.

Doi:https://doi.org/10.1002/advs.202206486

Download Paper

Factorial design analytics on effects of material parameter uncertainties in multiphysics modeling of additive manufacturing

Published in npj Computational Materials, 2023

A bottleneck in Laser Powder Bed Fusion (L-PBF) metal additive manufacturing (AM) is the quality inconsistency of its products. To address this issue without costly experimentation, computational multi-physics modeling has been used, but the effectiveness is limited by parameter uncertainties and their interactions. We propose a full factorial design and variable selection approach for the analytics of main and interaction effects arising from material parameter uncertainties in multi-physics models. Data is collected from high-fidelity thermal-fluid simulations based on a 2-level full factorial design for 5 selected material parameters. Crucial physical phenomena of the L-PBF process are analyzed to extract physics-based domain knowledge, which are used to establish a validation checkpoint for our study. Initial data visualization with half-normal probability plots, interaction plots and standard deviation plots, is used to assess if the checkpoint is being met. We then apply the combination of best subset selection and the LASSO method on multiple linear regression models for comprehensive variable selection. Analytics yield statistically and phyiscally validated findings with practical implications, emphasizing the importance of parameter interactions under uncertainty, and their relation to the underlying physics of L-PBF.

Doi:https://doi.org/10.1038/s41524-023-01004-9

Download Paper

Biomimetic 4D Printing Catapult: From Biological Prototype to Practical Implementation

Published in Advanced Functional Materials, 2023

4D printing technologies are currently suffering from the inability to produce rapid motions, which limit their applications that require fast shape transformation such as rapid unlocking and deployment of aerospace equipment. Herein, inspired by the shooting mechanisms of Viola verecunda fruit for seed dispersal, the 4D-printed biomimetic catapult is developed. Based on the structure change characteristics of gradient fan-shaped cells of the fruit pods during seed ejection, the biomimetic smart catapult is processed via the programming of spatial distribution of heterogeneous materials with various storage modulus enabled by additive manufacturing. This catapult can achieve high-speed ejection with the logically stimuli of external force, temperature, light, humidity, or electricity. The proposed biomimetic 4D printing strategy has broken through the limitations in motion speed, which helps fully unleash the potential of 4D printing.

Doi:https://doi.org/10.1002/adfm.202301286

Download Paper

Data-driven prediction of keyhole features in metal additive manufacturing based on physics-based simulation

Published in Journal of Intelligent Manufacturing, 2023

The defect formation is closely related to molten pool and keyhole features in metal additive manufacturing. Experimentation and physics-based simulation methods to capture the molten pool and keyhole features are expensive and time-consuming. A data-driven method is proposed in this work to efficiently predict the molten pool and keyhole features characterized by a series of fitting curves under given manufacturing parameters, instead of simply predicting the molten pool and keyhole sizes. The database consists of simulation cases with the high-fidelity thermal-fluid flow model. Molten pool melting regime, keyhole stability and keyhole type are recognized with the neural net pattern recognition. With the Gaussian process regression model, the keyhole dimensions are predicted and the keyhole contour is reconstructed. The comparison between predicted data and physics-based simulation results demonstrates the feasibility and accuracy of our data-driven model. Meanwhile, the predicted results can guide the selection of manufacturing parameters in actual production, and are also helpful to the further study of pores in additive manufacturing in academic research.

Doi:https://doi.org/10.1007/s10845-023-02157-6

Download Paper

A creep survey: from creep mechanism to macroscopic and microscopic models.

Published in METALLIC MICROSTRUCTURES EUROPEAN LECTURES ONLINE, 2024

At high temperature, metallic material creep is difficult to avoid. The understanding of the creep mechanisms helps metallurgists to design optimal alloy compositions and the prediction of a component life is a key input to manage safe maintenance and to define operational cost of any production line (solar plant parts, heat exchanger, any turbine parts loaded at high temperature…).

📥 Download slides (PPTX)

On the feasibility of an integrated English wheel system

Published in Journal of Manufacturing Systems, 2024

The English wheel is a highly flexible traditional metalworking tool that allows skilled craftsmen to form compound curves on sheet metal panels. Historically, geometric accuracy and repeatability of formed panels using the English wheel have been tied to the operator leading to limited industrial adoption. This paper presents a novel framework for an integrated English wheeling system that leverages robot forming with a newly developed adaptable gripper/end-effector, metrology for deformed geometry tracking and tolerance measurements, integrated sensors for real-time forming force measurements and control, computational modeling for tracking pattern/toolpath generation, and virtual reality (VR) for seamless integration. Sample panels are formed using the integrated system revealing new insights on the forming forces during the process – highlighting why an integrated system is desirable. Concepts from the proposed framework can be applied to other robotic forming processes and its merit is discussed under current digital manufacturing and industry 4.0 literature.

Doi:https://doi.org/10.1016/j.jmsy.2024.04.022

Download Paper

Efficient Representative Volume Element of a Matrix–Precipitate Microstructure—Application on AlSi10Mg Alloy

Published in Metals, 2024

In finite element models (FEMs), two- or three-dimensional Representative Volume Elements (RVEs) based on a statistical distribution of particles in a matrix can predict mechanical material properties. This article studies an alternative to 3D RVEs with a 2.5D RVE approach defined by a one-plane layer of 3D elements to model the material behavior. This 2.5D RVE relies on springs applied in the out-of-plane direction to constrain the two lateral deformations to be compatible, with the goal of achieving the isotropy of the studied material. The method is experimentally validated by the prediction of the tensile stress–strain curve of a bi-phasic microstructure of the AlSi10Mg alloy. Produced by additive manufacturing, the sample material becomes isotropic after friction stir processing post treatment. If a classical plane strain 2D RVE simulation is clearly too stiff compared to the experiment, the predictions of the stress–strain curves based on 2.5D RVE, 2D RVE with no transversal constraint (called 2D free RVE), and 3D RVE simulations are close to the experiments. The local stress fields within a 2.5D RVE present an interesting similarity with 3D RVE local fields, but differences with the 2D free RVE local results. Since a 2.5D RVE simplifies one spatial dimension, the simulations with this model are faster than the 3D RVE (factor 2580 in CPU or taking into account an optimal parallel computation, a factor 417 in real time). Such a discrepancy can affect the FEM2 multi-scale simulations or the time required to train a neural network, enhancing the interest in a 2.5D RVE model.

Doi:https://doi.org/10.3390/met14111244

Download Paper

Review of the Microstructural Impact on Creep Mechanisms and Performance for Laser Powder Bed Fusion Inconel 718

Published in Materials, 2025

Inconel 718 (IN718) is a polycrystalline nickel-based superalloy and one of the most widely used materials in the aerospace industry owing to its excellent mechanical performances at high temperatures, including creep resistance. Interest in additively manufactured components in aerospace is greatly increasing due to their ability to reduce material consumption, to manufacture complex parts, and to produce out-of-equilibrium microstructures, which can be beneficial for mechanical behavior. IN718’s properties are, however, very sensitive to microstructural features, which strongly depend on the manufacturing process and subsequent heat treatments. Additive manufacturing and, more specifically, Laser Powder Bed Fusion (LPBF) induces very high thermal gradients and anisotropic features due to its inherently directional nature, which largely defines the microstructure of the alloy. Hence, defining appropriate manufacturing parameters and heat treatments is critical to obtain appropriate mechanical behavior. This review aims to present the main microstructural features of IN718 produced by LPBF, the creep mechanisms taking place, the optimal microstructure for creep strength, and the most efficient heat treatments to yield such an optimized microstructure.

Doi:https://doi.org/10.3390/ma18020276

Download Paper

Acceleration of powder-bed-size thermal simulation considering scanning-path-scale through a pseudo-layer-wise equivalent heat flux model

Published in Journal of Manufacturing Processes, 2025

Part-scale modeling of the temperature field in metal powder bed additive manufacturing (AM) is critical for predicting mechanical properties of the AM-ed parts. Track-by-track heat transfer analysis is impractical due to the extensive number of layers and the intricate design of scan strategies for the heat source, particularly in the fabrication of specimen clusters or parts with complex geometry, where multiple regions in the powder bed are manufactured simultaneously. Many part-scale modeling approaches only focus on the thermal behavior of a single part without considering the thermal interaction from the surrounding parts to reduce computational cost. However, experimental observations have revealed that the temperature distribution along the building direction can vary among samples with identical local geometries. This discrepancy can be attributed to the heating effects from neighboring samples. In this study, we propose an integrated part-scale modeling framework that combines layer-wise equivalent heat flux attribution with layer-wise element activation. Before the layer-wise attribution, we justify the equivalent heat flux of individual layers through high-fidelity track-scale simulations. Unlike traditional heat transfer analysis for single parts, our analysis incorporates heat conduction effects through the powder bed between different fusion zones. The temperature data obtained from each equivalent layer using our approach shows consistency when compared to the experimental observations. This research presents an efficient, physically grounded method for modeling the thermal behavior of large AM specimen clusters, enhancing our understanding of temperature field evolution in AM and supporting the design of optimized scanning path strategies for large samples.

Doi:https://doi.org/10.1016/j.jmapro.2024.12.057

Download Paper

Exceptional strength paired with increased cold cracking susceptibility in laser powder bed fusion of a Mg-RE alloy

Published in Journal of Materials Science & Technology, 2025

Additive manufacturing (AM) of high-strength metallic alloys frequently encounters detrimental distortion and cracking, attributed to the accumulation of thermal stresses. These issues significantly impede the practical application of as-printed components. This study examines the Mg-15Gd-1Zn-0.4Zr (GZ151K, wt.%) alloy, a prototypical high-strength casting Mg-RE alloy, fabricated through laser powder bed fusion (LPBF). Despite achieving ultra-high strength, the GZ151K alloy concurrently exhibits a pronounced cold-cracking susceptibility. The as-printed GZ151K alloy consists of almost fully fine equiaxed grains with an average grain size of merely 2.87 µm. Subsequent direct aging (T5) heat treatment induces the formation of dense prismatic β’ precipitates. Consequently, the LPBF-T5 GZ151K alloy manifests an ultra-high yield strength of 405 MPa, surpassing all previously reported yield strengths for Mg alloys fabricated via LPBF and even exceeding that of its extrusion-T5 counterpart. Interestingly, as-printed GZ151K samples with a build height of 2 mm exhibit no cracking, whereas samples with build heights ranging from 4 to 18 mm demonstrate severe cold cracking. Thermal stress simulation also suggests that the cold cracking susceptibility increases significantly with increasing build height. The combination of high thermal stress and low ductility in the as-printed GZ151K alloy culminates in a high cold cracking susceptibility. This study offers novel insights into the intricate issue of cold cracking in the LPBF process of high-strength Mg alloys, highlighting the critical balance between achieving high strength and mitigating cold cracking susceptibility.

Doi:https://doi.org/10.1016/j.jmst.2024.07.005

Download Paper

Directed energy deposition on sheet metal forming for reinforcement structures

Published in Journal of Manufacturing Processes, 2025

While incremental forming processes can inexpensively create complex geometries from sheet metal, they struggle with adding sharp out of plane features for stiffness enhancement. With the implementation of directed-energy deposition (DED), an additive manufacturing process that locally deposits metal onto metallic substrates, reinforcement structures can be formed on the sheet metal. Furthermore, a design engineer may take advantage of the high residual stresses of DED to directly alter shapes in the substrate metal sheet. This hybrid forming-deposition process, as well as the application of local reinforcement, requires a good understanding of the process mechanism to predict expected shapes and minimize undesired deformations. In this work, numerical approaches are applied to evaluate heat transfer, thermal stress, and buckling of thin sheets under the stresses of deposition. These results are compared to analogous experiments conducted on an open-architecture laser-powder DED machine. The results of the thermal-mechanical analysis resemble the deformation trends observed in the experiments. However, the small-displacement formulation in the simulation used for ease of convergence does not fully capture the magnitude of the observed deformations. Nevertheless, the simulations effectively illustrate the effect of different scan strategies on the final deformed shape of the sheet metal.

Doi:https://doi.org/10.1016/j.jmapro.2025.03.120

Download Paper

talks

teaching

From 2018 to 2022

Undergraduate course, Department of Mechanical Engineering, National University of Singapore

2018-2022, Department of Mechanical Engineering, National University of Singapore:

-ME1102 - Engineering Principles and Practice I

-ME2112 - Strength of Materials

-ME2115 - Mechanics of Machines: Vibration Lab


From 2022 to 2025

Student superviosion, , 2022

2018-2022, Department of Mechanical Engineering, National University of Singapore:

-Paper, software and coding supervision assistance for NUS Ph.D, Master and undergraduate students


2022-2023, Department of Mechanical Engineering, Northwestern University, USA:

-Software and coding supervision assistance for Ph.D students

</article> </div>

CV

Your Sidebar Name

none@example.org
Earth, , US

Summary

Currently employed at Red Brick University. Short biography for the left-hand sidebar

Education

  • Ph.D in Version Control Theory
    2018
    GitHub University
  • M.S. in Jekyll
    2014
    GitHub University
  • B.S. in GitHub
    2012
    GitHub University

Publications

  • Paper Title Number 1
    2009
    Journal 1
    This paper is about the number 1. The number 2 is left for future work.
  • Paper Title Number 2
    2010
    Journal 1
    This paper is about the number 2. The number 3 is left for future work.
  • Paper Title Number 3
    2015
    Journal 1
    This paper is about the number 3. The number 4 is left for future work.
  • Paper Title Number 4
    2024
    GitHub Journal of Bugs
    This paper is about fixing template issue #693.

Presentations

  • Talk 1 on Relevant Topic in Your Field
    2012
    UC San Francisco, Department of Testing
    San Francisco, CA, USA
  • Tutorial 1 on Relevant Topic in Your Field
    2013
    UC-Berkeley Institute for Testing Science
    Berkeley, CA, USA
  • Talk 2 on Relevant Topic in Your Field
    2014
    London School of Testing
    London, UK
  • Conference Proceeding talk 3 on Relevant Topic in Your Field
    2014
    Testing Institute of America 2014 Annual Conference
    Los Angeles, CA, USA

Teaching

  • Teaching experience 1
    2014
    University 1, Department
    Role: Undergraduate course
  • Teaching experience 2
    2015
    University 1, Department
    Role: Workshop

Portfolio

  • Portfolio item number 1
    Portfolio
    Short description of portfolio item number 1
</div></div> -->

Your Sidebar Name

none@example.org
Earth, , US

Summary

Currently employed at Red Brick University. Short biography for the left-hand sidebar

Education

  • Ph.D in Version Control Theory
    2018
    GitHub University
  • M.S. in Jekyll
    2014
    GitHub University
  • B.S. in GitHub
    2012
    GitHub University

Publications

  • Paper Title Number 1
    2009
    Journal 1
    This paper is about the number 1. The number 2 is left for future work.
  • Paper Title Number 2
    2010
    Journal 1
    This paper is about the number 2. The number 3 is left for future work.
  • Paper Title Number 3
    2015
    Journal 1
    This paper is about the number 3. The number 4 is left for future work.
  • Paper Title Number 4
    2024
    GitHub Journal of Bugs
    This paper is about fixing template issue #693.

Presentations

  • Talk 1 on Relevant Topic in Your Field
    2012
    UC San Francisco, Department of Testing
    San Francisco, CA, USA
  • Tutorial 1 on Relevant Topic in Your Field
    2013
    UC-Berkeley Institute for Testing Science
    Berkeley, CA, USA
  • Talk 2 on Relevant Topic in Your Field
    2014
    London School of Testing
    London, UK
  • Conference Proceeding talk 3 on Relevant Topic in Your Field
    2014
    Testing Institute of America 2014 Annual Conference
    Los Angeles, CA, USA

Teaching

  • Teaching experience 1
    2014
    University 1, Department
    Role: Undergraduate course
  • Teaching experience 2
    2015
    University 1, Department
    Role: Workshop

Portfolio

  • Portfolio item number 1
    Portfolio
    Short description of portfolio item number 1

CV

Education

  • Ph.D in Version Control Theory, GitHub University, 2018 (expected)
  • M.S. in Jekyll, GitHub University, 2014
  • B.S. in GitHub, GitHub University, 2012

Work experience

  • Spring 2024: Academic Pages Collaborator
    • GitHub University
    • Duties includes: Updates and improvements to template
    • Supervisor: The Users
  • Fall 2015: Research Assistant
    • GitHub University
    • Duties included: Merging pull requests
    • Supervisor: Professor Hub
  • Summer 2015: Research Assistant
    • GitHub University
    • Duties included: Tagging issues
    • Supervisor: Professor Git

Skills

  • Skill 1
  • Skill 2
    • Sub-skill 2.1
    • Sub-skill 2.2
    • Sub-skill 2.3
  • Skill 3

Publications

Talks

Teaching

Service and leadership

  • Currently signed in to 43 different slack teams

:root{--global-base-color: #7a8288;--global-bg-color: #fff;--global-footer-bg-color: #f2f3f3;--global-border-color: #f2f3f3;--global-dark-border-color: #bdc1c4;--global-code-background-color: #fafafa;--global-code-text-color: #313436;--global-fig-caption-color: mix(#fff, #494e52, 25%);--global-link-color: #52adc8;--global-link-color-hover: mix(#000, #2f7f93, 25%);--global-link-color-visited: mix(#fff, #2f7f93, 25%);--global-masthead-link-color: #494e52;--global-masthead-link-color-hover: mix(#000, #7a8288, 25%);--global-text-color: #494e52;--global-text-color-light: #9ba1a6;--global-thead-color: #f2f3f3}html[data-theme="dark"]{--global-base-color: #474747;--global-bg-color: #474747;--global-footer-bg-color: #474747;--global-border-color: #bdc1c4;--global-dark-border-color: #dadada;--global-code-background-color: #fafafa;--global-code-text-color: #313436;--global-fig-caption-color: #bdc1c4;--global-link-color: #0ea1c5;--global-link-color-hover: #0b7994;--global-link-color-visited: #4ab9d4;--global-masthead-link-color: #fff;--global-masthead-link-color-hover: #dadada;--global-text-color: #fff;--global-text-color-light: #bdc1c4;--global-thead-color: #ededed}a:focus{outline:thin dotted #f89406;outline:5px auto #f89406;outline-offset:-2px}*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}html{box-sizing:border-box;background-color:var(--global-bg-color);font-size:16px;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}@media (min-width: 48em){html{font-size:18px}}body{margin:0}::-moz-selection{color:#fff;background:#000}::selection{color:#fff;background:#000}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}a{color:var(--global-link-color)}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}html{position:relative;min-height:100%}body{color:var(--global-text-color);background-color:var(--global-bg-color);margin:0;padding:70px 0 0;padding-bottom:9em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;line-height:1.5}body.overflow--hidden{overflow:hidden}h1,h2,h3,h4,h5,h6{margin:2em 0 0.5em;line-height:1.2;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-weight:bold}h1{margin-top:0;font-size:1.563em}h2{font-size:1.25em}h3{font-size:1em}h4{font-size:.75em}h5{font-size:.75em}h6{font-size:.75em}small,.small{font-size:.75em}p{margin-bottom:1.3em}u,ins{text-decoration:none;border-bottom:1px solid var(--global-text-color)}u a,ins a{color:inherit}del a{color:inherit}p,pre,blockquote,ul,ol,dl,figure,table,fieldset{orphans:3;widows:3}abbr[title],abbr[data-original-title]{text-decoration:none;cursor:help;border-bottom:1px dotted var(--global-text-color)}blockquote{margin:2em 1em 2em 0;padding-left:1em;padding-right:1em;font-style:italic;border-left:0.25em solid var(--global-border-color)}blockquote cite{font-style:italic}blockquote cite:before{content:"\2014";padding-right:5px}a:hover,a:active{outline:0}tt,code,kbd,samp,pre{font-family:Monaco,Consolas,"Lucida Console",monospace}pre{overflow-x:auto}a>code,figcaption>code,li>code,p>code,td>code{color:var(--global-code-text-color);padding-top:0.1rem;padding-bottom:0.1rem;font-size:.75em;background:var(--global-code-background-color);border:1px solid var(--global-thead-color);border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}a>code:before,a>code:after,figcaption>code:before,figcaption>code:after,li>code:before,li>code:after,p>code:before,p>code:after,td>code:before,td>code:after{letter-spacing:-0.2em;content:"\00a0"}a>code{color:inherit}pre>code{color:var(--global-code-text-color)}hr{display:block;margin:1em 0;border:0;border-top:1px solid var(--global-border-color)}ul li,ol li{margin-bottom:0.5em}li ul,li ol{margin-top:0.5em}figure{display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:start;align-items:flex-start;flex-wrap:wrap;margin:2em 0}figure img,figure iframe,figure .fluid-width-video-wrapper{margin-bottom:1em}figure img{width:100%;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}figure>a{display:block}@media (min-width: 37.5em){figure.half>a,figure.half>img{width:calc(50% - 0.5em)}}figure.half figcaption{width:100%}@media (min-width: 37.5em){figure.third>a,figure.third>img{width:calc(33.3333% - 0.5em)}}figure.third figcaption{width:100%}figcaption{margin-bottom:0.5em;color:var(--global-fig-caption-color);font-family:Georgia,Times,serif;font-size:.75em}figcaption a{color:inherit;text-decoration:none;border-bottom:1px solid var(--global-border-color);-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}figcaption a:hover{color:#000;border-bottom-color:#000}svg:not(:root){overflow:hidden}nav ul{margin:0;padding:0}nav li{list-style:none}nav a{text-decoration:none}nav ul li,nav ol li{margin-bottom:0}nav li ul,nav li ol{margin-top:0}@-webkit-keyframes intro{0%{opacity:0}100%{opacity:1}}@keyframes intro{0%{opacity:0}100%{opacity:1}}b,i,strong,em,blockquote,p,q,span,figure,img,h1,h2,header,input,a,tr,td,form button,input[type="submit"],.btn,#goog-wm-sb,.highlight,.archive__item-teaser{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}@media print{.masthead,.toc,.page__share,.page__related,.ads,.page__footer{display:none}}.hidden{display:none;visibility:hidden}.load{display:none}.transparent{opacity:0}.visually-hidden,.screen-reader-text,.screen-reader-text span,.screen-reader-shortcut{position:absolute !important;clip:rect(1px, 1px, 1px, 1px);height:1px !important;width:1px !important;border:0 !important;overflow:hidden}body:hover .visually-hidden a,body:hover .visually-hidden input,body:hover .visually-hidden button{display:none !important}.screen-reader-text:focus,.screen-reader-shortcut:focus{clip:auto !important;height:auto !important;width:auto !important;display:block;font-size:1em;font-weight:bold;padding:15px 23px 14px;background:#fff;z-index:100000;text-decoration:none;box-shadow:0 0 2px 2px rgba(0,0,0,0.6)}.skip-link{position:fixed;z-index:20;margin:0;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;white-space:nowrap}.skip-link li{height:0;width:0;list-style:none}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.cf{clear:both}.wrapper{max-width:925px;margin-left:auto;margin-right:auto}.wrapper:after{content:" ";display:block;clear:both}.wordwrap{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}.align-left{display:block;margin-left:auto;margin-right:auto}@media (min-width: 37.5em){.align-left{float:left;margin-right:1em}}.align-right{display:block;margin-left:auto;margin-right:auto}@media (min-width: 37.5em){.align-right{float:right;margin-left:1em}}.align-center{display:block;margin-left:auto;margin-right:auto}@media (min-width: 57.8125em){.full{margin-right:-19.4915254237% !important}}.icon{display:inline-block;fill:currentColor;width:1em;height:1.1em;line-height:1;position:relative;top:-0.1em;vertical-align:middle}.icon-pad-right{padding-right:0.5em;margin-right:0.5em}.social-icons .fa{color:#000}.social-icons .fa-bluesky,.social-icons .fa-bluesky-square{color:#1184fe}.social-icons .fa-behance,.social-icons .fa-behance-square{color:#1769FF}.social-icons .fa-dribbble{color:#ea4c89}.social-icons .fa-facebook,.social-icons .fa-facebook-square{color:#3b5998}.social-icons .fa-flickr{color:#ff0084}.social-icons .fa-foursquare{color:#0072b1}.social-icons .fa-github,.social-icons .fa-github-alt,.social-icons .fa-github-square{color:#171516}.social-icons .fa-google-plus,.social-icons .fa-google-plus-square{color:#dd4b39}.social-icons .fa-instagram{color:#517fa4}.social-icons .fa-kaggle,.social-icons .fa-kaggle-square{color:#20c0ff}.social-icons .fa-lastfm,.social-icons .fa-lastfm-square{color:#d51007}.social-icons .fa-linkedin,.social-icons .fa-linkedin-square{color:#007bb6}.social-icons .fa-mastodon,.social-icons .fa-mastodon-square{color:#6364ff}.social-icons .ai-orcid,.social-icons .ai-orcid-square{color:#a6ce39}.social-icons .fa-pinterest,.social-icons .fa-pinterest-p,.social-icons .fa-pinterest-square{color:#cb2027}.social-icons .fa-rss,.social-icons .fa-rss-square{color:#fa9b39}.social-icons .fa-soundcloud{color:#f30}.social-icons .fa-stack-exchange,.social-icons .fa-stack-overflow{color:#fe7a15}.social-icons .fa-tumblr,.social-icons .fa-tumblr-square{color:#32506d}.social-icons .fa-twitter,.social-icons .fa-twitter-square{color:#55acee}.social-icons .fa-vimeo,.social-icons .fa-vimeo-square{color:#1ab7ea}.social-icons .fa-vine{color:#00bf8f}.social-icons .fa-youtube,.social-icons .fa-youtube-square,.social-icons .fa-youtube-play{color:#b00}.social-icons .fa-xing,.social-icons .fa-xing-square{color:#006567}.navicon{position:relative;width:28px;height:4px;background:#fff;margin:auto;-webkit-transition:0.3s;transition:0.3s}.navicon:before,.navicon:after{content:"";position:absolute;left:0;width:28px;height:4px;background:#fff;-webkit-transition:0.3s;transition:0.3s}.navicon:before{top:-8px}.navicon:after{bottom:-8px}.close .navicon{background:transparent}.close .navicon:before,.close .navicon:after{-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;top:0;width:28px}.close .navicon:before{-webkit-transform:rotate3d(0, 0, 1, 45deg);transform:rotate3d(0, 0, 1, 45deg)}.close .navicon:after{-webkit-transform:rotate3d(0, 0, 1, -45deg);transform:rotate3d(0, 0, 1, -45deg)}@media (min-width: 57.8125em){.sticky{clear:both;position:-webkit-sticky;position:sticky;top:2em}.sticky::after{clear:both;content:"";display:table}.sticky>*{display:block}}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.show-modal{overflow:hidden;position:relative}.show-modal:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;z-index:999;background-color:rgba(255,255,255,0.85)}.show-modal .modal{display:block}.modal{display:none;position:fixed;width:300px;top:50%;left:50%;margin-left:-150px;margin-top:-150px;min-height:0;z-index:9999;background:#fff;border:1px solid var(--global-border-color);border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}.modal__title{margin:0;padding:0.5em 1em}.modal__supporting-text{padding:0 1em 0.5em 1em}.modal__actions{padding:0.5em 1em;border-top:1px solid var(--global-border-color)}.footnote{color:var(--global-text-color-light);text-decoration:none}.footnotes{color:var(--global-text-color-light)}.footnotes ol,.footnotes li,.footnotes p{margin-bottom:0;font-size:.75em}a.reversefootnote{color:var(--global-text-color-light);text-decoration:none}a.reversefootnote:hover{text-decoration:underline}.required{color:#ee5f5b;font-weight:bold}table{margin-bottom:1em;width:100%;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;border-collapse:collapse;border:1px solid var(--global-border-color)}table+table{margin-top:1em}thead{background-color:var(--global-border-color);border-bottom:1px solid var(--global-border-color)}th{padding:0.5em;font-weight:bold;text-align:left;border-right:1px solid var(--global-border-color)}td{padding:0.5em;border-bottom:1px solid var(--global-border-color);border-right:1px solid var(--global-border-color)}tr,td,th{vertical-align:middle}.btn,#goog-wm-sb{display:inline-block;margin-bottom:0.25em;padding:0.5em 1em;color:#fff !important;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;font-weight:bold;text-align:center;text-decoration:none;background-color:var(--global-base-color);border:0 !important;border-radius:4px;cursor:pointer}.btn:hover,#goog-wm-sb:hover{background-color:#333}.btn .icon,#goog-wm-sb .icon{margin-right:0.5em}.btn .icon+.hidden,#goog-wm-sb .icon+.hidden{margin-left:-0.5em}.btn--block{display:block;width:100%}.btn--block+.btn--block{margin-top:0.25em}.btn--inverse{color:var(--global-text-color-light) !important;border:1px solid var(--global-border-color) !important;background-color:var(--global-bg-color)}.btn--inverse:hover{color:#fff !important;border-color:var(--global-text-color-light)}.btn--light-outline{border:1px solid #fff !important;background-color:transparent}.btn--info{background-color:#2f7f93}.btn--info:hover{background-color:#266676}.btn--warning{background-color:#f89406}.btn--warning:hover{background-color:#c67605}.btn--success{background-color:#62c462}.btn--success:hover{background-color:#4e9d4e}.btn--danger{background-color:#ee5f5b}.btn--danger:hover{background-color:#be4c49}.btn--disabled{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:0.65}.btn--bluesky{background-color:#1184fe}.btn--bluesky:hover{background-color:#0e6acb}.btn--facebook{background-color:#3b5998}.btn--facebook:hover{background-color:#2f477a}.btn--twitter{background-color:#55acee}.btn--twitter:hover{background-color:#448abe}.btn--google-plus{background-color:#dd4b39}.btn--google-plus:hover{background-color:#b13c2e}.btn--linkedin{background-color:#007bb6}.btn--linkedin:hover{background-color:#006292}.btn--x-large{font-size:1.25em}.btn--large{font-size:1em}.btn--small{font-size:.6875em}.notice{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(122,130,136,0.25);color:var(--global-code-text-color)}.notice h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice h4{margin-bottom:0;font-size:1em}.notice p:last-child{margin-bottom:0 !important}.notice h4+p{margin-top:0;padding-top:0}.notice a{color:#7a8288}.notice a:hover{color:#494e52}.notice code{background-color:#f8f9f9}.notice ul:last-child{margin-bottom:0}.notice--primary{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(122,130,136,0.25);color:var(--global-code-text-color)}.notice--primary h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--primary h4{margin-bottom:0;font-size:1em}.notice--primary p:last-child{margin-bottom:0 !important}.notice--primary h4+p{margin-top:0;padding-top:0}.notice--primary a{color:#7a8288}.notice--primary a:hover{color:#494e52}.notice--primary code{background-color:#f8f9f9}.notice--primary ul:last-child{margin-bottom:0}.notice--info{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#eaf2f4;border-radius:4px;box-shadow:0 1px 1px rgba(47,127,147,0.25);color:var(--global-code-text-color)}.notice--info h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--info h4{margin-bottom:0;font-size:1em}.notice--info p:last-child{margin-bottom:0 !important}.notice--info h4+p{margin-top:0;padding-top:0}.notice--info a{color:#2f7f93}.notice--info a:hover{color:#1c4c58}.notice--info code{background-color:#f5f9fa}.notice--info ul:last-child{margin-bottom:0}.notice--warning{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#fef4e6;border-radius:4px;box-shadow:0 1px 1px rgba(248,148,6,0.25);color:var(--global-code-text-color)}.notice--warning h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--warning h4{margin-bottom:0;font-size:1em}.notice--warning p:last-child{margin-bottom:0 !important}.notice--warning h4+p{margin-top:0;padding-top:0}.notice--warning a{color:#f89406}.notice--warning a:hover{color:#955904}.notice--warning code{background-color:#fffaf3}.notice--warning ul:last-child{margin-bottom:0}.notice--success{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#eff9ef;border-radius:4px;box-shadow:0 1px 1px rgba(98,196,98,0.25);color:var(--global-code-text-color)}.notice--success h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--success h4{margin-bottom:0;font-size:1em}.notice--success p:last-child{margin-bottom:0 !important}.notice--success h4+p{margin-top:0;padding-top:0}.notice--success a{color:#62c462}.notice--success a:hover{color:#3b763b}.notice--success code{background-color:#f7fcf7}.notice--success ul:last-child{margin-bottom:0}.notice--danger{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#fdefef;border-radius:4px;box-shadow:0 1px 1px rgba(238,95,91,0.25);color:var(--global-code-text-color)}.notice--danger h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--danger h4{margin-bottom:0;font-size:1em}.notice--danger p:last-child{margin-bottom:0 !important}.notice--danger h4+p{margin-top:0;padding-top:0}.notice--danger a{color:#ee5f5b}.notice--danger a:hover{color:#8f3937}.notice--danger code{background-color:#fef7f7}.notice--danger ul:last-child{margin-bottom:0}.masthead{position:fixed;background:var(--global-bg-color);height:fit-content;top:0;width:100%;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.15s;animation-delay:0.15s;z-index:20}.masthead::after{content:"";position:absolute;bottom:0;height:1px;background:var(--global-border-color);width:100%}.masthead__inner-wrap{max-width:925px;margin-left:auto;margin-right:auto;clear:both;padding:0.5em 1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.masthead__inner-wrap:after{content:" ";display:block;clear:both}.masthead__inner-wrap::after{clear:both;content:"";display:table}@media (min-width: 80em){.masthead__inner-wrap{max-width:1280px}}.masthead__inner-wrap nav{z-index:10}.masthead__inner-wrap a{text-decoration:none}.masthead__menu ul{margin:0;padding:0;clear:both;list-style-type:none}.masthead__menu-item{background-color:var(--global-bg-color);display:block;list-style-type:none;white-space:nowrap}.masthead__menu-item--lg{padding-right:2em;font-weight:700}.breadcrumbs{max-width:925px;margin-left:auto;margin-right:auto;clear:both;margin-top:0;margin-bottom:0;padding-left:2em;padding-right:2em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.30s;animation-delay:0.30s}.breadcrumbs:after{content:" ";display:block;clear:both}.breadcrumbs::after{clear:both;content:"";display:table}@media (min-width: 57.8125em){.breadcrumbs{padding-left:1em;padding-right:1em}}@media (min-width: 80em){.breadcrumbs{max-width:1280px}}.breadcrumbs ol{padding:0;list-style:none;font-size:.75em}@media (min-width: 57.8125em){.breadcrumbs ol{width:83.0508474576%;float:right;margin-right:0}}@media (min-width: 80em){.breadcrumbs ol{padding-left:4.2372881356%}}.breadcrumbs li{display:inline}.breadcrumbs .current{font-weight:bold}.pagination{clear:both;width:100%;float:left;margin-left:0;margin-right:0;clear:both;margin-top:1em;padding-top:1em}.pagination::after{clear:both;content:"";display:table}.pagination ul{margin:0;padding:0;list-style-type:none;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.pagination li{display:block;float:left;margin-left:-1px}.pagination li a{margin-bottom:0.25em;padding:0.5em 1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:14px;font-weight:bold;line-height:1.5;text-align:center;text-decoration:none;color:var(--global-text-color-light);border:1px solid var(--global-border-color);border-radius:0}.pagination li a:hover{color:var(--global-link-color-hover)}.pagination li a.current{color:#fff;background:var(--global-base-color)}.pagination li a.disabled{color:var(--global-text-color-light);pointer-events:none;cursor:not-allowed}.pagination li:first-child{margin-left:0}.pagination li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination--pager{display:block;padding:1em 2em;float:left;width:50%;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em;font-weight:bold;text-align:center;text-decoration:none;color:var(--global-text-color-light);border:1px solid var(--global-border-color);border-radius:4px}.pagination--pager:hover{color:var(--global-link-color-hover)}.pagination--pager:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.pagination--pager:last-child{margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.pagination--pager.disabled{color:var(--global-text-color-light);pointer-events:none;cursor:not-allowed}.page__content+.pagination,.page__meta+.pagination,.comment__date+.pagination,.page__share+.pagination,.page__comments+.pagination{margin-top:2em;padding-top:2em;border-top:1px solid var(--global-border-color)}.greedy-nav{position:relative;min-width:250px;background:var(--global-bg-color)}.greedy-nav a{display:block;margin:0 1rem;padding:0.5rem 0;color:var(--global-masthead-link-color);text-decoration:none}.greedy-nav a:hover{color:var(--global-masthead-link-color-hover)}.greedy-nav button{position:absolute;height:2.5rem;right:0;padding:0 0.5rem;border:0;outline:none;background-color:var(--global-base-color);color:#fff;cursor:pointer;z-index:100}.greedy-nav .visible-links{display:table}.greedy-nav .visible-links li{display:table-cell;vertical-align:middle}.greedy-nav .visible-links li:first-child{font-weight:bold;text-wrap:wrap}.greedy-nav .visible-links li:first-child a{margin-left:0}.greedy-nav .visible-links li:last-child a{margin-right:0}.greedy-nav .visible-links #theme-toggle a{width:25px;display:flex;justify-content:center;cursor:pointer}.greedy-nav .visible-links a{position:relative}.greedy-nav .visible-links a:before{content:"";position:absolute;left:0;bottom:0;height:4px;background:var(--global-border-color);width:100%;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;-webkit-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0)}.greedy-nav .visible-links a:hover:before{-webkit-transform:scaleX(1);-ms-transform:scaleX(1);transform:scaleX(1)}.greedy-nav .hidden-links{position:absolute;top:100%;right:0;margin-top:15px;padding:5px;border:1px solid var(--global-border-color);border-radius:4px;background:#fff;box-shadow:0 0 10px rgba(0,0,0,0.25)}.greedy-nav .hidden-links a{margin:0;padding:10px 20px;font-size:1em}.greedy-nav .hidden-links a:hover{color:var(--global-masthead-link-color-hover);background:var(--global-border-color)}.greedy-nav .hidden-links:before{content:"";position:absolute;top:-11px;right:10px;width:0;border-style:solid;border-width:0 10px 10px;border-color:var(--global-border-color) transparent;display:block;z-index:0}.greedy-nav .hidden-links:after{content:"";position:absolute;top:-10px;right:10px;width:0;border-style:solid;border-width:0 10px 10px;border-color:#fff transparent;display:block;z-index:1}.greedy-nav .hidden-links li{display:block;border-bottom:1px solid var(--global-border-color)}.greedy-nav .hidden-links li:last-child{border-bottom:none}.nav__list{font-size:1.25rem}.nav__list ul{margin-bottom:1em}.nav__list a{display:block;padding:0.125em 0;color:inherit}.nav__list a:hover{text-decoration:underline}.nav__list .active{margin-left:-0.5em;padding-left:0.5em;padding-right:0.5em;color:#fff;font-weight:bold;background:var(--global-base-color);border-radius:4px}.nav__list .active:hover{color:#fff}.nav__title{margin:0;padding:0.5rem 1rem;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em;font-weight:bold}.nav__sub-title{display:block;margin:0.5rem 0;padding:0.5rem 0;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;font-weight:bold;text-transform:uppercase;border-bottom:1px solid var(--global-border-color)}.toc{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;color:var(--global-text-color-light);text-transform:uppercase;letter-spacing:1px;background-color:#fff;border:1px solid var(--global-border-color);border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}.toc .nav__title{color:#fff;font-size:.75em;background:var(--global-base-color);border-top-left-radius:4px;border-top-right-radius:4px}.toc__menu{margin:0;padding:0;width:100%;list-style:none;font-size:0.8rem}.toc__menu a{display:block;padding:0.5rem 1rem;color:var(--global-code-text-color);font-size:.6875em;font-weight:bold;line-height:1.5;border-bottom:1px solid var(--global-border-color);text-decoration-line:none !important}.toc__menu a:hover{color:#000;background:var(--global-link-color-hover)}.toc__menu>li:last-child a{border-bottom:none}.toc__menu li ul>li a{padding-left:2rem;font-weight:normal}.toc__menu li>ul li{display:none}@media (min-width: 48em){.toc__menu li>ul li{display:block}}.page__footer{clear:both;background-color:var(--global-footer-bg-color);color:var(--global-text-color-light);float:left;margin-left:0;margin-right:0;width:100%;clear:both;position:absolute;bottom:0em;height:auto;margin-top:3em;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.45s;animation-delay:0.45s;border-top:1px solid var(--global-dark-border-color)}.page__footer::after{clear:both;content:"";display:table}.page__footer footer{clear:both;margin-left:auto;margin-right:auto;margin-top:1em;max-width:100%;padding:0 1em 1em}.page__footer footer::after{clear:both;content:"";display:table}@media (min-width: 80em){.page__footer footer{max-width:1280px}}.page__footer a{color:inherit;text-decoration:none}.page__footer a:hover{text-decoration:underline}.page__footer .fas,.page__footer .fab,.page__footer .far,.page__footer .fal{color:var(--global-text-color-light)}.page__footer-copyright{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.6875em}.page__footer-follow ul{margin:0;padding:0;list-style-type:none}.page__footer-follow li{display:inline-block;padding-top:5px;padding-bottom:5px;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;text-transform:uppercase}.page__footer-follow li+li:before{content:"";padding-right:5px}.page__footer-follow a{padding-right:10px;font-weight:bold}.page__footer-follow .social-icons a{white-space:nowrap}div.highlighter-rouge,figure.highlight{position:relative;margin-bottom:1em;padding:1em;border:1px solid var(--global-border-color);border-radius:4px;background-color:var(--global-code-background-color);box-shadow:0 1px 1px rgba(0,0,0,0.125);font-size:1.25em}div.highlighter-rouge:before,figure.highlight:before{position:absolute;top:0;right:0;padding:0.5em;background-color:#f2f3f3;content:"\f121";font-family:"Font Awesome 6 Free" !important;font-size:.75em;line-height:1;text-transform:none;speak:none}div.highlighter-rouge .highlight,figure.highlight .highlight{margin:0;font-family:Monaco,Consolas,"Lucida Console",monospace;font-size:.75em;line-height:1.8}.highlight table td{padding:5px}.highlight table pre{margin:0}.highlight .c{color:#93a1a1}.highlight .err{color:#586e75}.highlight .g{color:#586e75}.highlight .k{color:#859900}.highlight .l{color:#586e75}.highlight .n{color:#586e75}.highlight .o{color:#859900}.highlight .x{color:#cb4b16}.highlight .p{color:#586e75}.highlight .cm{color:#93a1a1}.highlight .cp{color:#859900}.highlight .c1{color:#93a1a1}.highlight .cs{color:#859900}.highlight .gd{color:#2aa198}.highlight .ge{color:#586e75;font-style:italic}.highlight .gr{color:#dc322f}.highlight .gh{color:#cb4b16}.highlight .gi{color:#859900}.highlight .go{color:#586e75}.highlight .gp{color:#586e75}.highlight .gs{color:#586e75;font-weight:bold}.highlight .gu{color:#cb4b16}.highlight .gt{color:#586e75}.highlight .kc{color:#cb4b16}.highlight .kd{color:#22b3eb}.highlight .kn{color:#859900}.highlight .kp{color:#859900}.highlight .kr{color:#22b3eb}.highlight .kt{color:#dc322f}.highlight .ld{color:#586e75}.highlight .m{color:#2aa198}.highlight .s{color:#2aa198}.highlight .na{color:#586e75}.highlight .nb{color:#B58900}.highlight .nc{color:#22b3eb}.highlight .no{color:#cb4b16}.highlight .nd{color:#22b3eb}.highlight .ni{color:#cb4b16}.highlight .ne{color:#cb4b16}.highlight .nf{color:#22b3eb}.highlight .nl{color:#586e75}.highlight .nn{color:#586e75}.highlight .nx{color:#586e75}.highlight .py{color:#586e75}.highlight .nt{color:#22b3eb}.highlight .nv{color:#22b3eb}.highlight .ow{color:#859900}.highlight .w{color:#586e75}.highlight .mf{color:#2aa198}.highlight .mh{color:#2aa198}.highlight .mi{color:#2aa198}.highlight .mo{color:#2aa198}.highlight .sb{color:#93a1a1}.highlight .sc{color:#2aa198}.highlight .sd{color:#586e75}.highlight .s2{color:#2aa198}.highlight .se{color:#cb4b16}.highlight .sh{color:#586e75}.highlight .si{color:#2aa198}.highlight .sx{color:#2aa198}.highlight .sr{color:#dc322f}.highlight .s1{color:#2aa198}.highlight .ss{color:#2aa198}.highlight .bp{color:#22b3eb}.highlight .vc{color:#22b3eb}.highlight .vg{color:#22b3eb}.highlight .vi{color:#22b3eb}.highlight .il{color:#2aa198}form{margin:0 0 5px 0}form fieldset{margin-bottom:5px;padding:0;border-width:0}form legend{display:block;width:100%;margin-bottom:10px;*margin-left:-7px;padding:0;color:var(--global-text-color);border:0;border-bottom:1px solid #ccc;white-space:normal}form p{margin-bottom:5px / 2}form ul{list-style-type:none;margin:0 0 5px 0;padding:0}form br{display:none}label,input,button,select,textarea{vertical-align:baseline;*vertical-align:middle}input,button,select,textarea{box-sizing:border-box;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}label{display:block;margin-bottom:0.25em;color:var(--global-text-color);cursor:pointer}label small{font-size:.75em}label input,label textarea,label select{display:block}input,textarea,select{display:inline-block;width:100%;padding:0.25em;margin-bottom:0.5em;color:var(--global-text-color);background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}input:hover,textarea:hover,select:hover{border-color:var(--global-base-color)}.input-mini{width:60px}.input-small{width:90px}input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer;border-radius:0;border:0 \9}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="image"]{border:0;box-shadow:none}input[type="file"]{width:auto;padding:initial;line-height:initial;border:initial;background-color:transparent;background-color:initial;box-shadow:none}input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;cursor:pointer;*overflow:visible}select,input[type="file"]{*margin-top:4px}select{width:auto;background-color:#fff}select[multiple],select[size]{height:auto}textarea{resize:vertical;height:auto;overflow:auto;vertical-align:top}input[type="hidden"]{display:none}.form{position:relative}.radio,.checkbox{padding-left:18px;font-weight:normal}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{opacity:0.5;cursor:not-allowed}input:focus,textarea:focus{border-color:var(--global-border-color);outline:0;outline:thin dotted \9}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus,select:focus{box-shadow:none}.help-block,.help-inline{color:#2f7f93}.help-block{display:block;margin-bottom:1em;line-height:1em}.help-inline{display:inline-block;vertical-align:middle;padding-left:5px}.form-inline input,.form-inline textarea,.form-inline select{display:inline-block;margin-bottom:0}.form-inline label{display:inline-block}.form-inline .radio,.form-inline .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px}.form-search input,.form-search textarea,.form-search select{display:inline-block;margin-bottom:0}.form-search .search-query{padding-left:14px;padding-right:14px;margin-bottom:0;border-radius:14px}.form-search label{display:inline-block}.form-search .radio,.form-search .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px}.form--loading:before{content:''}.form--loading .form__spinner{display:block}.form:before{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(255,255,255,0.7);z-index:10}.form__spinner{display:none;position:absolute;top:50%;left:50%;z-index:11}#goog-fixurl ul{list-style:none;margin-left:0;padding-left:0}#goog-fixurl ul li{list-style-type:none}#goog-wm-qt{width:auto;margin-right:10px;margin-bottom:20px;padding:8px 20px;display:inline-block;font-size:.75em;background-color:#fff;color:#000;border-width:2px !important;border-style:solid !important;border-color:gray;border-radius:4px}#main{max-width:925px;margin-left:auto;margin-right:auto;clear:both;margin-top:2em;padding-left:1em;padding-right:1em;animation:intro 0.3s both;animation-delay:0.35s}#main:after{content:" ";display:block;clear:both}#main::after{clear:both;content:"";display:table}@media (min-width: 80em){#main{max-width:1280px}}@media (min-width: 57.8125em){.page{width:83.0508474576%;float:right;margin-right:0;padding-left:4.2372881356%;padding-right:16.9491525424%}}.page .page__inner-wrap{clear:both;width:100%;float:left;margin-left:0;margin-right:0}.page .page__inner-wrap .page__content,.page .page__inner-wrap .page__meta,.page .page__inner-wrap .comment__date,.page .page__inner-wrap .page__share{clear:both;width:100%;float:left;margin-left:0;margin-right:0}.page__title{margin-top:0;line-height:1}.page__title+.page__meta,.page__title+.comment__date{margin-top:-0.5em}.page__lead{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1.25em}.page__content h2{padding-bottom:0.5em;border-bottom:1px solid var(--global-border-color)}.page__content p,.page__content li,.page__content dl{font-size:1em}.page__content p{margin:0 0 1.3em}.page__content a{text-decoration:underline}.page__content a:hover{text-decoration:underline}.page__content a:hover img{box-shadow:0 0 10px rgba(0,0,0,0.25)}.page__content dt{margin-top:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-weight:bold}.page__content dd{margin-left:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em}.page__content .small{font-size:.75em}.page__content blockquote+.small{margin-top:-1.5em;padding-left:1.25rem}.page__hero{position:relative;margin-bottom:2em;clear:both;animation:intro 0.3s both;animation-delay:0.25s}.page__hero::after{clear:both;content:"";display:table}.page__hero--overlay{position:relative;margin-bottom:2em;padding:3em 0;clear:both;background-size:cover;background-repeat:no-repeat;background-position:center;animation:intro 0.3s both;animation-delay:0.25s}.page__hero--overlay::after{clear:both;content:"";display:table}.page__hero--overlay a{color:#fff}.page__hero--overlay .wrapper{padding-left:1em;padding-right:1em}@media (min-width: 80em){.page__hero--overlay .wrapper{max-width:1280px}}.page__hero--overlay .page__title,.page__hero--overlay .page__meta,.page__hero--overlay .comment__date,.page__hero--overlay .page__lead,.page__hero--overlay .btn,.page__hero--overlay #goog-wm-sb{color:#fff;text-shadow:1px 1px 4px rgba(0,0,0,0.5)}.page__hero--overlay .page__lead{max-width:768px}.page__hero--overlay .page__title{font-size:1.953em}@media (min-width: 37.5em){.page__hero--overlay .page__title{font-size:2.441em}}.page__hero-image{width:100%;height:auto;-ms-interpolation-mode:bicubic}.page__hero-caption{position:absolute;bottom:0;right:0;margin:0 auto;padding:2px 5px;color:#fff;font-family:Georgia,Times,serif;font-size:.6875em;background:#000;text-align:right;z-index:5;opacity:0.5;border-radius:4px 0 4px 0}@media (min-width: 57.8125em){.page__hero-caption{padding:5px 10px}}.page__hero-caption a{color:#fff;text-decoration:none}.page__share{margin-top:2em;padding-top:1em;border-top:1px solid var(--global-border-color)}@media (max-width: 37.5em){.page__share .btn span,.page__share #goog-wm-sb span{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}}.page__share-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}.page__meta,.comment__date{margin-top:2em;color:var(--global-text-color-light);font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em}.page__meta p,.comment__date p{margin:0}.page__meta a,.comment__date a{color:inherit}.page__meta-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}.page__taxonomy .sep{display:none}.page__taxonomy strong{margin-right:10px}.page__taxonomy-item{display:inline-block;margin-right:5px;margin-bottom:8px;padding:5px 10px;text-decoration:none;border:1px solid var(--global-border-color);border-radius:4px}.page__taxonomy-item:hover{text-decoration:none;color:var(--global-link-color-hover)}.page__comments{clear:both;width:100%;float:left;margin-left:0;margin-right:0}.page__comments-title{margin-top:2rem;margin-bottom:10px;padding-top:2rem;font-size:.75em;border-top:1px solid var(--global-border-color);text-transform:uppercase}.page__comments-form{padding:1em;background:var(--global-border-color);transition:all 0.2s ease-in-out}.page__comments-form.disabled input,.page__comments-form.disabled button,.page__comments-form.disabled textarea,.page__comments-form.disabled label{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:0.65}.comment{clear:both;margin:1em 0}.comment::after{clear:both;content:"";display:table}.comment:not(:last-child){border-bottom:1px solid var(--global-border-color)}.comment__avatar-wrapper{float:left;width:60px;height:60px}@media (min-width: 57.8125em){.comment__avatar-wrapper{width:100px;height:100px}}.comment__avatar{width:40px;height:40px;border-radius:50%}@media (min-width: 57.8125em){.comment__avatar{width:80px;height:80px;padding:5px;border:1px solid var(--global-border-color)}}.comment__content-wrapper{float:right;width:calc(100% - 60px)}@media (min-width: 57.8125em){.comment__content-wrapper{width:calc(100% - 100px)}}.comment__author{margin:0}.comment__author a{text-decoration:none}.comment__date{margin:0}.comment__date a{text-decoration:none}.page__related{margin-top:2em;padding-top:1em;border-top:1px solid var(--global-border-color);clear:both;float:left}.page__related::after{clear:both;content:"";display:table}@media (min-width: 57.8125em){.page__related{margin-left:21.186440678%}}.page__related a{color:inherit;text-decoration:none}.page__related-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}.archive{margin-bottom:2em}@media (min-width: 48em){.archive{width:100%;float:left;margin-left:0;margin-right:0}}@media (min-width: 57.8125em){.archive{width:83.0508474576%;float:right;margin-right:0;padding-left:4.2372881356%}}.archive a{text-decoration:underline}.archive a:hover{text-decoration:underline}.archive a:hover img{box-shadow:0 0 10px rgba(0,0,0,0.25)}.archive__subtitle{margin:1.414em 0 0;padding-bottom:0.5em;font-size:1em;color:var(--global-text-color-light);border-bottom:1px solid var(--global-border-color)}.archive__subtitle+.list__item .archive__item-title{margin-top:0.5em}.archive__item-title{margin-bottom:0.25em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.archive__item-title a+a{opacity:0.5}.page__content .archive__item-title{margin-top:1em;border-bottom:none}.archive__item-excerpt{margin-top:0;font-size:.75em}.archive__item-excerpt+p{text-indent:0}.archive__item-teaser{border-radius:4px;overflow:hidden}.archive__item-teaser img{width:100%}.archive__item:hover .archive__item-teaser{box-shadow:0 0 10px rgba(0,0,0,0.25)}.archive__item:hover .archive__item-title{text-decoration:underline}@media (min-width: 48em){.list__item{padding-right:auto}}@media (min-width: 57.8125em){.list__item{padding-right:auto}}@media (min-width: 80em){.list__item{padding-right:auto}}.list__item .page__meta,.list__item .comment__date{margin:0 0 4px}.grid__item{margin-bottom:2em}.grid__item .page__meta,.grid__item .comment__date{margin:0 0 4px}.grid__item .archive__item-title{margin-top:0.5em;font-size:1em}.grid__item .archive__item-excerpt{display:none}@media (min-width: 37.5em){.grid__item{width:48.9795918367%;float:left}.grid__item:nth-child(2n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.grid__item:nth-child(2n+2){margin-left:51.0204081633%;margin-right:-100%;clear:none}.grid__item .archive__item-teaser{max-height:200px}}@media (min-width: 48em){.grid__item{margin-left:0;margin-right:0;width:23.4693877551%;float:left}.grid__item:nth-child(4n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.grid__item:nth-child(4n+2){margin-left:25.5102040816%;margin-right:-100%;clear:none}.grid__item:nth-child(4n+3){margin-left:51.0204081633%;margin-right:-100%;clear:none}.grid__item:nth-child(4n+4){margin-left:76.5306122449%;margin-right:-100%;clear:none}.grid__item .archive__item-teaser{max-height:120px}.grid__item .archive__item-excerpt{display:block;font-size:.75em}}.feature__wrapper{clear:both;margin-bottom:2em;border-bottom:1px solid var(--global-border-color)}.feature__wrapper::after{clear:both;content:"";display:table}.feature__item{margin-bottom:2em;font-size:1.25rem}@media (min-width: 37.5em){.feature__item{margin-bottom:0;width:32.2033898305%;float:left}.feature__item:nth-child(3n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.feature__item:nth-child(3n+2){margin-left:33.8983050847%;margin-right:-100%;clear:none}.feature__item:nth-child(3n+3){margin-left:67.7966101695%;margin-right:-100%;clear:none}.feature__item .feature__item-teaser{max-height:200px;overflow:hidden}}.feature__item--left{clear:both;width:100%;float:left;margin-left:0;margin-right:0;font-size:1.25rem}.feature__item--left .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item--left .archive__item-teaser{width:40.6779661017%;float:left;margin-right:1.6949152542%}.feature__item--left .archive__item-body{width:57.6271186441%;float:right;margin-right:0;padding-left:4.2372881356%;padding-right:8.4745762712%}}.feature__item--right{clear:both;width:100%;float:left;margin-left:0;margin-right:0;font-size:1.25rem}.feature__item--right .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item--right{text-align:right}.feature__item--right .archive__item-teaser{width:40.6779661017%;float:right;margin-left:1.6949152542%}.feature__item--right .archive__item-body{width:57.6271186441%;float:left;margin-left:0;padding-left:4.2372881356%;padding-right:8.4745762712%}}.feature__item--center{clear:both;width:100%;float:left;margin-left:0;margin-right:0;font-size:1.25rem}.feature__item--center .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item--center{text-align:center}.feature__item--center .archive__item-teaser{margin:0 auto;width:40.6779661017%}.feature__item--center .archive__item-body{margin:0 auto;width:57.6271186441%}}.sidebar{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);clear:both;margin-bottom:1em}.sidebar::after{clear:both;content:"";display:table}@media (orientation: portrait){.sidebar{margin-top:1em}}@media screen and (min-width: 1024px){.sidebar{height:100vh;overflow-y:auto;position:fixed;padding-top:70px}}@media (min-width: 57.8125em){.sidebar{width:15.2542372881%;float:left;margin-right:1.6949152542%;opacity:1;-webkit-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out}.sidebar:hover{opacity:1}}@media (min-width: 80em){.sidebar{max-width:250px;padding-right:0}}.sidebar h2,.sidebar h3,.sidebar h4,.sidebar h5,.sidebar h6{margin-bottom:0;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.sidebar h3,.sidebar h4{font-size:1em}.sidebar p,.sidebar li{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;line-height:1.5}.sidebar img{width:100%}.sidebar__right{margin-bottom:1em}@media (min-width: 57.8125em){.sidebar__right{position:relative;float:right;width:auto;margin-left:2.5423728814%;z-index:10}}@media (min-width: 80em){.sidebar__right{width:auto}}.author__avatar{display:table-cell;vertical-align:top;width:36px}@media (min-width: 57.8125em){.author__avatar{display:block;width:auto;height:auto}}.author__avatar img{max-width:175px;border-radius:50%}@media (min-width: 57.8125em){.author__avatar img{padding:5px;border:1px solid var(--global-border-color)}}.author__content{display:table-cell;vertical-align:top;padding-left:15px;padding-right:25px;line-height:1}@media (min-width: 57.8125em){.author__content{display:block;width:100%;padding-left:0;padding-right:0}}.author__name{margin:0}@media (min-width: 57.8125em){.author__name{margin-top:10px;margin-bottom:10px}}.sidebar .author__name{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em}.sidebar .author__desktop{display:none}@media screen and (min-width: 1024px){.sidebar .author__desktop{display:block}}.author__pronouns{margin:0}@media (min-width: 57.8125em){.author__pronouns{margin-top:10px;margin-bottom:10px}}.author__bio{margin:0}@media (min-width: 57.8125em){.author__bio{margin-top:10px;margin-bottom:20px}}.author__urls-wrapper{position:relative;display:table-cell;vertical-align:middle;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;z-index:10;position:relative;cursor:pointer}.author__urls-wrapper li:last-child a{margin-bottom:0}@media (min-width: 57.8125em){.author__urls-wrapper{display:block}}.author__urls-wrapper button{margin-bottom:0}@media (min-width: 57.8125em){.author__urls-wrapper button{display:none}}.author__urls{display:none;position:absolute;right:0;margin-top:15px;padding:10px;list-style-type:none;border:1px solid var(--global-border-color);border-radius:4px;background:var(--global-bg-color);z-index:-1;box-shadow:0 0 10px rgba(0,0,0,0.25);cursor:default}@media (min-width: 57.8125em){.author__urls{display:block;position:relative;margin:0;padding:0;border:0;background:transparent;box-shadow:none}}.author__urls:before{display:block;content:"";position:absolute;top:-11px;left:calc(50% - 10px);width:0;border-style:solid;border-width:0 10px 10px;border-color:var(--global-border-color) transparent;z-index:0}@media (min-width: 57.8125em){.author__urls:before{display:none}}.author__urls:after{display:block;content:"";position:absolute;top:-10px;left:calc(50% - 10px);width:0;border-style:solid;border-width:0 10px 10px;border-color:#fff transparent;z-index:1}@media (min-width: 57.8125em){.author__urls:after{display:none}}.author__urls li{white-space:nowrap}.author__urls a{display:block;margin-bottom:5px;padding-right:5px;padding-top:2px;padding-bottom:2px;color:inherit;font-size:1em;text-decoration:none}.author__urls a:hover{text-decoration:underline}/*! * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fa,.fa-classic,.fa-sharp,.fas,.fa-solid,.far,.fa-regular,.fab,.fa-brands{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fas,.fa-classic,.fa-solid,.far,.fa-regular{font-family:'Font Awesome 6 Free'}.fab,.fa-brands{font-family:'Font Awesome 6 Brands'}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color, #eee);border-radius:var(--fa-border-radius, .1em);border-style:var(--fa-border-style, solid);border-width:var(--fa-border-width, .08em);padding:var(--fa-border-padding, 0.2em 0.25em 0.15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, .3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, .3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1))}.fa-fade{animation-name:fa-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1))}.fa-beat-fade{animation-name:fa-beat-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{animation-name:fa-shake;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin{animation-name:fa-spin;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 2s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, steps(8))}@media (prefers-reduced-motion: reduce){.fa-beat,.fa-bounce,.fa-fade,.fa-beat-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%, 90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-bounce{0%{transform:scale(1, 1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0)}57%{transform:scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em))}64%{transform:scale(1, 1) translateY(0)}100%{transform:scale(1, 1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, 0.4)}}@keyframes fa-beat-fade{0%, 100%{opacity:var(--fa-beat-fade-opacity, 0.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%, 24%{transform:rotate(-18deg)}12%, 28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%, 100%{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scale(-1, 1)}.fa-flip-vertical{transform:scale(1, -1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1, -1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle, 0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0::before{content:"\30 "}.fa-1::before{content:"\31 "}.fa-2::before{content:"\32 "}.fa-3::before{content:"\33 "}.fa-4::before{content:"\34 "}.fa-5::before{content:"\35 "}.fa-6::before{content:"\36 "}.fa-7::before{content:"\37 "}.fa-8::before{content:"\38 "}.fa-9::before{content:"\39 "}.fa-fill-drip::before{content:""}.fa-arrows-to-circle::before{content:""}.fa-circle-chevron-right::before{content:""}.fa-chevron-circle-right::before{content:""}.fa-at::before{content:"\@"}.fa-trash-can::before{content:""}.fa-trash-alt::before{content:""}.fa-text-height::before{content:""}.fa-user-xmark::before{content:""}.fa-user-times::before{content:""}.fa-stethoscope::before{content:""}.fa-message::before{content:""}.fa-comment-alt::before{content:""}.fa-info::before{content:""}.fa-down-left-and-up-right-to-center::before{content:""}.fa-compress-alt::before{content:""}.fa-explosion::before{content:""}.fa-file-lines::before{content:""}.fa-file-alt::before{content:""}.fa-file-text::before{content:""}.fa-wave-square::before{content:""}.fa-ring::before{content:""}.fa-building-un::before{content:""}.fa-dice-three::before{content:""}.fa-calendar-days::before{content:""}.fa-calendar-alt::before{content:""}.fa-anchor-circle-check::before{content:""}.fa-building-circle-arrow-right::before{content:""}.fa-volleyball::before{content:""}.fa-volleyball-ball::before{content:""}.fa-arrows-up-to-line::before{content:""}.fa-sort-down::before{content:""}.fa-sort-desc::before{content:""}.fa-circle-minus::before{content:""}.fa-minus-circle::before{content:""}.fa-door-open::before{content:""}.fa-right-from-bracket::before{content:""}.fa-sign-out-alt::before{content:""}.fa-atom::before{content:""}.fa-soap::before{content:""}.fa-icons::before{content:""}.fa-heart-music-camera-bolt::before{content:""}.fa-microphone-lines-slash::before{content:""}.fa-microphone-alt-slash::before{content:""}.fa-bridge-circle-check::before{content:""}.fa-pump-medical::before{content:""}.fa-fingerprint::before{content:""}.fa-hand-point-right::before{content:""}.fa-magnifying-glass-location::before{content:""}.fa-search-location::before{content:""}.fa-forward-step::before{content:""}.fa-step-forward::before{content:""}.fa-face-smile-beam::before{content:""}.fa-smile-beam::before{content:""}.fa-flag-checkered::before{content:""}.fa-football::before{content:""}.fa-football-ball::before{content:""}.fa-school-circle-exclamation::before{content:""}.fa-crop::before{content:""}.fa-angles-down::before{content:""}.fa-angle-double-down::before{content:""}.fa-users-rectangle::before{content:""}.fa-people-roof::before{content:""}.fa-people-line::before{content:""}.fa-beer-mug-empty::before{content:""}.fa-beer::before{content:""}.fa-diagram-predecessor::before{content:""}.fa-arrow-up-long::before{content:""}.fa-long-arrow-up::before{content:""}.fa-fire-flame-simple::before{content:""}.fa-burn::before{content:""}.fa-person::before{content:""}.fa-male::before{content:""}.fa-laptop::before{content:""}.fa-file-csv::before{content:""}.fa-menorah::before{content:""}.fa-truck-plane::before{content:""}.fa-record-vinyl::before{content:""}.fa-face-grin-stars::before{content:""}.fa-grin-stars::before{content:""}.fa-bong::before{content:""}.fa-spaghetti-monster-flying::before{content:""}.fa-pastafarianism::before{content:""}.fa-arrow-down-up-across-line::before{content:""}.fa-spoon::before{content:""}.fa-utensil-spoon::before{content:""}.fa-jar-wheat::before{content:""}.fa-envelopes-bulk::before{content:""}.fa-mail-bulk::before{content:""}.fa-file-circle-exclamation::before{content:""}.fa-circle-h::before{content:""}.fa-hospital-symbol::before{content:""}.fa-pager::before{content:""}.fa-address-book::before{content:""}.fa-contact-book::before{content:""}.fa-strikethrough::before{content:""}.fa-k::before{content:"K"}.fa-landmark-flag::before{content:""}.fa-pencil::before{content:""}.fa-pencil-alt::before{content:""}.fa-backward::before{content:""}.fa-caret-right::before{content:""}.fa-comments::before{content:""}.fa-paste::before{content:""}.fa-file-clipboard::before{content:""}.fa-code-pull-request::before{content:""}.fa-clipboard-list::before{content:""}.fa-truck-ramp-box::before{content:""}.fa-truck-loading::before{content:""}.fa-user-check::before{content:""}.fa-vial-virus::before{content:""}.fa-sheet-plastic::before{content:""}.fa-blog::before{content:""}.fa-user-ninja::before{content:""}.fa-person-arrow-up-from-line::before{content:""}.fa-scroll-torah::before{content:""}.fa-torah::before{content:""}.fa-broom-ball::before{content:""}.fa-quidditch::before{content:""}.fa-quidditch-broom-ball::before{content:""}.fa-toggle-off::before{content:""}.fa-box-archive::before{content:""}.fa-archive::before{content:""}.fa-person-drowning::before{content:""}.fa-arrow-down-9-1::before{content:""}.fa-sort-numeric-desc::before{content:""}.fa-sort-numeric-down-alt::before{content:""}.fa-face-grin-tongue-squint::before{content:""}.fa-grin-tongue-squint::before{content:""}.fa-spray-can::before{content:""}.fa-truck-monster::before{content:""}.fa-w::before{content:"W"}.fa-earth-africa::before{content:""}.fa-globe-africa::before{content:""}.fa-rainbow::before{content:""}.fa-circle-notch::before{content:""}.fa-tablet-screen-button::before{content:""}.fa-tablet-alt::before{content:""}.fa-paw::before{content:""}.fa-cloud::before{content:""}.fa-trowel-bricks::before{content:""}.fa-face-flushed::before{content:""}.fa-flushed::before{content:""}.fa-hospital-user::before{content:""}.fa-tent-arrow-left-right::before{content:""}.fa-gavel::before{content:""}.fa-legal::before{content:""}.fa-binoculars::before{content:""}.fa-microphone-slash::before{content:""}.fa-box-tissue::before{content:""}.fa-motorcycle::before{content:""}.fa-bell-concierge::before{content:""}.fa-concierge-bell::before{content:""}.fa-pen-ruler::before{content:""}.fa-pencil-ruler::before{content:""}.fa-people-arrows::before{content:""}.fa-people-arrows-left-right::before{content:""}.fa-mars-and-venus-burst::before{content:""}.fa-square-caret-right::before{content:""}.fa-caret-square-right::before{content:""}.fa-scissors::before{content:""}.fa-cut::before{content:""}.fa-sun-plant-wilt::before{content:""}.fa-toilets-portable::before{content:""}.fa-hockey-puck::before{content:""}.fa-table::before{content:""}.fa-magnifying-glass-arrow-right::before{content:""}.fa-tachograph-digital::before{content:""}.fa-digital-tachograph::before{content:""}.fa-users-slash::before{content:""}.fa-clover::before{content:""}.fa-reply::before{content:""}.fa-mail-reply::before{content:""}.fa-star-and-crescent::before{content:""}.fa-house-fire::before{content:""}.fa-square-minus::before{content:""}.fa-minus-square::before{content:""}.fa-helicopter::before{content:""}.fa-compass::before{content:""}.fa-square-caret-down::before{content:""}.fa-caret-square-down::before{content:""}.fa-file-circle-question::before{content:""}.fa-laptop-code::before{content:""}.fa-swatchbook::before{content:""}.fa-prescription-bottle::before{content:""}.fa-bars::before{content:""}.fa-navicon::before{content:""}.fa-people-group::before{content:""}.fa-hourglass-end::before{content:""}.fa-hourglass-3::before{content:""}.fa-heart-crack::before{content:""}.fa-heart-broken::before{content:""}.fa-square-up-right::before{content:""}.fa-external-link-square-alt::before{content:""}.fa-face-kiss-beam::before{content:""}.fa-kiss-beam::before{content:""}.fa-film::before{content:""}.fa-ruler-horizontal::before{content:""}.fa-people-robbery::before{content:""}.fa-lightbulb::before{content:""}.fa-caret-left::before{content:""}.fa-circle-exclamation::before{content:""}.fa-exclamation-circle::before{content:""}.fa-school-circle-xmark::before{content:""}.fa-arrow-right-from-bracket::before{content:""}.fa-sign-out::before{content:""}.fa-circle-chevron-down::before{content:""}.fa-chevron-circle-down::before{content:""}.fa-unlock-keyhole::before{content:""}.fa-unlock-alt::before{content:""}.fa-cloud-showers-heavy::before{content:""}.fa-headphones-simple::before{content:""}.fa-headphones-alt::before{content:""}.fa-sitemap::before{content:""}.fa-circle-dollar-to-slot::before{content:""}.fa-donate::before{content:""}.fa-memory::before{content:""}.fa-road-spikes::before{content:""}.fa-fire-burner::before{content:""}.fa-flag::before{content:""}.fa-hanukiah::before{content:""}.fa-feather::before{content:""}.fa-volume-low::before{content:""}.fa-volume-down::before{content:""}.fa-comment-slash::before{content:""}.fa-cloud-sun-rain::before{content:""}.fa-compress::before{content:""}.fa-wheat-awn::before{content:""}.fa-wheat-alt::before{content:""}.fa-ankh::before{content:""}.fa-hands-holding-child::before{content:""}.fa-asterisk::before{content:"\*"}.fa-square-check::before{content:""}.fa-check-square::before{content:""}.fa-peseta-sign::before{content:""}.fa-heading::before{content:""}.fa-header::before{content:""}.fa-ghost::before{content:""}.fa-list::before{content:""}.fa-list-squares::before{content:""}.fa-square-phone-flip::before{content:""}.fa-phone-square-alt::before{content:""}.fa-cart-plus::before{content:""}.fa-gamepad::before{content:""}.fa-circle-dot::before{content:""}.fa-dot-circle::before{content:""}.fa-face-dizzy::before{content:""}.fa-dizzy::before{content:""}.fa-egg::before{content:""}.fa-house-medical-circle-xmark::before{content:""}.fa-campground::before{content:""}.fa-folder-plus::before{content:""}.fa-futbol::before{content:""}.fa-futbol-ball::before{content:""}.fa-soccer-ball::before{content:""}.fa-paintbrush::before{content:""}.fa-paint-brush::before{content:""}.fa-lock::before{content:""}.fa-gas-pump::before{content:""}.fa-hot-tub-person::before{content:""}.fa-hot-tub::before{content:""}.fa-map-location::before{content:""}.fa-map-marked::before{content:""}.fa-house-flood-water::before{content:""}.fa-tree::before{content:""}.fa-bridge-lock::before{content:""}.fa-sack-dollar::before{content:""}.fa-pen-to-square::before{content:""}.fa-edit::before{content:""}.fa-car-side::before{content:""}.fa-share-nodes::before{content:""}.fa-share-alt::before{content:""}.fa-heart-circle-minus::before{content:""}.fa-hourglass-half::before{content:""}.fa-hourglass-2::before{content:""}.fa-microscope::before{content:""}.fa-sink::before{content:""}.fa-bag-shopping::before{content:""}.fa-shopping-bag::before{content:""}.fa-arrow-down-z-a::before{content:""}.fa-sort-alpha-desc::before{content:""}.fa-sort-alpha-down-alt::before{content:""}.fa-mitten::before{content:""}.fa-person-rays::before{content:""}.fa-users::before{content:""}.fa-eye-slash::before{content:""}.fa-flask-vial::before{content:""}.fa-hand::before{content:""}.fa-hand-paper::before{content:""}.fa-om::before{content:""}.fa-worm::before{content:""}.fa-house-circle-xmark::before{content:""}.fa-plug::before{content:""}.fa-chevron-up::before{content:""}.fa-hand-spock::before{content:""}.fa-stopwatch::before{content:""}.fa-face-kiss::before{content:""}.fa-kiss::before{content:""}.fa-bridge-circle-xmark::before{content:""}.fa-face-grin-tongue::before{content:""}.fa-grin-tongue::before{content:""}.fa-chess-bishop::before{content:""}.fa-face-grin-wink::before{content:""}.fa-grin-wink::before{content:""}.fa-ear-deaf::before{content:""}.fa-deaf::before{content:""}.fa-deafness::before{content:""}.fa-hard-of-hearing::before{content:""}.fa-road-circle-check::before{content:""}.fa-dice-five::before{content:""}.fa-square-rss::before{content:""}.fa-rss-square::before{content:""}.fa-land-mine-on::before{content:""}.fa-i-cursor::before{content:""}.fa-stamp::before{content:""}.fa-stairs::before{content:""}.fa-i::before{content:"I"}.fa-hryvnia-sign::before{content:""}.fa-hryvnia::before{content:""}.fa-pills::before{content:""}.fa-face-grin-wide::before{content:""}.fa-grin-alt::before{content:""}.fa-tooth::before{content:""}.fa-v::before{content:"V"}.fa-bangladeshi-taka-sign::before{content:""}.fa-bicycle::before{content:""}.fa-staff-snake::before{content:""}.fa-rod-asclepius::before{content:""}.fa-rod-snake::before{content:""}.fa-staff-aesculapius::before{content:""}.fa-head-side-cough-slash::before{content:""}.fa-truck-medical::before{content:""}.fa-ambulance::before{content:""}.fa-wheat-awn-circle-exclamation::before{content:""}.fa-snowman::before{content:""}.fa-mortar-pestle::before{content:""}.fa-road-barrier::before{content:""}.fa-school::before{content:""}.fa-igloo::before{content:""}.fa-joint::before{content:""}.fa-angle-right::before{content:""}.fa-horse::before{content:""}.fa-q::before{content:"Q"}.fa-g::before{content:"G"}.fa-notes-medical::before{content:""}.fa-temperature-half::before{content:""}.fa-temperature-2::before{content:""}.fa-thermometer-2::before{content:""}.fa-thermometer-half::before{content:""}.fa-dong-sign::before{content:""}.fa-capsules::before{content:""}.fa-poo-storm::before{content:""}.fa-poo-bolt::before{content:""}.fa-face-frown-open::before{content:""}.fa-frown-open::before{content:""}.fa-hand-point-up::before{content:""}.fa-money-bill::before{content:""}.fa-bookmark::before{content:""}.fa-align-justify::before{content:""}.fa-umbrella-beach::before{content:""}.fa-helmet-un::before{content:""}.fa-bullseye::before{content:""}.fa-bacon::before{content:""}.fa-hand-point-down::before{content:""}.fa-arrow-up-from-bracket::before{content:""}.fa-folder::before{content:""}.fa-folder-blank::before{content:""}.fa-file-waveform::before{content:""}.fa-file-medical-alt::before{content:""}.fa-radiation::before{content:""}.fa-chart-simple::before{content:""}.fa-mars-stroke::before{content:""}.fa-vial::before{content:""}.fa-gauge::before{content:""}.fa-dashboard::before{content:""}.fa-gauge-med::before{content:""}.fa-tachometer-alt-average::before{content:""}.fa-wand-magic-sparkles::before{content:""}.fa-magic-wand-sparkles::before{content:""}.fa-e::before{content:"E"}.fa-pen-clip::before{content:""}.fa-pen-alt::before{content:""}.fa-bridge-circle-exclamation::before{content:""}.fa-user::before{content:""}.fa-school-circle-check::before{content:""}.fa-dumpster::before{content:""}.fa-van-shuttle::before{content:""}.fa-shuttle-van::before{content:""}.fa-building-user::before{content:""}.fa-square-caret-left::before{content:""}.fa-caret-square-left::before{content:""}.fa-highlighter::before{content:""}.fa-key::before{content:""}.fa-bullhorn::before{content:""}.fa-globe::before{content:""}.fa-synagogue::before{content:""}.fa-person-half-dress::before{content:""}.fa-road-bridge::before{content:""}.fa-location-arrow::before{content:""}.fa-c::before{content:"C"}.fa-tablet-button::before{content:""}.fa-building-lock::before{content:""}.fa-pizza-slice::before{content:""}.fa-money-bill-wave::before{content:""}.fa-chart-area::before{content:""}.fa-area-chart::before{content:""}.fa-house-flag::before{content:""}.fa-person-circle-minus::before{content:""}.fa-ban::before{content:""}.fa-cancel::before{content:""}.fa-camera-rotate::before{content:""}.fa-spray-can-sparkles::before{content:""}.fa-air-freshener::before{content:""}.fa-star::before{content:""}.fa-repeat::before{content:""}.fa-cross::before{content:""}.fa-box::before{content:""}.fa-venus-mars::before{content:""}.fa-arrow-pointer::before{content:""}.fa-mouse-pointer::before{content:""}.fa-maximize::before{content:""}.fa-expand-arrows-alt::before{content:""}.fa-charging-station::before{content:""}.fa-shapes::before{content:""}.fa-triangle-circle-square::before{content:""}.fa-shuffle::before{content:""}.fa-random::before{content:""}.fa-person-running::before{content:""}.fa-running::before{content:""}.fa-mobile-retro::before{content:""}.fa-grip-lines-vertical::before{content:""}.fa-spider::before{content:""}.fa-hands-bound::before{content:""}.fa-file-invoice-dollar::before{content:""}.fa-plane-circle-exclamation::before{content:""}.fa-x-ray::before{content:""}.fa-spell-check::before{content:""}.fa-slash::before{content:""}.fa-computer-mouse::before{content:""}.fa-mouse::before{content:""}.fa-arrow-right-to-bracket::before{content:""}.fa-sign-in::before{content:""}.fa-shop-slash::before{content:""}.fa-store-alt-slash::before{content:""}.fa-server::before{content:""}.fa-virus-covid-slash::before{content:""}.fa-shop-lock::before{content:""}.fa-hourglass-start::before{content:""}.fa-hourglass-1::before{content:""}.fa-blender-phone::before{content:""}.fa-building-wheat::before{content:""}.fa-person-breastfeeding::before{content:""}.fa-right-to-bracket::before{content:""}.fa-sign-in-alt::before{content:""}.fa-venus::before{content:""}.fa-passport::before{content:""}.fa-heart-pulse::before{content:""}.fa-heartbeat::before{content:""}.fa-people-carry-box::before{content:""}.fa-people-carry::before{content:""}.fa-temperature-high::before{content:""}.fa-microchip::before{content:""}.fa-crown::before{content:""}.fa-weight-hanging::before{content:""}.fa-xmarks-lines::before{content:""}.fa-file-prescription::before{content:""}.fa-weight-scale::before{content:""}.fa-weight::before{content:""}.fa-user-group::before{content:""}.fa-user-friends::before{content:""}.fa-arrow-up-a-z::before{content:""}.fa-sort-alpha-up::before{content:""}.fa-chess-knight::before{content:""}.fa-face-laugh-squint::before{content:""}.fa-laugh-squint::before{content:""}.fa-wheelchair::before{content:""}.fa-circle-arrow-up::before{content:""}.fa-arrow-circle-up::before{content:""}.fa-toggle-on::before{content:""}.fa-person-walking::before{content:""}.fa-walking::before{content:""}.fa-l::before{content:"L"}.fa-fire::before{content:""}.fa-bed-pulse::before{content:""}.fa-procedures::before{content:""}.fa-shuttle-space::before{content:""}.fa-space-shuttle::before{content:""}.fa-face-laugh::before{content:""}.fa-laugh::before{content:""}.fa-folder-open::before{content:""}.fa-heart-circle-plus::before{content:""}.fa-code-fork::before{content:""}.fa-city::before{content:""}.fa-microphone-lines::before{content:""}.fa-microphone-alt::before{content:""}.fa-pepper-hot::before{content:""}.fa-unlock::before{content:""}.fa-colon-sign::before{content:""}.fa-headset::before{content:""}.fa-store-slash::before{content:""}.fa-road-circle-xmark::before{content:""}.fa-user-minus::before{content:""}.fa-mars-stroke-up::before{content:""}.fa-mars-stroke-v::before{content:""}.fa-champagne-glasses::before{content:""}.fa-glass-cheers::before{content:""}.fa-clipboard::before{content:""}.fa-house-circle-exclamation::before{content:""}.fa-file-arrow-up::before{content:""}.fa-file-upload::before{content:""}.fa-wifi::before{content:""}.fa-wifi-3::before{content:""}.fa-wifi-strong::before{content:""}.fa-bath::before{content:""}.fa-bathtub::before{content:""}.fa-underline::before{content:""}.fa-user-pen::before{content:""}.fa-user-edit::before{content:""}.fa-signature::before{content:""}.fa-stroopwafel::before{content:""}.fa-bold::before{content:""}.fa-anchor-lock::before{content:""}.fa-building-ngo::before{content:""}.fa-manat-sign::before{content:""}.fa-not-equal::before{content:""}.fa-border-top-left::before{content:""}.fa-border-style::before{content:""}.fa-map-location-dot::before{content:""}.fa-map-marked-alt::before{content:""}.fa-jedi::before{content:""}.fa-square-poll-vertical::before{content:""}.fa-poll::before{content:""}.fa-mug-hot::before{content:""}.fa-car-battery::before{content:""}.fa-battery-car::before{content:""}.fa-gift::before{content:""}.fa-dice-two::before{content:""}.fa-chess-queen::before{content:""}.fa-glasses::before{content:""}.fa-chess-board::before{content:""}.fa-building-circle-check::before{content:""}.fa-person-chalkboard::before{content:""}.fa-mars-stroke-right::before{content:""}.fa-mars-stroke-h::before{content:""}.fa-hand-back-fist::before{content:""}.fa-hand-rock::before{content:""}.fa-square-caret-up::before{content:""}.fa-caret-square-up::before{content:""}.fa-cloud-showers-water::before{content:""}.fa-chart-bar::before{content:""}.fa-bar-chart::before{content:""}.fa-hands-bubbles::before{content:""}.fa-hands-wash::before{content:""}.fa-less-than-equal::before{content:""}.fa-train::before{content:""}.fa-eye-low-vision::before{content:""}.fa-low-vision::before{content:""}.fa-crow::before{content:""}.fa-sailboat::before{content:""}.fa-window-restore::before{content:""}.fa-square-plus::before{content:""}.fa-plus-square::before{content:""}.fa-torii-gate::before{content:""}.fa-frog::before{content:""}.fa-bucket::before{content:""}.fa-image::before{content:""}.fa-microphone::before{content:""}.fa-cow::before{content:""}.fa-caret-up::before{content:""}.fa-screwdriver::before{content:""}.fa-folder-closed::before{content:""}.fa-house-tsunami::before{content:""}.fa-square-nfi::before{content:""}.fa-arrow-up-from-ground-water::before{content:""}.fa-martini-glass::before{content:""}.fa-glass-martini-alt::before{content:""}.fa-rotate-left::before{content:""}.fa-rotate-back::before{content:""}.fa-rotate-backward::before{content:""}.fa-undo-alt::before{content:""}.fa-table-columns::before{content:""}.fa-columns::before{content:""}.fa-lemon::before{content:""}.fa-head-side-mask::before{content:""}.fa-handshake::before{content:""}.fa-gem::before{content:""}.fa-dolly::before{content:""}.fa-dolly-box::before{content:""}.fa-smoking::before{content:""}.fa-minimize::before{content:""}.fa-compress-arrows-alt::before{content:""}.fa-monument::before{content:""}.fa-snowplow::before{content:""}.fa-angles-right::before{content:""}.fa-angle-double-right::before{content:""}.fa-cannabis::before{content:""}.fa-circle-play::before{content:""}.fa-play-circle::before{content:""}.fa-tablets::before{content:""}.fa-ethernet::before{content:""}.fa-euro-sign::before{content:""}.fa-eur::before{content:""}.fa-euro::before{content:""}.fa-chair::before{content:""}.fa-circle-check::before{content:""}.fa-check-circle::before{content:""}.fa-circle-stop::before{content:""}.fa-stop-circle::before{content:""}.fa-compass-drafting::before{content:""}.fa-drafting-compass::before{content:""}.fa-plate-wheat::before{content:""}.fa-icicles::before{content:""}.fa-person-shelter::before{content:""}.fa-neuter::before{content:""}.fa-id-badge::before{content:""}.fa-marker::before{content:""}.fa-face-laugh-beam::before{content:""}.fa-laugh-beam::before{content:""}.fa-helicopter-symbol::before{content:""}.fa-universal-access::before{content:""}.fa-circle-chevron-up::before{content:""}.fa-chevron-circle-up::before{content:""}.fa-lari-sign::before{content:""}.fa-volcano::before{content:""}.fa-person-walking-dashed-line-arrow-right::before{content:""}.fa-sterling-sign::before{content:""}.fa-gbp::before{content:""}.fa-pound-sign::before{content:""}.fa-viruses::before{content:""}.fa-square-person-confined::before{content:""}.fa-user-tie::before{content:""}.fa-arrow-down-long::before{content:""}.fa-long-arrow-down::before{content:""}.fa-tent-arrow-down-to-line::before{content:""}.fa-certificate::before{content:""}.fa-reply-all::before{content:""}.fa-mail-reply-all::before{content:""}.fa-suitcase::before{content:""}.fa-person-skating::before{content:""}.fa-skating::before{content:""}.fa-filter-circle-dollar::before{content:""}.fa-funnel-dollar::before{content:""}.fa-camera-retro::before{content:""}.fa-circle-arrow-down::before{content:""}.fa-arrow-circle-down::before{content:""}.fa-file-import::before{content:""}.fa-arrow-right-to-file::before{content:""}.fa-square-arrow-up-right::before{content:""}.fa-external-link-square::before{content:""}.fa-box-open::before{content:""}.fa-scroll::before{content:""}.fa-spa::before{content:""}.fa-location-pin-lock::before{content:""}.fa-pause::before{content:""}.fa-hill-avalanche::before{content:""}.fa-temperature-empty::before{content:""}.fa-temperature-0::before{content:""}.fa-thermometer-0::before{content:""}.fa-thermometer-empty::before{content:""}.fa-bomb::before{content:""}.fa-registered::before{content:""}.fa-address-card::before{content:""}.fa-contact-card::before{content:""}.fa-vcard::before{content:""}.fa-scale-unbalanced-flip::before{content:""}.fa-balance-scale-right::before{content:""}.fa-subscript::before{content:""}.fa-diamond-turn-right::before{content:""}.fa-directions::before{content:""}.fa-burst::before{content:""}.fa-house-laptop::before{content:""}.fa-laptop-house::before{content:""}.fa-face-tired::before{content:""}.fa-tired::before{content:""}.fa-money-bills::before{content:""}.fa-smog::before{content:""}.fa-crutch::before{content:""}.fa-cloud-arrow-up::before{content:""}.fa-cloud-upload::before{content:""}.fa-cloud-upload-alt::before{content:""}.fa-palette::before{content:""}.fa-arrows-turn-right::before{content:""}.fa-vest::before{content:""}.fa-ferry::before{content:""}.fa-arrows-down-to-people::before{content:""}.fa-seedling::before{content:""}.fa-sprout::before{content:""}.fa-left-right::before{content:""}.fa-arrows-alt-h::before{content:""}.fa-boxes-packing::before{content:""}.fa-circle-arrow-left::before{content:""}.fa-arrow-circle-left::before{content:""}.fa-group-arrows-rotate::before{content:""}.fa-bowl-food::before{content:""}.fa-candy-cane::before{content:""}.fa-arrow-down-wide-short::before{content:""}.fa-sort-amount-asc::before{content:""}.fa-sort-amount-down::before{content:""}.fa-cloud-bolt::before{content:""}.fa-thunderstorm::before{content:""}.fa-text-slash::before{content:""}.fa-remove-format::before{content:""}.fa-face-smile-wink::before{content:""}.fa-smile-wink::before{content:""}.fa-file-word::before{content:""}.fa-file-powerpoint::before{content:""}.fa-arrows-left-right::before{content:""}.fa-arrows-h::before{content:""}.fa-house-lock::before{content:""}.fa-cloud-arrow-down::before{content:""}.fa-cloud-download::before{content:""}.fa-cloud-download-alt::before{content:""}.fa-children::before{content:""}.fa-chalkboard::before{content:""}.fa-blackboard::before{content:""}.fa-user-large-slash::before{content:""}.fa-user-alt-slash::before{content:""}.fa-envelope-open::before{content:""}.fa-handshake-simple-slash::before{content:""}.fa-handshake-alt-slash::before{content:""}.fa-mattress-pillow::before{content:""}.fa-guarani-sign::before{content:""}.fa-arrows-rotate::before{content:""}.fa-refresh::before{content:""}.fa-sync::before{content:""}.fa-fire-extinguisher::before{content:""}.fa-cruzeiro-sign::before{content:""}.fa-greater-than-equal::before{content:""}.fa-shield-halved::before{content:""}.fa-shield-alt::before{content:""}.fa-book-atlas::before{content:""}.fa-atlas::before{content:""}.fa-virus::before{content:""}.fa-envelope-circle-check::before{content:""}.fa-layer-group::before{content:""}.fa-arrows-to-dot::before{content:""}.fa-archway::before{content:""}.fa-heart-circle-check::before{content:""}.fa-house-chimney-crack::before{content:""}.fa-house-damage::before{content:""}.fa-file-zipper::before{content:""}.fa-file-archive::before{content:""}.fa-square::before{content:""}.fa-martini-glass-empty::before{content:""}.fa-glass-martini::before{content:""}.fa-couch::before{content:""}.fa-cedi-sign::before{content:""}.fa-italic::before{content:""}.fa-table-cells-column-lock::before{content:""}.fa-church::before{content:""}.fa-comments-dollar::before{content:""}.fa-democrat::before{content:""}.fa-z::before{content:"Z"}.fa-person-skiing::before{content:""}.fa-skiing::before{content:""}.fa-road-lock::before{content:""}.fa-a::before{content:"A"}.fa-temperature-arrow-down::before{content:""}.fa-temperature-down::before{content:""}.fa-feather-pointed::before{content:""}.fa-feather-alt::before{content:""}.fa-p::before{content:"P"}.fa-snowflake::before{content:""}.fa-newspaper::before{content:""}.fa-rectangle-ad::before{content:""}.fa-ad::before{content:""}.fa-circle-arrow-right::before{content:""}.fa-arrow-circle-right::before{content:""}.fa-filter-circle-xmark::before{content:""}.fa-locust::before{content:""}.fa-sort::before{content:""}.fa-unsorted::before{content:""}.fa-list-ol::before{content:""}.fa-list-1-2::before{content:""}.fa-list-numeric::before{content:""}.fa-person-dress-burst::before{content:""}.fa-money-check-dollar::before{content:""}.fa-money-check-alt::before{content:""}.fa-vector-square::before{content:""}.fa-bread-slice::before{content:""}.fa-language::before{content:""}.fa-face-kiss-wink-heart::before{content:""}.fa-kiss-wink-heart::before{content:""}.fa-filter::before{content:""}.fa-question::before{content:"\?"}.fa-file-signature::before{content:""}.fa-up-down-left-right::before{content:""}.fa-arrows-alt::before{content:""}.fa-house-chimney-user::before{content:""}.fa-hand-holding-heart::before{content:""}.fa-puzzle-piece::before{content:""}.fa-money-check::before{content:""}.fa-star-half-stroke::before{content:""}.fa-star-half-alt::before{content:""}.fa-code::before{content:""}.fa-whiskey-glass::before{content:""}.fa-glass-whiskey::before{content:""}.fa-building-circle-exclamation::before{content:""}.fa-magnifying-glass-chart::before{content:""}.fa-arrow-up-right-from-square::before{content:""}.fa-external-link::before{content:""}.fa-cubes-stacked::before{content:""}.fa-won-sign::before{content:""}.fa-krw::before{content:""}.fa-won::before{content:""}.fa-virus-covid::before{content:""}.fa-austral-sign::before{content:""}.fa-f::before{content:"F"}.fa-leaf::before{content:""}.fa-road::before{content:""}.fa-taxi::before{content:""}.fa-cab::before{content:""}.fa-person-circle-plus::before{content:""}.fa-chart-pie::before{content:""}.fa-pie-chart::before{content:""}.fa-bolt-lightning::before{content:""}.fa-sack-xmark::before{content:""}.fa-file-excel::before{content:""}.fa-file-contract::before{content:""}.fa-fish-fins::before{content:""}.fa-building-flag::before{content:""}.fa-face-grin-beam::before{content:""}.fa-grin-beam::before{content:""}.fa-object-ungroup::before{content:""}.fa-poop::before{content:""}.fa-location-pin::before{content:""}.fa-map-marker::before{content:""}.fa-kaaba::before{content:""}.fa-toilet-paper::before{content:""}.fa-helmet-safety::before{content:""}.fa-hard-hat::before{content:""}.fa-hat-hard::before{content:""}.fa-eject::before{content:""}.fa-circle-right::before{content:""}.fa-arrow-alt-circle-right::before{content:""}.fa-plane-circle-check::before{content:""}.fa-face-rolling-eyes::before{content:""}.fa-meh-rolling-eyes::before{content:""}.fa-object-group::before{content:""}.fa-chart-line::before{content:""}.fa-line-chart::before{content:""}.fa-mask-ventilator::before{content:""}.fa-arrow-right::before{content:""}.fa-signs-post::before{content:""}.fa-map-signs::before{content:""}.fa-cash-register::before{content:""}.fa-person-circle-question::before{content:""}.fa-h::before{content:"H"}.fa-tarp::before{content:""}.fa-screwdriver-wrench::before{content:""}.fa-tools::before{content:""}.fa-arrows-to-eye::before{content:""}.fa-plug-circle-bolt::before{content:""}.fa-heart::before{content:""}.fa-mars-and-venus::before{content:""}.fa-house-user::before{content:""}.fa-home-user::before{content:""}.fa-dumpster-fire::before{content:""}.fa-house-crack::before{content:""}.fa-martini-glass-citrus::before{content:""}.fa-cocktail::before{content:""}.fa-face-surprise::before{content:""}.fa-surprise::before{content:""}.fa-bottle-water::before{content:""}.fa-circle-pause::before{content:""}.fa-pause-circle::before{content:""}.fa-toilet-paper-slash::before{content:""}.fa-apple-whole::before{content:""}.fa-apple-alt::before{content:""}.fa-kitchen-set::before{content:""}.fa-r::before{content:"R"}.fa-temperature-quarter::before{content:""}.fa-temperature-1::before{content:""}.fa-thermometer-1::before{content:""}.fa-thermometer-quarter::before{content:""}.fa-cube::before{content:""}.fa-bitcoin-sign::before{content:""}.fa-shield-dog::before{content:""}.fa-solar-panel::before{content:""}.fa-lock-open::before{content:""}.fa-elevator::before{content:""}.fa-money-bill-transfer::before{content:""}.fa-money-bill-trend-up::before{content:""}.fa-house-flood-water-circle-arrow-right::before{content:""}.fa-square-poll-horizontal::before{content:""}.fa-poll-h::before{content:""}.fa-circle::before{content:""}.fa-backward-fast::before{content:""}.fa-fast-backward::before{content:""}.fa-recycle::before{content:""}.fa-user-astronaut::before{content:""}.fa-plane-slash::before{content:""}.fa-trademark::before{content:""}.fa-basketball::before{content:""}.fa-basketball-ball::before{content:""}.fa-satellite-dish::before{content:""}.fa-circle-up::before{content:""}.fa-arrow-alt-circle-up::before{content:""}.fa-mobile-screen-button::before{content:""}.fa-mobile-alt::before{content:""}.fa-volume-high::before{content:""}.fa-volume-up::before{content:""}.fa-users-rays::before{content:""}.fa-wallet::before{content:""}.fa-clipboard-check::before{content:""}.fa-file-audio::before{content:""}.fa-burger::before{content:""}.fa-hamburger::before{content:""}.fa-wrench::before{content:""}.fa-bugs::before{content:""}.fa-rupee-sign::before{content:""}.fa-rupee::before{content:""}.fa-file-image::before{content:""}.fa-circle-question::before{content:""}.fa-question-circle::before{content:""}.fa-plane-departure::before{content:""}.fa-handshake-slash::before{content:""}.fa-book-bookmark::before{content:""}.fa-code-branch::before{content:""}.fa-hat-cowboy::before{content:""}.fa-bridge::before{content:""}.fa-phone-flip::before{content:""}.fa-phone-alt::before{content:""}.fa-truck-front::before{content:""}.fa-cat::before{content:""}.fa-anchor-circle-exclamation::before{content:""}.fa-truck-field::before{content:""}.fa-route::before{content:""}.fa-clipboard-question::before{content:""}.fa-panorama::before{content:""}.fa-comment-medical::before{content:""}.fa-teeth-open::before{content:""}.fa-file-circle-minus::before{content:""}.fa-tags::before{content:""}.fa-wine-glass::before{content:""}.fa-forward-fast::before{content:""}.fa-fast-forward::before{content:""}.fa-face-meh-blank::before{content:""}.fa-meh-blank::before{content:""}.fa-square-parking::before{content:""}.fa-parking::before{content:""}.fa-house-signal::before{content:""}.fa-bars-progress::before{content:""}.fa-tasks-alt::before{content:""}.fa-faucet-drip::before{content:""}.fa-cart-flatbed::before{content:""}.fa-dolly-flatbed::before{content:""}.fa-ban-smoking::before{content:""}.fa-smoking-ban::before{content:""}.fa-terminal::before{content:""}.fa-mobile-button::before{content:""}.fa-house-medical-flag::before{content:""}.fa-basket-shopping::before{content:""}.fa-shopping-basket::before{content:""}.fa-tape::before{content:""}.fa-bus-simple::before{content:""}.fa-bus-alt::before{content:""}.fa-eye::before{content:""}.fa-face-sad-cry::before{content:""}.fa-sad-cry::before{content:""}.fa-audio-description::before{content:""}.fa-person-military-to-person::before{content:""}.fa-file-shield::before{content:""}.fa-user-slash::before{content:""}.fa-pen::before{content:""}.fa-tower-observation::before{content:""}.fa-file-code::before{content:""}.fa-signal::before{content:""}.fa-signal-5::before{content:""}.fa-signal-perfect::before{content:""}.fa-bus::before{content:""}.fa-heart-circle-xmark::before{content:""}.fa-house-chimney::before{content:""}.fa-home-lg::before{content:""}.fa-window-maximize::before{content:""}.fa-face-frown::before{content:""}.fa-frown::before{content:""}.fa-prescription::before{content:""}.fa-shop::before{content:""}.fa-store-alt::before{content:""}.fa-floppy-disk::before{content:""}.fa-save::before{content:""}.fa-vihara::before{content:""}.fa-scale-unbalanced::before{content:""}.fa-balance-scale-left::before{content:""}.fa-sort-up::before{content:""}.fa-sort-asc::before{content:""}.fa-comment-dots::before{content:""}.fa-commenting::before{content:""}.fa-plant-wilt::before{content:""}.fa-diamond::before{content:""}.fa-face-grin-squint::before{content:""}.fa-grin-squint::before{content:""}.fa-hand-holding-dollar::before{content:""}.fa-hand-holding-usd::before{content:""}.fa-bacterium::before{content:""}.fa-hand-pointer::before{content:""}.fa-drum-steelpan::before{content:""}.fa-hand-scissors::before{content:""}.fa-hands-praying::before{content:""}.fa-praying-hands::before{content:""}.fa-arrow-rotate-right::before{content:""}.fa-arrow-right-rotate::before{content:""}.fa-arrow-rotate-forward::before{content:""}.fa-redo::before{content:""}.fa-biohazard::before{content:""}.fa-location-crosshairs::before{content:""}.fa-location::before{content:""}.fa-mars-double::before{content:""}.fa-child-dress::before{content:""}.fa-users-between-lines::before{content:""}.fa-lungs-virus::before{content:""}.fa-face-grin-tears::before{content:""}.fa-grin-tears::before{content:""}.fa-phone::before{content:""}.fa-calendar-xmark::before{content:""}.fa-calendar-times::before{content:""}.fa-child-reaching::before{content:""}.fa-head-side-virus::before{content:""}.fa-user-gear::before{content:""}.fa-user-cog::before{content:""}.fa-arrow-up-1-9::before{content:""}.fa-sort-numeric-up::before{content:""}.fa-door-closed::before{content:""}.fa-shield-virus::before{content:""}.fa-dice-six::before{content:""}.fa-mosquito-net::before{content:""}.fa-bridge-water::before{content:""}.fa-person-booth::before{content:""}.fa-text-width::before{content:""}.fa-hat-wizard::before{content:""}.fa-pen-fancy::before{content:""}.fa-person-digging::before{content:""}.fa-digging::before{content:""}.fa-trash::before{content:""}.fa-gauge-simple::before{content:""}.fa-gauge-simple-med::before{content:""}.fa-tachometer-average::before{content:""}.fa-book-medical::before{content:""}.fa-poo::before{content:""}.fa-quote-right::before{content:""}.fa-quote-right-alt::before{content:""}.fa-shirt::before{content:""}.fa-t-shirt::before{content:""}.fa-tshirt::before{content:""}.fa-cubes::before{content:""}.fa-divide::before{content:""}.fa-tenge-sign::before{content:""}.fa-tenge::before{content:""}.fa-headphones::before{content:""}.fa-hands-holding::before{content:""}.fa-hands-clapping::before{content:""}.fa-republican::before{content:""}.fa-arrow-left::before{content:""}.fa-person-circle-xmark::before{content:""}.fa-ruler::before{content:""}.fa-align-left::before{content:""}.fa-dice-d6::before{content:""}.fa-restroom::before{content:""}.fa-j::before{content:"J"}.fa-users-viewfinder::before{content:""}.fa-file-video::before{content:""}.fa-up-right-from-square::before{content:""}.fa-external-link-alt::before{content:""}.fa-table-cells::before{content:""}.fa-th::before{content:""}.fa-file-pdf::before{content:""}.fa-book-bible::before{content:""}.fa-bible::before{content:""}.fa-o::before{content:"O"}.fa-suitcase-medical::before{content:""}.fa-medkit::before{content:""}.fa-user-secret::before{content:""}.fa-otter::before{content:""}.fa-person-dress::before{content:""}.fa-female::before{content:""}.fa-comment-dollar::before{content:""}.fa-business-time::before{content:""}.fa-briefcase-clock::before{content:""}.fa-table-cells-large::before{content:""}.fa-th-large::before{content:""}.fa-book-tanakh::before{content:""}.fa-tanakh::before{content:""}.fa-phone-volume::before{content:""}.fa-volume-control-phone::before{content:""}.fa-hat-cowboy-side::before{content:""}.fa-clipboard-user::before{content:""}.fa-child::before{content:""}.fa-lira-sign::before{content:""}.fa-satellite::before{content:""}.fa-plane-lock::before{content:""}.fa-tag::before{content:""}.fa-comment::before{content:""}.fa-cake-candles::before{content:""}.fa-birthday-cake::before{content:""}.fa-cake::before{content:""}.fa-envelope::before{content:""}.fa-angles-up::before{content:""}.fa-angle-double-up::before{content:""}.fa-paperclip::before{content:""}.fa-arrow-right-to-city::before{content:""}.fa-ribbon::before{content:""}.fa-lungs::before{content:""}.fa-arrow-up-9-1::before{content:""}.fa-sort-numeric-up-alt::before{content:""}.fa-litecoin-sign::before{content:""}.fa-border-none::before{content:""}.fa-circle-nodes::before{content:""}.fa-parachute-box::before{content:""}.fa-indent::before{content:""}.fa-truck-field-un::before{content:""}.fa-hourglass::before{content:""}.fa-hourglass-empty::before{content:""}.fa-mountain::before{content:""}.fa-user-doctor::before{content:""}.fa-user-md::before{content:""}.fa-circle-info::before{content:""}.fa-info-circle::before{content:""}.fa-cloud-meatball::before{content:""}.fa-camera::before{content:""}.fa-camera-alt::before{content:""}.fa-square-virus::before{content:""}.fa-meteor::before{content:""}.fa-car-on::before{content:""}.fa-sleigh::before{content:""}.fa-arrow-down-1-9::before{content:""}.fa-sort-numeric-asc::before{content:""}.fa-sort-numeric-down::before{content:""}.fa-hand-holding-droplet::before{content:""}.fa-hand-holding-water::before{content:""}.fa-water::before{content:""}.fa-calendar-check::before{content:""}.fa-braille::before{content:""}.fa-prescription-bottle-medical::before{content:""}.fa-prescription-bottle-alt::before{content:""}.fa-landmark::before{content:""}.fa-truck::before{content:""}.fa-crosshairs::before{content:""}.fa-person-cane::before{content:""}.fa-tent::before{content:""}.fa-vest-patches::before{content:""}.fa-check-double::before{content:""}.fa-arrow-down-a-z::before{content:""}.fa-sort-alpha-asc::before{content:""}.fa-sort-alpha-down::before{content:""}.fa-money-bill-wheat::before{content:""}.fa-cookie::before{content:""}.fa-arrow-rotate-left::before{content:""}.fa-arrow-left-rotate::before{content:""}.fa-arrow-rotate-back::before{content:""}.fa-arrow-rotate-backward::before{content:""}.fa-undo::before{content:""}.fa-hard-drive::before{content:""}.fa-hdd::before{content:""}.fa-face-grin-squint-tears::before{content:""}.fa-grin-squint-tears::before{content:""}.fa-dumbbell::before{content:""}.fa-rectangle-list::before{content:""}.fa-list-alt::before{content:""}.fa-tarp-droplet::before{content:""}.fa-house-medical-circle-check::before{content:""}.fa-person-skiing-nordic::before{content:""}.fa-skiing-nordic::before{content:""}.fa-calendar-plus::before{content:""}.fa-plane-arrival::before{content:""}.fa-circle-left::before{content:""}.fa-arrow-alt-circle-left::before{content:""}.fa-train-subway::before{content:""}.fa-subway::before{content:""}.fa-chart-gantt::before{content:""}.fa-indian-rupee-sign::before{content:""}.fa-indian-rupee::before{content:""}.fa-inr::before{content:""}.fa-crop-simple::before{content:""}.fa-crop-alt::before{content:""}.fa-money-bill-1::before{content:""}.fa-money-bill-alt::before{content:""}.fa-left-long::before{content:""}.fa-long-arrow-alt-left::before{content:""}.fa-dna::before{content:""}.fa-virus-slash::before{content:""}.fa-minus::before{content:""}.fa-subtract::before{content:""}.fa-chess::before{content:""}.fa-arrow-left-long::before{content:""}.fa-long-arrow-left::before{content:""}.fa-plug-circle-check::before{content:""}.fa-street-view::before{content:""}.fa-franc-sign::before{content:""}.fa-volume-off::before{content:""}.fa-hands-asl-interpreting::before{content:""}.fa-american-sign-language-interpreting::before{content:""}.fa-asl-interpreting::before{content:""}.fa-hands-american-sign-language-interpreting::before{content:""}.fa-gear::before{content:""}.fa-cog::before{content:""}.fa-droplet-slash::before{content:""}.fa-tint-slash::before{content:""}.fa-mosque::before{content:""}.fa-mosquito::before{content:""}.fa-star-of-david::before{content:""}.fa-person-military-rifle::before{content:""}.fa-cart-shopping::before{content:""}.fa-shopping-cart::before{content:""}.fa-vials::before{content:""}.fa-plug-circle-plus::before{content:""}.fa-place-of-worship::before{content:""}.fa-grip-vertical::before{content:""}.fa-arrow-turn-up::before{content:""}.fa-level-up::before{content:""}.fa-u::before{content:"U"}.fa-square-root-variable::before{content:""}.fa-square-root-alt::before{content:""}.fa-clock::before{content:""}.fa-clock-four::before{content:""}.fa-backward-step::before{content:""}.fa-step-backward::before{content:""}.fa-pallet::before{content:""}.fa-faucet::before{content:""}.fa-baseball-bat-ball::before{content:""}.fa-s::before{content:"S"}.fa-timeline::before{content:""}.fa-keyboard::before{content:""}.fa-caret-down::before{content:""}.fa-house-chimney-medical::before{content:""}.fa-clinic-medical::before{content:""}.fa-temperature-three-quarters::before{content:""}.fa-temperature-3::before{content:""}.fa-thermometer-3::before{content:""}.fa-thermometer-three-quarters::before{content:""}.fa-mobile-screen::before{content:""}.fa-mobile-android-alt::before{content:""}.fa-plane-up::before{content:""}.fa-piggy-bank::before{content:""}.fa-battery-half::before{content:""}.fa-battery-3::before{content:""}.fa-mountain-city::before{content:""}.fa-coins::before{content:""}.fa-khanda::before{content:""}.fa-sliders::before{content:""}.fa-sliders-h::before{content:""}.fa-folder-tree::before{content:""}.fa-network-wired::before{content:""}.fa-map-pin::before{content:""}.fa-hamsa::before{content:""}.fa-cent-sign::before{content:""}.fa-flask::before{content:""}.fa-person-pregnant::before{content:""}.fa-wand-sparkles::before{content:""}.fa-ellipsis-vertical::before{content:""}.fa-ellipsis-v::before{content:""}.fa-ticket::before{content:""}.fa-power-off::before{content:""}.fa-right-long::before{content:""}.fa-long-arrow-alt-right::before{content:""}.fa-flag-usa::before{content:""}.fa-laptop-file::before{content:""}.fa-tty::before{content:""}.fa-teletype::before{content:""}.fa-diagram-next::before{content:""}.fa-person-rifle::before{content:""}.fa-house-medical-circle-exclamation::before{content:""}.fa-closed-captioning::before{content:""}.fa-person-hiking::before{content:""}.fa-hiking::before{content:""}.fa-venus-double::before{content:""}.fa-images::before{content:""}.fa-calculator::before{content:""}.fa-people-pulling::before{content:""}.fa-n::before{content:"N"}.fa-cable-car::before{content:""}.fa-tram::before{content:""}.fa-cloud-rain::before{content:""}.fa-building-circle-xmark::before{content:""}.fa-ship::before{content:""}.fa-arrows-down-to-line::before{content:""}.fa-download::before{content:""}.fa-face-grin::before{content:""}.fa-grin::before{content:""}.fa-delete-left::before{content:""}.fa-backspace::before{content:""}.fa-eye-dropper::before{content:""}.fa-eye-dropper-empty::before{content:""}.fa-eyedropper::before{content:""}.fa-file-circle-check::before{content:""}.fa-forward::before{content:""}.fa-mobile::before{content:""}.fa-mobile-android::before{content:""}.fa-mobile-phone::before{content:""}.fa-face-meh::before{content:""}.fa-meh::before{content:""}.fa-align-center::before{content:""}.fa-book-skull::before{content:""}.fa-book-dead::before{content:""}.fa-id-card::before{content:""}.fa-drivers-license::before{content:""}.fa-outdent::before{content:""}.fa-dedent::before{content:""}.fa-heart-circle-exclamation::before{content:""}.fa-house::before{content:""}.fa-home::before{content:""}.fa-home-alt::before{content:""}.fa-home-lg-alt::before{content:""}.fa-calendar-week::before{content:""}.fa-laptop-medical::before{content:""}.fa-b::before{content:"B"}.fa-file-medical::before{content:""}.fa-dice-one::before{content:""}.fa-kiwi-bird::before{content:""}.fa-arrow-right-arrow-left::before{content:""}.fa-exchange::before{content:""}.fa-rotate-right::before{content:""}.fa-redo-alt::before{content:""}.fa-rotate-forward::before{content:""}.fa-utensils::before{content:""}.fa-cutlery::before{content:""}.fa-arrow-up-wide-short::before{content:""}.fa-sort-amount-up::before{content:""}.fa-mill-sign::before{content:""}.fa-bowl-rice::before{content:""}.fa-skull::before{content:""}.fa-tower-broadcast::before{content:""}.fa-broadcast-tower::before{content:""}.fa-truck-pickup::before{content:""}.fa-up-long::before{content:""}.fa-long-arrow-alt-up::before{content:""}.fa-stop::before{content:""}.fa-code-merge::before{content:""}.fa-upload::before{content:""}.fa-hurricane::before{content:""}.fa-mound::before{content:""}.fa-toilet-portable::before{content:""}.fa-compact-disc::before{content:""}.fa-file-arrow-down::before{content:""}.fa-file-download::before{content:""}.fa-caravan::before{content:""}.fa-shield-cat::before{content:""}.fa-bolt::before{content:""}.fa-zap::before{content:""}.fa-glass-water::before{content:""}.fa-oil-well::before{content:""}.fa-vault::before{content:""}.fa-mars::before{content:""}.fa-toilet::before{content:""}.fa-plane-circle-xmark::before{content:""}.fa-yen-sign::before{content:""}.fa-cny::before{content:""}.fa-jpy::before{content:""}.fa-rmb::before{content:""}.fa-yen::before{content:""}.fa-ruble-sign::before{content:""}.fa-rouble::before{content:""}.fa-rub::before{content:""}.fa-ruble::before{content:""}.fa-sun::before{content:""}.fa-guitar::before{content:""}.fa-face-laugh-wink::before{content:""}.fa-laugh-wink::before{content:""}.fa-horse-head::before{content:""}.fa-bore-hole::before{content:""}.fa-industry::before{content:""}.fa-circle-down::before{content:""}.fa-arrow-alt-circle-down::before{content:""}.fa-arrows-turn-to-dots::before{content:""}.fa-florin-sign::before{content:""}.fa-arrow-down-short-wide::before{content:""}.fa-sort-amount-desc::before{content:""}.fa-sort-amount-down-alt::before{content:""}.fa-less-than::before{content:"\<"}.fa-angle-down::before{content:""}.fa-car-tunnel::before{content:""}.fa-head-side-cough::before{content:""}.fa-grip-lines::before{content:""}.fa-thumbs-down::before{content:""}.fa-user-lock::before{content:""}.fa-arrow-right-long::before{content:""}.fa-long-arrow-right::before{content:""}.fa-anchor-circle-xmark::before{content:""}.fa-ellipsis::before{content:""}.fa-ellipsis-h::before{content:""}.fa-chess-pawn::before{content:""}.fa-kit-medical::before{content:""}.fa-first-aid::before{content:""}.fa-person-through-window::before{content:""}.fa-toolbox::before{content:""}.fa-hands-holding-circle::before{content:""}.fa-bug::before{content:""}.fa-credit-card::before{content:""}.fa-credit-card-alt::before{content:""}.fa-car::before{content:""}.fa-automobile::before{content:""}.fa-hand-holding-hand::before{content:""}.fa-book-open-reader::before{content:""}.fa-book-reader::before{content:""}.fa-mountain-sun::before{content:""}.fa-arrows-left-right-to-line::before{content:""}.fa-dice-d20::before{content:""}.fa-truck-droplet::before{content:""}.fa-file-circle-xmark::before{content:""}.fa-temperature-arrow-up::before{content:""}.fa-temperature-up::before{content:""}.fa-medal::before{content:""}.fa-bed::before{content:""}.fa-square-h::before{content:""}.fa-h-square::before{content:""}.fa-podcast::before{content:""}.fa-temperature-full::before{content:""}.fa-temperature-4::before{content:""}.fa-thermometer-4::before{content:""}.fa-thermometer-full::before{content:""}.fa-bell::before{content:""}.fa-superscript::before{content:""}.fa-plug-circle-xmark::before{content:""}.fa-star-of-life::before{content:""}.fa-phone-slash::before{content:""}.fa-paint-roller::before{content:""}.fa-handshake-angle::before{content:""}.fa-hands-helping::before{content:""}.fa-location-dot::before{content:""}.fa-map-marker-alt::before{content:""}.fa-file::before{content:""}.fa-greater-than::before{content:"\>"}.fa-person-swimming::before{content:""}.fa-swimmer::before{content:""}.fa-arrow-down::before{content:""}.fa-droplet::before{content:""}.fa-tint::before{content:""}.fa-eraser::before{content:""}.fa-earth-americas::before{content:""}.fa-earth::before{content:""}.fa-earth-america::before{content:""}.fa-globe-americas::before{content:""}.fa-person-burst::before{content:""}.fa-dove::before{content:""}.fa-battery-empty::before{content:""}.fa-battery-0::before{content:""}.fa-socks::before{content:""}.fa-inbox::before{content:""}.fa-section::before{content:""}.fa-gauge-high::before{content:""}.fa-tachometer-alt::before{content:""}.fa-tachometer-alt-fast::before{content:""}.fa-envelope-open-text::before{content:""}.fa-hospital::before{content:""}.fa-hospital-alt::before{content:""}.fa-hospital-wide::before{content:""}.fa-wine-bottle::before{content:""}.fa-chess-rook::before{content:""}.fa-bars-staggered::before{content:""}.fa-reorder::before{content:""}.fa-stream::before{content:""}.fa-dharmachakra::before{content:""}.fa-hotdog::before{content:""}.fa-person-walking-with-cane::before{content:""}.fa-blind::before{content:""}.fa-drum::before{content:""}.fa-ice-cream::before{content:""}.fa-heart-circle-bolt::before{content:""}.fa-fax::before{content:""}.fa-paragraph::before{content:""}.fa-check-to-slot::before{content:""}.fa-vote-yea::before{content:""}.fa-star-half::before{content:""}.fa-boxes-stacked::before{content:""}.fa-boxes::before{content:""}.fa-boxes-alt::before{content:""}.fa-link::before{content:""}.fa-chain::before{content:""}.fa-ear-listen::before{content:""}.fa-assistive-listening-systems::before{content:""}.fa-tree-city::before{content:""}.fa-play::before{content:""}.fa-font::before{content:""}.fa-table-cells-row-lock::before{content:""}.fa-rupiah-sign::before{content:""}.fa-magnifying-glass::before{content:""}.fa-search::before{content:""}.fa-table-tennis-paddle-ball::before{content:""}.fa-ping-pong-paddle-ball::before{content:""}.fa-table-tennis::before{content:""}.fa-person-dots-from-line::before{content:""}.fa-diagnoses::before{content:""}.fa-trash-can-arrow-up::before{content:""}.fa-trash-restore-alt::before{content:""}.fa-naira-sign::before{content:""}.fa-cart-arrow-down::before{content:""}.fa-walkie-talkie::before{content:""}.fa-file-pen::before{content:""}.fa-file-edit::before{content:""}.fa-receipt::before{content:""}.fa-square-pen::before{content:""}.fa-pen-square::before{content:""}.fa-pencil-square::before{content:""}.fa-suitcase-rolling::before{content:""}.fa-person-circle-exclamation::before{content:""}.fa-chevron-down::before{content:""}.fa-battery-full::before{content:""}.fa-battery::before{content:""}.fa-battery-5::before{content:""}.fa-skull-crossbones::before{content:""}.fa-code-compare::before{content:""}.fa-list-ul::before{content:""}.fa-list-dots::before{content:""}.fa-school-lock::before{content:""}.fa-tower-cell::before{content:""}.fa-down-long::before{content:""}.fa-long-arrow-alt-down::before{content:""}.fa-ranking-star::before{content:""}.fa-chess-king::before{content:""}.fa-person-harassing::before{content:""}.fa-brazilian-real-sign::before{content:""}.fa-landmark-dome::before{content:""}.fa-landmark-alt::before{content:""}.fa-arrow-up::before{content:""}.fa-tv::before{content:""}.fa-television::before{content:""}.fa-tv-alt::before{content:""}.fa-shrimp::before{content:""}.fa-list-check::before{content:""}.fa-tasks::before{content:""}.fa-jug-detergent::before{content:""}.fa-circle-user::before{content:""}.fa-user-circle::before{content:""}.fa-user-shield::before{content:""}.fa-wind::before{content:""}.fa-car-burst::before{content:""}.fa-car-crash::before{content:""}.fa-y::before{content:"Y"}.fa-person-snowboarding::before{content:""}.fa-snowboarding::before{content:""}.fa-truck-fast::before{content:""}.fa-shipping-fast::before{content:""}.fa-fish::before{content:""}.fa-user-graduate::before{content:""}.fa-circle-half-stroke::before{content:""}.fa-adjust::before{content:""}.fa-clapperboard::before{content:""}.fa-circle-radiation::before{content:""}.fa-radiation-alt::before{content:""}.fa-baseball::before{content:""}.fa-baseball-ball::before{content:""}.fa-jet-fighter-up::before{content:""}.fa-diagram-project::before{content:""}.fa-project-diagram::before{content:""}.fa-copy::before{content:""}.fa-volume-xmark::before{content:""}.fa-volume-mute::before{content:""}.fa-volume-times::before{content:""}.fa-hand-sparkles::before{content:""}.fa-grip::before{content:""}.fa-grip-horizontal::before{content:""}.fa-share-from-square::before{content:""}.fa-share-square::before{content:""}.fa-child-combatant::before{content:""}.fa-child-rifle::before{content:""}.fa-gun::before{content:""}.fa-square-phone::before{content:""}.fa-phone-square::before{content:""}.fa-plus::before{content:"\+"}.fa-add::before{content:"\+"}.fa-expand::before{content:""}.fa-computer::before{content:""}.fa-xmark::before{content:""}.fa-close::before{content:""}.fa-multiply::before{content:""}.fa-remove::before{content:""}.fa-times::before{content:""}.fa-arrows-up-down-left-right::before{content:""}.fa-arrows::before{content:""}.fa-chalkboard-user::before{content:""}.fa-chalkboard-teacher::before{content:""}.fa-peso-sign::before{content:""}.fa-building-shield::before{content:""}.fa-baby::before{content:""}.fa-users-line::before{content:""}.fa-quote-left::before{content:""}.fa-quote-left-alt::before{content:""}.fa-tractor::before{content:""}.fa-trash-arrow-up::before{content:""}.fa-trash-restore::before{content:""}.fa-arrow-down-up-lock::before{content:""}.fa-lines-leaning::before{content:""}.fa-ruler-combined::before{content:""}.fa-copyright::before{content:""}.fa-equals::before{content:"\="}.fa-blender::before{content:""}.fa-teeth::before{content:""}.fa-shekel-sign::before{content:""}.fa-ils::before{content:""}.fa-shekel::before{content:""}.fa-sheqel::before{content:""}.fa-sheqel-sign::before{content:""}.fa-map::before{content:""}.fa-rocket::before{content:""}.fa-photo-film::before{content:""}.fa-photo-video::before{content:""}.fa-folder-minus::before{content:""}.fa-store::before{content:""}.fa-arrow-trend-up::before{content:""}.fa-plug-circle-minus::before{content:""}.fa-sign-hanging::before{content:""}.fa-sign::before{content:""}.fa-bezier-curve::before{content:""}.fa-bell-slash::before{content:""}.fa-tablet::before{content:""}.fa-tablet-android::before{content:""}.fa-school-flag::before{content:""}.fa-fill::before{content:""}.fa-angle-up::before{content:""}.fa-drumstick-bite::before{content:""}.fa-holly-berry::before{content:""}.fa-chevron-left::before{content:""}.fa-bacteria::before{content:""}.fa-hand-lizard::before{content:""}.fa-notdef::before{content:""}.fa-disease::before{content:""}.fa-briefcase-medical::before{content:""}.fa-genderless::before{content:""}.fa-chevron-right::before{content:""}.fa-retweet::before{content:""}.fa-car-rear::before{content:""}.fa-car-alt::before{content:""}.fa-pump-soap::before{content:""}.fa-video-slash::before{content:""}.fa-battery-quarter::before{content:""}.fa-battery-2::before{content:""}.fa-radio::before{content:""}.fa-baby-carriage::before{content:""}.fa-carriage-baby::before{content:""}.fa-traffic-light::before{content:""}.fa-thermometer::before{content:""}.fa-vr-cardboard::before{content:""}.fa-hand-middle-finger::before{content:""}.fa-percent::before{content:"\%"}.fa-percentage::before{content:"\%"}.fa-truck-moving::before{content:""}.fa-glass-water-droplet::before{content:""}.fa-display::before{content:""}.fa-face-smile::before{content:""}.fa-smile::before{content:""}.fa-thumbtack::before{content:""}.fa-thumb-tack::before{content:""}.fa-trophy::before{content:""}.fa-person-praying::before{content:""}.fa-pray::before{content:""}.fa-hammer::before{content:""}.fa-hand-peace::before{content:""}.fa-rotate::before{content:""}.fa-sync-alt::before{content:""}.fa-spinner::before{content:""}.fa-robot::before{content:""}.fa-peace::before{content:""}.fa-gears::before{content:""}.fa-cogs::before{content:""}.fa-warehouse::before{content:""}.fa-arrow-up-right-dots::before{content:""}.fa-splotch::before{content:""}.fa-face-grin-hearts::before{content:""}.fa-grin-hearts::before{content:""}.fa-dice-four::before{content:""}.fa-sim-card::before{content:""}.fa-transgender::before{content:""}.fa-transgender-alt::before{content:""}.fa-mercury::before{content:""}.fa-arrow-turn-down::before{content:""}.fa-level-down::before{content:""}.fa-person-falling-burst::before{content:""}.fa-award::before{content:""}.fa-ticket-simple::before{content:""}.fa-ticket-alt::before{content:""}.fa-building::before{content:""}.fa-angles-left::before{content:""}.fa-angle-double-left::before{content:""}.fa-qrcode::before{content:""}.fa-clock-rotate-left::before{content:""}.fa-history::before{content:""}.fa-face-grin-beam-sweat::before{content:""}.fa-grin-beam-sweat::before{content:""}.fa-file-export::before{content:""}.fa-arrow-right-from-file::before{content:""}.fa-shield::before{content:""}.fa-shield-blank::before{content:""}.fa-arrow-up-short-wide::before{content:""}.fa-sort-amount-up-alt::before{content:""}.fa-house-medical::before{content:""}.fa-golf-ball-tee::before{content:""}.fa-golf-ball::before{content:""}.fa-circle-chevron-left::before{content:""}.fa-chevron-circle-left::before{content:""}.fa-house-chimney-window::before{content:""}.fa-pen-nib::before{content:""}.fa-tent-arrow-turn-left::before{content:""}.fa-tents::before{content:""}.fa-wand-magic::before{content:""}.fa-magic::before{content:""}.fa-dog::before{content:""}.fa-carrot::before{content:""}.fa-moon::before{content:""}.fa-wine-glass-empty::before{content:""}.fa-wine-glass-alt::before{content:""}.fa-cheese::before{content:""}.fa-yin-yang::before{content:""}.fa-music::before{content:""}.fa-code-commit::before{content:""}.fa-temperature-low::before{content:""}.fa-person-biking::before{content:""}.fa-biking::before{content:""}.fa-broom::before{content:""}.fa-shield-heart::before{content:""}.fa-gopuram::before{content:""}.fa-earth-oceania::before{content:""}.fa-globe-oceania::before{content:""}.fa-square-xmark::before{content:""}.fa-times-square::before{content:""}.fa-xmark-square::before{content:""}.fa-hashtag::before{content:"\#"}.fa-up-right-and-down-left-from-center::before{content:""}.fa-expand-alt::before{content:""}.fa-oil-can::before{content:""}.fa-t::before{content:"T"}.fa-hippo::before{content:""}.fa-chart-column::before{content:""}.fa-infinity::before{content:""}.fa-vial-circle-check::before{content:""}.fa-person-arrow-down-to-line::before{content:""}.fa-voicemail::before{content:""}.fa-fan::before{content:""}.fa-person-walking-luggage::before{content:""}.fa-up-down::before{content:""}.fa-arrows-alt-v::before{content:""}.fa-cloud-moon-rain::before{content:""}.fa-calendar::before{content:""}.fa-trailer::before{content:""}.fa-bahai::before{content:""}.fa-haykal::before{content:""}.fa-sd-card::before{content:""}.fa-dragon::before{content:""}.fa-shoe-prints::before{content:""}.fa-circle-plus::before{content:""}.fa-plus-circle::before{content:""}.fa-face-grin-tongue-wink::before{content:""}.fa-grin-tongue-wink::before{content:""}.fa-hand-holding::before{content:""}.fa-plug-circle-exclamation::before{content:""}.fa-link-slash::before{content:""}.fa-chain-broken::before{content:""}.fa-chain-slash::before{content:""}.fa-unlink::before{content:""}.fa-clone::before{content:""}.fa-person-walking-arrow-loop-left::before{content:""}.fa-arrow-up-z-a::before{content:""}.fa-sort-alpha-up-alt::before{content:""}.fa-fire-flame-curved::before{content:""}.fa-fire-alt::before{content:""}.fa-tornado::before{content:""}.fa-file-circle-plus::before{content:""}.fa-book-quran::before{content:""}.fa-quran::before{content:""}.fa-anchor::before{content:""}.fa-border-all::before{content:""}.fa-face-angry::before{content:""}.fa-angry::before{content:""}.fa-cookie-bite::before{content:""}.fa-arrow-trend-down::before{content:""}.fa-rss::before{content:""}.fa-feed::before{content:""}.fa-draw-polygon::before{content:""}.fa-scale-balanced::before{content:""}.fa-balance-scale::before{content:""}.fa-gauge-simple-high::before{content:""}.fa-tachometer::before{content:""}.fa-tachometer-fast::before{content:""}.fa-shower::before{content:""}.fa-desktop::before{content:""}.fa-desktop-alt::before{content:""}.fa-m::before{content:"M"}.fa-table-list::before{content:""}.fa-th-list::before{content:""}.fa-comment-sms::before{content:""}.fa-sms::before{content:""}.fa-book::before{content:""}.fa-user-plus::before{content:""}.fa-check::before{content:""}.fa-battery-three-quarters::before{content:""}.fa-battery-4::before{content:""}.fa-house-circle-check::before{content:""}.fa-angle-left::before{content:""}.fa-diagram-successor::before{content:""}.fa-truck-arrow-right::before{content:""}.fa-arrows-split-up-and-left::before{content:""}.fa-hand-fist::before{content:""}.fa-fist-raised::before{content:""}.fa-cloud-moon::before{content:""}.fa-briefcase::before{content:""}.fa-person-falling::before{content:""}.fa-image-portrait::before{content:""}.fa-portrait::before{content:""}.fa-user-tag::before{content:""}.fa-rug::before{content:""}.fa-earth-europe::before{content:""}.fa-globe-europe::before{content:""}.fa-cart-flatbed-suitcase::before{content:""}.fa-luggage-cart::before{content:""}.fa-rectangle-xmark::before{content:""}.fa-rectangle-times::before{content:""}.fa-times-rectangle::before{content:""}.fa-window-close::before{content:""}.fa-baht-sign::before{content:""}.fa-book-open::before{content:""}.fa-book-journal-whills::before{content:""}.fa-journal-whills::before{content:""}.fa-handcuffs::before{content:""}.fa-triangle-exclamation::before{content:""}.fa-exclamation-triangle::before{content:""}.fa-warning::before{content:""}.fa-database::before{content:""}.fa-share::before{content:""}.fa-mail-forward::before{content:""}.fa-bottle-droplet::before{content:""}.fa-mask-face::before{content:""}.fa-hill-rockslide::before{content:""}.fa-right-left::before{content:""}.fa-exchange-alt::before{content:""}.fa-paper-plane::before{content:""}.fa-road-circle-exclamation::before{content:""}.fa-dungeon::before{content:""}.fa-align-right::before{content:""}.fa-money-bill-1-wave::before{content:""}.fa-money-bill-wave-alt::before{content:""}.fa-life-ring::before{content:""}.fa-hands::before{content:""}.fa-sign-language::before{content:""}.fa-signing::before{content:""}.fa-calendar-day::before{content:""}.fa-water-ladder::before{content:""}.fa-ladder-water::before{content:""}.fa-swimming-pool::before{content:""}.fa-arrows-up-down::before{content:""}.fa-arrows-v::before{content:""}.fa-face-grimace::before{content:""}.fa-grimace::before{content:""}.fa-wheelchair-move::before{content:""}.fa-wheelchair-alt::before{content:""}.fa-turn-down::before{content:""}.fa-level-down-alt::before{content:""}.fa-person-walking-arrow-right::before{content:""}.fa-square-envelope::before{content:""}.fa-envelope-square::before{content:""}.fa-dice::before{content:""}.fa-bowling-ball::before{content:""}.fa-brain::before{content:""}.fa-bandage::before{content:""}.fa-band-aid::before{content:""}.fa-calendar-minus::before{content:""}.fa-circle-xmark::before{content:""}.fa-times-circle::before{content:""}.fa-xmark-circle::before{content:""}.fa-gifts::before{content:""}.fa-hotel::before{content:""}.fa-earth-asia::before{content:""}.fa-globe-asia::before{content:""}.fa-id-card-clip::before{content:""}.fa-id-card-alt::before{content:""}.fa-magnifying-glass-plus::before{content:""}.fa-search-plus::before{content:""}.fa-thumbs-up::before{content:""}.fa-user-clock::before{content:""}.fa-hand-dots::before{content:""}.fa-allergies::before{content:""}.fa-file-invoice::before{content:""}.fa-window-minimize::before{content:""}.fa-mug-saucer::before{content:""}.fa-coffee::before{content:""}.fa-brush::before{content:""}.fa-mask::before{content:""}.fa-magnifying-glass-minus::before{content:""}.fa-search-minus::before{content:""}.fa-ruler-vertical::before{content:""}.fa-user-large::before{content:""}.fa-user-alt::before{content:""}.fa-train-tram::before{content:""}.fa-user-nurse::before{content:""}.fa-syringe::before{content:""}.fa-cloud-sun::before{content:""}.fa-stopwatch-20::before{content:""}.fa-square-full::before{content:""}.fa-magnet::before{content:""}.fa-jar::before{content:""}.fa-note-sticky::before{content:""}.fa-sticky-note::before{content:""}.fa-bug-slash::before{content:""}.fa-arrow-up-from-water-pump::before{content:""}.fa-bone::before{content:""}.fa-user-injured::before{content:""}.fa-face-sad-tear::before{content:""}.fa-sad-tear::before{content:""}.fa-plane::before{content:""}.fa-tent-arrows-down::before{content:""}.fa-exclamation::before{content:"\!"}.fa-arrows-spin::before{content:""}.fa-print::before{content:""}.fa-turkish-lira-sign::before{content:""}.fa-try::before{content:""}.fa-turkish-lira::before{content:""}.fa-dollar-sign::before{content:"\$"}.fa-dollar::before{content:"\$"}.fa-usd::before{content:"\$"}.fa-x::before{content:"X"}.fa-magnifying-glass-dollar::before{content:""}.fa-search-dollar::before{content:""}.fa-users-gear::before{content:""}.fa-users-cog::before{content:""}.fa-person-military-pointing::before{content:""}.fa-building-columns::before{content:""}.fa-bank::before{content:""}.fa-institution::before{content:""}.fa-museum::before{content:""}.fa-university::before{content:""}.fa-umbrella::before{content:""}.fa-trowel::before{content:""}.fa-d::before{content:"D"}.fa-stapler::before{content:""}.fa-masks-theater::before{content:""}.fa-theater-masks::before{content:""}.fa-kip-sign::before{content:""}.fa-hand-point-left::before{content:""}.fa-handshake-simple::before{content:""}.fa-handshake-alt::before{content:""}.fa-jet-fighter::before{content:""}.fa-fighter-jet::before{content:""}.fa-square-share-nodes::before{content:""}.fa-share-alt-square::before{content:""}.fa-barcode::before{content:""}.fa-plus-minus::before{content:""}.fa-video::before{content:""}.fa-video-camera::before{content:""}.fa-graduation-cap::before{content:""}.fa-mortar-board::before{content:""}.fa-hand-holding-medical::before{content:""}.fa-person-circle-check::before{content:""}.fa-turn-up::before{content:""}.fa-level-up-alt::before{content:""}.sr-only,.fa-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.sr-only-focusable:not(:focus),.fa-sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}/*! * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */:root,:host{--fa-style-family-classic: 'Font Awesome 6 Free';--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'}@font-face{font-family:'Font Awesome 6 Free';font-style:normal;font-weight:900;font-display:block;src:url("../webfonts/fa-solid-900.woff2") format("woff2"),url("../webfonts/fa-solid-900.ttf") format("truetype")}.fas,.fa-solid{font-weight:900}/*! * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */:root,:host{--fa-style-family-brands: 'Font Awesome 6 Brands';--fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'}@font-face{font-family:'Font Awesome 6 Brands';font-style:normal;font-weight:400;font-display:block;src:url("../webfonts/fa-brands-400.woff2") format("woff2"),url("../webfonts/fa-brands-400.ttf") format("truetype")}.fab,.fa-brands{font-weight:400}.fa-monero:before{content:""}.fa-hooli:before{content:""}.fa-yelp:before{content:""}.fa-cc-visa:before{content:""}.fa-lastfm:before{content:""}.fa-shopware:before{content:""}.fa-creative-commons-nc:before{content:""}.fa-aws:before{content:""}.fa-redhat:before{content:""}.fa-yoast:before{content:""}.fa-cloudflare:before{content:""}.fa-ups:before{content:""}.fa-pixiv:before{content:""}.fa-wpexplorer:before{content:""}.fa-dyalog:before{content:""}.fa-bity:before{content:""}.fa-stackpath:before{content:""}.fa-buysellads:before{content:""}.fa-first-order:before{content:""}.fa-modx:before{content:""}.fa-guilded:before{content:""}.fa-vnv:before{content:""}.fa-square-js:before{content:""}.fa-js-square:before{content:""}.fa-microsoft:before{content:""}.fa-qq:before{content:""}.fa-orcid:before{content:""}.fa-java:before{content:""}.fa-invision:before{content:""}.fa-creative-commons-pd-alt:before{content:""}.fa-centercode:before{content:""}.fa-glide-g:before{content:""}.fa-drupal:before{content:""}.fa-jxl:before{content:""}.fa-hire-a-helper:before{content:""}.fa-creative-commons-by:before{content:""}.fa-unity:before{content:""}.fa-whmcs:before{content:""}.fa-rocketchat:before{content:""}.fa-vk:before{content:""}.fa-untappd:before{content:""}.fa-mailchimp:before{content:""}.fa-css3-alt:before{content:""}.fa-square-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-vimeo-v:before{content:""}.fa-contao:before{content:""}.fa-square-font-awesome:before{content:""}.fa-deskpro:before{content:""}.fa-brave:before{content:""}.fa-sistrix:before{content:""}.fa-square-instagram:before{content:""}.fa-instagram-square:before{content:""}.fa-battle-net:before{content:""}.fa-the-red-yeti:before{content:""}.fa-square-hacker-news:before{content:""}.fa-hacker-news-square:before{content:""}.fa-edge:before{content:""}.fa-threads:before{content:""}.fa-napster:before{content:""}.fa-square-snapchat:before{content:""}.fa-snapchat-square:before{content:""}.fa-google-plus-g:before{content:""}.fa-artstation:before{content:""}.fa-markdown:before{content:""}.fa-sourcetree:before{content:""}.fa-google-plus:before{content:""}.fa-diaspora:before{content:""}.fa-foursquare:before{content:""}.fa-stack-overflow:before{content:""}.fa-github-alt:before{content:""}.fa-phoenix-squadron:before{content:""}.fa-pagelines:before{content:""}.fa-algolia:before{content:""}.fa-red-river:before{content:""}.fa-creative-commons-sa:before{content:""}.fa-safari:before{content:""}.fa-google:before{content:""}.fa-square-font-awesome-stroke:before{content:""}.fa-font-awesome-alt:before{content:""}.fa-atlassian:before{content:""}.fa-linkedin-in:before{content:""}.fa-digital-ocean:before{content:""}.fa-nimblr:before{content:""}.fa-chromecast:before{content:""}.fa-evernote:before{content:""}.fa-hacker-news:before{content:""}.fa-creative-commons-sampling:before{content:""}.fa-adversal:before{content:""}.fa-creative-commons:before{content:""}.fa-watchman-monitoring:before{content:""}.fa-fonticons:before{content:""}.fa-weixin:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-codepen:before{content:""}.fa-git-alt:before{content:""}.fa-lyft:before{content:""}.fa-rev:before{content:""}.fa-windows:before{content:""}.fa-wizards-of-the-coast:before{content:""}.fa-square-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-meetup:before{content:""}.fa-centos:before{content:""}.fa-adn:before{content:""}.fa-cloudsmith:before{content:""}.fa-opensuse:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-square-dribbble:before{content:""}.fa-dribbble-square:before{content:""}.fa-codiepie:before{content:""}.fa-node:before{content:""}.fa-mix:before{content:""}.fa-steam:before{content:""}.fa-cc-apple-pay:before{content:""}.fa-scribd:before{content:""}.fa-debian:before{content:""}.fa-openid:before{content:""}.fa-instalod:before{content:""}.fa-expeditedssl:before{content:""}.fa-sellcast:before{content:""}.fa-square-twitter:before{content:""}.fa-twitter-square:before{content:""}.fa-r-project:before{content:""}.fa-delicious:before{content:""}.fa-freebsd:before{content:""}.fa-vuejs:before{content:""}.fa-accusoft:before{content:""}.fa-ioxhost:before{content:""}.fa-fonticons-fi:before{content:""}.fa-app-store:before{content:""}.fa-cc-mastercard:before{content:""}.fa-itunes-note:before{content:""}.fa-golang:before{content:""}.fa-kickstarter:before{content:""}.fa-square-kickstarter:before{content:""}.fa-grav:before{content:""}.fa-weibo:before{content:""}.fa-uncharted:before{content:""}.fa-firstdraft:before{content:""}.fa-square-youtube:before{content:""}.fa-youtube-square:before{content:""}.fa-wikipedia-w:before{content:""}.fa-wpressr:before{content:""}.fa-rendact:before{content:""}.fa-angellist:before{content:""}.fa-galactic-republic:before{content:""}.fa-nfc-directional:before{content:""}.fa-skype:before{content:""}.fa-joget:before{content:""}.fa-fedora:before{content:""}.fa-stripe-s:before{content:""}.fa-meta:before{content:""}.fa-laravel:before{content:""}.fa-hotjar:before{content:""}.fa-bluetooth-b:before{content:""}.fa-square-letterboxd:before{content:""}.fa-sticker-mule:before{content:""}.fa-creative-commons-zero:before{content:""}.fa-hips:before{content:""}.fa-behance:before{content:""}.fa-reddit:before{content:""}.fa-discord:before{content:""}.fa-chrome:before{content:""}.fa-app-store-ios:before{content:""}.fa-cc-discover:before{content:""}.fa-wpbeginner:before{content:""}.fa-confluence:before{content:""}.fa-shoelace:before{content:""}.fa-mdb:before{content:""}.fa-dochub:before{content:""}.fa-accessible-icon:before{content:""}.fa-ebay:before{content:""}.fa-amazon:before{content:""}.fa-unsplash:before{content:""}.fa-yarn:before{content:""}.fa-square-steam:before{content:""}.fa-steam-square:before{content:""}.fa-500px:before{content:""}.fa-square-vimeo:before{content:""}.fa-vimeo-square:before{content:""}.fa-asymmetrik:before{content:""}.fa-font-awesome:before{content:""}.fa-font-awesome-flag:before{content:""}.fa-font-awesome-logo-full:before{content:""}.fa-gratipay:before{content:""}.fa-apple:before{content:""}.fa-hive:before{content:""}.fa-gitkraken:before{content:""}.fa-keybase:before{content:""}.fa-apple-pay:before{content:""}.fa-padlet:before{content:""}.fa-amazon-pay:before{content:""}.fa-square-github:before{content:""}.fa-github-square:before{content:""}.fa-stumbleupon:before{content:""}.fa-fedex:before{content:""}.fa-phoenix-framework:before{content:""}.fa-shopify:before{content:""}.fa-neos:before{content:""}.fa-square-threads:before{content:""}.fa-hackerrank:before{content:""}.fa-researchgate:before{content:""}.fa-swift:before{content:""}.fa-angular:before{content:""}.fa-speakap:before{content:""}.fa-angrycreative:before{content:""}.fa-y-combinator:before{content:""}.fa-empire:before{content:""}.fa-envira:before{content:""}.fa-google-scholar:before{content:""}.fa-square-gitlab:before{content:""}.fa-gitlab-square:before{content:""}.fa-studiovinari:before{content:""}.fa-pied-piper:before{content:""}.fa-wordpress:before{content:""}.fa-product-hunt:before{content:""}.fa-firefox:before{content:""}.fa-linode:before{content:""}.fa-goodreads:before{content:""}.fa-square-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-jsfiddle:before{content:""}.fa-sith:before{content:""}.fa-themeisle:before{content:""}.fa-page4:before{content:""}.fa-hashnode:before{content:""}.fa-react:before{content:""}.fa-cc-paypal:before{content:""}.fa-squarespace:before{content:""}.fa-cc-stripe:before{content:""}.fa-creative-commons-share:before{content:""}.fa-bitcoin:before{content:""}.fa-keycdn:before{content:""}.fa-opera:before{content:""}.fa-itch-io:before{content:""}.fa-umbraco:before{content:""}.fa-galactic-senate:before{content:""}.fa-ubuntu:before{content:""}.fa-draft2digital:before{content:""}.fa-stripe:before{content:""}.fa-houzz:before{content:""}.fa-gg:before{content:""}.fa-dhl:before{content:""}.fa-square-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-xing:before{content:""}.fa-blackberry:before{content:""}.fa-creative-commons-pd:before{content:""}.fa-playstation:before{content:""}.fa-quinscape:before{content:""}.fa-less:before{content:""}.fa-blogger-b:before{content:""}.fa-opencart:before{content:""}.fa-vine:before{content:""}.fa-signal-messenger:before{content:""}.fa-paypal:before{content:""}.fa-gitlab:before{content:""}.fa-typo3:before{content:""}.fa-reddit-alien:before{content:""}.fa-yahoo:before{content:""}.fa-dailymotion:before{content:""}.fa-affiliatetheme:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-bootstrap:before{content:""}.fa-odnoklassniki:before{content:""}.fa-nfc-symbol:before{content:""}.fa-mintbit:before{content:""}.fa-ethereum:before{content:""}.fa-speaker-deck:before{content:""}.fa-creative-commons-nc-eu:before{content:""}.fa-patreon:before{content:""}.fa-avianex:before{content:""}.fa-ello:before{content:""}.fa-gofore:before{content:""}.fa-bimobject:before{content:""}.fa-brave-reverse:before{content:""}.fa-facebook-f:before{content:""}.fa-square-google-plus:before{content:""}.fa-google-plus-square:before{content:""}.fa-web-awesome:before{content:""}.fa-mandalorian:before{content:""}.fa-first-order-alt:before{content:""}.fa-osi:before{content:""}.fa-google-wallet:before{content:""}.fa-d-and-d-beyond:before{content:""}.fa-periscope:before{content:""}.fa-fulcrum:before{content:""}.fa-cloudscale:before{content:""}.fa-forumbee:before{content:""}.fa-mizuni:before{content:""}.fa-schlix:before{content:""}.fa-square-xing:before{content:""}.fa-xing-square:before{content:""}.fa-bandcamp:before{content:""}.fa-wpforms:before{content:""}.fa-cloudversify:before{content:""}.fa-usps:before{content:""}.fa-megaport:before{content:""}.fa-magento:before{content:""}.fa-spotify:before{content:""}.fa-optin-monster:before{content:""}.fa-fly:before{content:""}.fa-aviato:before{content:""}.fa-itunes:before{content:""}.fa-cuttlefish:before{content:""}.fa-blogger:before{content:""}.fa-flickr:before{content:""}.fa-viber:before{content:""}.fa-soundcloud:before{content:""}.fa-digg:before{content:""}.fa-tencent-weibo:before{content:""}.fa-letterboxd:before{content:""}.fa-symfony:before{content:""}.fa-maxcdn:before{content:""}.fa-etsy:before{content:""}.fa-facebook-messenger:before{content:""}.fa-audible:before{content:""}.fa-think-peaks:before{content:""}.fa-bilibili:before{content:""}.fa-erlang:before{content:""}.fa-x-twitter:before{content:""}.fa-cotton-bureau:before{content:""}.fa-dashcube:before{content:""}.fa-42-group:before{content:""}.fa-innosoft:before{content:""}.fa-stack-exchange:before{content:""}.fa-elementor:before{content:""}.fa-square-pied-piper:before{content:""}.fa-pied-piper-square:before{content:""}.fa-creative-commons-nd:before{content:""}.fa-palfed:before{content:""}.fa-superpowers:before{content:""}.fa-resolving:before{content:""}.fa-xbox:before{content:""}.fa-square-web-awesome-stroke:before{content:""}.fa-searchengin:before{content:""}.fa-tiktok:before{content:""}.fa-square-facebook:before{content:""}.fa-facebook-square:before{content:""}.fa-renren:before{content:""}.fa-linux:before{content:""}.fa-glide:before{content:""}.fa-linkedin:before{content:""}.fa-hubspot:before{content:""}.fa-deploydog:before{content:""}.fa-twitch:before{content:""}.fa-ravelry:before{content:""}.fa-mixer:before{content:""}.fa-square-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-vimeo:before{content:""}.fa-mendeley:before{content:""}.fa-uniregistry:before{content:""}.fa-figma:before{content:""}.fa-creative-commons-remix:before{content:""}.fa-cc-amazon-pay:before{content:""}.fa-dropbox:before{content:""}.fa-instagram:before{content:""}.fa-cmplid:before{content:""}.fa-upwork:before{content:""}.fa-facebook:before{content:""}.fa-gripfire:before{content:""}.fa-jedi-order:before{content:""}.fa-uikit:before{content:""}.fa-fort-awesome-alt:before{content:""}.fa-phabricator:before{content:""}.fa-ussunnah:before{content:""}.fa-earlybirds:before{content:""}.fa-trade-federation:before{content:""}.fa-autoprefixer:before{content:""}.fa-whatsapp:before{content:""}.fa-square-upwork:before{content:""}.fa-slideshare:before{content:""}.fa-google-play:before{content:""}.fa-viadeo:before{content:""}.fa-line:before{content:""}.fa-google-drive:before{content:""}.fa-servicestack:before{content:""}.fa-simplybuilt:before{content:""}.fa-bitbucket:before{content:""}.fa-imdb:before{content:""}.fa-deezer:before{content:""}.fa-raspberry-pi:before{content:""}.fa-jira:before{content:""}.fa-docker:before{content:""}.fa-screenpal:before{content:""}.fa-bluetooth:before{content:""}.fa-gitter:before{content:""}.fa-d-and-d:before{content:""}.fa-microblog:before{content:""}.fa-cc-diners-club:before{content:""}.fa-gg-circle:before{content:""}.fa-pied-piper-hat:before{content:""}.fa-kickstarter-k:before{content:""}.fa-yandex:before{content:""}.fa-readme:before{content:""}.fa-html5:before{content:""}.fa-sellsy:before{content:""}.fa-square-web-awesome:before{content:""}.fa-sass:before{content:""}.fa-wirsindhandwerk:before{content:""}.fa-wsh:before{content:""}.fa-buromobelexperte:before{content:""}.fa-salesforce:before{content:""}.fa-octopus-deploy:before{content:""}.fa-medapps:before{content:""}.fa-ns8:before{content:""}.fa-pinterest-p:before{content:""}.fa-apper:before{content:""}.fa-fort-awesome:before{content:""}.fa-waze:before{content:""}.fa-bluesky:before{content:""}.fa-cc-jcb:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-fantasy-flight-games:before{content:""}.fa-rust:before{content:""}.fa-wix:before{content:""}.fa-square-behance:before{content:""}.fa-behance-square:before{content:""}.fa-supple:before{content:""}.fa-webflow:before{content:""}.fa-rebel:before{content:""}.fa-css3:before{content:""}.fa-staylinked:before{content:""}.fa-kaggle:before{content:""}.fa-space-awesome:before{content:""}.fa-deviantart:before{content:""}.fa-cpanel:before{content:""}.fa-goodreads-g:before{content:""}.fa-square-git:before{content:""}.fa-git-square:before{content:""}.fa-square-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-trello:before{content:""}.fa-creative-commons-nc-jp:before{content:""}.fa-get-pocket:before{content:""}.fa-perbyte:before{content:""}.fa-grunt:before{content:""}.fa-weebly:before{content:""}.fa-connectdevelop:before{content:""}.fa-leanpub:before{content:""}.fa-black-tie:before{content:""}.fa-themeco:before{content:""}.fa-python:before{content:""}.fa-android:before{content:""}.fa-bots:before{content:""}.fa-free-code-camp:before{content:""}.fa-hornbill:before{content:""}.fa-js:before{content:""}.fa-ideal:before{content:""}.fa-git:before{content:""}.fa-dev:before{content:""}.fa-sketch:before{content:""}.fa-yandex-international:before{content:""}.fa-cc-amex:before{content:""}.fa-uber:before{content:""}.fa-github:before{content:""}.fa-php:before{content:""}.fa-alipay:before{content:""}.fa-youtube:before{content:""}.fa-skyatlas:before{content:""}.fa-firefox-browser:before{content:""}.fa-replyd:before{content:""}.fa-suse:before{content:""}.fa-jenkins:before{content:""}.fa-twitter:before{content:""}.fa-rockrms:before{content:""}.fa-pinterest:before{content:""}.fa-buffer:before{content:""}.fa-npm:before{content:""}.fa-yammer:before{content:""}.fa-btc:before{content:""}.fa-dribbble:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-internet-explorer:before{content:""}.fa-stubber:before{content:""}.fa-telegram:before{content:""}.fa-telegram-plane:before{content:""}.fa-old-republic:before{content:""}.fa-odysee:before{content:""}.fa-square-whatsapp:before{content:""}.fa-whatsapp-square:before{content:""}.fa-node-js:before{content:""}.fa-edge-legacy:before{content:""}.fa-slack:before{content:""}.fa-slack-hash:before{content:""}.fa-medrt:before{content:""}.fa-usb:before{content:""}.fa-tumblr:before{content:""}.fa-vaadin:before{content:""}.fa-quora:before{content:""}.fa-square-x-twitter:before{content:""}.fa-reacteurope:before{content:""}.fa-medium:before{content:""}.fa-medium-m:before{content:""}.fa-amilia:before{content:""}.fa-mixcloud:before{content:""}.fa-flipboard:before{content:""}.fa-viacoin:before{content:""}.fa-critical-role:before{content:""}.fa-sitrox:before{content:""}.fa-discourse:before{content:""}.fa-joomla:before{content:""}.fa-mastodon:before{content:""}.fa-airbnb:before{content:""}.fa-wolf-pack-battalion:before{content:""}.fa-buy-n-large:before{content:""}.fa-gulp:before{content:""}.fa-creative-commons-sampling-plus:before{content:""}.fa-strava:before{content:""}.fa-ember:before{content:""}.fa-canadian-maple-leaf:before{content:""}.fa-teamspeak:before{content:""}.fa-pushed:before{content:""}.fa-wordpress-simple:before{content:""}.fa-nutritionix:before{content:""}.fa-wodu:before{content:""}.fa-google-pay:before{content:""}.fa-intercom:before{content:""}.fa-zhihu:before{content:""}.fa-korvue:before{content:""}.fa-pix:before{content:""}.fa-steam-symbol:before{content:""}.mfp-counter{font-family:Georgia,Times,serif}.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#000;opacity:.8;filter:alpha(opacity=80)}.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:none !important;-webkit-backface-visibility:hidden}.mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:0 8px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-container:before{content:'';display:inline-block;height:100%;vertical-align:middle}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.mfp-inline-holder .mfp-content,.mfp-ajax-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-close,.mfp-arrow,.mfp-preloader,.mfp-counter{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none !important}.mfp-preloader{color:#ccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-0.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#ccc}.mfp-preloader a:hover{color:#fff}.mfp-s-ready .mfp-preloader{display:none}.mfp-s-error .mfp-content{display:none}button.mfp-close,button.mfp-arrow{overflow:visible;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;display:block;outline:none;padding:0;z-index:1046;-webkit-box-shadow:none;box-shadow:none}button::-moz-focus-inner{padding:0;border:0}.mfp-close{width:44px;height:44px;line-height:44px;position:absolute;right:0;top:0;text-decoration:none;text-align:center;opacity:1;filter:alpha(opacity=100);padding:0 0 18px 10px;color:#fff;font-style:normal;font-size:28px;font-family:Georgia,Times,serif}.mfp-close:hover,.mfp-close:focus{opacity:1;filter:alpha(opacity=100)}.mfp-close:active{top:1px}.mfp-close-btn-in .mfp-close{color:#fff}.mfp-image-holder .mfp-close,.mfp-iframe-holder .mfp-close{color:#fff;right:-6px;text-align:right;padding-right:6px;width:100%}.mfp-counter{position:absolute;top:0;right:0;color:#ccc;font-size:12px;line-height:18px}.mfp-arrow{position:absolute;opacity:1;filter:alpha(opacity=100);margin:0;top:50%;margin-top:-55px;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:transparent}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:hover,.mfp-arrow:focus{opacity:1;filter:alpha(opacity=100)}.mfp-arrow:before,.mfp-arrow:after,.mfp-arrow .mfp-b,.mfp-arrow .mfp-a{content:'';display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:medium inset transparent}.mfp-arrow:after,.mfp-arrow .mfp-a{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow:before,.mfp-arrow .mfp-b{border-top-width:21px;border-bottom-width:21px;opacity:0.7}.mfp-arrow-left{left:0}.mfp-arrow-left:after,.mfp-arrow-left .mfp-a{border-right:17px solid #fff;margin-left:31px}.mfp-arrow-left:before,.mfp-arrow-left .mfp-b{margin-left:25px;border-right:27px solid #fff}.mfp-arrow-right{right:0}.mfp-arrow-right:after,.mfp-arrow-right .mfp-a{border-left:17px solid #fff;margin-left:39px}.mfp-arrow-right:before,.mfp-arrow-right .mfp-b{border-left:27px solid #fff}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,0.6);background:#000}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;line-height:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:40px 0 40px;margin:0 auto}.mfp-figure{line-height:0}.mfp-figure:after{content:'';position:absolute;left:0;top:40px;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,0.6);background:#444}.mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.mfp-figure figure{margin:0}.mfp-figure figcaption{margin-top:0;margin-bottom:0}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{text-align:left;line-height:18px;color:#f3f3f3;word-wrap:break-word;padding-right:36px}.mfp-image-holder .mfp-content{max-width:100%}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,0.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .mfp-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,0.6);position:fixed;text-align:center;padding:0}}@media all and (max-width: 900px){.mfp-arrow{-webkit-transform:scale(0.75);transform:scale(0.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}.mfp-ie7 .mfp-img{padding:0}.mfp-ie7 .mfp-bottom-bar{width:600px;left:50%;margin-left:-300px;margin-top:5px;padding-bottom:5px}.mfp-ie7 .mfp-container{padding:0}.mfp-ie7 .mfp-content{padding-top:44px}.mfp-ie7 .mfp-close{top:0;right:0;padding-top:0}

Markdown

Locations of key files/directories

  • Basic config options: _config.yml
  • Top navigation bar config: _data/navigation.yml
  • Single pages: _pages/
  • Collections of pages are .md or .html files in:
    • _publications/
    • _portfolio/
    • _posts/
    • _teaching/
    • _talks/
  • Footer: _includes/footer.html
  • Static files (like PDFs): /files/
  • Profile image (can set in _config.yml): images/profile.png

Tips and hints

  • Name a file “.md” to have it render in markdown, name it “.html” to render in HTML.
  • Go to the commit list (on your repo) to find the last version GitHub built with Jekyll.
    • Green check: successful build
    • Orange circle: building
    • Red X: error
    • No icon: not built
  • Academic Pages uses Jekyll Kramdown, GitHub Flavored Markdown (GFM) parser, which is similar to the version of Markdown used on GitHub, but may have some minor differences.
    • Some of emoji supported on GitHub should be supposed via the Jemoji plugin :computer:.
    • The best list of the supported emoji can be found in the Emojis for Jekyll via Jemoji blog post.
  • While GitHub Pages prevents server side code from running, client-side scripts are supported.
    • This means that Google Analytics is supported, and the wiki should contain the most up-to-date information on getting it working.
  • Your CV can be written using either Markdown (preview) or generated via JSON (preview) and the layouts are slightly different. You can update the path to the one being used in _data/navigation.yml with the JSON formatted CV being hidden by default.

Resources

MathJax

Support for MathJax Version 3.0 is included in the template:

\[\displaylines{ \nabla \cdot E= \frac{\rho}{\epsilon_0} \\\ \nabla \cdot B=0 \\\ \nabla \times E= -\partial_tB \\\ \nabla \times B = \mu_0 \left(J + \varepsilon_0 \partial_t E \right) }\]

The default delimiters of $$...$$ and \\[...\\] are supported for displayed mathematics, while \\(...\\) should be used for in-line mathematics (ex., \(a^2 + b^2 = c^2\))

Note that since Academic Pages uses Markdown which cases some interference with MathJax and LaTeX for escaping characters and new lines, although some workarounds exist. In some cases, such as when you are including MathJax in a citation field for publications, it may be necessary to use \(...\) for inline delineation.

Markdown guide

Academic Pages uses kramdown for Markdown rendering, which has some differences from other Markdown implementations such as GitHub’s. In addition to this guide, please see the kramdown Syntax page for full documentation.

Header three

Header four

Header five
Header six

Blockquotes

Single line blockquote:

Quotes are cool.

Tables

Table 1

Entry Item  
John Doe 2016 Description of the item in the list
Jane Doe 2019 Description of the item in the list
Doe Doe 2022 Description of the item in the list

Table 2

Header1 Header2 Header3
cell1 cell2 cell3
cell4 ce  
ll5 cell6  
cell1 cell2 cell3
cell4 cell5 cell6
Foot1 Foot2 Foot3

Definition Lists

Definition List Title
Definition list division.
Startup
A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model.
#dowork
Coined by Rob Dyrdek and his personal body guard Christopher “Big Black” Boykins, “Do Work” works as a self motivator, to motivating your friends.
Do It Live
I’ll let Bill O’Reilly explain this one.

Unordered Lists (Nested)

  • List item one
    • List item one
      • List item one
      • List item two
      • List item three
      • List item four
    • List item two
    • List item three
    • List item four
  • List item two
  • List item three
  • List item four

Ordered List (Nested)

  1. List item one
    1. List item one
      1. List item one
      2. List item two
      3. List item three
      4. List item four
    2. List item two
    3. List item three
    4. List item four
  2. List item two
  3. List item three
  4. List item four

Buttons

Make any link standout more when applying the .btn class.

Notices

Basic notices or call-outs are supported using the following syntax:

**Watch out!** You can also add notices by appending `{: .notice}` to the line following paragraph.
{: .notice}

which wil render as:

Watch out! You can also add notices by appending {: .notice} to the line following paragraph.

Footnotes

Footnotes can be useful for clarifying points in the text, or citing information.1 Markdown support numeric footnotes, as well as text as long as the values are unique.2

This is the regular text.[^1] This is more regular text.[^note]

[^1]: This is the footnote itself.
[^note]: This is another footnote.

HTML Tags

Address Tag

1 Infinite Loop
Cupertino, CA 95014
United States

This is an example of a link.

Abbreviation Tag

The abbreviation CSS stands for “Cascading Style Sheets”.

Cite Tag

“Code is poetry.” —Automattic

Code Tag

You will learn later on in these tests that word-wrap: break-word; will be your best friend.

You can also write larger blocks of code with syntax highlighting supported for some languages, such as Python:

print('Hello World!')

or R:

print("Hello World!", quote = FALSE)

Details Tag (collapsible sections)

The HTML <details> tag works well with Markdown and allows you to include collapsible sections, see W3Schools for more information on how to use the tag.

Collapsed by default This section was collapsed by default!

The source code:

<details>
  <summary>Collapsed by default</summary>
  This section was collapsed by default!
</details>

Or, you can leave a section open by default by including the open attribute in the tag:

Open by default This section is open by default thanks to open in the <details open> tag!

Emphasize Tag

The emphasize tag should italicize text.

Insert Tag

This tag should denote inserted text.

Keyboard Tag

This scarcely known tag emulates keyboard text, which is usually styled like the <code> tag.

Preformatted Tag

This tag styles large blocks of code.

.post-title {
  margin: 0 0 5px;
  font-weight: bold;
  font-size: 38px;
  line-height: 1.2;
  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}

Quote Tag

Developers, developers, developers… –Steve Ballmer

Strike Tag

This tag will let you strikeout text.

Strong Tag

This tag shows bold text.

Subscript Tag

Getting our science styling on with H2O, which should push the “2” down.

Superscript Tag

Still sticking with science and Isaac Newton’s E = MC2, which should lift the 2 up.

Variable Tag

This allows you to denote variables.


Footnotes

The footnotes in the page will be returned following this line, return to the section on Markdown Footnotes.

  1. Such as this footnote. 

  2. When using text for footnotes markers, no spaces are permitted in the name. 

Page not in menu

This is a page not in the menu. You can use markdown in this page.

Heading 1

Heading 2

Page Archive

{% include base_path %} {% for post in site.pages %} {% include archive-single.html %} {% endfor %}

Publications

{% if site.publication_category %} {% for category in site.publication_category %} {% assign title_shown = false %} {% for post in site.publications reversed %} {% if post.category != category[0] %} {% continue %} {% endif %} {% unless title_shown %}

{{ category[1].title }}


{% assign title_shown = true %} {% endunless %} {% include archive-single.html %} {% endfor %} {% endfor %} {% else %} {% for post in site.publications reversed %} {% include archive-single.html %} {% endfor %} {% endif %} </div> -->
{% if site.author.googlescholar %}
You can also find my articles on my Google Scholar profile.
{% endif %} {% include base_path %} {% if site.publication_category %} {% for category in site.publication_category %} {% assign title_shown = false %} {% for post in site.publications reversed %} {% if post.category != category[0] %} {% continue %} {% endif %} {% unless title_shown %}

{{ category[1].title }}


{% assign title_shown = true %} {% endunless %} {% include archive-single.html %} {% endfor %} {% endfor %} {% else %} {% for post in site.publications reversed %} {% include archive-single.html %} {% endfor %} {% endif %}

Sitemap

{% include base_path %} A list of all the posts and pages found on the site. For you robots out there, there is an [XML version]({{ base_path }}/sitemap.xml) available for digesting as well.

Pages

{% for post in site.pages %} {% include archive-single.html %} {% endfor %}

Posts

{% for post in site.posts %} {% include archive-single.html %} {% endfor %} {% capture written_label %}'None'{% endcapture %} {% for collection in site.collections %} {% unless collection.output == false or collection.label == "posts" %} {% capture label %}{{ collection.label }}{% endcapture %} {% if label != written_label %}

{{ label }}

{% capture written_label %}{{ label }}{% endcapture %} {% endif %} {% endunless %} {% for post in collection.docs %} {% unless collection.output == false or collection.label == "posts" %} {% include archive-single.html %} {% endunless %} {% endfor %} {% endfor %}

Posts by Tags

{% include base_path %} {% include group-by-array collection=site.posts field="tags" %} {% for tag in group_names %} {% assign posts = group_items[forloop.index0] %}

{{ tag }}

{% for post in posts %} {% include archive-single.html %} {% endfor %} {% endfor %}

Talk map

This map is generated from a Jupyter Notebook file in talkmap.ipynb, which mines the location fields in the .md files in _talks/.


Eduacation & Employment

2024–2025: University of Liege

  • Research Scientist/Project Leader, Urban and Environmental Engineering -Funded by European Union,
    Principal investigator – Anne Marie Habraken: anne.habraken@uliege.be

2022–2023: Northwestern University

  • Postdoc, McCormick School of Engineering, AMPL -supported by USA Vannevar Bush Faculty Fellowship award,
    Principal investigator – Jian Cao: jcao@northwestern.edu

2018–2022: National University of Singapore


2011-2018: Huazhong University of Science & Technology

  • 2015-2018: Master of Engineering, Design & Manufacture of Ships and Marine Structure (China Graduate Scholarship)
  • 2011-2015: Bachelor of Engineering, Naval Architecture & Ocean Engineering (2012 China National Scholarship)

Teaching

{% include base_path %} {% for post in site.teaching reversed %} {% include archive-single.html %} {% endfor %}

Terms and Privacy Policy

{% include base_path %} {% include toc %} ## Privacy Policy The privacy of my visitors is extremely important. This Privacy Policy outlines the types of personal information that is received and collected and how it is used. First and foremost, I will never share your email address or any other personal information to anyone without your direct consent. ### Log Files Like many other websites, this site uses log files to help learn about when, from where, and how often traffic flows to this site. The information in these log files include: * Internet Protocol addresses (IP) * Types of browser * Internet Service Provider (ISP) * Date and time stamp * Referring and exit pages * Number of clicks All of this information is not linked to anything that is personally identifiable. ### Cookies and Web Beacons When you visit this site "convenience" cookies are stored on your computer when you submit a comment to help you log in faster to [Disqus](http://disqus.com) the next time you leave a comment. Third-party advertisers may also place and read cookies on your browser and/or use web beacons to collect information. This site has no access or control over these cookies. You should review the respective privacy policies on any and all third-party ad servers for more information regarding their practices and how to opt-out. If you wish to disable cookies, you may do so through your web browser options. Instructions for doing so can be found on the specific web browsers' websites. #### Google Analytics Google Analytics is a web analytics tool I use to help understand how visitors engage with this website. It reports website trends using cookies and web beacons without identifying individual visitors. You can read [Google Analytics Privacy Policy](http://www.google.com/analytics/learn/privacy.html).

@import "jekyll-theme-primer";

{"/about/":"https://fanchennus.github.io/","/about.html":"https://fanchennus.github.io/","/resume-json":"https://fanchennus.github.io/cv-json/","/resume":"https://fanchennus.github.io/cv/","/md/":"https://fanchennus.github.io/markdown/","/markdown.html":"https://fanchennus.github.io/markdown/","/nmp/":"https://fanchennus.github.io/non-menu-page/","/nmp.html":"https://fanchennus.github.io/non-menu-page/","/posts/":"https://fanchennus.github.io/year-archive/"}

Jupyter notebook markdown generator

# Jupyter notebook markdown generator These .ipynb files are Jupyter notebook files that convert a TSV containing structured data about talks (`talks.tsv`) or presentations (`presentations.tsv`) into individual markdown files that will be properly formatted for the academicpages template. The notebooks contain a lot of documentation about the process. The .py files are pure python that do the same things if they are executed in a terminal, they just don't have pretty documentation.

{% if page.xsl %}{% endif %}<feed xmlns="http://www.w3.org/2005/Atom" {% if site.lang %}xml:lang="{{ site.lang }}"{% endif %}>Jekyll<link href="{{ '/' | absolute_url }}" rel="alternate" type="text/html" {% if site.lang %}hreflang="{{ site.lang }}" {% endif %}/>{{ site.time | date_to_xmlschema }}{{ page.url | absolute_url | xml_escape }}{% assign title = site.title | default: site.name %}{% if page.collection != "posts" %}{% assign collection = page.collection | capitalize %}{% assign title = title | append: " | " | append: collection %}{% endif %}{% if page.category %}{% assign category = page.category | capitalize %}{% assign title = title | append: " | " | append: category %}{% endif %}{% if title %}{{ title | smartify | xml_escape }}{% endif %}{% if site.description %}{{ site.description | xml_escape }}{% endif %}{% if site.author %}{{ site.author.name | default: site.author | xml_escape }}{% if site.author.email %}{{ site.author.email | xml_escape }}{% endif %}{% if site.author.uri %}{{ site.author.uri | xml_escape }}{% endif %}{% endif %}{% if page.tags %}{% assign posts = site.tags[page.tags] %}{% else %}{% assign posts = site[page.collection] %}{% endif %}{% if page.category %}{% assign posts = posts | where: "categories", page.category %}{% endif %}{% unless site.show_drafts %}{% assign posts = posts | where_exp: "post", "post.draft != true" %}{% endunless %}{% assign posts = posts | sort: "date" | reverse %}{% assign posts_limit = site.feed.posts_limit | default: 10 %}{% for post in posts limit: posts_limit %}<entry{% if post.lang %}{{" "}}xml:lang="{{ post.lang }}"{% endif %}>{% assign post_title = post.title | smartify | strip_html | normalize_whitespace | xml_escape %}{{ post_title }} {{ post.date | date_to_xmlschema }}{{ post.last_modified_at | default: post.date | date_to_xmlschema }}{{ post.id | absolute_url | xml_escape }}{% assign excerpt_only = post.feed.excerpt_only | default: site.feed.excerpt_only %}{% unless excerpt_only %}<![CDATA[{{ post.content | strip }}]]>{% endunless %}{% assign post_author = post.author | default: post.authors[0] | default: site.author %}{% assign post_author = site.data.authors[post_author] | default: post_author %}{% assign post_author_email = post_author.email | default: nil %}{% assign post_author_uri = post_author.uri | default: nil %}{% assign post_author_name = post_author.name | default: post_author %}{{ post_author_name | default: "" | xml_escape }}{% if post_author_email %}{{ post_author_email | xml_escape }}{% endif %}{% if post_author_uri %}{{ post_author_uri | xml_escape }}{% endif %}{% if post.category %}{% elsif post.categories %}{% for category in post.categories %}{% endfor %}{% endif %}{% for tag in post.tags %}{% endfor %}{% assign post_summary = post.description | default: post.excerpt %}{% if post_summary and post_summary != empty %}<![CDATA[{{ post_summary | strip_html | normalize_whitespace }}]]>{% endif %}{% assign post_image = post.image.path | default: post.image %}{% if post_image %}{% unless post_image contains "://" %}{% assign post_image = post_image | absolute_url %}{% endunless %}{% endif %}</entry>{% endfor %}</feed>

{% if page.xsl %} {% endif %} {% assign collections = site.collections | where_exp:'collection','collection.output != false' %}{% for collection in collections %}{% assign docs = collection.docs | where_exp:'doc','doc.sitemap != false' %}{% for doc in docs %} {{ doc.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if doc.last_modified_at or doc.date %}{{ doc.last_modified_at | default: doc.date | date_to_xmlschema }} {% endif %} {% endfor %}{% endfor %}{% assign pages = site.html_pages | where_exp:'doc','doc.sitemap != false' | where_exp:'doc','doc.url != "/404.html"' %}{% for page in pages %} {{ page.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if page.last_modified_at %}{{ page.last_modified_at | date_to_xmlschema }} {% endif %} {% endfor %}{% assign static_files = page.static_files | where_exp:'page','page.sitemap != false' | where_exp:'page','page.name != "404.html"' %}{% for file in static_files %} {{ file.path | replace:'/index.html','/' | absolute_url | xml_escape }} {{ file.modified_time | date_to_xmlschema }} {% endfor %}

Sitemap: {{ "sitemap.xml" | absolute_url }}
    </div>     -->

    <!--  -->

Page Not Found

Sorry, but the page you were trying to view does not exist.

Dr. Fan Chen

Dr. Fan Chen is a computational mechanics and advanced manufacturing researcher with cross-disciplinary expertise in additive manufacturing, AI-integrated modeling, and high-performance simulation. His recent work involves implementing visco-plasticity laws in Lagamine and developing creep models for metallic systems. His technical strengths include advanced numerical simulation and multi-scale modeling for process–structure–property relationships in manufacturing. He also has teaching assistance experience in mechanics and materials science at NUS and mentoring students on computational mechanics in different institutions.

Main Research Topics (published)


• Coupled CFD-FEM modeling for AM

Poster description

Fan Chen… - Materials & Design, 2020


• Origin of dislocation density in AM

Poster description

G Wang,…,Fan Chen… - Materials Research Letters, 2020


• 4D metal-based printing

Poster description

Wu, W.,…,Fan Chen… - Advanced Science 2023


• Data-driven temperature field prediction with rational physic constraints

Poster description

Fan Chen… - CMAME, 2022


• Heat accumulation analysis for samples clusters (over 100 AM samples)

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


• Incremetnal sheet metal forming - English wheel

Poster description

D Suarez, Fan Chen…- Journal of Manufacturing Systems


• Incremetnal sheet metal forming - DED on sheet metal

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


Ongoing works


• Coupled CFD-FEM modeling for AM – DED

Poster description

Poster description


• Colding cracking mechanism in AM

Poster description


• Micro-Casting of Titanium Alloy in Self-boiling Molds

Poster description


• Pattern oriented equivalent strain attribution

Poster description


• Creep modeling framework for 30CrMoNiV11-5 alloy application of Morch phenomenological law and mean-field creep model

Poster description

Poster description



Share this page:
LinkedIn | Twitter | Email
</div> -->

Poster description

Dr. Fan Chen is a computational mechanics and advanced manufacturing researcher with cross-disciplinary expertise in additive manufacturing, AI-integrated modeling, and high-performance simulation. His recent work involves implementing visco-plasticity laws in Lagamine and developing creep models for metallic systems. His technical strengths include advanced numerical simulation and multi-scale modeling for process–structure–property relationships in manufacturing. He also has teaching assistance experience in mechanics and materials science at NUS and mentoring students on computational mechanics in different institutions.

Main Research Topics (published)


• Coupled CFD-FEM modeling for AM

Poster description

Fan Chen… - Materials & Design, 2020


• Origin of dislocation density in AM

Poster description

G Wang,…,Fan Chen… - Materials Research Letters, 2020


• 4D metal-based printing

Poster description

Wu, W.,…,Fan Chen… - Advanced Science 2023


• Data-driven temperature field prediction with rational physic constraints

Poster description

Fan Chen… - CMAME, 2022


• Heat accumulation analysis for samples clusters (over 100 AM samples)

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


• Incremetnal sheet metal forming - English wheel

Poster description

D Suarez, Fan Chen…- Journal of Manufacturing Systems


• Incremetnal sheet metal forming - DED on sheet metal

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


Ongoing works


• Coupled CFD-FEM modeling for AM – DED

Poster description

Poster description


• Colding cracking mechanism in AM

Poster description


• Micro-Casting of Titanium Alloy in Self-boiling Molds

Poster description


• Pattern oriented equivalent strain attribution

Poster description


• Creep modeling framework for 30CrMoNiV11-5 alloy application of Morch phenomenological law and mean-field creep model

Poster description

Poster description



Share this page:
LinkedIn | Twitter | Email

Dr. Fan Chen

Dr. Fan Chen is a computational mechanics and advanced manufacturing researcher with cross-disciplinary expertise in additive manufacturing, AI-integrated modeling, and high-performance simulation. His recent work involves implementing visco-plasticity laws in Lagamine and developing creep models for metallic systems. His technical strengths include advanced numerical simulation and multi-scale modeling for process–structure–property relationships in manufacturing. He also has teaching assistance experience in mechanics and materials science at NUS and mentoring students on computational mechanics in different institutions.

Main Research Topics (published)


• Coupled CFD-FEM modeling for AM

Poster description

Fan Chen… - Materials & Design, 2020


• Origin of dislocation density in AM

Poster description

G Wang,…,Fan Chen… - Materials Research Letters, 2020


• 4D metal-based printing

Poster description

Wu, W.,…,Fan Chen… - Advanced Science 2023


• Data-driven temperature field prediction with rational physic constraints

Poster description

Fan Chen… - CMAME, 2022


• Heat accumulation analysis for samples clusters (over 100 AM samples)

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


• Incremetnal sheet metal forming - English wheel

Poster description

D Suarez, Fan Chen…- Journal of Manufacturing Systems


• Incremetnal sheet metal forming - DED on sheet metal

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


Ongoing works


• Coupled CFD-FEM modeling for AM – DED

Poster description

Poster description


• Colding cracking mechanism in AM

Poster description


• Micro-Casting of Titanium Alloy in Self-boiling Molds

Poster description


• Pattern oriented equivalent strain attribution

Poster description


• Creep modeling framework for 30CrMoNiV11-5 alloy application of Morch phenomenological law and mean-field creep model

Poster description

Poster description



Share this page:
LinkedIn | Twitter | Email
</div> -->

Poster description

Dr. Fan Chen is a computational mechanics and advanced manufacturing researcher with cross-disciplinary expertise in additive manufacturing, AI-integrated modeling, and high-performance simulation. His recent work involves implementing visco-plasticity laws in Lagamine and developing creep models for metallic systems. His technical strengths include advanced numerical simulation and multi-scale modeling for process–structure–property relationships in manufacturing. He also has teaching assistance experience in mechanics and materials science at NUS and mentoring students on computational mechanics in different institutions.

Main Research Topics (published)


• Coupled CFD-FEM modeling for AM

Poster description

Fan Chen… - Materials & Design, 2020


• Origin of dislocation density in AM

Poster description

G Wang,…,Fan Chen… - Materials Research Letters, 2020


• 4D metal-based printing

Poster description

Wu, W.,…,Fan Chen… - Advanced Science 2023


• Data-driven temperature field prediction with rational physic constraints

Poster description

Fan Chen… - CMAME, 2022


• Heat accumulation analysis for samples clusters (over 100 AM samples)

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


• Incremetnal sheet metal forming - English wheel

Poster description

D Suarez, Fan Chen…- Journal of Manufacturing Systems


• Incremetnal sheet metal forming - DED on sheet metal

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


Ongoing works


• Coupled CFD-FEM modeling for AM – DED

Poster description

Poster description


• Colding cracking mechanism in AM

Poster description


• Micro-Casting of Titanium Alloy in Self-boiling Molds

Poster description


• Pattern oriented equivalent strain attribution

Poster description


• Creep modeling framework for 30CrMoNiV11-5 alloy application of Morch phenomenological law and mean-field creep model

Poster description

Poster description



Share this page:
LinkedIn | Twitter | Email

Archive Layout with Content

A variety of common markup showing how the theme styles them. # Header one ## Header two ### Header three #### Header four ##### Header five ###### Header six ## Blockquotes Single line blockquote: > Quotes are cool. ## Tables | Entry | Item | | | -------- | ------ | ------------------------------------------------------------ | | [John Doe](#) | 2016 | Description of the item in the list | | [Jane Doe](#) | 2019 | Description of the item in the list | | [Doe Doe](#) | 2022 | Description of the item in the list | | Header1 | Header2 | Header3 | |:--------|:-------:|--------:| | cell1 | cell2 | cell3 | | cell4 | cell5 | cell6 | |-----------------------------| | cell1 | cell2 | cell3 | | cell4 | cell5 | cell6 | |=============================| | Foot1 | Foot2 | Foot3 | ## Definition Lists Definition List Title : Definition list division. Startup : A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model. #dowork : Coined by Rob Dyrdek and his personal body guard Christopher "Big Black" Boykins, "Do Work" works as a self motivator, to motivating your friends. Do It Live : I'll let Bill O'Reilly [explain](https://www.youtube.com/watch?v=O_HyZ5aW76c "We'll Do It Live") this one. ## Unordered Lists (Nested) * List item one * List item one * List item one * List item two * List item three * List item four * List item two * List item three * List item four * List item two * List item three * List item four ## Ordered List (Nested) 1. List item one 1. List item one 1. List item one 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four ## Buttons Make any link standout more when applying the `.btn` class. ## Notices **Watch out!** You can also add notices by appending `{: .notice}` to a paragraph. {: .notice} ## HTML Tags ### Address Tag
1 Infinite Loop
Cupertino, CA 95014
United States
### Anchor Tag (aka. Link) This is an example of a [link](http://github.com "GitHub"). ### Abbreviation Tag The abbreviation CSS stands for "Cascading Style Sheets". *[CSS]: Cascading Style Sheets ### Cite Tag "Code is poetry." ---Automattic ### Code Tag You will learn later on in these tests that `word-wrap: break-word;` will be your best friend. ### Strike Tag This tag will let you strikeout text. ### Emphasize Tag The emphasize tag should _italicize_ text. ### Insert Tag This tag should denote inserted text. ### Keyboard Tag This scarcely known tag emulates keyboard text, which is usually styled like the `` tag. ### Preformatted Tag This tag styles large blocks of code.
.post-title {
  margin: 0 0 5px;
  font-weight: bold;
  font-size: 38px;
  line-height: 1.2;
  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}
### Quote Tag Developers, developers, developers… –Steve Ballmer ### Strong Tag This tag shows **bold text**. ### Subscript Tag Getting our science styling on with H2O, which should push the "2" down. ### Superscript Tag Still sticking with science and Isaac Newton's E = MC2, which should lift the 2 up. ### Variable Tag This allows you to denote variables. {% include base_path %} {% for post in site.pages %} {% include archive-single.html %} {% endfor %} </div> </article> </div>

Posts by Category

{% include base_path %} {% include group-by-array collection=site.posts field="categories" %} {% for category in group_names %} {% assign posts = group_items[forloop.index0] %}

{{ category }}

{% for post in posts %} {% include archive-single.html %} {% endfor %} {% endfor %}

Posts by Collection

{% include base_path %} {% capture written_label %}'None'{% endcapture %} {% for collection in site.collections %} {% unless collection.output == false or collection.label == "posts" %} {% capture label %}{{ collection.label }}{% endcapture %} {% if label != written_label %}

{{ label }}

{% capture written_label %}{{ label }}{% endcapture %} {% endif %} {% endunless %} {% for post in collection.docs %} {% unless collection.output == false or collection.label == "posts" %} {% include archive-single.html %} {% endunless %} {% endfor %} {% endfor %}

CV

{% include base_path %} {% include cv-template.html %}

CV

{% include base_path %} Education ====== * Ph.D in Version Control Theory, GitHub University, 2018 (expected) * M.S. in Jekyll, GitHub University, 2014 * B.S. in GitHub, GitHub University, 2012 Work experience ====== * Spring 2024: Academic Pages Collaborator * GitHub University * Duties includes: Updates and improvements to template * Supervisor: The Users * Fall 2015: Research Assistant * GitHub University * Duties included: Merging pull requests * Supervisor: Professor Hub * Summer 2015: Research Assistant * GitHub University * Duties included: Tagging issues * Supervisor: Professor Git Skills ====== * Skill 1 * Skill 2 * Sub-skill 2.1 * Sub-skill 2.2 * Sub-skill 2.3 * Skill 3 Publications ======
    {% for post in site.publications reversed %} {% include archive-single-cv.html %} {% endfor %}
Talks ======
    {% for post in site.talks reversed %} {% include archive-single-talk-cv.html %} {% endfor %}
Teaching ======
    {% for post in site.teaching reversed %} {% include archive-single-cv.html %} {% endfor %}
Service and leadership ====== * Currently signed in to 43 different slack teams

/* * This file controls what is imported from /_sass * * Note that the files are processed in the order they are imported, so they are partly sorted by the dependencies. Also, the first two lines of the file are required by Jekyll. */ @import "vendor/breakpoint/breakpoint", "themes", "theme/default", "theme/dark", "include/mixins", "vendor/susy/susy", "layout/reset", "layout/base", "include/utilities", "layout/tables", "layout/buttons", "layout/notices", "layout/masthead", "layout/navigation", "layout/footer", "syntax", "layout/forms", "layout/page", "layout/archive", "layout/sidebar", "vendor/font-awesome/fontawesome", "vendor/font-awesome/solid", "vendor/font-awesome/brands", "vendor/magnific-popup/magnific-popup" ;

Markdown

{% include toc %} ## Locations of key files/directories * Basic config options: _config.yml * Top navigation bar config: _data/navigation.yml * Single pages: _pages/ * Collections of pages are .md or .html files in: * _publications/ * _portfolio/ * _posts/ * _teaching/ * _talks/ * Footer: _includes/footer.html * Static files (like PDFs): /files/ * Profile image (can set in _config.yml): images/profile.png ## Tips and hints * Name a file ".md" to have it render in markdown, name it ".html" to render in HTML. * Go to the [commit list](https://github.com/academicpages/academicpages.github.io/commits/master) (on your repo) to find the last version GitHub built with Jekyll. * Green check: successful build * Orange circle: building * Red X: error * No icon: not built * Academic Pages uses [Jekyll Kramdown](https://jekyllrb.com/docs/configuration/markdown/), GitHub Flavored Markdown (GFM) parser, which is similar to the version of Markdown used on GitHub, but may have some minor differences. * Some of emoji supported on GitHub should be supposed via the [Jemoji](https://github.com/jekyll/jemoji) plugin :computer:. * The best list of the supported emoji can be found in the [Emojis for Jekyll via Jemoji](https://www.fabriziomusacchio.com/blog/2021-08-16-emojis_for_Jekyll/#computer) blog post. * While GitHub Pages prevents server side code from running, client-side scripts are supported. * This means that Google Analytics is supported, and [the wiki](https://github.com/academicpages/academicpages.github.io/wiki/Adding-Google-Analytics) should contain the most up-to-date information on getting it working. * Your CV can be written using either Markdown ([preview](https://academicpages.github.io/cv/)) or generated via JSON ([preview](https://academicpages.github.io/cv-json/)) and the layouts are slightly different. You can update the path to the one being used in `_data/navigation.yml` with the JSON formatted CV being hidden by default. ## Resources * [Liquid syntax guide](https://shopify.github.io/liquid/tags/control-flow/) * [MathJax Documentation](https://docs.mathjax.org/en/latest/) ## MathJax Support for MathJax Version 3.0 is included in the template: $$ \displaylines{ \nabla \cdot E= \frac{\rho}{\epsilon_0} \\\ \nabla \cdot B=0 \\\ \nabla \times E= -\partial_tB \\\ \nabla \times B = \mu_0 \left(J + \varepsilon_0 \partial_t E \right) } $$ The default delimiters of `$$...$$` and `\\[...\\]` are supported for displayed mathematics, while `\\(...\\)` should be used for in-line mathematics (ex., \\(a^2 + b^2 = c^2\\)) **Note** that since Academic Pages uses Markdown which cases some interference with MathJax and LaTeX for escaping characters and new lines, although [some workarounds exist](https://math.codidact.com/posts/278763/278772#answer-278772). In some cases, such as when you are including MathJax in a `citation` field for publications, it may be necessary to use `\(...\)` for inline delineation. ## Markdown guide Academic Pages uses [kramdown](https://kramdown.gettalong.org/index.html) for Markdown rendering, which has some differences from other Markdown implementations such as GitHub's. In addition to this guide, please see the [kramdown Syntax page](https://kramdown.gettalong.org/syntax.html) for full documentation. ### Header three #### Header four ##### Header five ###### Header six ## Blockquotes Single line blockquote: > Quotes are cool. ## Tables ### Table 1 | Entry | Item | | | -------- | ------ | ------------------------------------------------------------ | | [John Doe](#) | 2016 | Description of the item in the list | | [Jane Doe](#) | 2019 | Description of the item in the list | | [Doe Doe](#) | 2022 | Description of the item in the list | ### Table 2 | Header1 | Header2 | Header3 | |:--------|:-------:|--------:| | cell1 | cell2 | cell3 | | cell4 | ce ll5 | cell6 | |-----------------------------| | cell1 | cell2 | cell3 | | cell4 | cell5 | cell6 | |=============================| | Foot1 | Foot2 | Foot3 | ## Definition Lists Definition List Title : Definition list division. Startup : A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model. #dowork : Coined by Rob Dyrdek and his personal body guard Christopher "Big Black" Boykins, "Do Work" works as a self motivator, to motivating your friends. Do It Live : I'll let Bill O'Reilly [explain](https://www.youtube.com/watch?v=O_HyZ5aW76c "We'll Do It Live") this one. ## Unordered Lists (Nested) * List item one * List item one * List item one * List item two * List item three * List item four * List item two * List item three * List item four * List item two * List item three * List item four ## Ordered List (Nested) 1. List item one 1. List item one 1. List item one 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four ## Buttons Make any link standout more when applying the `.btn` class. ## Notices Basic notices or call-outs are supported using the following syntax: ```markdown **Watch out!** You can also add notices by appending `{: .notice}` to the line following paragraph. {: .notice} ``` which wil render as: **Watch out!** You can also add notices by appending `{: .notice}` to the line following paragraph. {: .notice} ### Footnotes Footnotes can be useful for clarifying points in the text, or citing information.[^1] Markdown support numeric footnotes, as well as text as long as the values are unique.[^note] ```markdown This is the regular text.[^1] This is more regular text.[^note] [^1]: This is the footnote itself. [^note]: This is another footnote. ``` [^1]: Such as this footnote. [^note]: When using text for footnotes markers, no spaces are permitted in the name. ## HTML Tags ### Address Tag
1 Infinite Loop
Cupertino, CA 95014
United States
### Anchor Tag (aka. Link) This is an example of a [link](http://github.com "GitHub"). ### Abbreviation Tag The abbreviation CSS stands for "Cascading Style Sheets". *[CSS]: Cascading Style Sheets ### Cite Tag "Code is poetry." ---Automattic ### Code Tag You will learn later on in these tests that `word-wrap: break-word;` will be your best friend. You can also write larger blocks of code with syntax highlighting supported for some languages, such as Python: ```python print('Hello World!') ``` or R: ```R print("Hello World!", quote = FALSE) ``` ### Details Tag (collapsible sections) The HTML `
` tag works well with Markdown and allows you to include collapsible sections, see [W3Schools](https://www.w3schools.com/tags/tag_details.asp) for more information on how to use the tag.
Collapsed by default This section was collapsed by default!
The source code: ```HTML
Collapsed by default This section was collapsed by default!
``` Or, you can leave a section open by default by including the `open` attribute in the tag:
Open by default This section is open by default thanks to open in the <details open> tag!
### Emphasize Tag The emphasize tag should _italicize_ text. ### Insert Tag This tag should denote inserted text. ### Keyboard Tag This scarcely known tag emulates keyboard text, which is usually styled like the `` tag. ### Preformatted Tag This tag styles large blocks of code.
.post-title {
  margin: 0 0 5px;
  font-weight: bold;
  font-size: 38px;
  line-height: 1.2;
  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}
### Quote Tag Developers, developers, developers… –Steve Ballmer ### Strike Tag This tag will let you strikeout text. ### Strong Tag This tag shows **bold text**. ### Subscript Tag Getting our science styling on with H2O, which should push the "2" down. ### Superscript Tag Still sticking with science and Isaac Newton's E = MC2, which should lift the 2 up. ### Variable Tag This allows you to denote variables. *** **Footnotes** The footnotes in the page will be returned following this line, return to the section on Markdown Footnotes. </div> </article> </div>

Page not in menu

This is a page not in the menu. You can use markdown in this page. Heading 1 ====== Heading 2 ======

Page Archive

{% include base_path %} {% for post in site.pages %} {% include archive-single.html %} {% endfor %}

Publications

{% if site.publication_category %} {% for category in site.publication_category %} {% assign title_shown = false %} {% for post in site.publications reversed %} {% if post.category != category[0] %} {% continue %} {% endif %} {% unless title_shown %}

{{ category[1].title }}


{% assign title_shown = true %} {% endunless %} {% include archive-single.html %} {% endfor %} {% endfor %} {% else %} {% for post in site.publications reversed %} {% include archive-single.html %} {% endfor %} {% endif %} </div> -->
{% if site.author.googlescholar %}
You can also find my articles on my Google Scholar profile.
{% endif %} {% include base_path %} {% if site.publication_category %} {% for category in site.publication_category %} {% assign title_shown = false %} {% for post in site.publications reversed %} {% if post.category != category[0] %} {% continue %} {% endif %} {% unless title_shown %}

{{ category[1].title }}


{% assign title_shown = true %} {% endunless %} {% include archive-single.html %} {% endfor %} {% endfor %} {% else %} {% for post in site.publications reversed %} {% include archive-single.html %} {% endfor %} {% endif %}

Sitemap

{% include base_path %} A list of all the posts and pages found on the site. For you robots out there, there is an [XML version]({{ base_path }}/sitemap.xml) available for digesting as well.

Pages

{% for post in site.pages %} {% include archive-single.html %} {% endfor %}

Posts

{% for post in site.posts %} {% include archive-single.html %} {% endfor %} {% capture written_label %}'None'{% endcapture %} {% for collection in site.collections %} {% unless collection.output == false or collection.label == "posts" %} {% capture label %}{{ collection.label }}{% endcapture %} {% if label != written_label %}

{{ label }}

{% capture written_label %}{{ label }}{% endcapture %} {% endif %} {% endunless %} {% for post in collection.docs %} {% unless collection.output == false or collection.label == "posts" %} {% include archive-single.html %} {% endunless %} {% endfor %} {% endfor %}

Posts by Tags

{% include base_path %} {% include group-by-array collection=site.posts field="tags" %} {% for tag in group_names %} {% assign posts = group_items[forloop.index0] %}

{{ tag }}

{% for post in posts %} {% include archive-single.html %} {% endfor %} {% endfor %}

Talk map

This map is generated from a Jupyter Notebook file in talkmap.ipynb, which mines the location fields in the .md files in _talks/.


Eduacation & Employment

2024–2025: University of Liege

  • Research Scientist/Project Leader, Urban and Environmental Engineering -Funded by European Union,
    Principal investigator – Anne Marie Habraken: anne.habraken@uliege.be

2022–2023: Northwestern University

  • Postdoc, McCormick School of Engineering, AMPL -supported by USA Vannevar Bush Faculty Fellowship award,
    Principal investigator – Jian Cao: jcao@northwestern.edu

2018–2022: National University of Singapore


2011-2018: Huazhong University of Science & Technology

  • 2015-2018: Master of Engineering, Design & Manufacture of Ships and Marine Structure (China Graduate Scholarship)
  • 2011-2015: Bachelor of Engineering, Naval Architecture & Ocean Engineering (2012 China National Scholarship)

Teaching

{% include base_path %} {% for post in site.teaching reversed %} {% include archive-single.html %} {% endfor %}

Terms and Privacy Policy

{% include base_path %} {% include toc %} ## Privacy Policy The privacy of my visitors is extremely important. This Privacy Policy outlines the types of personal information that is received and collected and how it is used. First and foremost, I will never share your email address or any other personal information to anyone without your direct consent. ### Log Files Like many other websites, this site uses log files to help learn about when, from where, and how often traffic flows to this site. The information in these log files include: * Internet Protocol addresses (IP) * Types of browser * Internet Service Provider (ISP) * Date and time stamp * Referring and exit pages * Number of clicks All of this information is not linked to anything that is personally identifiable. ### Cookies and Web Beacons When you visit this site "convenience" cookies are stored on your computer when you submit a comment to help you log in faster to [Disqus](http://disqus.com) the next time you leave a comment. Third-party advertisers may also place and read cookies on your browser and/or use web beacons to collect information. This site has no access or control over these cookies. You should review the respective privacy policies on any and all third-party ad servers for more information regarding their practices and how to opt-out. If you wish to disable cookies, you may do so through your web browser options. Instructions for doing so can be found on the specific web browsers' websites. #### Google Analytics Google Analytics is a web analytics tool I use to help understand how visitors engage with this website. It reports website trends using cookies and web beacons without identifying individual visitors. You can read [Google Analytics Privacy Policy](http://www.google.com/analytics/learn/privacy.html).

@import "jekyll-theme-primer";

{"/about/":"https://fanchennus.github.io/","/about.html":"https://fanchennus.github.io/","/resume-json":"https://fanchennus.github.io/cv-json/","/resume":"https://fanchennus.github.io/cv/","/md/":"https://fanchennus.github.io/markdown/","/markdown.html":"https://fanchennus.github.io/markdown/","/nmp/":"https://fanchennus.github.io/non-menu-page/","/nmp.html":"https://fanchennus.github.io/non-menu-page/","/posts/":"https://fanchennus.github.io/year-archive/"}

Jupyter notebook markdown generator

# Jupyter notebook markdown generator These .ipynb files are Jupyter notebook files that convert a TSV containing structured data about talks (`talks.tsv`) or presentations (`presentations.tsv`) into individual markdown files that will be properly formatted for the academicpages template. The notebooks contain a lot of documentation about the process. The .py files are pure python that do the same things if they are executed in a terminal, they just don't have pretty documentation.

{% if page.xsl %}{% endif %}<feed xmlns="http://www.w3.org/2005/Atom" {% if site.lang %}xml:lang="{{ site.lang }}"{% endif %}>Jekyll<link href="{{ '/' | absolute_url }}" rel="alternate" type="text/html" {% if site.lang %}hreflang="{{ site.lang }}" {% endif %}/>{{ site.time | date_to_xmlschema }}{{ page.url | absolute_url | xml_escape }}{% assign title = site.title | default: site.name %}{% if page.collection != "posts" %}{% assign collection = page.collection | capitalize %}{% assign title = title | append: " | " | append: collection %}{% endif %}{% if page.category %}{% assign category = page.category | capitalize %}{% assign title = title | append: " | " | append: category %}{% endif %}{% if title %}{{ title | smartify | xml_escape }}{% endif %}{% if site.description %}{{ site.description | xml_escape }}{% endif %}{% if site.author %}{{ site.author.name | default: site.author | xml_escape }}{% if site.author.email %}{{ site.author.email | xml_escape }}{% endif %}{% if site.author.uri %}{{ site.author.uri | xml_escape }}{% endif %}{% endif %}{% if page.tags %}{% assign posts = site.tags[page.tags] %}{% else %}{% assign posts = site[page.collection] %}{% endif %}{% if page.category %}{% assign posts = posts | where: "categories", page.category %}{% endif %}{% unless site.show_drafts %}{% assign posts = posts | where_exp: "post", "post.draft != true" %}{% endunless %}{% assign posts = posts | sort: "date" | reverse %}{% assign posts_limit = site.feed.posts_limit | default: 10 %}{% for post in posts limit: posts_limit %}<entry{% if post.lang %}{{" "}}xml:lang="{{ post.lang }}"{% endif %}>{% assign post_title = post.title | smartify | strip_html | normalize_whitespace | xml_escape %}{{ post_title }} {{ post.date | date_to_xmlschema }}{{ post.last_modified_at | default: post.date | date_to_xmlschema }}{{ post.id | absolute_url | xml_escape }}{% assign excerpt_only = post.feed.excerpt_only | default: site.feed.excerpt_only %}{% unless excerpt_only %}<![CDATA[{{ post.content | strip }}]]>{% endunless %}{% assign post_author = post.author | default: post.authors[0] | default: site.author %}{% assign post_author = site.data.authors[post_author] | default: post_author %}{% assign post_author_email = post_author.email | default: nil %}{% assign post_author_uri = post_author.uri | default: nil %}{% assign post_author_name = post_author.name | default: post_author %}{{ post_author_name | default: "" | xml_escape }}{% if post_author_email %}{{ post_author_email | xml_escape }}{% endif %}{% if post_author_uri %}{{ post_author_uri | xml_escape }}{% endif %}{% if post.category %}{% elsif post.categories %}{% for category in post.categories %}{% endfor %}{% endif %}{% for tag in post.tags %}{% endfor %}{% assign post_summary = post.description | default: post.excerpt %}{% if post_summary and post_summary != empty %}<![CDATA[{{ post_summary | strip_html | normalize_whitespace }}]]>{% endif %}{% assign post_image = post.image.path | default: post.image %}{% if post_image %}{% unless post_image contains "://" %}{% assign post_image = post_image | absolute_url %}{% endunless %}{% endif %}</entry>{% endfor %}</feed>

{% if page.xsl %} {% endif %} {% assign collections = site.collections | where_exp:'collection','collection.output != false' %}{% for collection in collections %}{% assign docs = collection.docs | where_exp:'doc','doc.sitemap != false' %}{% for doc in docs %} {{ doc.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if doc.last_modified_at or doc.date %}{{ doc.last_modified_at | default: doc.date | date_to_xmlschema }} {% endif %} {% endfor %}{% endfor %}{% assign pages = site.html_pages | where_exp:'doc','doc.sitemap != false' | where_exp:'doc','doc.url != "/404.html"' %}{% for page in pages %} {{ page.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if page.last_modified_at %}{{ page.last_modified_at | date_to_xmlschema }} {% endif %} {% endfor %}{% assign static_files = page.static_files | where_exp:'page','page.sitemap != false' | where_exp:'page','page.name != "404.html"' %}{% for file in static_files %} {{ file.path | replace:'/index.html','/' | absolute_url | xml_escape }} {{ file.modified_time | date_to_xmlschema }} {% endfor %}

Sitemap: {{ "sitemap.xml" | absolute_url }}
 -->

    <!--  -->

A variety of common markup showing how the theme styles them.

Header one

Header two

Header three

Header four

Header five
Header six

Blockquotes

Single line blockquote:

Quotes are cool.

Tables

Entry Item  
John Doe 2016 Description of the item in the list
Jane Doe 2019 Description of the item in the list
Doe Doe 2022 Description of the item in the list
Header1 Header2 Header3
cell1 cell2 cell3
cell4 cell5 cell6
cell1 cell2 cell3
cell4 cell5 cell6
Foot1 Foot2 Foot3

Definition Lists

Definition List Title
Definition list division.
Startup
A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model.
#dowork
Coined by Rob Dyrdek and his personal body guard Christopher “Big Black” Boykins, “Do Work” works as a self motivator, to motivating your friends.
Do It Live
I’ll let Bill O’Reilly explain this one.

Unordered Lists (Nested)

  • List item one
    • List item one
      • List item one
      • List item two
      • List item three
      • List item four
    • List item two
    • List item three
    • List item four
  • List item two
  • List item three
  • List item four

Ordered List (Nested)

  1. List item one
    1. List item one
      1. List item one
      2. List item two
      3. List item three
      4. List item four
    2. List item two
    3. List item three
    4. List item four
  2. List item two
  3. List item three
  4. List item four

Buttons

Make any link standout more when applying the .btn class.

Notices

Watch out! You can also add notices by appending {: .notice} to a paragraph.

HTML Tags

Address Tag

1 Infinite Loop
Cupertino, CA 95014
United States

This is an example of a link.

Abbreviation Tag

The abbreviation CSS stands for “Cascading Style Sheets”.

Cite Tag

“Code is poetry.” —Automattic

Code Tag

You will learn later on in these tests that word-wrap: break-word; will be your best friend.

Strike Tag

This tag will let you strikeout text.

Emphasize Tag

The emphasize tag should italicize text.

Insert Tag

This tag should denote inserted text.

Keyboard Tag

This scarcely known tag emulates keyboard text, which is usually styled like the <code> tag.

Preformatted Tag

This tag styles large blocks of code.

.post-title {
  margin: 0 0 5px;
  font-weight: bold;
  font-size: 38px;
  line-height: 1.2;
  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}

Quote Tag

Developers, developers, developers… –Steve Ballmer

Strong Tag

This tag shows bold text.

Subscript Tag

Getting our science styling on with H2O, which should push the “2” down.

Superscript Tag

Still sticking with science and Isaac Newton’s E = MC2, which should lift the 2 up.

Variable Tag

This allows you to denote variables.

Page Not Found

Sorry, but the page you were trying to view does not exist.

Dr. Fan Chen

Dr. Fan Chen is a computational mechanics and advanced manufacturing researcher with cross-disciplinary expertise in additive manufacturing, AI-integrated modeling, and high-performance simulation. His recent work involves implementing visco-plasticity laws in Lagamine and developing creep models for metallic systems. His technical strengths include advanced numerical simulation and multi-scale modeling for process–structure–property relationships in manufacturing. He also has teaching assistance experience in mechanics and materials science at NUS and mentoring students on computational mechanics in different institutions.

Main Research Topics (published)


• Coupled CFD-FEM modeling for AM

Poster description

Fan Chen… - Materials & Design, 2020


• Origin of dislocation density in AM

Poster description

G Wang,…,Fan Chen… - Materials Research Letters, 2020


• 4D metal-based printing

Poster description

Wu, W.,…,Fan Chen… - Advanced Science 2023


• Data-driven temperature field prediction with rational physic constraints

Poster description

Fan Chen… - CMAME, 2022


• Heat accumulation analysis for samples clusters (over 100 AM samples)

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


• Incremetnal sheet metal forming - English wheel

Poster description

D Suarez, Fan Chen…- Journal of Manufacturing Systems


• Incremetnal sheet metal forming - DED on sheet metal

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


Ongoing works


• Coupled CFD-FEM modeling for AM – DED

Poster description

Poster description


• Colding cracking mechanism in AM

Poster description


• Micro-Casting of Titanium Alloy in Self-boiling Molds

Poster description


• Pattern oriented equivalent strain attribution

Poster description


• Creep modeling framework for 30CrMoNiV11-5 alloy application of Morch phenomenological law and mean-field creep model

Poster description

Poster description



Share this page:
LinkedIn | Twitter | Email
</div> -->

Poster description

Dr. Fan Chen is a computational mechanics and advanced manufacturing researcher with cross-disciplinary expertise in additive manufacturing, AI-integrated modeling, and high-performance simulation. His recent work involves implementing visco-plasticity laws in Lagamine and developing creep models for metallic systems. His technical strengths include advanced numerical simulation and multi-scale modeling for process–structure–property relationships in manufacturing. He also has teaching assistance experience in mechanics and materials science at NUS and mentoring students on computational mechanics in different institutions.

Main Research Topics (published)


• Coupled CFD-FEM modeling for AM

Poster description

Fan Chen… - Materials & Design, 2020


• Origin of dislocation density in AM

Poster description

G Wang,…,Fan Chen… - Materials Research Letters, 2020


• 4D metal-based printing

Poster description

Wu, W.,…,Fan Chen… - Advanced Science 2023


• Data-driven temperature field prediction with rational physic constraints

Poster description

Fan Chen… - CMAME, 2022


• Heat accumulation analysis for samples clusters (over 100 AM samples)

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


• Incremetnal sheet metal forming - English wheel

Poster description

D Suarez, Fan Chen…- Journal of Manufacturing Systems


• Incremetnal sheet metal forming - DED on sheet metal

Poster description

Fan Chen… - Journal of Manufacturing Processes, 2025


Ongoing works


• Coupled CFD-FEM modeling for AM – DED

Poster description

Poster description


• Colding cracking mechanism in AM

Poster description


• Micro-Casting of Titanium Alloy in Self-boiling Molds

Poster description


• Pattern oriented equivalent strain attribution

Poster description


• Creep modeling framework for 30CrMoNiV11-5 alloy application of Morch phenomenological law and mean-field creep model

Poster description

Poster description



Share this page:
LinkedIn | Twitter | Email

Archive Layout with Content

A variety of common markup showing how the theme styles them. # Header one ## Header two ### Header three #### Header four ##### Header five ###### Header six ## Blockquotes Single line blockquote: > Quotes are cool. ## Tables | Entry | Item | | | -------- | ------ | ------------------------------------------------------------ | | [John Doe](#) | 2016 | Description of the item in the list | | [Jane Doe](#) | 2019 | Description of the item in the list | | [Doe Doe](#) | 2022 | Description of the item in the list | | Header1 | Header2 | Header3 | |:--------|:-------:|--------:| | cell1 | cell2 | cell3 | | cell4 | cell5 | cell6 | |-----------------------------| | cell1 | cell2 | cell3 | | cell4 | cell5 | cell6 | |=============================| | Foot1 | Foot2 | Foot3 | ## Definition Lists Definition List Title : Definition list division. Startup : A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model. #dowork : Coined by Rob Dyrdek and his personal body guard Christopher "Big Black" Boykins, "Do Work" works as a self motivator, to motivating your friends. Do It Live : I'll let Bill O'Reilly [explain](https://www.youtube.com/watch?v=O_HyZ5aW76c "We'll Do It Live") this one. ## Unordered Lists (Nested) * List item one * List item one * List item one * List item two * List item three * List item four * List item two * List item three * List item four * List item two * List item three * List item four ## Ordered List (Nested) 1. List item one 1. List item one 1. List item one 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four ## Buttons Make any link standout more when applying the `.btn` class. ## Notices **Watch out!** You can also add notices by appending `{: .notice}` to a paragraph. {: .notice} ## HTML Tags ### Address Tag
1 Infinite Loop
Cupertino, CA 95014
United States
### Anchor Tag (aka. Link) This is an example of a [link](http://github.com "GitHub"). ### Abbreviation Tag The abbreviation CSS stands for "Cascading Style Sheets". *[CSS]: Cascading Style Sheets ### Cite Tag "Code is poetry." ---Automattic ### Code Tag You will learn later on in these tests that `word-wrap: break-word;` will be your best friend. ### Strike Tag This tag will let you strikeout text. ### Emphasize Tag The emphasize tag should _italicize_ text. ### Insert Tag This tag should denote inserted text. ### Keyboard Tag This scarcely known tag emulates keyboard text, which is usually styled like the `` tag. ### Preformatted Tag This tag styles large blocks of code.
.post-title {
  margin: 0 0 5px;
  font-weight: bold;
  font-size: 38px;
  line-height: 1.2;
  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}
### Quote Tag Developers, developers, developers… –Steve Ballmer ### Strong Tag This tag shows **bold text**. ### Subscript Tag Getting our science styling on with H2O, which should push the "2" down. ### Superscript Tag Still sticking with science and Isaac Newton's E = MC2, which should lift the 2 up. ### Variable Tag This allows you to denote variables. {% include base_path %} {% for post in site.pages %} {% include archive-single.html %} {% endfor %} </div> </article> </div>

Posts by Category

{% include base_path %} {% include group-by-array collection=site.posts field="categories" %} {% for category in group_names %} {% assign posts = group_items[forloop.index0] %}

{{ category }}

{% for post in posts %} {% include archive-single.html %} {% endfor %} {% endfor %}

Posts by Collection

{% include base_path %} {% capture written_label %}'None'{% endcapture %} {% for collection in site.collections %} {% unless collection.output == false or collection.label == "posts" %} {% capture label %}{{ collection.label }}{% endcapture %} {% if label != written_label %}

{{ label }}

{% capture written_label %}{{ label }}{% endcapture %} {% endif %} {% endunless %} {% for post in collection.docs %} {% unless collection.output == false or collection.label == "posts" %} {% include archive-single.html %} {% endunless %} {% endfor %} {% endfor %}

CV

{% include base_path %} {% include cv-template.html %}

CV

{% include base_path %} Education ====== * Ph.D in Version Control Theory, GitHub University, 2018 (expected) * M.S. in Jekyll, GitHub University, 2014 * B.S. in GitHub, GitHub University, 2012 Work experience ====== * Spring 2024: Academic Pages Collaborator * GitHub University * Duties includes: Updates and improvements to template * Supervisor: The Users * Fall 2015: Research Assistant * GitHub University * Duties included: Merging pull requests * Supervisor: Professor Hub * Summer 2015: Research Assistant * GitHub University * Duties included: Tagging issues * Supervisor: Professor Git Skills ====== * Skill 1 * Skill 2 * Sub-skill 2.1 * Sub-skill 2.2 * Sub-skill 2.3 * Skill 3 Publications ======
    {% for post in site.publications reversed %} {% include archive-single-cv.html %} {% endfor %}
Talks ======
    {% for post in site.talks reversed %} {% include archive-single-talk-cv.html %} {% endfor %}
Teaching ======
    {% for post in site.teaching reversed %} {% include archive-single-cv.html %} {% endfor %}
Service and leadership ====== * Currently signed in to 43 different slack teams

/* * This file controls what is imported from /_sass * * Note that the files are processed in the order they are imported, so they are partly sorted by the dependencies. Also, the first two lines of the file are required by Jekyll. */ @import "vendor/breakpoint/breakpoint", "themes", "theme/default", "theme/dark", "include/mixins", "vendor/susy/susy", "layout/reset", "layout/base", "include/utilities", "layout/tables", "layout/buttons", "layout/notices", "layout/masthead", "layout/navigation", "layout/footer", "syntax", "layout/forms", "layout/page", "layout/archive", "layout/sidebar", "vendor/font-awesome/fontawesome", "vendor/font-awesome/solid", "vendor/font-awesome/brands", "vendor/magnific-popup/magnific-popup" ;

Markdown

{% include toc %} ## Locations of key files/directories * Basic config options: _config.yml * Top navigation bar config: _data/navigation.yml * Single pages: _pages/ * Collections of pages are .md or .html files in: * _publications/ * _portfolio/ * _posts/ * _teaching/ * _talks/ * Footer: _includes/footer.html * Static files (like PDFs): /files/ * Profile image (can set in _config.yml): images/profile.png ## Tips and hints * Name a file ".md" to have it render in markdown, name it ".html" to render in HTML. * Go to the [commit list](https://github.com/academicpages/academicpages.github.io/commits/master) (on your repo) to find the last version GitHub built with Jekyll. * Green check: successful build * Orange circle: building * Red X: error * No icon: not built * Academic Pages uses [Jekyll Kramdown](https://jekyllrb.com/docs/configuration/markdown/), GitHub Flavored Markdown (GFM) parser, which is similar to the version of Markdown used on GitHub, but may have some minor differences. * Some of emoji supported on GitHub should be supposed via the [Jemoji](https://github.com/jekyll/jemoji) plugin :computer:. * The best list of the supported emoji can be found in the [Emojis for Jekyll via Jemoji](https://www.fabriziomusacchio.com/blog/2021-08-16-emojis_for_Jekyll/#computer) blog post. * While GitHub Pages prevents server side code from running, client-side scripts are supported. * This means that Google Analytics is supported, and [the wiki](https://github.com/academicpages/academicpages.github.io/wiki/Adding-Google-Analytics) should contain the most up-to-date information on getting it working. * Your CV can be written using either Markdown ([preview](https://academicpages.github.io/cv/)) or generated via JSON ([preview](https://academicpages.github.io/cv-json/)) and the layouts are slightly different. You can update the path to the one being used in `_data/navigation.yml` with the JSON formatted CV being hidden by default. ## Resources * [Liquid syntax guide](https://shopify.github.io/liquid/tags/control-flow/) * [MathJax Documentation](https://docs.mathjax.org/en/latest/) ## MathJax Support for MathJax Version 3.0 is included in the template: $$ \displaylines{ \nabla \cdot E= \frac{\rho}{\epsilon_0} \\\ \nabla \cdot B=0 \\\ \nabla \times E= -\partial_tB \\\ \nabla \times B = \mu_0 \left(J + \varepsilon_0 \partial_t E \right) } $$ The default delimiters of `$$...$$` and `\\[...\\]` are supported for displayed mathematics, while `\\(...\\)` should be used for in-line mathematics (ex., \\(a^2 + b^2 = c^2\\)) **Note** that since Academic Pages uses Markdown which cases some interference with MathJax and LaTeX for escaping characters and new lines, although [some workarounds exist](https://math.codidact.com/posts/278763/278772#answer-278772). In some cases, such as when you are including MathJax in a `citation` field for publications, it may be necessary to use `\(...\)` for inline delineation. ## Markdown guide Academic Pages uses [kramdown](https://kramdown.gettalong.org/index.html) for Markdown rendering, which has some differences from other Markdown implementations such as GitHub's. In addition to this guide, please see the [kramdown Syntax page](https://kramdown.gettalong.org/syntax.html) for full documentation. ### Header three #### Header four ##### Header five ###### Header six ## Blockquotes Single line blockquote: > Quotes are cool. ## Tables ### Table 1 | Entry | Item | | | -------- | ------ | ------------------------------------------------------------ | | [John Doe](#) | 2016 | Description of the item in the list | | [Jane Doe](#) | 2019 | Description of the item in the list | | [Doe Doe](#) | 2022 | Description of the item in the list | ### Table 2 | Header1 | Header2 | Header3 | |:--------|:-------:|--------:| | cell1 | cell2 | cell3 | | cell4 | ce ll5 | cell6 | |-----------------------------| | cell1 | cell2 | cell3 | | cell4 | cell5 | cell6 | |=============================| | Foot1 | Foot2 | Foot3 | ## Definition Lists Definition List Title : Definition list division. Startup : A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model. #dowork : Coined by Rob Dyrdek and his personal body guard Christopher "Big Black" Boykins, "Do Work" works as a self motivator, to motivating your friends. Do It Live : I'll let Bill O'Reilly [explain](https://www.youtube.com/watch?v=O_HyZ5aW76c "We'll Do It Live") this one. ## Unordered Lists (Nested) * List item one * List item one * List item one * List item two * List item three * List item four * List item two * List item three * List item four * List item two * List item three * List item four ## Ordered List (Nested) 1. List item one 1. List item one 1. List item one 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four 2. List item two 3. List item three 4. List item four ## Buttons Make any link standout more when applying the `.btn` class. ## Notices Basic notices or call-outs are supported using the following syntax: ```markdown **Watch out!** You can also add notices by appending `{: .notice}` to the line following paragraph. {: .notice} ``` which wil render as: **Watch out!** You can also add notices by appending `{: .notice}` to the line following paragraph. {: .notice} ### Footnotes Footnotes can be useful for clarifying points in the text, or citing information.[^1] Markdown support numeric footnotes, as well as text as long as the values are unique.[^note] ```markdown This is the regular text.[^1] This is more regular text.[^note] [^1]: This is the footnote itself. [^note]: This is another footnote. ``` [^1]: Such as this footnote. [^note]: When using text for footnotes markers, no spaces are permitted in the name. ## HTML Tags ### Address Tag
1 Infinite Loop
Cupertino, CA 95014
United States
### Anchor Tag (aka. Link) This is an example of a [link](http://github.com "GitHub"). ### Abbreviation Tag The abbreviation CSS stands for "Cascading Style Sheets". *[CSS]: Cascading Style Sheets ### Cite Tag "Code is poetry." ---Automattic ### Code Tag You will learn later on in these tests that `word-wrap: break-word;` will be your best friend. You can also write larger blocks of code with syntax highlighting supported for some languages, such as Python: ```python print('Hello World!') ``` or R: ```R print("Hello World!", quote = FALSE) ``` ### Details Tag (collapsible sections) The HTML `
` tag works well with Markdown and allows you to include collapsible sections, see [W3Schools](https://www.w3schools.com/tags/tag_details.asp) for more information on how to use the tag.
Collapsed by default This section was collapsed by default!
The source code: ```HTML
Collapsed by default This section was collapsed by default!
``` Or, you can leave a section open by default by including the `open` attribute in the tag:
Open by default This section is open by default thanks to open in the <details open> tag!
### Emphasize Tag The emphasize tag should _italicize_ text. ### Insert Tag This tag should denote inserted text. ### Keyboard Tag This scarcely known tag emulates keyboard text, which is usually styled like the `` tag. ### Preformatted Tag This tag styles large blocks of code.
.post-title {
  margin: 0 0 5px;
  font-weight: bold;
  font-size: 38px;
  line-height: 1.2;
  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}
### Quote Tag Developers, developers, developers… –Steve Ballmer ### Strike Tag This tag will let you strikeout text. ### Strong Tag This tag shows **bold text**. ### Subscript Tag Getting our science styling on with H2O, which should push the "2" down. ### Superscript Tag Still sticking with science and Isaac Newton's E = MC2, which should lift the 2 up. ### Variable Tag This allows you to denote variables. *** **Footnotes** The footnotes in the page will be returned following this line, return to the section on Markdown Footnotes. </div> </article> </div>

Page not in menu

This is a page not in the menu. You can use markdown in this page. Heading 1 ====== Heading 2 ======

Page Archive

{% include base_path %} {% for post in site.pages %} {% include archive-single.html %} {% endfor %}

Publications

{% if site.publication_category %} {% for category in site.publication_category %} {% assign title_shown = false %} {% for post in site.publications reversed %} {% if post.category != category[0] %} {% continue %} {% endif %} {% unless title_shown %}

{{ category[1].title }}


{% assign title_shown = true %} {% endunless %} {% include archive-single.html %} {% endfor %} {% endfor %} {% else %} {% for post in site.publications reversed %} {% include archive-single.html %} {% endfor %} {% endif %} </div> -->
{% if site.author.googlescholar %}
You can also find my articles on my Google Scholar profile.
{% endif %} {% include base_path %} {% if site.publication_category %} {% for category in site.publication_category %} {% assign title_shown = false %} {% for post in site.publications reversed %} {% if post.category != category[0] %} {% continue %} {% endif %} {% unless title_shown %}

{{ category[1].title }}


{% assign title_shown = true %} {% endunless %} {% include archive-single.html %} {% endfor %} {% endfor %} {% else %} {% for post in site.publications reversed %} {% include archive-single.html %} {% endfor %} {% endif %}

Sitemap

{% include base_path %} A list of all the posts and pages found on the site. For you robots out there, there is an [XML version]({{ base_path }}/sitemap.xml) available for digesting as well.

Pages

{% for post in site.pages %} {% include archive-single.html %} {% endfor %}

Posts

{% for post in site.posts %} {% include archive-single.html %} {% endfor %} {% capture written_label %}'None'{% endcapture %} {% for collection in site.collections %} {% unless collection.output == false or collection.label == "posts" %} {% capture label %}{{ collection.label }}{% endcapture %} {% if label != written_label %}

{{ label }}

{% capture written_label %}{{ label }}{% endcapture %} {% endif %} {% endunless %} {% for post in collection.docs %} {% unless collection.output == false or collection.label == "posts" %} {% include archive-single.html %} {% endunless %} {% endfor %} {% endfor %}

Posts by Tags

{% include base_path %} {% include group-by-array collection=site.posts field="tags" %} {% for tag in group_names %} {% assign posts = group_items[forloop.index0] %}

{{ tag }}

{% for post in posts %} {% include archive-single.html %} {% endfor %} {% endfor %}

Talk map

This map is generated from a Jupyter Notebook file in talkmap.ipynb, which mines the location fields in the .md files in _talks/.


Eduacation & Employment

2024–2025: University of Liege

  • Research Scientist/Project Leader, Urban and Environmental Engineering -Funded by European Union,
    Principal investigator – Anne Marie Habraken: anne.habraken@uliege.be

2022–2023: Northwestern University

  • Postdoc, McCormick School of Engineering, AMPL -supported by USA Vannevar Bush Faculty Fellowship award,
    Principal investigator – Jian Cao: jcao@northwestern.edu

2018–2022: National University of Singapore


2011-2018: Huazhong University of Science & Technology

  • 2015-2018: Master of Engineering, Design & Manufacture of Ships and Marine Structure (China Graduate Scholarship)
  • 2011-2015: Bachelor of Engineering, Naval Architecture & Ocean Engineering (2012 China National Scholarship)

Teaching

{% include base_path %} {% for post in site.teaching reversed %} {% include archive-single.html %} {% endfor %}

Terms and Privacy Policy

{% include base_path %} {% include toc %} ## Privacy Policy The privacy of my visitors is extremely important. This Privacy Policy outlines the types of personal information that is received and collected and how it is used. First and foremost, I will never share your email address or any other personal information to anyone without your direct consent. ### Log Files Like many other websites, this site uses log files to help learn about when, from where, and how often traffic flows to this site. The information in these log files include: * Internet Protocol addresses (IP) * Types of browser * Internet Service Provider (ISP) * Date and time stamp * Referring and exit pages * Number of clicks All of this information is not linked to anything that is personally identifiable. ### Cookies and Web Beacons When you visit this site "convenience" cookies are stored on your computer when you submit a comment to help you log in faster to [Disqus](http://disqus.com) the next time you leave a comment. Third-party advertisers may also place and read cookies on your browser and/or use web beacons to collect information. This site has no access or control over these cookies. You should review the respective privacy policies on any and all third-party ad servers for more information regarding their practices and how to opt-out. If you wish to disable cookies, you may do so through your web browser options. Instructions for doing so can be found on the specific web browsers' websites. #### Google Analytics Google Analytics is a web analytics tool I use to help understand how visitors engage with this website. It reports website trends using cookies and web beacons without identifying individual visitors. You can read [Google Analytics Privacy Policy](http://www.google.com/analytics/learn/privacy.html).

@import "jekyll-theme-primer";

{"/about/":"https://fanchennus.github.io/","/about.html":"https://fanchennus.github.io/","/resume-json":"https://fanchennus.github.io/cv-json/","/resume":"https://fanchennus.github.io/cv/","/md/":"https://fanchennus.github.io/markdown/","/markdown.html":"https://fanchennus.github.io/markdown/","/nmp/":"https://fanchennus.github.io/non-menu-page/","/nmp.html":"https://fanchennus.github.io/non-menu-page/","/posts/":"https://fanchennus.github.io/year-archive/"}

Jupyter notebook markdown generator

# Jupyter notebook markdown generator These .ipynb files are Jupyter notebook files that convert a TSV containing structured data about talks (`talks.tsv`) or presentations (`presentations.tsv`) into individual markdown files that will be properly formatted for the academicpages template. The notebooks contain a lot of documentation about the process. The .py files are pure python that do the same things if they are executed in a terminal, they just don't have pretty documentation.

{% if page.xsl %}{% endif %}<feed xmlns="http://www.w3.org/2005/Atom" {% if site.lang %}xml:lang="{{ site.lang }}"{% endif %}>Jekyll<link href="{{ '/' | absolute_url }}" rel="alternate" type="text/html" {% if site.lang %}hreflang="{{ site.lang }}" {% endif %}/>{{ site.time | date_to_xmlschema }}{{ page.url | absolute_url | xml_escape }}{% assign title = site.title | default: site.name %}{% if page.collection != "posts" %}{% assign collection = page.collection | capitalize %}{% assign title = title | append: " | " | append: collection %}{% endif %}{% if page.category %}{% assign category = page.category | capitalize %}{% assign title = title | append: " | " | append: category %}{% endif %}{% if title %}{{ title | smartify | xml_escape }}{% endif %}{% if site.description %}{{ site.description | xml_escape }}{% endif %}{% if site.author %}{{ site.author.name | default: site.author | xml_escape }}{% if site.author.email %}{{ site.author.email | xml_escape }}{% endif %}{% if site.author.uri %}{{ site.author.uri | xml_escape }}{% endif %}{% endif %}{% if page.tags %}{% assign posts = site.tags[page.tags] %}{% else %}{% assign posts = site[page.collection] %}{% endif %}{% if page.category %}{% assign posts = posts | where: "categories", page.category %}{% endif %}{% unless site.show_drafts %}{% assign posts = posts | where_exp: "post", "post.draft != true" %}{% endunless %}{% assign posts = posts | sort: "date" | reverse %}{% assign posts_limit = site.feed.posts_limit | default: 10 %}{% for post in posts limit: posts_limit %}<entry{% if post.lang %}{{" "}}xml:lang="{{ post.lang }}"{% endif %}>{% assign post_title = post.title | smartify | strip_html | normalize_whitespace | xml_escape %}{{ post_title }} {{ post.date | date_to_xmlschema }}{{ post.last_modified_at | default: post.date | date_to_xmlschema }}{{ post.id | absolute_url | xml_escape }}{% assign excerpt_only = post.feed.excerpt_only | default: site.feed.excerpt_only %}{% unless excerpt_only %}<![CDATA[{{ post.content | strip }}]]>{% endunless %}{% assign post_author = post.author | default: post.authors[0] | default: site.author %}{% assign post_author = site.data.authors[post_author] | default: post_author %}{% assign post_author_email = post_author.email | default: nil %}{% assign post_author_uri = post_author.uri | default: nil %}{% assign post_author_name = post_author.name | default: post_author %}{{ post_author_name | default: "" | xml_escape }}{% if post_author_email %}{{ post_author_email | xml_escape }}{% endif %}{% if post_author_uri %}{{ post_author_uri | xml_escape }}{% endif %}{% if post.category %}{% elsif post.categories %}{% for category in post.categories %}{% endfor %}{% endif %}{% for tag in post.tags %}{% endfor %}{% assign post_summary = post.description | default: post.excerpt %}{% if post_summary and post_summary != empty %}<![CDATA[{{ post_summary | strip_html | normalize_whitespace }}]]>{% endif %}{% assign post_image = post.image.path | default: post.image %}{% if post_image %}{% unless post_image contains "://" %}{% assign post_image = post_image | absolute_url %}{% endunless %}{% endif %}</entry>{% endfor %}</feed>

{% if page.xsl %} {% endif %} {% assign collections = site.collections | where_exp:'collection','collection.output != false' %}{% for collection in collections %}{% assign docs = collection.docs | where_exp:'doc','doc.sitemap != false' %}{% for doc in docs %} {{ doc.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if doc.last_modified_at or doc.date %}{{ doc.last_modified_at | default: doc.date | date_to_xmlschema }} {% endif %} {% endfor %}{% endfor %}{% assign pages = site.html_pages | where_exp:'doc','doc.sitemap != false' | where_exp:'doc','doc.url != "/404.html"' %}{% for page in pages %} {{ page.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if page.last_modified_at %}{{ page.last_modified_at | date_to_xmlschema }} {% endif %} {% endfor %}{% assign static_files = page.static_files | where_exp:'page','page.sitemap != false' | where_exp:'page','page.name != "404.html"' %}{% for file in static_files %} {{ file.path | replace:'/index.html','/' | absolute_url | xml_escape }} {{ file.modified_time | date_to_xmlschema }} {% endfor %}

Sitemap: {{ "sitemap.xml" | absolute_url }}

</article> </div>

Posts by Collection

High-fidelity coupled CFD-FEM simulation on DED and LPBF

– corporation with ANSYS

Linked the high-fidelity molten pool dynamics model with the finite element solver for thermal stress simulation.

High-density dislocations in additively manufactured metals

– corporation with Shanghai Jiaotong University

Demonstrated that thermal stresses are the origin of high-density dislocations in additively manufactured metals using the coupled CFD-FEM simulation.

Physically informed data-driven prognostic model for the temperature prediction in AM

– corporation with Singapore A*STAR

High accuracy and significantly faster computation speed for the track-scale AM modeling based on the data-driven prediction (CNN, GPR, QR) of the isotherms and the isotherm-reconstructed temperature attribution on FEM model.

Pattern-oriented Strain Attribution in Part-scale Modeling of Additive Manufacturing

– corporation with Singapore A*STAR

Efficient large-scale AM modeling approaches with sound physical basis, where the layer-wise element progressive activation is applied with base strain pattern attributed onto the sample layers.

From 2022 to 2023

Hybrid Autonomous Manufacturing, Moving from Evolution to Revolution (HAMMER)

– corporation with The OHIO State University and so on.

High-fidelity English wheel simulation: distortion analysis of the sheet metal under rolling of two wheel of different size and curvature.

Micro-Casting of Titanium Alloy in Self-boiling Molds

Heat transfer analysis of liquid materials in multiple self-boiling molds for micro-casting.

DED on sheet metal forming

– corporation with Nissan

Deformation prediction using bulking analysis under the residual stress pattern achieved by track-scale DED simulation.

From 2024 to 2025

(AID4Greenest) - AI powered characterization and modelling for green steel technology

Funded by European Union

– corporation with Fraunhofer, IWM and IMDEA et al.

Fortran-based self-developed Lagamine coding platform for implementation of H. Morch visco-plasticity law & Development of the mean field creep model on Gitlab using Python.

  <h2 id="publications" class="archive__subtitle">publications</h2>

The origin of high-density dislocations in additively manufactured metals

Published in Materials Research Letters, 2020

The origin of dense dislocations in many additively manufactured metals remains a mystery. We here employed pure Cu as a prototype and fabricated the very challenging high-purity (>99.9%) bulk Cu by laser powder-bed-fusion (L-PBF) technique. We found that high-density dislocations were present in the as-built samples and these high-density dislocations were introduced on the fly during the L-PBF process. A newly developed multi-physics modeling was further employed to interpret the origin of these pre-existing dislocations, demonstrating that the compression-tension cycles rendered by the localized heating/cooling heterogeneity upon laser scanning are responsible for the residual high-density dislocations.

Doi:https://doi.org/10.1080/21663831.2020.1751739

Download Paper

High-fidelity modelling of thermal stress for additive manufacturing by linking thermal-fluid and mechanical models

Published in Materials & Design, 2020

The prediction of thermal stress and distortion is a prerequisite for high-quality additive manufacturing (AM). The widely applied thermo-mechanical model using the finite element method (FEM) leaves much to be improved due to their oversimplifications on material deposition, molten pool flow, etc. In this study, a high-fidelity modelling approach by linking the thermal-fluid (computational fluid dynamics, CFD) and mechanical models (named as CFD-FEM model) is developed to predict the thermal stress for AM taking into account the influences of thermal-fluid flow. Profiting from the precise temperature profiles and melt track geometry extracted from the thermal-fluid model as well as the remarkable flexibility of the quiet element method of FEM, this work aims at simulating the thermal stress distribution by involving physical changes in the AM process, e.g., melting and solidification of powder particles, molten pool evolution and inter-track inter-layer re-melting. Unlike the conventional thermo-mechanical analysis, in this approach, thermal stress calculation is purely based on a mechanical model where the thermal loads are applied by using a linear interpolation function to spatially and temporally map the temperature values from the thermal-fluid model’s cell centres into the FEM element nodes. With the proposed approach, the thermal stress evolution in the AM process of single track, multiple tracks and multiple layers are simulated, where the rough surfaces and internal voids can be well incorporated. Moreover, a conventional thermo-mechanical simulation of two tracks with predefined track geometry is conducted for cross comparison. Finally, the simulated thermal stress distribution can rationally explain the crack distribution observed in the experiments.

Doi:https://doi.org/10.1016/j.matdes.2020.109185

Download Paper

Enhanced strengthening and hardening via self-stabilized dislocation network in additively manufactured metals

Published in Materials Today, 2021

The advent of additive manufacturing (AM) offers the possibility of creating high-performance metallic materials with unique microstructure. Ultrafine dislocation cell structure in AM metals is believed to play a critical role in strengthening and hardening. However, its behavior is typically considered to be associated with alloying elements. Here we report that dislocations in AM metallic materials are self-stabilized even without the alloying effect. The heating–cooling cycles that are inherent to laser power-bed-fusion processes can stabilize dislocation network in situ by forming Lomer locks and a complex dislocation network. This unique dislocation assembly blocks and accumulates dislocations for strengthening and steady strain hardening, thereby rendering better material strength but several folds improvements in uniform tensile elongation compared to those made by traditional methods. The principles of dislocation manipulation and self-assembly are applicable to metals/alloys obtained by conventional routes in turn, through a simple post-cyclic deformation processing that mimics the micromechanics of AM. This work demonstrates the capability of AM to locally tune dislocation structures and achieve high-performance metallic materials.

Doi:https://doi.org/10.1016/j.mattod.2021.06.002

Download Paper

Crystal plasticity model of residual stress in additive manufacturing using the element elimination and reactivation method

Published in Computational Mechanics, 2021

Selective laser melting is receiving increasing interest as an additive manufacturing technique. Residual stresses induced by the large temperature gradients and inhomogeneous cooling process can favour the generation of cracks. In this work, a crystal plasticity finite element model is developed to simulate the formation of residual stresses and to understand the correlation between plastic deformation, grain orientation and residual stresses in the additive manufacturing process. The temperature profile and grain structure from thermal-fluid flow and grain growth simulations are implemented into the crystal plasticity model. An element elimination and reactivation method is proposed to model the melting and solidification and to reinitialize state variables, such as the plastic deformation, in the reactivated elements. The accuracy of this method is judged against previous method based on the stiffness degradation of liquid regions by comparing the plastic deformation as a function of time induced by thermal stresses. The method is used to investigate residual stresses parallel and perpendicular to the laser scan direction, and the correlation with the maximum Schmid factor of the grains along those directions. The magnitude of the residual stress can be predicted as a function of the depth, grain orientation and position with respect to the molten pool. The simulation results are directly comparable to X-ray diffraction experiments and stress–strain curves.

Doi:https://doi.org/10.1007/s00466-021-02116-z

Download Paper

Data-driven prognostic model for temperature field in additive manufacturing based on the high-fidelity thermal-fluid flow simulation

Published in Computer Methods in Applied Mechanics and Engineering, 2022

The process-structure–property relationship for additive manufacturing (AM) is typically derived starting from the temperature profile which can be achieved by the meso-scale thermal-fluid flow simulation with huge computational cost. We propose a data-driven prognostic approach with specialized physical constraints to rapidly predict the temperature profiles. The dataset is constructed from the physics-based thermal-fluid flow simulation results under different manufacturing parameters. The temperature field around the molten pool region is statistically characterized by the function parameters of the individual isotherms, which are essentially the output of the data-driven model based on the input manufacturing parameters, while the temperature field is reconstructed using the interpolation approach based on the predicted isotherms. The data-driven predicted temperature profiles are validated against those from the thermal-fluid flow simulations, and then further applied in the thermal stress and grain growth simulations, of which the results are compared with those using the temperature profile directly from thermal-fluid flow simulations. The results demonstrate that our data-driven approach is highly feasible in predicting the geometry features of the isotherms and temperature profiles around the molten pool regions.

Doi:https://doi.org/10.1016/j.cma.2022.114652

Download Paper

Metallic 4D Printing of Laser Stimulation

Published in Advanced Science, 2023

4D printing of metallic shape-morphing systems can be applied in many fields, including aerospace, smart manufacturing, naval equipment, and biomedical engineering. The existing forming materials for metallic 4D printing are still very limited except shape memory alloys. Herein, a 4D printing method to endow non-shape-memory metallic materials with active properties is presented, which could overcome the shape-forming limitation of traditional material processing technologies. The thermal stress spatial control of 316L stainless steel forming parts is achieved by programming the processing parameters during a laser powder bed fusion (LPBF) process. The printed parts can realize the shape changing of selected areas during or after forming process owing to stress release generated. It is demonstrated that complex metallic shape-morphing structures can be manufactured by this method. The principles of printing parameters programmed and thermal stress pre-set are also applicable to other thermoforming materials and additive manufacturing processes, which can expand not only the materials used for 4D printing but also the applications of 4D printing technologies.

Doi:https://doi.org/10.1002/advs.202206486

Download Paper

Factorial design analytics on effects of material parameter uncertainties in multiphysics modeling of additive manufacturing

Published in npj Computational Materials, 2023

A bottleneck in Laser Powder Bed Fusion (L-PBF) metal additive manufacturing (AM) is the quality inconsistency of its products. To address this issue without costly experimentation, computational multi-physics modeling has been used, but the effectiveness is limited by parameter uncertainties and their interactions. We propose a full factorial design and variable selection approach for the analytics of main and interaction effects arising from material parameter uncertainties in multi-physics models. Data is collected from high-fidelity thermal-fluid simulations based on a 2-level full factorial design for 5 selected material parameters. Crucial physical phenomena of the L-PBF process are analyzed to extract physics-based domain knowledge, which are used to establish a validation checkpoint for our study. Initial data visualization with half-normal probability plots, interaction plots and standard deviation plots, is used to assess if the checkpoint is being met. We then apply the combination of best subset selection and the LASSO method on multiple linear regression models for comprehensive variable selection. Analytics yield statistically and phyiscally validated findings with practical implications, emphasizing the importance of parameter interactions under uncertainty, and their relation to the underlying physics of L-PBF.

Doi:https://doi.org/10.1038/s41524-023-01004-9

Download Paper

Biomimetic 4D Printing Catapult: From Biological Prototype to Practical Implementation

Published in Advanced Functional Materials, 2023

4D printing technologies are currently suffering from the inability to produce rapid motions, which limit their applications that require fast shape transformation such as rapid unlocking and deployment of aerospace equipment. Herein, inspired by the shooting mechanisms of Viola verecunda fruit for seed dispersal, the 4D-printed biomimetic catapult is developed. Based on the structure change characteristics of gradient fan-shaped cells of the fruit pods during seed ejection, the biomimetic smart catapult is processed via the programming of spatial distribution of heterogeneous materials with various storage modulus enabled by additive manufacturing. This catapult can achieve high-speed ejection with the logically stimuli of external force, temperature, light, humidity, or electricity. The proposed biomimetic 4D printing strategy has broken through the limitations in motion speed, which helps fully unleash the potential of 4D printing.

Doi:https://doi.org/10.1002/adfm.202301286

Download Paper

Data-driven prediction of keyhole features in metal additive manufacturing based on physics-based simulation

Published in Journal of Intelligent Manufacturing, 2023

The defect formation is closely related to molten pool and keyhole features in metal additive manufacturing. Experimentation and physics-based simulation methods to capture the molten pool and keyhole features are expensive and time-consuming. A data-driven method is proposed in this work to efficiently predict the molten pool and keyhole features characterized by a series of fitting curves under given manufacturing parameters, instead of simply predicting the molten pool and keyhole sizes. The database consists of simulation cases with the high-fidelity thermal-fluid flow model. Molten pool melting regime, keyhole stability and keyhole type are recognized with the neural net pattern recognition. With the Gaussian process regression model, the keyhole dimensions are predicted and the keyhole contour is reconstructed. The comparison between predicted data and physics-based simulation results demonstrates the feasibility and accuracy of our data-driven model. Meanwhile, the predicted results can guide the selection of manufacturing parameters in actual production, and are also helpful to the further study of pores in additive manufacturing in academic research.

Doi:https://doi.org/10.1007/s10845-023-02157-6

Download Paper

A creep survey: from creep mechanism to macroscopic and microscopic models.

Published in METALLIC MICROSTRUCTURES EUROPEAN LECTURES ONLINE, 2024

At high temperature, metallic material creep is difficult to avoid. The understanding of the creep mechanisms helps metallurgists to design optimal alloy compositions and the prediction of a component life is a key input to manage safe maintenance and to define operational cost of any production line (solar plant parts, heat exchanger, any turbine parts loaded at high temperature…).

📥 Download slides (PPTX)

On the feasibility of an integrated English wheel system

Published in Journal of Manufacturing Systems, 2024

The English wheel is a highly flexible traditional metalworking tool that allows skilled craftsmen to form compound curves on sheet metal panels. Historically, geometric accuracy and repeatability of formed panels using the English wheel have been tied to the operator leading to limited industrial adoption. This paper presents a novel framework for an integrated English wheeling system that leverages robot forming with a newly developed adaptable gripper/end-effector, metrology for deformed geometry tracking and tolerance measurements, integrated sensors for real-time forming force measurements and control, computational modeling for tracking pattern/toolpath generation, and virtual reality (VR) for seamless integration. Sample panels are formed using the integrated system revealing new insights on the forming forces during the process – highlighting why an integrated system is desirable. Concepts from the proposed framework can be applied to other robotic forming processes and its merit is discussed under current digital manufacturing and industry 4.0 literature.

Doi:https://doi.org/10.1016/j.jmsy.2024.04.022

Download Paper

Efficient Representative Volume Element of a Matrix–Precipitate Microstructure—Application on AlSi10Mg Alloy

Published in Metals, 2024

In finite element models (FEMs), two- or three-dimensional Representative Volume Elements (RVEs) based on a statistical distribution of particles in a matrix can predict mechanical material properties. This article studies an alternative to 3D RVEs with a 2.5D RVE approach defined by a one-plane layer of 3D elements to model the material behavior. This 2.5D RVE relies on springs applied in the out-of-plane direction to constrain the two lateral deformations to be compatible, with the goal of achieving the isotropy of the studied material. The method is experimentally validated by the prediction of the tensile stress–strain curve of a bi-phasic microstructure of the AlSi10Mg alloy. Produced by additive manufacturing, the sample material becomes isotropic after friction stir processing post treatment. If a classical plane strain 2D RVE simulation is clearly too stiff compared to the experiment, the predictions of the stress–strain curves based on 2.5D RVE, 2D RVE with no transversal constraint (called 2D free RVE), and 3D RVE simulations are close to the experiments. The local stress fields within a 2.5D RVE present an interesting similarity with 3D RVE local fields, but differences with the 2D free RVE local results. Since a 2.5D RVE simplifies one spatial dimension, the simulations with this model are faster than the 3D RVE (factor 2580 in CPU or taking into account an optimal parallel computation, a factor 417 in real time). Such a discrepancy can affect the FEM2 multi-scale simulations or the time required to train a neural network, enhancing the interest in a 2.5D RVE model.

Doi:https://doi.org/10.3390/met14111244

Download Paper

Review of the Microstructural Impact on Creep Mechanisms and Performance for Laser Powder Bed Fusion Inconel 718

Published in Materials, 2025

Inconel 718 (IN718) is a polycrystalline nickel-based superalloy and one of the most widely used materials in the aerospace industry owing to its excellent mechanical performances at high temperatures, including creep resistance. Interest in additively manufactured components in aerospace is greatly increasing due to their ability to reduce material consumption, to manufacture complex parts, and to produce out-of-equilibrium microstructures, which can be beneficial for mechanical behavior. IN718’s properties are, however, very sensitive to microstructural features, which strongly depend on the manufacturing process and subsequent heat treatments. Additive manufacturing and, more specifically, Laser Powder Bed Fusion (LPBF) induces very high thermal gradients and anisotropic features due to its inherently directional nature, which largely defines the microstructure of the alloy. Hence, defining appropriate manufacturing parameters and heat treatments is critical to obtain appropriate mechanical behavior. This review aims to present the main microstructural features of IN718 produced by LPBF, the creep mechanisms taking place, the optimal microstructure for creep strength, and the most efficient heat treatments to yield such an optimized microstructure.

Doi:https://doi.org/10.3390/ma18020276

Download Paper

Acceleration of powder-bed-size thermal simulation considering scanning-path-scale through a pseudo-layer-wise equivalent heat flux model

Published in Journal of Manufacturing Processes, 2025

Part-scale modeling of the temperature field in metal powder bed additive manufacturing (AM) is critical for predicting mechanical properties of the AM-ed parts. Track-by-track heat transfer analysis is impractical due to the extensive number of layers and the intricate design of scan strategies for the heat source, particularly in the fabrication of specimen clusters or parts with complex geometry, where multiple regions in the powder bed are manufactured simultaneously. Many part-scale modeling approaches only focus on the thermal behavior of a single part without considering the thermal interaction from the surrounding parts to reduce computational cost. However, experimental observations have revealed that the temperature distribution along the building direction can vary among samples with identical local geometries. This discrepancy can be attributed to the heating effects from neighboring samples. In this study, we propose an integrated part-scale modeling framework that combines layer-wise equivalent heat flux attribution with layer-wise element activation. Before the layer-wise attribution, we justify the equivalent heat flux of individual layers through high-fidelity track-scale simulations. Unlike traditional heat transfer analysis for single parts, our analysis incorporates heat conduction effects through the powder bed between different fusion zones. The temperature data obtained from each equivalent layer using our approach shows consistency when compared to the experimental observations. This research presents an efficient, physically grounded method for modeling the thermal behavior of large AM specimen clusters, enhancing our understanding of temperature field evolution in AM and supporting the design of optimized scanning path strategies for large samples.

Doi:https://doi.org/10.1016/j.jmapro.2024.12.057

Download Paper

Exceptional strength paired with increased cold cracking susceptibility in laser powder bed fusion of a Mg-RE alloy

Published in Journal of Materials Science & Technology, 2025

Additive manufacturing (AM) of high-strength metallic alloys frequently encounters detrimental distortion and cracking, attributed to the accumulation of thermal stresses. These issues significantly impede the practical application of as-printed components. This study examines the Mg-15Gd-1Zn-0.4Zr (GZ151K, wt.%) alloy, a prototypical high-strength casting Mg-RE alloy, fabricated through laser powder bed fusion (LPBF). Despite achieving ultra-high strength, the GZ151K alloy concurrently exhibits a pronounced cold-cracking susceptibility. The as-printed GZ151K alloy consists of almost fully fine equiaxed grains with an average grain size of merely 2.87 µm. Subsequent direct aging (T5) heat treatment induces the formation of dense prismatic β’ precipitates. Consequently, the LPBF-T5 GZ151K alloy manifests an ultra-high yield strength of 405 MPa, surpassing all previously reported yield strengths for Mg alloys fabricated via LPBF and even exceeding that of its extrusion-T5 counterpart. Interestingly, as-printed GZ151K samples with a build height of 2 mm exhibit no cracking, whereas samples with build heights ranging from 4 to 18 mm demonstrate severe cold cracking. Thermal stress simulation also suggests that the cold cracking susceptibility increases significantly with increasing build height. The combination of high thermal stress and low ductility in the as-printed GZ151K alloy culminates in a high cold cracking susceptibility. This study offers novel insights into the intricate issue of cold cracking in the LPBF process of high-strength Mg alloys, highlighting the critical balance between achieving high strength and mitigating cold cracking susceptibility.

Doi:https://doi.org/10.1016/j.jmst.2024.07.005

Download Paper

Directed energy deposition on sheet metal forming for reinforcement structures

Published in Journal of Manufacturing Processes, 2025

While incremental forming processes can inexpensively create complex geometries from sheet metal, they struggle with adding sharp out of plane features for stiffness enhancement. With the implementation of directed-energy deposition (DED), an additive manufacturing process that locally deposits metal onto metallic substrates, reinforcement structures can be formed on the sheet metal. Furthermore, a design engineer may take advantage of the high residual stresses of DED to directly alter shapes in the substrate metal sheet. This hybrid forming-deposition process, as well as the application of local reinforcement, requires a good understanding of the process mechanism to predict expected shapes and minimize undesired deformations. In this work, numerical approaches are applied to evaluate heat transfer, thermal stress, and buckling of thin sheets under the stresses of deposition. These results are compared to analogous experiments conducted on an open-architecture laser-powder DED machine. The results of the thermal-mechanical analysis resemble the deformation trends observed in the experiments. However, the small-displacement formulation in the simulation used for ease of convergence does not fully capture the magnitude of the observed deformations. Nevertheless, the simulations effectively illustrate the effect of different scan strategies on the final deformed shape of the sheet metal.

Doi:https://doi.org/10.1016/j.jmapro.2025.03.120

Download Paper

  <h2 id="talks" class="archive__subtitle">talks</h2>
  <h2 id="teaching" class="archive__subtitle">teaching</h2>

From 2018 to 2022

Undergraduate course, Department of Mechanical Engineering, National University of Singapore

2018-2022, Department of Mechanical Engineering, National University of Singapore:

-ME1102 - Engineering Principles and Practice I

-ME2112 - Strength of Materials

-ME2115 - Mechanics of Machines: Vibration Lab


From 2022 to 2025

Student superviosion, , 2022

2018-2022, Department of Mechanical Engineering, National University of Singapore:

-Paper, software and coding supervision assistance for NUS Ph.D, Master and undergraduate students


2022-2023, Department of Mechanical Engineering, Northwestern University, USA:

-Software and coding supervision assistance for Ph.D students

    </div>     -->

    <!--  -->

portfolio

From 2018 to 2022

High-fidelity coupled CFD-FEM simulation on DED and LPBF

– corporation with ANSYS

Linked the high-fidelity molten pool dynamics model with the finite element solver for thermal stress simulation.

High-density dislocations in additively manufactured metals

– corporation with Shanghai Jiaotong University

Demonstrated that thermal stresses are the origin of high-density dislocations in additively manufactured metals using the coupled CFD-FEM simulation.

Physically informed data-driven prognostic model for the temperature prediction in AM

– corporation with Singapore A*STAR

High accuracy and significantly faster computation speed for the track-scale AM modeling based on the data-driven prediction (CNN, GPR, QR) of the isotherms and the isotherm-reconstructed temperature attribution on FEM model.

Pattern-oriented Strain Attribution in Part-scale Modeling of Additive Manufacturing

– corporation with Singapore A*STAR

Efficient large-scale AM modeling approaches with sound physical basis, where the layer-wise element progressive activation is applied with base strain pattern attributed onto the sample layers.

From 2022 to 2023

Hybrid Autonomous Manufacturing, Moving from Evolution to Revolution (HAMMER)

– corporation with The OHIO State University and so on.

High-fidelity English wheel simulation: distortion analysis of the sheet metal under rolling of two wheel of different size and curvature.

Micro-Casting of Titanium Alloy in Self-boiling Molds

Heat transfer analysis of liquid materials in multiple self-boiling molds for micro-casting.

DED on sheet metal forming

– corporation with Nissan

Deformation prediction using bulking analysis under the residual stress pattern achieved by track-scale DED simulation.

From 2024 to 2025

(AID4Greenest) - AI powered characterization and modelling for green steel technology

Funded by European Union

– corporation with Fraunhofer, IWM and IMDEA et al.

Fortran-based self-developed Lagamine coding platform for implementation of H. Morch visco-plasticity law & Development of the mean field creep model on Gitlab using Python.

publications

The origin of high-density dislocations in additively manufactured metals

Published in Materials Research Letters, 2020

The origin of dense dislocations in many additively manufactured metals remains a mystery. We here employed pure Cu as a prototype and fabricated the very challenging high-purity (>99.9%) bulk Cu by laser powder-bed-fusion (L-PBF) technique. We found that high-density dislocations were present in the as-built samples and these high-density dislocations were introduced on the fly during the L-PBF process. A newly developed multi-physics modeling was further employed to interpret the origin of these pre-existing dislocations, demonstrating that the compression-tension cycles rendered by the localized heating/cooling heterogeneity upon laser scanning are responsible for the residual high-density dislocations.

Doi:https://doi.org/10.1080/21663831.2020.1751739

Download Paper

High-fidelity modelling of thermal stress for additive manufacturing by linking thermal-fluid and mechanical models

Published in Materials & Design, 2020

The prediction of thermal stress and distortion is a prerequisite for high-quality additive manufacturing (AM). The widely applied thermo-mechanical model using the finite element method (FEM) leaves much to be improved due to their oversimplifications on material deposition, molten pool flow, etc. In this study, a high-fidelity modelling approach by linking the thermal-fluid (computational fluid dynamics, CFD) and mechanical models (named as CFD-FEM model) is developed to predict the thermal stress for AM taking into account the influences of thermal-fluid flow. Profiting from the precise temperature profiles and melt track geometry extracted from the thermal-fluid model as well as the remarkable flexibility of the quiet element method of FEM, this work aims at simulating the thermal stress distribution by involving physical changes in the AM process, e.g., melting and solidification of powder particles, molten pool evolution and inter-track inter-layer re-melting. Unlike the conventional thermo-mechanical analysis, in this approach, thermal stress calculation is purely based on a mechanical model where the thermal loads are applied by using a linear interpolation function to spatially and temporally map the temperature values from the thermal-fluid model’s cell centres into the FEM element nodes. With the proposed approach, the thermal stress evolution in the AM process of single track, multiple tracks and multiple layers are simulated, where the rough surfaces and internal voids can be well incorporated. Moreover, a conventional thermo-mechanical simulation of two tracks with predefined track geometry is conducted for cross comparison. Finally, the simulated thermal stress distribution can rationally explain the crack distribution observed in the experiments.

Doi:https://doi.org/10.1016/j.matdes.2020.109185

Download Paper

Enhanced strengthening and hardening via self-stabilized dislocation network in additively manufactured metals

Published in Materials Today, 2021

The advent of additive manufacturing (AM) offers the possibility of creating high-performance metallic materials with unique microstructure. Ultrafine dislocation cell structure in AM metals is believed to play a critical role in strengthening and hardening. However, its behavior is typically considered to be associated with alloying elements. Here we report that dislocations in AM metallic materials are self-stabilized even without the alloying effect. The heating–cooling cycles that are inherent to laser power-bed-fusion processes can stabilize dislocation network in situ by forming Lomer locks and a complex dislocation network. This unique dislocation assembly blocks and accumulates dislocations for strengthening and steady strain hardening, thereby rendering better material strength but several folds improvements in uniform tensile elongation compared to those made by traditional methods. The principles of dislocation manipulation and self-assembly are applicable to metals/alloys obtained by conventional routes in turn, through a simple post-cyclic deformation processing that mimics the micromechanics of AM. This work demonstrates the capability of AM to locally tune dislocation structures and achieve high-performance metallic materials.

Doi:https://doi.org/10.1016/j.mattod.2021.06.002

Download Paper

Crystal plasticity model of residual stress in additive manufacturing using the element elimination and reactivation method

Published in Computational Mechanics, 2021

Selective laser melting is receiving increasing interest as an additive manufacturing technique. Residual stresses induced by the large temperature gradients and inhomogeneous cooling process can favour the generation of cracks. In this work, a crystal plasticity finite element model is developed to simulate the formation of residual stresses and to understand the correlation between plastic deformation, grain orientation and residual stresses in the additive manufacturing process. The temperature profile and grain structure from thermal-fluid flow and grain growth simulations are implemented into the crystal plasticity model. An element elimination and reactivation method is proposed to model the melting and solidification and to reinitialize state variables, such as the plastic deformation, in the reactivated elements. The accuracy of this method is judged against previous method based on the stiffness degradation of liquid regions by comparing the plastic deformation as a function of time induced by thermal stresses. The method is used to investigate residual stresses parallel and perpendicular to the laser scan direction, and the correlation with the maximum Schmid factor of the grains along those directions. The magnitude of the residual stress can be predicted as a function of the depth, grain orientation and position with respect to the molten pool. The simulation results are directly comparable to X-ray diffraction experiments and stress–strain curves.

Doi:https://doi.org/10.1007/s00466-021-02116-z

Download Paper

Data-driven prognostic model for temperature field in additive manufacturing based on the high-fidelity thermal-fluid flow simulation

Published in Computer Methods in Applied Mechanics and Engineering, 2022

The process-structure–property relationship for additive manufacturing (AM) is typically derived starting from the temperature profile which can be achieved by the meso-scale thermal-fluid flow simulation with huge computational cost. We propose a data-driven prognostic approach with specialized physical constraints to rapidly predict the temperature profiles. The dataset is constructed from the physics-based thermal-fluid flow simulation results under different manufacturing parameters. The temperature field around the molten pool region is statistically characterized by the function parameters of the individual isotherms, which are essentially the output of the data-driven model based on the input manufacturing parameters, while the temperature field is reconstructed using the interpolation approach based on the predicted isotherms. The data-driven predicted temperature profiles are validated against those from the thermal-fluid flow simulations, and then further applied in the thermal stress and grain growth simulations, of which the results are compared with those using the temperature profile directly from thermal-fluid flow simulations. The results demonstrate that our data-driven approach is highly feasible in predicting the geometry features of the isotherms and temperature profiles around the molten pool regions.

Doi:https://doi.org/10.1016/j.cma.2022.114652

Download Paper

Metallic 4D Printing of Laser Stimulation

Published in Advanced Science, 2023

4D printing of metallic shape-morphing systems can be applied in many fields, including aerospace, smart manufacturing, naval equipment, and biomedical engineering. The existing forming materials for metallic 4D printing are still very limited except shape memory alloys. Herein, a 4D printing method to endow non-shape-memory metallic materials with active properties is presented, which could overcome the shape-forming limitation of traditional material processing technologies. The thermal stress spatial control of 316L stainless steel forming parts is achieved by programming the processing parameters during a laser powder bed fusion (LPBF) process. The printed parts can realize the shape changing of selected areas during or after forming process owing to stress release generated. It is demonstrated that complex metallic shape-morphing structures can be manufactured by this method. The principles of printing parameters programmed and thermal stress pre-set are also applicable to other thermoforming materials and additive manufacturing processes, which can expand not only the materials used for 4D printing but also the applications of 4D printing technologies.

Doi:https://doi.org/10.1002/advs.202206486

Download Paper

Factorial design analytics on effects of material parameter uncertainties in multiphysics modeling of additive manufacturing

Published in npj Computational Materials, 2023

A bottleneck in Laser Powder Bed Fusion (L-PBF) metal additive manufacturing (AM) is the quality inconsistency of its products. To address this issue without costly experimentation, computational multi-physics modeling has been used, but the effectiveness is limited by parameter uncertainties and their interactions. We propose a full factorial design and variable selection approach for the analytics of main and interaction effects arising from material parameter uncertainties in multi-physics models. Data is collected from high-fidelity thermal-fluid simulations based on a 2-level full factorial design for 5 selected material parameters. Crucial physical phenomena of the L-PBF process are analyzed to extract physics-based domain knowledge, which are used to establish a validation checkpoint for our study. Initial data visualization with half-normal probability plots, interaction plots and standard deviation plots, is used to assess if the checkpoint is being met. We then apply the combination of best subset selection and the LASSO method on multiple linear regression models for comprehensive variable selection. Analytics yield statistically and phyiscally validated findings with practical implications, emphasizing the importance of parameter interactions under uncertainty, and their relation to the underlying physics of L-PBF.

Doi:https://doi.org/10.1038/s41524-023-01004-9

Download Paper

Biomimetic 4D Printing Catapult: From Biological Prototype to Practical Implementation

Published in Advanced Functional Materials, 2023

4D printing technologies are currently suffering from the inability to produce rapid motions, which limit their applications that require fast shape transformation such as rapid unlocking and deployment of aerospace equipment. Herein, inspired by the shooting mechanisms of Viola verecunda fruit for seed dispersal, the 4D-printed biomimetic catapult is developed. Based on the structure change characteristics of gradient fan-shaped cells of the fruit pods during seed ejection, the biomimetic smart catapult is processed via the programming of spatial distribution of heterogeneous materials with various storage modulus enabled by additive manufacturing. This catapult can achieve high-speed ejection with the logically stimuli of external force, temperature, light, humidity, or electricity. The proposed biomimetic 4D printing strategy has broken through the limitations in motion speed, which helps fully unleash the potential of 4D printing.

Doi:https://doi.org/10.1002/adfm.202301286

Download Paper

Data-driven prediction of keyhole features in metal additive manufacturing based on physics-based simulation

Published in Journal of Intelligent Manufacturing, 2023

The defect formation is closely related to molten pool and keyhole features in metal additive manufacturing. Experimentation and physics-based simulation methods to capture the molten pool and keyhole features are expensive and time-consuming. A data-driven method is proposed in this work to efficiently predict the molten pool and keyhole features characterized by a series of fitting curves under given manufacturing parameters, instead of simply predicting the molten pool and keyhole sizes. The database consists of simulation cases with the high-fidelity thermal-fluid flow model. Molten pool melting regime, keyhole stability and keyhole type are recognized with the neural net pattern recognition. With the Gaussian process regression model, the keyhole dimensions are predicted and the keyhole contour is reconstructed. The comparison between predicted data and physics-based simulation results demonstrates the feasibility and accuracy of our data-driven model. Meanwhile, the predicted results can guide the selection of manufacturing parameters in actual production, and are also helpful to the further study of pores in additive manufacturing in academic research.

Doi:https://doi.org/10.1007/s10845-023-02157-6

Download Paper

A creep survey: from creep mechanism to macroscopic and microscopic models.

Published in METALLIC MICROSTRUCTURES EUROPEAN LECTURES ONLINE, 2024

At high temperature, metallic material creep is difficult to avoid. The understanding of the creep mechanisms helps metallurgists to design optimal alloy compositions and the prediction of a component life is a key input to manage safe maintenance and to define operational cost of any production line (solar plant parts, heat exchanger, any turbine parts loaded at high temperature…).

📥 Download slides (PPTX)

On the feasibility of an integrated English wheel system

Published in Journal of Manufacturing Systems, 2024

The English wheel is a highly flexible traditional metalworking tool that allows skilled craftsmen to form compound curves on sheet metal panels. Historically, geometric accuracy and repeatability of formed panels using the English wheel have been tied to the operator leading to limited industrial adoption. This paper presents a novel framework for an integrated English wheeling system that leverages robot forming with a newly developed adaptable gripper/end-effector, metrology for deformed geometry tracking and tolerance measurements, integrated sensors for real-time forming force measurements and control, computational modeling for tracking pattern/toolpath generation, and virtual reality (VR) for seamless integration. Sample panels are formed using the integrated system revealing new insights on the forming forces during the process – highlighting why an integrated system is desirable. Concepts from the proposed framework can be applied to other robotic forming processes and its merit is discussed under current digital manufacturing and industry 4.0 literature.

Doi:https://doi.org/10.1016/j.jmsy.2024.04.022

Download Paper

Efficient Representative Volume Element of a Matrix–Precipitate Microstructure—Application on AlSi10Mg Alloy

Published in Metals, 2024

In finite element models (FEMs), two- or three-dimensional Representative Volume Elements (RVEs) based on a statistical distribution of particles in a matrix can predict mechanical material properties. This article studies an alternative to 3D RVEs with a 2.5D RVE approach defined by a one-plane layer of 3D elements to model the material behavior. This 2.5D RVE relies on springs applied in the out-of-plane direction to constrain the two lateral deformations to be compatible, with the goal of achieving the isotropy of the studied material. The method is experimentally validated by the prediction of the tensile stress–strain curve of a bi-phasic microstructure of the AlSi10Mg alloy. Produced by additive manufacturing, the sample material becomes isotropic after friction stir processing post treatment. If a classical plane strain 2D RVE simulation is clearly too stiff compared to the experiment, the predictions of the stress–strain curves based on 2.5D RVE, 2D RVE with no transversal constraint (called 2D free RVE), and 3D RVE simulations are close to the experiments. The local stress fields within a 2.5D RVE present an interesting similarity with 3D RVE local fields, but differences with the 2D free RVE local results. Since a 2.5D RVE simplifies one spatial dimension, the simulations with this model are faster than the 3D RVE (factor 2580 in CPU or taking into account an optimal parallel computation, a factor 417 in real time). Such a discrepancy can affect the FEM2 multi-scale simulations or the time required to train a neural network, enhancing the interest in a 2.5D RVE model.

Doi:https://doi.org/10.3390/met14111244

Download Paper

Review of the Microstructural Impact on Creep Mechanisms and Performance for Laser Powder Bed Fusion Inconel 718

Published in Materials, 2025

Inconel 718 (IN718) is a polycrystalline nickel-based superalloy and one of the most widely used materials in the aerospace industry owing to its excellent mechanical performances at high temperatures, including creep resistance. Interest in additively manufactured components in aerospace is greatly increasing due to their ability to reduce material consumption, to manufacture complex parts, and to produce out-of-equilibrium microstructures, which can be beneficial for mechanical behavior. IN718’s properties are, however, very sensitive to microstructural features, which strongly depend on the manufacturing process and subsequent heat treatments. Additive manufacturing and, more specifically, Laser Powder Bed Fusion (LPBF) induces very high thermal gradients and anisotropic features due to its inherently directional nature, which largely defines the microstructure of the alloy. Hence, defining appropriate manufacturing parameters and heat treatments is critical to obtain appropriate mechanical behavior. This review aims to present the main microstructural features of IN718 produced by LPBF, the creep mechanisms taking place, the optimal microstructure for creep strength, and the most efficient heat treatments to yield such an optimized microstructure.

Doi:https://doi.org/10.3390/ma18020276

Download Paper

Acceleration of powder-bed-size thermal simulation considering scanning-path-scale through a pseudo-layer-wise equivalent heat flux model

Published in Journal of Manufacturing Processes, 2025

Part-scale modeling of the temperature field in metal powder bed additive manufacturing (AM) is critical for predicting mechanical properties of the AM-ed parts. Track-by-track heat transfer analysis is impractical due to the extensive number of layers and the intricate design of scan strategies for the heat source, particularly in the fabrication of specimen clusters or parts with complex geometry, where multiple regions in the powder bed are manufactured simultaneously. Many part-scale modeling approaches only focus on the thermal behavior of a single part without considering the thermal interaction from the surrounding parts to reduce computational cost. However, experimental observations have revealed that the temperature distribution along the building direction can vary among samples with identical local geometries. This discrepancy can be attributed to the heating effects from neighboring samples. In this study, we propose an integrated part-scale modeling framework that combines layer-wise equivalent heat flux attribution with layer-wise element activation. Before the layer-wise attribution, we justify the equivalent heat flux of individual layers through high-fidelity track-scale simulations. Unlike traditional heat transfer analysis for single parts, our analysis incorporates heat conduction effects through the powder bed between different fusion zones. The temperature data obtained from each equivalent layer using our approach shows consistency when compared to the experimental observations. This research presents an efficient, physically grounded method for modeling the thermal behavior of large AM specimen clusters, enhancing our understanding of temperature field evolution in AM and supporting the design of optimized scanning path strategies for large samples.

Doi:https://doi.org/10.1016/j.jmapro.2024.12.057

Download Paper

Exceptional strength paired with increased cold cracking susceptibility in laser powder bed fusion of a Mg-RE alloy

Published in Journal of Materials Science & Technology, 2025

Additive manufacturing (AM) of high-strength metallic alloys frequently encounters detrimental distortion and cracking, attributed to the accumulation of thermal stresses. These issues significantly impede the practical application of as-printed components. This study examines the Mg-15Gd-1Zn-0.4Zr (GZ151K, wt.%) alloy, a prototypical high-strength casting Mg-RE alloy, fabricated through laser powder bed fusion (LPBF). Despite achieving ultra-high strength, the GZ151K alloy concurrently exhibits a pronounced cold-cracking susceptibility. The as-printed GZ151K alloy consists of almost fully fine equiaxed grains with an average grain size of merely 2.87 µm. Subsequent direct aging (T5) heat treatment induces the formation of dense prismatic β’ precipitates. Consequently, the LPBF-T5 GZ151K alloy manifests an ultra-high yield strength of 405 MPa, surpassing all previously reported yield strengths for Mg alloys fabricated via LPBF and even exceeding that of its extrusion-T5 counterpart. Interestingly, as-printed GZ151K samples with a build height of 2 mm exhibit no cracking, whereas samples with build heights ranging from 4 to 18 mm demonstrate severe cold cracking. Thermal stress simulation also suggests that the cold cracking susceptibility increases significantly with increasing build height. The combination of high thermal stress and low ductility in the as-printed GZ151K alloy culminates in a high cold cracking susceptibility. This study offers novel insights into the intricate issue of cold cracking in the LPBF process of high-strength Mg alloys, highlighting the critical balance between achieving high strength and mitigating cold cracking susceptibility.

Doi:https://doi.org/10.1016/j.jmst.2024.07.005

Download Paper

Directed energy deposition on sheet metal forming for reinforcement structures

Published in Journal of Manufacturing Processes, 2025

While incremental forming processes can inexpensively create complex geometries from sheet metal, they struggle with adding sharp out of plane features for stiffness enhancement. With the implementation of directed-energy deposition (DED), an additive manufacturing process that locally deposits metal onto metallic substrates, reinforcement structures can be formed on the sheet metal. Furthermore, a design engineer may take advantage of the high residual stresses of DED to directly alter shapes in the substrate metal sheet. This hybrid forming-deposition process, as well as the application of local reinforcement, requires a good understanding of the process mechanism to predict expected shapes and minimize undesired deformations. In this work, numerical approaches are applied to evaluate heat transfer, thermal stress, and buckling of thin sheets under the stresses of deposition. These results are compared to analogous experiments conducted on an open-architecture laser-powder DED machine. The results of the thermal-mechanical analysis resemble the deformation trends observed in the experiments. However, the small-displacement formulation in the simulation used for ease of convergence does not fully capture the magnitude of the observed deformations. Nevertheless, the simulations effectively illustrate the effect of different scan strategies on the final deformed shape of the sheet metal.

Doi:https://doi.org/10.1016/j.jmapro.2025.03.120

Download Paper

talks

teaching

From 2018 to 2022

Undergraduate course, Department of Mechanical Engineering, National University of Singapore

2018-2022, Department of Mechanical Engineering, National University of Singapore:

-ME1102 - Engineering Principles and Practice I

-ME2112 - Strength of Materials

-ME2115 - Mechanics of Machines: Vibration Lab


From 2022 to 2025

Student superviosion, , 2022

2018-2022, Department of Mechanical Engineering, National University of Singapore:

-Paper, software and coding supervision assistance for NUS Ph.D, Master and undergraduate students


2022-2023, Department of Mechanical Engineering, Northwestern University, USA:

-Software and coding supervision assistance for Ph.D students

</article> </div>

CV

Your Sidebar Name

none@example.org
Earth, , US

Summary

Currently employed at Red Brick University. Short biography for the left-hand sidebar

Education

  • Ph.D in Version Control Theory
    2018
    GitHub University
  • M.S. in Jekyll
    2014
    GitHub University
  • B.S. in GitHub
    2012
    GitHub University

Publications

  • Paper Title Number 1
    2009
    Journal 1
    This paper is about the number 1. The number 2 is left for future work.
  • Paper Title Number 2
    2010
    Journal 1
    This paper is about the number 2. The number 3 is left for future work.
  • Paper Title Number 3
    2015
    Journal 1
    This paper is about the number 3. The number 4 is left for future work.
  • Paper Title Number 4
    2024
    GitHub Journal of Bugs
    This paper is about fixing template issue #693.

Presentations

  • Talk 1 on Relevant Topic in Your Field
    2012
    UC San Francisco, Department of Testing
    San Francisco, CA, USA
  • Tutorial 1 on Relevant Topic in Your Field
    2013
    UC-Berkeley Institute for Testing Science
    Berkeley, CA, USA
  • Talk 2 on Relevant Topic in Your Field
    2014
    London School of Testing
    London, UK
  • Conference Proceeding talk 3 on Relevant Topic in Your Field
    2014
    Testing Institute of America 2014 Annual Conference
    Los Angeles, CA, USA

Teaching

  • Teaching experience 1
    2014
    University 1, Department
    Role: Undergraduate course
  • Teaching experience 2
    2015
    University 1, Department
    Role: Workshop

Portfolio

  • Portfolio item number 1
    Portfolio
    Short description of portfolio item number 1
</div></div> -->

Your Sidebar Name

none@example.org
Earth, , US

Summary

Currently employed at Red Brick University. Short biography for the left-hand sidebar

Education

  • Ph.D in Version Control Theory
    2018
    GitHub University
  • M.S. in Jekyll
    2014
    GitHub University
  • B.S. in GitHub
    2012
    GitHub University

Publications

  • Paper Title Number 1
    2009
    Journal 1
    This paper is about the number 1. The number 2 is left for future work.
  • Paper Title Number 2
    2010
    Journal 1
    This paper is about the number 2. The number 3 is left for future work.
  • Paper Title Number 3
    2015
    Journal 1
    This paper is about the number 3. The number 4 is left for future work.
  • Paper Title Number 4
    2024
    GitHub Journal of Bugs
    This paper is about fixing template issue #693.

Presentations

  • Talk 1 on Relevant Topic in Your Field
    2012
    UC San Francisco, Department of Testing
    San Francisco, CA, USA
  • Tutorial 1 on Relevant Topic in Your Field
    2013
    UC-Berkeley Institute for Testing Science
    Berkeley, CA, USA
  • Talk 2 on Relevant Topic in Your Field
    2014
    London School of Testing
    London, UK
  • Conference Proceeding talk 3 on Relevant Topic in Your Field
    2014
    Testing Institute of America 2014 Annual Conference
    Los Angeles, CA, USA

Teaching

  • Teaching experience 1
    2014
    University 1, Department
    Role: Undergraduate course
  • Teaching experience 2
    2015
    University 1, Department
    Role: Workshop

Portfolio

  • Portfolio item number 1
    Portfolio
    Short description of portfolio item number 1

CV

Education

  • Ph.D in Version Control Theory, GitHub University, 2018 (expected)
  • M.S. in Jekyll, GitHub University, 2014
  • B.S. in GitHub, GitHub University, 2012

Work experience

  • Spring 2024: Academic Pages Collaborator
    • GitHub University
    • Duties includes: Updates and improvements to template
    • Supervisor: The Users
  • Fall 2015: Research Assistant
    • GitHub University
    • Duties included: Merging pull requests
    • Supervisor: Professor Hub
  • Summer 2015: Research Assistant
    • GitHub University
    • Duties included: Tagging issues
    • Supervisor: Professor Git

Skills

  • Skill 1
  • Skill 2
    • Sub-skill 2.1
    • Sub-skill 2.2
    • Sub-skill 2.3
  • Skill 3

Publications

Talks

Teaching

Service and leadership

  • Currently signed in to 43 different slack teams

:root{--global-base-color: #7a8288;--global-bg-color: #fff;--global-footer-bg-color: #f2f3f3;--global-border-color: #f2f3f3;--global-dark-border-color: #bdc1c4;--global-code-background-color: #fafafa;--global-code-text-color: #313436;--global-fig-caption-color: mix(#fff, #494e52, 25%);--global-link-color: #52adc8;--global-link-color-hover: mix(#000, #2f7f93, 25%);--global-link-color-visited: mix(#fff, #2f7f93, 25%);--global-masthead-link-color: #494e52;--global-masthead-link-color-hover: mix(#000, #7a8288, 25%);--global-text-color: #494e52;--global-text-color-light: #9ba1a6;--global-thead-color: #f2f3f3}html[data-theme="dark"]{--global-base-color: #474747;--global-bg-color: #474747;--global-footer-bg-color: #474747;--global-border-color: #bdc1c4;--global-dark-border-color: #dadada;--global-code-background-color: #fafafa;--global-code-text-color: #313436;--global-fig-caption-color: #bdc1c4;--global-link-color: #0ea1c5;--global-link-color-hover: #0b7994;--global-link-color-visited: #4ab9d4;--global-masthead-link-color: #fff;--global-masthead-link-color-hover: #dadada;--global-text-color: #fff;--global-text-color-light: #bdc1c4;--global-thead-color: #ededed}a:focus{outline:thin dotted #f89406;outline:5px auto #f89406;outline-offset:-2px}*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}html{box-sizing:border-box;background-color:var(--global-bg-color);font-size:16px;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}@media (min-width: 48em){html{font-size:18px}}body{margin:0}::-moz-selection{color:#fff;background:#000}::selection{color:#fff;background:#000}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}a{color:var(--global-link-color)}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}html{position:relative;min-height:100%}body{color:var(--global-text-color);background-color:var(--global-bg-color);margin:0;padding:70px 0 0;padding-bottom:9em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;line-height:1.5}body.overflow--hidden{overflow:hidden}h1,h2,h3,h4,h5,h6{margin:2em 0 0.5em;line-height:1.2;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-weight:bold}h1{margin-top:0;font-size:1.563em}h2{font-size:1.25em}h3{font-size:1em}h4{font-size:.75em}h5{font-size:.75em}h6{font-size:.75em}small,.small{font-size:.75em}p{margin-bottom:1.3em}u,ins{text-decoration:none;border-bottom:1px solid var(--global-text-color)}u a,ins a{color:inherit}del a{color:inherit}p,pre,blockquote,ul,ol,dl,figure,table,fieldset{orphans:3;widows:3}abbr[title],abbr[data-original-title]{text-decoration:none;cursor:help;border-bottom:1px dotted var(--global-text-color)}blockquote{margin:2em 1em 2em 0;padding-left:1em;padding-right:1em;font-style:italic;border-left:0.25em solid var(--global-border-color)}blockquote cite{font-style:italic}blockquote cite:before{content:"\2014";padding-right:5px}a:hover,a:active{outline:0}tt,code,kbd,samp,pre{font-family:Monaco,Consolas,"Lucida Console",monospace}pre{overflow-x:auto}a>code,figcaption>code,li>code,p>code,td>code{color:var(--global-code-text-color);padding-top:0.1rem;padding-bottom:0.1rem;font-size:.75em;background:var(--global-code-background-color);border:1px solid var(--global-thead-color);border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}a>code:before,a>code:after,figcaption>code:before,figcaption>code:after,li>code:before,li>code:after,p>code:before,p>code:after,td>code:before,td>code:after{letter-spacing:-0.2em;content:"\00a0"}a>code{color:inherit}pre>code{color:var(--global-code-text-color)}hr{display:block;margin:1em 0;border:0;border-top:1px solid var(--global-border-color)}ul li,ol li{margin-bottom:0.5em}li ul,li ol{margin-top:0.5em}figure{display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:start;align-items:flex-start;flex-wrap:wrap;margin:2em 0}figure img,figure iframe,figure .fluid-width-video-wrapper{margin-bottom:1em}figure img{width:100%;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}figure>a{display:block}@media (min-width: 37.5em){figure.half>a,figure.half>img{width:calc(50% - 0.5em)}}figure.half figcaption{width:100%}@media (min-width: 37.5em){figure.third>a,figure.third>img{width:calc(33.3333% - 0.5em)}}figure.third figcaption{width:100%}figcaption{margin-bottom:0.5em;color:var(--global-fig-caption-color);font-family:Georgia,Times,serif;font-size:.75em}figcaption a{color:inherit;text-decoration:none;border-bottom:1px solid var(--global-border-color);-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}figcaption a:hover{color:#000;border-bottom-color:#000}svg:not(:root){overflow:hidden}nav ul{margin:0;padding:0}nav li{list-style:none}nav a{text-decoration:none}nav ul li,nav ol li{margin-bottom:0}nav li ul,nav li ol{margin-top:0}@-webkit-keyframes intro{0%{opacity:0}100%{opacity:1}}@keyframes intro{0%{opacity:0}100%{opacity:1}}b,i,strong,em,blockquote,p,q,span,figure,img,h1,h2,header,input,a,tr,td,form button,input[type="submit"],.btn,#goog-wm-sb,.highlight,.archive__item-teaser{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}@media print{.masthead,.toc,.page__share,.page__related,.ads,.page__footer{display:none}}.hidden{display:none;visibility:hidden}.load{display:none}.transparent{opacity:0}.visually-hidden,.screen-reader-text,.screen-reader-text span,.screen-reader-shortcut{position:absolute !important;clip:rect(1px, 1px, 1px, 1px);height:1px !important;width:1px !important;border:0 !important;overflow:hidden}body:hover .visually-hidden a,body:hover .visually-hidden input,body:hover .visually-hidden button{display:none !important}.screen-reader-text:focus,.screen-reader-shortcut:focus{clip:auto !important;height:auto !important;width:auto !important;display:block;font-size:1em;font-weight:bold;padding:15px 23px 14px;background:#fff;z-index:100000;text-decoration:none;box-shadow:0 0 2px 2px rgba(0,0,0,0.6)}.skip-link{position:fixed;z-index:20;margin:0;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;white-space:nowrap}.skip-link li{height:0;width:0;list-style:none}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.cf{clear:both}.wrapper{max-width:925px;margin-left:auto;margin-right:auto}.wrapper:after{content:" ";display:block;clear:both}.wordwrap{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}.align-left{display:block;margin-left:auto;margin-right:auto}@media (min-width: 37.5em){.align-left{float:left;margin-right:1em}}.align-right{display:block;margin-left:auto;margin-right:auto}@media (min-width: 37.5em){.align-right{float:right;margin-left:1em}}.align-center{display:block;margin-left:auto;margin-right:auto}@media (min-width: 57.8125em){.full{margin-right:-19.4915254237% !important}}.icon{display:inline-block;fill:currentColor;width:1em;height:1.1em;line-height:1;position:relative;top:-0.1em;vertical-align:middle}.icon-pad-right{padding-right:0.5em;margin-right:0.5em}.social-icons .fa{color:#000}.social-icons .fa-bluesky,.social-icons .fa-bluesky-square{color:#1184fe}.social-icons .fa-behance,.social-icons .fa-behance-square{color:#1769FF}.social-icons .fa-dribbble{color:#ea4c89}.social-icons .fa-facebook,.social-icons .fa-facebook-square{color:#3b5998}.social-icons .fa-flickr{color:#ff0084}.social-icons .fa-foursquare{color:#0072b1}.social-icons .fa-github,.social-icons .fa-github-alt,.social-icons .fa-github-square{color:#171516}.social-icons .fa-google-plus,.social-icons .fa-google-plus-square{color:#dd4b39}.social-icons .fa-instagram{color:#517fa4}.social-icons .fa-kaggle,.social-icons .fa-kaggle-square{color:#20c0ff}.social-icons .fa-lastfm,.social-icons .fa-lastfm-square{color:#d51007}.social-icons .fa-linkedin,.social-icons .fa-linkedin-square{color:#007bb6}.social-icons .fa-mastodon,.social-icons .fa-mastodon-square{color:#6364ff}.social-icons .ai-orcid,.social-icons .ai-orcid-square{color:#a6ce39}.social-icons .fa-pinterest,.social-icons .fa-pinterest-p,.social-icons .fa-pinterest-square{color:#cb2027}.social-icons .fa-rss,.social-icons .fa-rss-square{color:#fa9b39}.social-icons .fa-soundcloud{color:#f30}.social-icons .fa-stack-exchange,.social-icons .fa-stack-overflow{color:#fe7a15}.social-icons .fa-tumblr,.social-icons .fa-tumblr-square{color:#32506d}.social-icons .fa-twitter,.social-icons .fa-twitter-square{color:#55acee}.social-icons .fa-vimeo,.social-icons .fa-vimeo-square{color:#1ab7ea}.social-icons .fa-vine{color:#00bf8f}.social-icons .fa-youtube,.social-icons .fa-youtube-square,.social-icons .fa-youtube-play{color:#b00}.social-icons .fa-xing,.social-icons .fa-xing-square{color:#006567}.navicon{position:relative;width:28px;height:4px;background:#fff;margin:auto;-webkit-transition:0.3s;transition:0.3s}.navicon:before,.navicon:after{content:"";position:absolute;left:0;width:28px;height:4px;background:#fff;-webkit-transition:0.3s;transition:0.3s}.navicon:before{top:-8px}.navicon:after{bottom:-8px}.close .navicon{background:transparent}.close .navicon:before,.close .navicon:after{-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;top:0;width:28px}.close .navicon:before{-webkit-transform:rotate3d(0, 0, 1, 45deg);transform:rotate3d(0, 0, 1, 45deg)}.close .navicon:after{-webkit-transform:rotate3d(0, 0, 1, -45deg);transform:rotate3d(0, 0, 1, -45deg)}@media (min-width: 57.8125em){.sticky{clear:both;position:-webkit-sticky;position:sticky;top:2em}.sticky::after{clear:both;content:"";display:table}.sticky>*{display:block}}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.show-modal{overflow:hidden;position:relative}.show-modal:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;z-index:999;background-color:rgba(255,255,255,0.85)}.show-modal .modal{display:block}.modal{display:none;position:fixed;width:300px;top:50%;left:50%;margin-left:-150px;margin-top:-150px;min-height:0;z-index:9999;background:#fff;border:1px solid var(--global-border-color);border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}.modal__title{margin:0;padding:0.5em 1em}.modal__supporting-text{padding:0 1em 0.5em 1em}.modal__actions{padding:0.5em 1em;border-top:1px solid var(--global-border-color)}.footnote{color:var(--global-text-color-light);text-decoration:none}.footnotes{color:var(--global-text-color-light)}.footnotes ol,.footnotes li,.footnotes p{margin-bottom:0;font-size:.75em}a.reversefootnote{color:var(--global-text-color-light);text-decoration:none}a.reversefootnote:hover{text-decoration:underline}.required{color:#ee5f5b;font-weight:bold}table{margin-bottom:1em;width:100%;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;border-collapse:collapse;border:1px solid var(--global-border-color)}table+table{margin-top:1em}thead{background-color:var(--global-border-color);border-bottom:1px solid var(--global-border-color)}th{padding:0.5em;font-weight:bold;text-align:left;border-right:1px solid var(--global-border-color)}td{padding:0.5em;border-bottom:1px solid var(--global-border-color);border-right:1px solid var(--global-border-color)}tr,td,th{vertical-align:middle}.btn,#goog-wm-sb{display:inline-block;margin-bottom:0.25em;padding:0.5em 1em;color:#fff !important;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;font-weight:bold;text-align:center;text-decoration:none;background-color:var(--global-base-color);border:0 !important;border-radius:4px;cursor:pointer}.btn:hover,#goog-wm-sb:hover{background-color:#333}.btn .icon,#goog-wm-sb .icon{margin-right:0.5em}.btn .icon+.hidden,#goog-wm-sb .icon+.hidden{margin-left:-0.5em}.btn--block{display:block;width:100%}.btn--block+.btn--block{margin-top:0.25em}.btn--inverse{color:var(--global-text-color-light) !important;border:1px solid var(--global-border-color) !important;background-color:var(--global-bg-color)}.btn--inverse:hover{color:#fff !important;border-color:var(--global-text-color-light)}.btn--light-outline{border:1px solid #fff !important;background-color:transparent}.btn--info{background-color:#2f7f93}.btn--info:hover{background-color:#266676}.btn--warning{background-color:#f89406}.btn--warning:hover{background-color:#c67605}.btn--success{background-color:#62c462}.btn--success:hover{background-color:#4e9d4e}.btn--danger{background-color:#ee5f5b}.btn--danger:hover{background-color:#be4c49}.btn--disabled{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:0.65}.btn--bluesky{background-color:#1184fe}.btn--bluesky:hover{background-color:#0e6acb}.btn--facebook{background-color:#3b5998}.btn--facebook:hover{background-color:#2f477a}.btn--twitter{background-color:#55acee}.btn--twitter:hover{background-color:#448abe}.btn--google-plus{background-color:#dd4b39}.btn--google-plus:hover{background-color:#b13c2e}.btn--linkedin{background-color:#007bb6}.btn--linkedin:hover{background-color:#006292}.btn--x-large{font-size:1.25em}.btn--large{font-size:1em}.btn--small{font-size:.6875em}.notice{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(122,130,136,0.25);color:var(--global-code-text-color)}.notice h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice h4{margin-bottom:0;font-size:1em}.notice p:last-child{margin-bottom:0 !important}.notice h4+p{margin-top:0;padding-top:0}.notice a{color:#7a8288}.notice a:hover{color:#494e52}.notice code{background-color:#f8f9f9}.notice ul:last-child{margin-bottom:0}.notice--primary{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(122,130,136,0.25);color:var(--global-code-text-color)}.notice--primary h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--primary h4{margin-bottom:0;font-size:1em}.notice--primary p:last-child{margin-bottom:0 !important}.notice--primary h4+p{margin-top:0;padding-top:0}.notice--primary a{color:#7a8288}.notice--primary a:hover{color:#494e52}.notice--primary code{background-color:#f8f9f9}.notice--primary ul:last-child{margin-bottom:0}.notice--info{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#eaf2f4;border-radius:4px;box-shadow:0 1px 1px rgba(47,127,147,0.25);color:var(--global-code-text-color)}.notice--info h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--info h4{margin-bottom:0;font-size:1em}.notice--info p:last-child{margin-bottom:0 !important}.notice--info h4+p{margin-top:0;padding-top:0}.notice--info a{color:#2f7f93}.notice--info a:hover{color:#1c4c58}.notice--info code{background-color:#f5f9fa}.notice--info ul:last-child{margin-bottom:0}.notice--warning{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#fef4e6;border-radius:4px;box-shadow:0 1px 1px rgba(248,148,6,0.25);color:var(--global-code-text-color)}.notice--warning h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--warning h4{margin-bottom:0;font-size:1em}.notice--warning p:last-child{margin-bottom:0 !important}.notice--warning h4+p{margin-top:0;padding-top:0}.notice--warning a{color:#f89406}.notice--warning a:hover{color:#955904}.notice--warning code{background-color:#fffaf3}.notice--warning ul:last-child{margin-bottom:0}.notice--success{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#eff9ef;border-radius:4px;box-shadow:0 1px 1px rgba(98,196,98,0.25);color:var(--global-code-text-color)}.notice--success h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--success h4{margin-bottom:0;font-size:1em}.notice--success p:last-child{margin-bottom:0 !important}.notice--success h4+p{margin-top:0;padding-top:0}.notice--success a{color:#62c462}.notice--success a:hover{color:#3b763b}.notice--success code{background-color:#f7fcf7}.notice--success ul:last-child{margin-bottom:0}.notice--danger{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#fdefef;border-radius:4px;box-shadow:0 1px 1px rgba(238,95,91,0.25);color:var(--global-code-text-color)}.notice--danger h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--danger h4{margin-bottom:0;font-size:1em}.notice--danger p:last-child{margin-bottom:0 !important}.notice--danger h4+p{margin-top:0;padding-top:0}.notice--danger a{color:#ee5f5b}.notice--danger a:hover{color:#8f3937}.notice--danger code{background-color:#fef7f7}.notice--danger ul:last-child{margin-bottom:0}.masthead{position:fixed;background:var(--global-bg-color);height:fit-content;top:0;width:100%;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.15s;animation-delay:0.15s;z-index:20}.masthead::after{content:"";position:absolute;bottom:0;height:1px;background:var(--global-border-color);width:100%}.masthead__inner-wrap{max-width:925px;margin-left:auto;margin-right:auto;clear:both;padding:0.5em 1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.masthead__inner-wrap:after{content:" ";display:block;clear:both}.masthead__inner-wrap::after{clear:both;content:"";display:table}@media (min-width: 80em){.masthead__inner-wrap{max-width:1280px}}.masthead__inner-wrap nav{z-index:10}.masthead__inner-wrap a{text-decoration:none}.masthead__menu ul{margin:0;padding:0;clear:both;list-style-type:none}.masthead__menu-item{background-color:var(--global-bg-color);display:block;list-style-type:none;white-space:nowrap}.masthead__menu-item--lg{padding-right:2em;font-weight:700}.breadcrumbs{max-width:925px;margin-left:auto;margin-right:auto;clear:both;margin-top:0;margin-bottom:0;padding-left:2em;padding-right:2em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.30s;animation-delay:0.30s}.breadcrumbs:after{content:" ";display:block;clear:both}.breadcrumbs::after{clear:both;content:"";display:table}@media (min-width: 57.8125em){.breadcrumbs{padding-left:1em;padding-right:1em}}@media (min-width: 80em){.breadcrumbs{max-width:1280px}}.breadcrumbs ol{padding:0;list-style:none;font-size:.75em}@media (min-width: 57.8125em){.breadcrumbs ol{width:83.0508474576%;float:right;margin-right:0}}@media (min-width: 80em){.breadcrumbs ol{padding-left:4.2372881356%}}.breadcrumbs li{display:inline}.breadcrumbs .current{font-weight:bold}.pagination{clear:both;width:100%;float:left;margin-left:0;margin-right:0;clear:both;margin-top:1em;padding-top:1em}.pagination::after{clear:both;content:"";display:table}.pagination ul{margin:0;padding:0;list-style-type:none;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.pagination li{display:block;float:left;margin-left:-1px}.pagination li a{margin-bottom:0.25em;padding:0.5em 1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:14px;font-weight:bold;line-height:1.5;text-align:center;text-decoration:none;color:var(--global-text-color-light);border:1px solid var(--global-border-color);border-radius:0}.pagination li a:hover{color:var(--global-link-color-hover)}.pagination li a.current{color:#fff;background:var(--global-base-color)}.pagination li a.disabled{color:var(--global-text-color-light);pointer-events:none;cursor:not-allowed}.pagination li:first-child{margin-left:0}.pagination li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination--pager{display:block;padding:1em 2em;float:left;width:50%;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em;font-weight:bold;text-align:center;text-decoration:none;color:var(--global-text-color-light);border:1px solid var(--global-border-color);border-radius:4px}.pagination--pager:hover{color:var(--global-link-color-hover)}.pagination--pager:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.pagination--pager:last-child{margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.pagination--pager.disabled{color:var(--global-text-color-light);pointer-events:none;cursor:not-allowed}.page__content+.pagination,.page__meta+.pagination,.comment__date+.pagination,.page__share+.pagination,.page__comments+.pagination{margin-top:2em;padding-top:2em;border-top:1px solid var(--global-border-color)}.greedy-nav{position:relative;min-width:250px;background:var(--global-bg-color)}.greedy-nav a{display:block;margin:0 1rem;padding:0.5rem 0;color:var(--global-masthead-link-color);text-decoration:none}.greedy-nav a:hover{color:var(--global-masthead-link-color-hover)}.greedy-nav button{position:absolute;height:2.5rem;right:0;padding:0 0.5rem;border:0;outline:none;background-color:var(--global-base-color);color:#fff;cursor:pointer;z-index:100}.greedy-nav .visible-links{display:table}.greedy-nav .visible-links li{display:table-cell;vertical-align:middle}.greedy-nav .visible-links li:first-child{font-weight:bold;text-wrap:wrap}.greedy-nav .visible-links li:first-child a{margin-left:0}.greedy-nav .visible-links li:last-child a{margin-right:0}.greedy-nav .visible-links #theme-toggle a{width:25px;display:flex;justify-content:center;cursor:pointer}.greedy-nav .visible-links a{position:relative}.greedy-nav .visible-links a:before{content:"";position:absolute;left:0;bottom:0;height:4px;background:var(--global-border-color);width:100%;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;-webkit-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0)}.greedy-nav .visible-links a:hover:before{-webkit-transform:scaleX(1);-ms-transform:scaleX(1);transform:scaleX(1)}.greedy-nav .hidden-links{position:absolute;top:100%;right:0;margin-top:15px;padding:5px;border:1px solid var(--global-border-color);border-radius:4px;background:#fff;box-shadow:0 0 10px rgba(0,0,0,0.25)}.greedy-nav .hidden-links a{margin:0;padding:10px 20px;font-size:1em}.greedy-nav .hidden-links a:hover{color:var(--global-masthead-link-color-hover);background:var(--global-border-color)}.greedy-nav .hidden-links:before{content:"";position:absolute;top:-11px;right:10px;width:0;border-style:solid;border-width:0 10px 10px;border-color:var(--global-border-color) transparent;display:block;z-index:0}.greedy-nav .hidden-links:after{content:"";position:absolute;top:-10px;right:10px;width:0;border-style:solid;border-width:0 10px 10px;border-color:#fff transparent;display:block;z-index:1}.greedy-nav .hidden-links li{display:block;border-bottom:1px solid var(--global-border-color)}.greedy-nav .hidden-links li:last-child{border-bottom:none}.nav__list{font-size:1.25rem}.nav__list ul{margin-bottom:1em}.nav__list a{display:block;padding:0.125em 0;color:inherit}.nav__list a:hover{text-decoration:underline}.nav__list .active{margin-left:-0.5em;padding-left:0.5em;padding-right:0.5em;color:#fff;font-weight:bold;background:var(--global-base-color);border-radius:4px}.nav__list .active:hover{color:#fff}.nav__title{margin:0;padding:0.5rem 1rem;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em;font-weight:bold}.nav__sub-title{display:block;margin:0.5rem 0;padding:0.5rem 0;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;font-weight:bold;text-transform:uppercase;border-bottom:1px solid var(--global-border-color)}.toc{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;color:var(--global-text-color-light);text-transform:uppercase;letter-spacing:1px;background-color:#fff;border:1px solid var(--global-border-color);border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}.toc .nav__title{color:#fff;font-size:.75em;background:var(--global-base-color);border-top-left-radius:4px;border-top-right-radius:4px}.toc__menu{margin:0;padding:0;width:100%;list-style:none;font-size:0.8rem}.toc__menu a{display:block;padding:0.5rem 1rem;color:var(--global-code-text-color);font-size:.6875em;font-weight:bold;line-height:1.5;border-bottom:1px solid var(--global-border-color);text-decoration-line:none !important}.toc__menu a:hover{color:#000;background:var(--global-link-color-hover)}.toc__menu>li:last-child a{border-bottom:none}.toc__menu li ul>li a{padding-left:2rem;font-weight:normal}.toc__menu li>ul li{display:none}@media (min-width: 48em){.toc__menu li>ul li{display:block}}.page__footer{clear:both;background-color:var(--global-footer-bg-color);color:var(--global-text-color-light);float:left;margin-left:0;margin-right:0;width:100%;clear:both;position:absolute;bottom:0em;height:auto;margin-top:3em;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.45s;animation-delay:0.45s;border-top:1px solid var(--global-dark-border-color)}.page__footer::after{clear:both;content:"";display:table}.page__footer footer{clear:both;margin-left:auto;margin-right:auto;margin-top:1em;max-width:100%;padding:0 1em 1em}.page__footer footer::after{clear:both;content:"";display:table}@media (min-width: 80em){.page__footer footer{max-width:1280px}}.page__footer a{color:inherit;text-decoration:none}.page__footer a:hover{text-decoration:underline}.page__footer .fas,.page__footer .fab,.page__footer .far,.page__footer .fal{color:var(--global-text-color-light)}.page__footer-copyright{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.6875em}.page__footer-follow ul{margin:0;padding:0;list-style-type:none}.page__footer-follow li{display:inline-block;padding-top:5px;padding-bottom:5px;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;text-transform:uppercase}.page__footer-follow li+li:before{content:"";padding-right:5px}.page__footer-follow a{padding-right:10px;font-weight:bold}.page__footer-follow .social-icons a{white-space:nowrap}div.highlighter-rouge,figure.highlight{position:relative;margin-bottom:1em;padding:1em;border:1px solid var(--global-border-color);border-radius:4px;background-color:var(--global-code-background-color);box-shadow:0 1px 1px rgba(0,0,0,0.125);font-size:1.25em}div.highlighter-rouge:before,figure.highlight:before{position:absolute;top:0;right:0;padding:0.5em;background-color:#f2f3f3;content:"\f121";font-family:"Font Awesome 6 Free" !important;font-size:.75em;line-height:1;text-transform:none;speak:none}div.highlighter-rouge .highlight,figure.highlight .highlight{margin:0;font-family:Monaco,Consolas,"Lucida Console",monospace;font-size:.75em;line-height:1.8}.highlight table td{padding:5px}.highlight table pre{margin:0}.highlight .c{color:#93a1a1}.highlight .err{color:#586e75}.highlight .g{color:#586e75}.highlight .k{color:#859900}.highlight .l{color:#586e75}.highlight .n{color:#586e75}.highlight .o{color:#859900}.highlight .x{color:#cb4b16}.highlight .p{color:#586e75}.highlight .cm{color:#93a1a1}.highlight .cp{color:#859900}.highlight .c1{color:#93a1a1}.highlight .cs{color:#859900}.highlight .gd{color:#2aa198}.highlight .ge{color:#586e75;font-style:italic}.highlight .gr{color:#dc322f}.highlight .gh{color:#cb4b16}.highlight .gi{color:#859900}.highlight .go{color:#586e75}.highlight .gp{color:#586e75}.highlight .gs{color:#586e75;font-weight:bold}.highlight .gu{color:#cb4b16}.highlight .gt{color:#586e75}.highlight .kc{color:#cb4b16}.highlight .kd{color:#22b3eb}.highlight .kn{color:#859900}.highlight .kp{color:#859900}.highlight .kr{color:#22b3eb}.highlight .kt{color:#dc322f}.highlight .ld{color:#586e75}.highlight .m{color:#2aa198}.highlight .s{color:#2aa198}.highlight .na{color:#586e75}.highlight .nb{color:#B58900}.highlight .nc{color:#22b3eb}.highlight .no{color:#cb4b16}.highlight .nd{color:#22b3eb}.highlight .ni{color:#cb4b16}.highlight .ne{color:#cb4b16}.highlight .nf{color:#22b3eb}.highlight .nl{color:#586e75}.highlight .nn{color:#586e75}.highlight .nx{color:#586e75}.highlight .py{color:#586e75}.highlight .nt{color:#22b3eb}.highlight .nv{color:#22b3eb}.highlight .ow{color:#859900}.highlight .w{color:#586e75}.highlight .mf{color:#2aa198}.highlight .mh{color:#2aa198}.highlight .mi{color:#2aa198}.highlight .mo{color:#2aa198}.highlight .sb{color:#93a1a1}.highlight .sc{color:#2aa198}.highlight .sd{color:#586e75}.highlight .s2{color:#2aa198}.highlight .se{color:#cb4b16}.highlight .sh{color:#586e75}.highlight .si{color:#2aa198}.highlight .sx{color:#2aa198}.highlight .sr{color:#dc322f}.highlight .s1{color:#2aa198}.highlight .ss{color:#2aa198}.highlight .bp{color:#22b3eb}.highlight .vc{color:#22b3eb}.highlight .vg{color:#22b3eb}.highlight .vi{color:#22b3eb}.highlight .il{color:#2aa198}form{margin:0 0 5px 0}form fieldset{margin-bottom:5px;padding:0;border-width:0}form legend{display:block;width:100%;margin-bottom:10px;*margin-left:-7px;padding:0;color:var(--global-text-color);border:0;border-bottom:1px solid #ccc;white-space:normal}form p{margin-bottom:5px / 2}form ul{list-style-type:none;margin:0 0 5px 0;padding:0}form br{display:none}label,input,button,select,textarea{vertical-align:baseline;*vertical-align:middle}input,button,select,textarea{box-sizing:border-box;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}label{display:block;margin-bottom:0.25em;color:var(--global-text-color);cursor:pointer}label small{font-size:.75em}label input,label textarea,label select{display:block}input,textarea,select{display:inline-block;width:100%;padding:0.25em;margin-bottom:0.5em;color:var(--global-text-color);background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}input:hover,textarea:hover,select:hover{border-color:var(--global-base-color)}.input-mini{width:60px}.input-small{width:90px}input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer;border-radius:0;border:0 \9}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="image"]{border:0;box-shadow:none}input[type="file"]{width:auto;padding:initial;line-height:initial;border:initial;background-color:transparent;background-color:initial;box-shadow:none}input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;cursor:pointer;*overflow:visible}select,input[type="file"]{*margin-top:4px}select{width:auto;background-color:#fff}select[multiple],select[size]{height:auto}textarea{resize:vertical;height:auto;overflow:auto;vertical-align:top}input[type="hidden"]{display:none}.form{position:relative}.radio,.checkbox{padding-left:18px;font-weight:normal}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{opacity:0.5;cursor:not-allowed}input:focus,textarea:focus{border-color:var(--global-border-color);outline:0;outline:thin dotted \9}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus,select:focus{box-shadow:none}.help-block,.help-inline{color:#2f7f93}.help-block{display:block;margin-bottom:1em;line-height:1em}.help-inline{display:inline-block;vertical-align:middle;padding-left:5px}.form-inline input,.form-inline textarea,.form-inline select{display:inline-block;margin-bottom:0}.form-inline label{display:inline-block}.form-inline .radio,.form-inline .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px}.form-search input,.form-search textarea,.form-search select{display:inline-block;margin-bottom:0}.form-search .search-query{padding-left:14px;padding-right:14px;margin-bottom:0;border-radius:14px}.form-search label{display:inline-block}.form-search .radio,.form-search .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px}.form--loading:before{content:''}.form--loading .form__spinner{display:block}.form:before{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(255,255,255,0.7);z-index:10}.form__spinner{display:none;position:absolute;top:50%;left:50%;z-index:11}#goog-fixurl ul{list-style:none;margin-left:0;padding-left:0}#goog-fixurl ul li{list-style-type:none}#goog-wm-qt{width:auto;margin-right:10px;margin-bottom:20px;padding:8px 20px;display:inline-block;font-size:.75em;background-color:#fff;color:#000;border-width:2px !important;border-style:solid !important;border-color:gray;border-radius:4px}#main{max-width:925px;margin-left:auto;margin-right:auto;clear:both;margin-top:2em;padding-left:1em;padding-right:1em;animation:intro 0.3s both;animation-delay:0.35s}#main:after{content:" ";display:block;clear:both}#main::after{clear:both;content:"";display:table}@media (min-width: 80em){#main{max-width:1280px}}@media (min-width: 57.8125em){.page{width:83.0508474576%;float:right;margin-right:0;padding-left:4.2372881356%;padding-right:16.9491525424%}}.page .page__inner-wrap{clear:both;width:100%;float:left;margin-left:0;margin-right:0}.page .page__inner-wrap .page__content,.page .page__inner-wrap .page__meta,.page .page__inner-wrap .comment__date,.page .page__inner-wrap .page__share{clear:both;width:100%;float:left;margin-left:0;margin-right:0}.page__title{margin-top:0;line-height:1}.page__title+.page__meta,.page__title+.comment__date{margin-top:-0.5em}.page__lead{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1.25em}.page__content h2{padding-bottom:0.5em;border-bottom:1px solid var(--global-border-color)}.page__content p,.page__content li,.page__content dl{font-size:1em}.page__content p{margin:0 0 1.3em}.page__content a{text-decoration:underline}.page__content a:hover{text-decoration:underline}.page__content a:hover img{box-shadow:0 0 10px rgba(0,0,0,0.25)}.page__content dt{margin-top:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-weight:bold}.page__content dd{margin-left:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em}.page__content .small{font-size:.75em}.page__content blockquote+.small{margin-top:-1.5em;padding-left:1.25rem}.page__hero{position:relative;margin-bottom:2em;clear:both;animation:intro 0.3s both;animation-delay:0.25s}.page__hero::after{clear:both;content:"";display:table}.page__hero--overlay{position:relative;margin-bottom:2em;padding:3em 0;clear:both;background-size:cover;background-repeat:no-repeat;background-position:center;animation:intro 0.3s both;animation-delay:0.25s}.page__hero--overlay::after{clear:both;content:"";display:table}.page__hero--overlay a{color:#fff}.page__hero--overlay .wrapper{padding-left:1em;padding-right:1em}@media (min-width: 80em){.page__hero--overlay .wrapper{max-width:1280px}}.page__hero--overlay .page__title,.page__hero--overlay .page__meta,.page__hero--overlay .comment__date,.page__hero--overlay .page__lead,.page__hero--overlay .btn,.page__hero--overlay #goog-wm-sb{color:#fff;text-shadow:1px 1px 4px rgba(0,0,0,0.5)}.page__hero--overlay .page__lead{max-width:768px}.page__hero--overlay .page__title{font-size:1.953em}@media (min-width: 37.5em){.page__hero--overlay .page__title{font-size:2.441em}}.page__hero-image{width:100%;height:auto;-ms-interpolation-mode:bicubic}.page__hero-caption{position:absolute;bottom:0;right:0;margin:0 auto;padding:2px 5px;color:#fff;font-family:Georgia,Times,serif;font-size:.6875em;background:#000;text-align:right;z-index:5;opacity:0.5;border-radius:4px 0 4px 0}@media (min-width: 57.8125em){.page__hero-caption{padding:5px 10px}}.page__hero-caption a{color:#fff;text-decoration:none}.page__share{margin-top:2em;padding-top:1em;border-top:1px solid var(--global-border-color)}@media (max-width: 37.5em){.page__share .btn span,.page__share #goog-wm-sb span{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}}.page__share-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}.page__meta,.comment__date{margin-top:2em;color:var(--global-text-color-light);font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em}.page__meta p,.comment__date p{margin:0}.page__meta a,.comment__date a{color:inherit}.page__meta-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}.page__taxonomy .sep{display:none}.page__taxonomy strong{margin-right:10px}.page__taxonomy-item{display:inline-block;margin-right:5px;margin-bottom:8px;padding:5px 10px;text-decoration:none;border:1px solid var(--global-border-color);border-radius:4px}.page__taxonomy-item:hover{text-decoration:none;color:var(--global-link-color-hover)}.page__comments{clear:both;width:100%;float:left;margin-left:0;margin-right:0}.page__comments-title{margin-top:2rem;margin-bottom:10px;padding-top:2rem;font-size:.75em;border-top:1px solid var(--global-border-color);text-transform:uppercase}.page__comments-form{padding:1em;background:var(--global-border-color);transition:all 0.2s ease-in-out}.page__comments-form.disabled input,.page__comments-form.disabled button,.page__comments-form.disabled textarea,.page__comments-form.disabled label{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:0.65}.comment{clear:both;margin:1em 0}.comment::after{clear:both;content:"";display:table}.comment:not(:last-child){border-bottom:1px solid var(--global-border-color)}.comment__avatar-wrapper{float:left;width:60px;height:60px}@media (min-width: 57.8125em){.comment__avatar-wrapper{width:100px;height:100px}}.comment__avatar{width:40px;height:40px;border-radius:50%}@media (min-width: 57.8125em){.comment__avatar{width:80px;height:80px;padding:5px;border:1px solid var(--global-border-color)}}.comment__content-wrapper{float:right;width:calc(100% - 60px)}@media (min-width: 57.8125em){.comment__content-wrapper{width:calc(100% - 100px)}}.comment__author{margin:0}.comment__author a{text-decoration:none}.comment__date{margin:0}.comment__date a{text-decoration:none}.page__related{margin-top:2em;padding-top:1em;border-top:1px solid var(--global-border-color);clear:both;float:left}.page__related::after{clear:both;content:"";display:table}@media (min-width: 57.8125em){.page__related{margin-left:21.186440678%}}.page__related a{color:inherit;text-decoration:none}.page__related-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}.archive{margin-bottom:2em}@media (min-width: 48em){.archive{width:100%;float:left;margin-left:0;margin-right:0}}@media (min-width: 57.8125em){.archive{width:83.0508474576%;float:right;margin-right:0;padding-left:4.2372881356%}}.archive a{text-decoration:underline}.archive a:hover{text-decoration:underline}.archive a:hover img{box-shadow:0 0 10px rgba(0,0,0,0.25)}.archive__subtitle{margin:1.414em 0 0;padding-bottom:0.5em;font-size:1em;color:var(--global-text-color-light);border-bottom:1px solid var(--global-border-color)}.archive__subtitle+.list__item .archive__item-title{margin-top:0.5em}.archive__item-title{margin-bottom:0.25em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.archive__item-title a+a{opacity:0.5}.page__content .archive__item-title{margin-top:1em;border-bottom:none}.archive__item-excerpt{margin-top:0;font-size:.75em}.archive__item-excerpt+p{text-indent:0}.archive__item-teaser{border-radius:4px;overflow:hidden}.archive__item-teaser img{width:100%}.archive__item:hover .archive__item-teaser{box-shadow:0 0 10px rgba(0,0,0,0.25)}.archive__item:hover .archive__item-title{text-decoration:underline}@media (min-width: 48em){.list__item{padding-right:auto}}@media (min-width: 57.8125em){.list__item{padding-right:auto}}@media (min-width: 80em){.list__item{padding-right:auto}}.list__item .page__meta,.list__item .comment__date{margin:0 0 4px}.grid__item{margin-bottom:2em}.grid__item .page__meta,.grid__item .comment__date{margin:0 0 4px}.grid__item .archive__item-title{margin-top:0.5em;font-size:1em}.grid__item .archive__item-excerpt{display:none}@media (min-width: 37.5em){.grid__item{width:48.9795918367%;float:left}.grid__item:nth-child(2n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.grid__item:nth-child(2n+2){margin-left:51.0204081633%;margin-right:-100%;clear:none}.grid__item .archive__item-teaser{max-height:200px}}@media (min-width: 48em){.grid__item{margin-left:0;margin-right:0;width:23.4693877551%;float:left}.grid__item:nth-child(4n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.grid__item:nth-child(4n+2){margin-left:25.5102040816%;margin-right:-100%;clear:none}.grid__item:nth-child(4n+3){margin-left:51.0204081633%;margin-right:-100%;clear:none}.grid__item:nth-child(4n+4){margin-left:76.5306122449%;margin-right:-100%;clear:none}.grid__item .archive__item-teaser{max-height:120px}.grid__item .archive__item-excerpt{display:block;font-size:.75em}}.feature__wrapper{clear:both;margin-bottom:2em;border-bottom:1px solid var(--global-border-color)}.feature__wrapper::after{clear:both;content:"";display:table}.feature__item{margin-bottom:2em;font-size:1.25rem}@media (min-width: 37.5em){.feature__item{margin-bottom:0;width:32.2033898305%;float:left}.feature__item:nth-child(3n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.feature__item:nth-child(3n+2){margin-left:33.8983050847%;margin-right:-100%;clear:none}.feature__item:nth-child(3n+3){margin-left:67.7966101695%;margin-right:-100%;clear:none}.feature__item .feature__item-teaser{max-height:200px;overflow:hidden}}.feature__item--left{clear:both;width:100%;float:left;margin-left:0;margin-right:0;font-size:1.25rem}.feature__item--left .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item--left .archive__item-teaser{width:40.6779661017%;float:left;margin-right:1.6949152542%}.feature__item--left .archive__item-body{width:57.6271186441%;float:right;margin-right:0;padding-left:4.2372881356%;padding-right:8.4745762712%}}.feature__item--right{clear:both;width:100%;float:left;margin-left:0;margin-right:0;font-size:1.25rem}.feature__item--right .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item--right{text-align:right}.feature__item--right .archive__item-teaser{width:40.6779661017%;float:right;margin-left:1.6949152542%}.feature__item--right .archive__item-body{width:57.6271186441%;float:left;margin-left:0;padding-left:4.2372881356%;padding-right:8.4745762712%}}.feature__item--center{clear:both;width:100%;float:left;margin-left:0;margin-right:0;font-size:1.25rem}.feature__item--center .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item--center{text-align:center}.feature__item--center .archive__item-teaser{margin:0 auto;width:40.6779661017%}.feature__item--center .archive__item-body{margin:0 auto;width:57.6271186441%}}.sidebar{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);clear:both;margin-bottom:1em}.sidebar::after{clear:both;content:"";display:table}@media (orientation: portrait){.sidebar{margin-top:1em}}@media screen and (min-width: 1024px){.sidebar{height:100vh;overflow-y:auto;position:fixed;padding-top:70px}}@media (min-width: 57.8125em){.sidebar{width:15.2542372881%;float:left;margin-right:1.6949152542%;opacity:1;-webkit-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out}.sidebar:hover{opacity:1}}@media (min-width: 80em){.sidebar{max-width:250px;padding-right:0}}.sidebar h2,.sidebar h3,.sidebar h4,.sidebar h5,.sidebar h6{margin-bottom:0;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.sidebar h3,.sidebar h4{font-size:1em}.sidebar p,.sidebar li{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;line-height:1.5}.sidebar img{width:100%}.sidebar__right{margin-bottom:1em}@media (min-width: 57.8125em){.sidebar__right{position:relative;float:right;width:auto;margin-left:2.5423728814%;z-index:10}}@media (min-width: 80em){.sidebar__right{width:auto}}.author__avatar{display:table-cell;vertical-align:top;width:36px}@media (min-width: 57.8125em){.author__avatar{display:block;width:auto;height:auto}}.author__avatar img{max-width:175px;border-radius:50%}@media (min-width: 57.8125em){.author__avatar img{padding:5px;border:1px solid var(--global-border-color)}}.author__content{display:table-cell;vertical-align:top;padding-left:15px;padding-right:25px;line-height:1}@media (min-width: 57.8125em){.author__content{display:block;width:100%;padding-left:0;padding-right:0}}.author__name{margin:0}@media (min-width: 57.8125em){.author__name{margin-top:10px;margin-bottom:10px}}.sidebar .author__name{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em}.sidebar .author__desktop{display:none}@media screen and (min-width: 1024px){.sidebar .author__desktop{display:block}}.author__pronouns{margin:0}@media (min-width: 57.8125em){.author__pronouns{margin-top:10px;margin-bottom:10px}}.author__bio{margin:0}@media (min-width: 57.8125em){.author__bio{margin-top:10px;margin-bottom:20px}}.author__urls-wrapper{position:relative;display:table-cell;vertical-align:middle;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;z-index:10;position:relative;cursor:pointer}.author__urls-wrapper li:last-child a{margin-bottom:0}@media (min-width: 57.8125em){.author__urls-wrapper{display:block}}.author__urls-wrapper button{margin-bottom:0}@media (min-width: 57.8125em){.author__urls-wrapper button{display:none}}.author__urls{display:none;position:absolute;right:0;margin-top:15px;padding:10px;list-style-type:none;border:1px solid var(--global-border-color);border-radius:4px;background:var(--global-bg-color);z-index:-1;box-shadow:0 0 10px rgba(0,0,0,0.25);cursor:default}@media (min-width: 57.8125em){.author__urls{display:block;position:relative;margin:0;padding:0;border:0;background:transparent;box-shadow:none}}.author__urls:before{display:block;content:"";position:absolute;top:-11px;left:calc(50% - 10px);width:0;border-style:solid;border-width:0 10px 10px;border-color:var(--global-border-color) transparent;z-index:0}@media (min-width: 57.8125em){.author__urls:before{display:none}}.author__urls:after{display:block;content:"";position:absolute;top:-10px;left:calc(50% - 10px);width:0;border-style:solid;border-width:0 10px 10px;border-color:#fff transparent;z-index:1}@media (min-width: 57.8125em){.author__urls:after{display:none}}.author__urls li{white-space:nowrap}.author__urls a{display:block;margin-bottom:5px;padding-right:5px;padding-top:2px;padding-bottom:2px;color:inherit;font-size:1em;text-decoration:none}.author__urls a:hover{text-decoration:underline}/*! * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fa,.fa-classic,.fa-sharp,.fas,.fa-solid,.far,.fa-regular,.fab,.fa-brands{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fas,.fa-classic,.fa-solid,.far,.fa-regular{font-family:'Font Awesome 6 Free'}.fab,.fa-brands{font-family:'Font Awesome 6 Brands'}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color, #eee);border-radius:var(--fa-border-radius, .1em);border-style:var(--fa-border-style, solid);border-width:var(--fa-border-width, .08em);padding:var(--fa-border-padding, 0.2em 0.25em 0.15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, .3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, .3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1))}.fa-fade{animation-name:fa-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1))}.fa-beat-fade{animation-name:fa-beat-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{animation-name:fa-shake;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin{animation-name:fa-spin;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 2s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, steps(8))}@media (prefers-reduced-motion: reduce){.fa-beat,.fa-bounce,.fa-fade,.fa-beat-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%, 90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-bounce{0%{transform:scale(1, 1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0)}57%{transform:scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em))}64%{transform:scale(1, 1) translateY(0)}100%{transform:scale(1, 1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, 0.4)}}@keyframes fa-beat-fade{0%, 100%{opacity:var(--fa-beat-fade-opacity, 0.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%, 24%{transform:rotate(-18deg)}12%, 28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%, 100%{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scale(-1, 1)}.fa-flip-vertical{transform:scale(1, -1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1, -1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle, 0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0::before{content:"\30 "}.fa-1::before{content:"\31 "}.fa-2::before{content:"\32 "}.fa-3::before{content:"\33 "}.fa-4::before{content:"\34 "}.fa-5::before{content:"\35 "}.fa-6::before{content:"\36 "}.fa-7::before{content:"\37 "}.fa-8::before{content:"\38 "}.fa-9::before{content:"\39 "}.fa-fill-drip::before{content:""}.fa-arrows-to-circle::before{content:""}.fa-circle-chevron-right::before{content:""}.fa-chevron-circle-right::before{content:""}.fa-at::before{content:"\@"}.fa-trash-can::before{content:""}.fa-trash-alt::before{content:""}.fa-text-height::before{content:""}.fa-user-xmark::before{content:""}.fa-user-times::before{content:""}.fa-stethoscope::before{content:""}.fa-message::before{content:""}.fa-comment-alt::before{content:""}.fa-info::before{content:""}.fa-down-left-and-up-right-to-center::before{content:""}.fa-compress-alt::before{content:""}.fa-explosion::before{content:""}.fa-file-lines::before{content:""}.fa-file-alt::before{content:""}.fa-file-text::before{content:""}.fa-wave-square::before{content:""}.fa-ring::before{content:""}.fa-building-un::before{content:""}.fa-dice-three::before{content:""}.fa-calendar-days::before{content:""}.fa-calendar-alt::before{content:""}.fa-anchor-circle-check::before{content:""}.fa-building-circle-arrow-right::before{content:""}.fa-volleyball::before{content:""}.fa-volleyball-ball::before{content:""}.fa-arrows-up-to-line::before{content:""}.fa-sort-down::before{content:""}.fa-sort-desc::before{content:""}.fa-circle-minus::before{content:""}.fa-minus-circle::before{content:""}.fa-door-open::before{content:""}.fa-right-from-bracket::before{content:""}.fa-sign-out-alt::before{content:""}.fa-atom::before{content:""}.fa-soap::before{content:""}.fa-icons::before{content:""}.fa-heart-music-camera-bolt::before{content:""}.fa-microphone-lines-slash::before{content:""}.fa-microphone-alt-slash::before{content:""}.fa-bridge-circle-check::before{content:""}.fa-pump-medical::before{content:""}.fa-fingerprint::before{content:""}.fa-hand-point-right::before{content:""}.fa-magnifying-glass-location::before{content:""}.fa-search-location::before{content:""}.fa-forward-step::before{content:""}.fa-step-forward::before{content:""}.fa-face-smile-beam::before{content:""}.fa-smile-beam::before{content:""}.fa-flag-checkered::before{content:""}.fa-football::before{content:""}.fa-football-ball::before{content:""}.fa-school-circle-exclamation::before{content:""}.fa-crop::before{content:""}.fa-angles-down::before{content:""}.fa-angle-double-down::before{content:""}.fa-users-rectangle::before{content:""}.fa-people-roof::before{content:""}.fa-people-line::before{content:""}.fa-beer-mug-empty::before{content:""}.fa-beer::before{content:""}.fa-diagram-predecessor::before{content:""}.fa-arrow-up-long::before{content:""}.fa-long-arrow-up::before{content:""}.fa-fire-flame-simple::before{content:""}.fa-burn::before{content:""}.fa-person::before{content:""}.fa-male::before{content:""}.fa-laptop::before{content:""}.fa-file-csv::before{content:""}.fa-menorah::before{content:""}.fa-truck-plane::before{content:""}.fa-record-vinyl::before{content:""}.fa-face-grin-stars::before{content:""}.fa-grin-stars::before{content:""}.fa-bong::before{content:""}.fa-spaghetti-monster-flying::before{content:""}.fa-pastafarianism::before{content:""}.fa-arrow-down-up-across-line::before{content:""}.fa-spoon::before{content:""}.fa-utensil-spoon::before{content:""}.fa-jar-wheat::before{content:""}.fa-envelopes-bulk::before{content:""}.fa-mail-bulk::before{content:""}.fa-file-circle-exclamation::before{content:""}.fa-circle-h::before{content:""}.fa-hospital-symbol::before{content:""}.fa-pager::before{content:""}.fa-address-book::before{content:""}.fa-contact-book::before{content:""}.fa-strikethrough::before{content:""}.fa-k::before{content:"K"}.fa-landmark-flag::before{content:""}.fa-pencil::before{content:""}.fa-pencil-alt::before{content:""}.fa-backward::before{content:""}.fa-caret-right::before{content:""}.fa-comments::before{content:""}.fa-paste::before{content:""}.fa-file-clipboard::before{content:""}.fa-code-pull-request::before{content:""}.fa-clipboard-list::before{content:""}.fa-truck-ramp-box::before{content:""}.fa-truck-loading::before{content:""}.fa-user-check::before{content:""}.fa-vial-virus::before{content:""}.fa-sheet-plastic::before{content:""}.fa-blog::before{content:""}.fa-user-ninja::before{content:""}.fa-person-arrow-up-from-line::before{content:""}.fa-scroll-torah::before{content:""}.fa-torah::before{content:""}.fa-broom-ball::before{content:""}.fa-quidditch::before{content:""}.fa-quidditch-broom-ball::before{content:""}.fa-toggle-off::before{content:""}.fa-box-archive::before{content:""}.fa-archive::before{content:""}.fa-person-drowning::before{content:""}.fa-arrow-down-9-1::before{content:""}.fa-sort-numeric-desc::before{content:""}.fa-sort-numeric-down-alt::before{content:""}.fa-face-grin-tongue-squint::before{content:""}.fa-grin-tongue-squint::before{content:""}.fa-spray-can::before{content:""}.fa-truck-monster::before{content:""}.fa-w::before{content:"W"}.fa-earth-africa::before{content:""}.fa-globe-africa::before{content:""}.fa-rainbow::before{content:""}.fa-circle-notch::before{content:""}.fa-tablet-screen-button::before{content:""}.fa-tablet-alt::before{content:""}.fa-paw::before{content:""}.fa-cloud::before{content:""}.fa-trowel-bricks::before{content:""}.fa-face-flushed::before{content:""}.fa-flushed::before{content:""}.fa-hospital-user::before{content:""}.fa-tent-arrow-left-right::before{content:""}.fa-gavel::before{content:""}.fa-legal::before{content:""}.fa-binoculars::before{content:""}.fa-microphone-slash::before{content:""}.fa-box-tissue::before{content:""}.fa-motorcycle::before{content:""}.fa-bell-concierge::before{content:""}.fa-concierge-bell::before{content:""}.fa-pen-ruler::before{content:""}.fa-pencil-ruler::before{content:""}.fa-people-arrows::before{content:""}.fa-people-arrows-left-right::before{content:""}.fa-mars-and-venus-burst::before{content:""}.fa-square-caret-right::before{content:""}.fa-caret-square-right::before{content:""}.fa-scissors::before{content:""}.fa-cut::before{content:""}.fa-sun-plant-wilt::before{content:""}.fa-toilets-portable::before{content:""}.fa-hockey-puck::before{content:""}.fa-table::before{content:""}.fa-magnifying-glass-arrow-right::before{content:""}.fa-tachograph-digital::before{content:""}.fa-digital-tachograph::before{content:""}.fa-users-slash::before{content:""}.fa-clover::before{content:""}.fa-reply::before{content:""}.fa-mail-reply::before{content:""}.fa-star-and-crescent::before{content:""}.fa-house-fire::before{content:""}.fa-square-minus::before{content:""}.fa-minus-square::before{content:""}.fa-helicopter::before{content:""}.fa-compass::before{content:""}.fa-square-caret-down::before{content:""}.fa-caret-square-down::before{content:""}.fa-file-circle-question::before{content:""}.fa-laptop-code::before{content:""}.fa-swatchbook::before{content:""}.fa-prescription-bottle::before{content:""}.fa-bars::before{content:""}.fa-navicon::before{content:""}.fa-people-group::before{content:""}.fa-hourglass-end::before{content:""}.fa-hourglass-3::before{content:""}.fa-heart-crack::before{content:""}.fa-heart-broken::before{content:""}.fa-square-up-right::before{content:""}.fa-external-link-square-alt::before{content:""}.fa-face-kiss-beam::before{content:""}.fa-kiss-beam::before{content:""}.fa-film::before{content:""}.fa-ruler-horizontal::before{content:""}.fa-people-robbery::before{content:""}.fa-lightbulb::before{content:""}.fa-caret-left::before{content:""}.fa-circle-exclamation::before{content:""}.fa-exclamation-circle::before{content:""}.fa-school-circle-xmark::before{content:""}.fa-arrow-right-from-bracket::before{content:""}.fa-sign-out::before{content:""}.fa-circle-chevron-down::before{content:""}.fa-chevron-circle-down::before{content:""}.fa-unlock-keyhole::before{content:""}.fa-unlock-alt::before{content:""}.fa-cloud-showers-heavy::before{content:""}.fa-headphones-simple::before{content:""}.fa-headphones-alt::before{content:""}.fa-sitemap::before{content:""}.fa-circle-dollar-to-slot::before{content:""}.fa-donate::before{content:""}.fa-memory::before{content:""}.fa-road-spikes::before{content:""}.fa-fire-burner::before{content:""}.fa-flag::before{content:""}.fa-hanukiah::before{content:""}.fa-feather::before{content:""}.fa-volume-low::before{content:""}.fa-volume-down::before{content:""}.fa-comment-slash::before{content:""}.fa-cloud-sun-rain::before{content:""}.fa-compress::before{content:""}.fa-wheat-awn::before{content:""}.fa-wheat-alt::before{content:""}.fa-ankh::before{content:""}.fa-hands-holding-child::before{content:""}.fa-asterisk::before{content:"\*"}.fa-square-check::before{content:""}.fa-check-square::before{content:""}.fa-peseta-sign::before{content:""}.fa-heading::before{content:""}.fa-header::before{content:""}.fa-ghost::before{content:""}.fa-list::before{content:""}.fa-list-squares::before{content:""}.fa-square-phone-flip::before{content:""}.fa-phone-square-alt::before{content:""}.fa-cart-plus::before{content:""}.fa-gamepad::before{content:""}.fa-circle-dot::before{content:""}.fa-dot-circle::before{content:""}.fa-face-dizzy::before{content:""}.fa-dizzy::before{content:""}.fa-egg::before{content:""}.fa-house-medical-circle-xmark::before{content:""}.fa-campground::before{content:""}.fa-folder-plus::before{content:""}.fa-futbol::before{content:""}.fa-futbol-ball::before{content:""}.fa-soccer-ball::before{content:""}.fa-paintbrush::before{content:""}.fa-paint-brush::before{content:""}.fa-lock::before{content:""}.fa-gas-pump::before{content:""}.fa-hot-tub-person::before{content:""}.fa-hot-tub::before{content:""}.fa-map-location::before{content:""}.fa-map-marked::before{content:""}.fa-house-flood-water::before{content:""}.fa-tree::before{content:""}.fa-bridge-lock::before{content:""}.fa-sack-dollar::before{content:""}.fa-pen-to-square::before{content:""}.fa-edit::before{content:""}.fa-car-side::before{content:""}.fa-share-nodes::before{content:""}.fa-share-alt::before{content:""}.fa-heart-circle-minus::before{content:""}.fa-hourglass-half::before{content:""}.fa-hourglass-2::before{content:""}.fa-microscope::before{content:""}.fa-sink::before{content:""}.fa-bag-shopping::before{content:""}.fa-shopping-bag::before{content:""}.fa-arrow-down-z-a::before{content:""}.fa-sort-alpha-desc::before{content:""}.fa-sort-alpha-down-alt::before{content:""}.fa-mitten::before{content:""}.fa-person-rays::before{content:""}.fa-users::before{content:""}.fa-eye-slash::before{content:""}.fa-flask-vial::before{content:""}.fa-hand::before{content:""}.fa-hand-paper::before{content:""}.fa-om::before{content:""}.fa-worm::before{content:""}.fa-house-circle-xmark::before{content:""}.fa-plug::before{content:""}.fa-chevron-up::before{content:""}.fa-hand-spock::before{content:""}.fa-stopwatch::before{content:""}.fa-face-kiss::before{content:""}.fa-kiss::before{content:""}.fa-bridge-circle-xmark::before{content:""}.fa-face-grin-tongue::before{content:""}.fa-grin-tongue::before{content:""}.fa-chess-bishop::before{content:""}.fa-face-grin-wink::before{content:""}.fa-grin-wink::before{content:""}.fa-ear-deaf::before{content:""}.fa-deaf::before{content:""}.fa-deafness::before{content:""}.fa-hard-of-hearing::before{content:""}.fa-road-circle-check::before{content:""}.fa-dice-five::before{content:""}.fa-square-rss::before{content:""}.fa-rss-square::before{content:""}.fa-land-mine-on::before{content:""}.fa-i-cursor::before{content:""}.fa-stamp::before{content:""}.fa-stairs::before{content:""}.fa-i::before{content:"I"}.fa-hryvnia-sign::before{content:""}.fa-hryvnia::before{content:""}.fa-pills::before{content:""}.fa-face-grin-wide::before{content:""}.fa-grin-alt::before{content:""}.fa-tooth::before{content:""}.fa-v::before{content:"V"}.fa-bangladeshi-taka-sign::before{content:""}.fa-bicycle::before{content:""}.fa-staff-snake::before{content:""}.fa-rod-asclepius::before{content:""}.fa-rod-snake::before{content:""}.fa-staff-aesculapius::before{content:""}.fa-head-side-cough-slash::before{content:""}.fa-truck-medical::before{content:""}.fa-ambulance::before{content:""}.fa-wheat-awn-circle-exclamation::before{content:""}.fa-snowman::before{content:""}.fa-mortar-pestle::before{content:""}.fa-road-barrier::before{content:""}.fa-school::before{content:""}.fa-igloo::before{content:""}.fa-joint::before{content:""}.fa-angle-right::before{content:""}.fa-horse::before{content:""}.fa-q::before{content:"Q"}.fa-g::before{content:"G"}.fa-notes-medical::before{content:""}.fa-temperature-half::before{content:""}.fa-temperature-2::before{content:""}.fa-thermometer-2::before{content:""}.fa-thermometer-half::before{content:""}.fa-dong-sign::before{content:""}.fa-capsules::before{content:""}.fa-poo-storm::before{content:""}.fa-poo-bolt::before{content:""}.fa-face-frown-open::before{content:""}.fa-frown-open::before{content:""}.fa-hand-point-up::before{content:""}.fa-money-bill::before{content:""}.fa-bookmark::before{content:""}.fa-align-justify::before{content:""}.fa-umbrella-beach::before{content:""}.fa-helmet-un::before{content:""}.fa-bullseye::before{content:""}.fa-bacon::before{content:""}.fa-hand-point-down::before{content:""}.fa-arrow-up-from-bracket::before{content:""}.fa-folder::before{content:""}.fa-folder-blank::before{content:""}.fa-file-waveform::before{content:""}.fa-file-medical-alt::before{content:""}.fa-radiation::before{content:""}.fa-chart-simple::before{content:""}.fa-mars-stroke::before{content:""}.fa-vial::before{content:""}.fa-gauge::before{content:""}.fa-dashboard::before{content:""}.fa-gauge-med::before{content:""}.fa-tachometer-alt-average::before{content:""}.fa-wand-magic-sparkles::before{content:""}.fa-magic-wand-sparkles::before{content:""}.fa-e::before{content:"E"}.fa-pen-clip::before{content:""}.fa-pen-alt::before{content:""}.fa-bridge-circle-exclamation::before{content:""}.fa-user::before{content:""}.fa-school-circle-check::before{content:""}.fa-dumpster::before{content:""}.fa-van-shuttle::before{content:""}.fa-shuttle-van::before{content:""}.fa-building-user::before{content:""}.fa-square-caret-left::before{content:""}.fa-caret-square-left::before{content:""}.fa-highlighter::before{content:""}.fa-key::before{content:""}.fa-bullhorn::before{content:""}.fa-globe::before{content:""}.fa-synagogue::before{content:""}.fa-person-half-dress::before{content:""}.fa-road-bridge::before{content:""}.fa-location-arrow::before{content:""}.fa-c::before{content:"C"}.fa-tablet-button::before{content:""}.fa-building-lock::before{content:""}.fa-pizza-slice::before{content:""}.fa-money-bill-wave::before{content:""}.fa-chart-area::before{content:""}.fa-area-chart::before{content:""}.fa-house-flag::before{content:""}.fa-person-circle-minus::before{content:""}.fa-ban::before{content:""}.fa-cancel::before{content:""}.fa-camera-rotate::before{content:""}.fa-spray-can-sparkles::before{content:""}.fa-air-freshener::before{content:""}.fa-star::before{content:""}.fa-repeat::before{content:""}.fa-cross::before{content:""}.fa-box::before{content:""}.fa-venus-mars::before{content:""}.fa-arrow-pointer::before{content:""}.fa-mouse-pointer::before{content:""}.fa-maximize::before{content:""}.fa-expand-arrows-alt::before{content:""}.fa-charging-station::before{content:""}.fa-shapes::before{content:""}.fa-triangle-circle-square::before{content:""}.fa-shuffle::before{content:""}.fa-random::before{content:""}.fa-person-running::before{content:""}.fa-running::before{content:""}.fa-mobile-retro::before{content:""}.fa-grip-lines-vertical::before{content:""}.fa-spider::before{content:""}.fa-hands-bound::before{content:""}.fa-file-invoice-dollar::before{content:""}.fa-plane-circle-exclamation::before{content:""}.fa-x-ray::before{content:""}.fa-spell-check::before{content:""}.fa-slash::before{content:""}.fa-computer-mouse::before{content:""}.fa-mouse::before{content:""}.fa-arrow-right-to-bracket::before{content:""}.fa-sign-in::before{content:""}.fa-shop-slash::before{content:""}.fa-store-alt-slash::before{content:""}.fa-server::before{content:""}.fa-virus-covid-slash::before{content:""}.fa-shop-lock::before{content:""}.fa-hourglass-start::before{content:""}.fa-hourglass-1::before{content:""}.fa-blender-phone::before{content:""}.fa-building-wheat::before{content:""}.fa-person-breastfeeding::before{content:""}.fa-right-to-bracket::before{content:""}.fa-sign-in-alt::before{content:""}.fa-venus::before{content:""}.fa-passport::before{content:""}.fa-heart-pulse::before{content:""}.fa-heartbeat::before{content:""}.fa-people-carry-box::before{content:""}.fa-people-carry::before{content:""}.fa-temperature-high::before{content:""}.fa-microchip::before{content:""}.fa-crown::before{content:""}.fa-weight-hanging::before{content:""}.fa-xmarks-lines::before{content:""}.fa-file-prescription::before{content:""}.fa-weight-scale::before{content:""}.fa-weight::before{content:""}.fa-user-group::before{content:""}.fa-user-friends::before{content:""}.fa-arrow-up-a-z::before{content:""}.fa-sort-alpha-up::before{content:""}.fa-chess-knight::before{content:""}.fa-face-laugh-squint::before{content:""}.fa-laugh-squint::before{content:""}.fa-wheelchair::before{content:""}.fa-circle-arrow-up::before{content:""}.fa-arrow-circle-up::before{content:""}.fa-toggle-on::before{content:""}.fa-person-walking::before{content:""}.fa-walking::before{content:""}.fa-l::before{content:"L"}.fa-fire::before{content:""}.fa-bed-pulse::before{content:""}.fa-procedures::before{content:""}.fa-shuttle-space::before{content:""}.fa-space-shuttle::before{content:""}.fa-face-laugh::before{content:""}.fa-laugh::before{content:""}.fa-folder-open::before{content:""}.fa-heart-circle-plus::before{content:""}.fa-code-fork::before{content:""}.fa-city::before{content:""}.fa-microphone-lines::before{content:""}.fa-microphone-alt::before{content:""}.fa-pepper-hot::before{content:""}.fa-unlock::before{content:""}.fa-colon-sign::before{content:""}.fa-headset::before{content:""}.fa-store-slash::before{content:""}.fa-road-circle-xmark::before{content:""}.fa-user-minus::before{content:""}.fa-mars-stroke-up::before{content:""}.fa-mars-stroke-v::before{content:""}.fa-champagne-glasses::before{content:""}.fa-glass-cheers::before{content:""}.fa-clipboard::before{content:""}.fa-house-circle-exclamation::before{content:""}.fa-file-arrow-up::before{content:""}.fa-file-upload::before{content:""}.fa-wifi::before{content:""}.fa-wifi-3::before{content:""}.fa-wifi-strong::before{content:""}.fa-bath::before{content:""}.fa-bathtub::before{content:""}.fa-underline::before{content:""}.fa-user-pen::before{content:""}.fa-user-edit::before{content:""}.fa-signature::before{content:""}.fa-stroopwafel::before{content:""}.fa-bold::before{content:""}.fa-anchor-lock::before{content:""}.fa-building-ngo::before{content:""}.fa-manat-sign::before{content:""}.fa-not-equal::before{content:""}.fa-border-top-left::before{content:""}.fa-border-style::before{content:""}.fa-map-location-dot::before{content:""}.fa-map-marked-alt::before{content:""}.fa-jedi::before{content:""}.fa-square-poll-vertical::before{content:""}.fa-poll::before{content:""}.fa-mug-hot::before{content:""}.fa-car-battery::before{content:""}.fa-battery-car::before{content:""}.fa-gift::before{content:""}.fa-dice-two::before{content:""}.fa-chess-queen::before{content:""}.fa-glasses::before{content:""}.fa-chess-board::before{content:""}.fa-building-circle-check::before{content:""}.fa-person-chalkboard::before{content:""}.fa-mars-stroke-right::before{content:""}.fa-mars-stroke-h::before{content:""}.fa-hand-back-fist::before{content:""}.fa-hand-rock::before{content:""}.fa-square-caret-up::before{content:""}.fa-caret-square-up::before{content:""}.fa-cloud-showers-water::before{content:""}.fa-chart-bar::before{content:""}.fa-bar-chart::before{content:""}.fa-hands-bubbles::before{content:""}.fa-hands-wash::before{content:""}.fa-less-than-equal::before{content:""}.fa-train::before{content:""}.fa-eye-low-vision::before{content:""}.fa-low-vision::before{content:""}.fa-crow::before{content:""}.fa-sailboat::before{content:""}.fa-window-restore::before{content:""}.fa-square-plus::before{content:""}.fa-plus-square::before{content:""}.fa-torii-gate::before{content:""}.fa-frog::before{content:""}.fa-bucket::before{content:""}.fa-image::before{content:""}.fa-microphone::before{content:""}.fa-cow::before{content:""}.fa-caret-up::before{content:""}.fa-screwdriver::before{content:""}.fa-folder-closed::before{content:""}.fa-house-tsunami::before{content:""}.fa-square-nfi::before{content:""}.fa-arrow-up-from-ground-water::before{content:""}.fa-martini-glass::before{content:""}.fa-glass-martini-alt::before{content:""}.fa-rotate-left::before{content:""}.fa-rotate-back::before{content:""}.fa-rotate-backward::before{content:""}.fa-undo-alt::before{content:""}.fa-table-columns::before{content:""}.fa-columns::before{content:""}.fa-lemon::before{content:""}.fa-head-side-mask::before{content:""}.fa-handshake::before{content:""}.fa-gem::before{content:""}.fa-dolly::before{content:""}.fa-dolly-box::before{content:""}.fa-smoking::before{content:""}.fa-minimize::before{content:""}.fa-compress-arrows-alt::before{content:""}.fa-monument::before{content:""}.fa-snowplow::before{content:""}.fa-angles-right::before{content:""}.fa-angle-double-right::before{content:""}.fa-cannabis::before{content:""}.fa-circle-play::before{content:""}.fa-play-circle::before{content:""}.fa-tablets::before{content:""}.fa-ethernet::before{content:""}.fa-euro-sign::before{content:""}.fa-eur::before{content:""}.fa-euro::before{content:""}.fa-chair::before{content:""}.fa-circle-check::before{content:""}.fa-check-circle::before{content:""}.fa-circle-stop::before{content:""}.fa-stop-circle::before{content:""}.fa-compass-drafting::before{content:""}.fa-drafting-compass::before{content:""}.fa-plate-wheat::before{content:""}.fa-icicles::before{content:""}.fa-person-shelter::before{content:""}.fa-neuter::before{content:""}.fa-id-badge::before{content:""}.fa-marker::before{content:""}.fa-face-laugh-beam::before{content:""}.fa-laugh-beam::before{content:""}.fa-helicopter-symbol::before{content:""}.fa-universal-access::before{content:""}.fa-circle-chevron-up::before{content:""}.fa-chevron-circle-up::before{content:""}.fa-lari-sign::before{content:""}.fa-volcano::before{content:""}.fa-person-walking-dashed-line-arrow-right::before{content:""}.fa-sterling-sign::before{content:""}.fa-gbp::before{content:""}.fa-pound-sign::before{content:""}.fa-viruses::before{content:""}.fa-square-person-confined::before{content:""}.fa-user-tie::before{content:""}.fa-arrow-down-long::before{content:""}.fa-long-arrow-down::before{content:""}.fa-tent-arrow-down-to-line::before{content:""}.fa-certificate::before{content:""}.fa-reply-all::before{content:""}.fa-mail-reply-all::before{content:""}.fa-suitcase::before{content:""}.fa-person-skating::before{content:""}.fa-skating::before{content:""}.fa-filter-circle-dollar::before{content:""}.fa-funnel-dollar::before{content:""}.fa-camera-retro::before{content:""}.fa-circle-arrow-down::before{content:""}.fa-arrow-circle-down::before{content:""}.fa-file-import::before{content:""}.fa-arrow-right-to-file::before{content:""}.fa-square-arrow-up-right::before{content:""}.fa-external-link-square::before{content:""}.fa-box-open::before{content:""}.fa-scroll::before{content:""}.fa-spa::before{content:""}.fa-location-pin-lock::before{content:""}.fa-pause::before{content:""}.fa-hill-avalanche::before{content:""}.fa-temperature-empty::before{content:""}.fa-temperature-0::before{content:""}.fa-thermometer-0::before{content:""}.fa-thermometer-empty::before{content:""}.fa-bomb::before{content:""}.fa-registered::before{content:""}.fa-address-card::before{content:""}.fa-contact-card::before{content:""}.fa-vcard::before{content:""}.fa-scale-unbalanced-flip::before{content:""}.fa-balance-scale-right::before{content:""}.fa-subscript::before{content:""}.fa-diamond-turn-right::before{content:""}.fa-directions::before{content:""}.fa-burst::before{content:""}.fa-house-laptop::before{content:""}.fa-laptop-house::before{content:""}.fa-face-tired::before{content:""}.fa-tired::before{content:""}.fa-money-bills::before{content:""}.fa-smog::before{content:""}.fa-crutch::before{content:""}.fa-cloud-arrow-up::before{content:""}.fa-cloud-upload::before{content:""}.fa-cloud-upload-alt::before{content:""}.fa-palette::before{content:""}.fa-arrows-turn-right::before{content:""}.fa-vest::before{content:""}.fa-ferry::before{content:""}.fa-arrows-down-to-people::before{content:""}.fa-seedling::before{content:""}.fa-sprout::before{content:""}.fa-left-right::before{content:""}.fa-arrows-alt-h::before{content:""}.fa-boxes-packing::before{content:""}.fa-circle-arrow-left::before{content:""}.fa-arrow-circle-left::before{content:""}.fa-group-arrows-rotate::before{content:""}.fa-bowl-food::before{content:""}.fa-candy-cane::before{content:""}.fa-arrow-down-wide-short::before{content:""}.fa-sort-amount-asc::before{content:""}.fa-sort-amount-down::before{content:""}.fa-cloud-bolt::before{content:""}.fa-thunderstorm::before{content:""}.fa-text-slash::before{content:""}.fa-remove-format::before{content:""}.fa-face-smile-wink::before{content:""}.fa-smile-wink::before{content:""}.fa-file-word::before{content:""}.fa-file-powerpoint::before{content:""}.fa-arrows-left-right::before{content:""}.fa-arrows-h::before{content:""}.fa-house-lock::before{content:""}.fa-cloud-arrow-down::before{content:""}.fa-cloud-download::before{content:""}.fa-cloud-download-alt::before{content:""}.fa-children::before{content:""}.fa-chalkboard::before{content:""}.fa-blackboard::before{content:""}.fa-user-large-slash::before{content:""}.fa-user-alt-slash::before{content:""}.fa-envelope-open::before{content:""}.fa-handshake-simple-slash::before{content:""}.fa-handshake-alt-slash::before{content:""}.fa-mattress-pillow::before{content:""}.fa-guarani-sign::before{content:""}.fa-arrows-rotate::before{content:""}.fa-refresh::before{content:""}.fa-sync::before{content:""}.fa-fire-extinguisher::before{content:""}.fa-cruzeiro-sign::before{content:""}.fa-greater-than-equal::before{content:""}.fa-shield-halved::before{content:""}.fa-shield-alt::before{content:""}.fa-book-atlas::before{content:""}.fa-atlas::before{content:""}.fa-virus::before{content:""}.fa-envelope-circle-check::before{content:""}.fa-layer-group::before{content:""}.fa-arrows-to-dot::before{content:""}.fa-archway::before{content:""}.fa-heart-circle-check::before{content:""}.fa-house-chimney-crack::before{content:""}.fa-house-damage::before{content:""}.fa-file-zipper::before{content:""}.fa-file-archive::before{content:""}.fa-square::before{content:""}.fa-martini-glass-empty::before{content:""}.fa-glass-martini::before{content:""}.fa-couch::before{content:""}.fa-cedi-sign::before{content:""}.fa-italic::before{content:""}.fa-table-cells-column-lock::before{content:""}.fa-church::before{content:""}.fa-comments-dollar::before{content:""}.fa-democrat::before{content:""}.fa-z::before{content:"Z"}.fa-person-skiing::before{content:""}.fa-skiing::before{content:""}.fa-road-lock::before{content:""}.fa-a::before{content:"A"}.fa-temperature-arrow-down::before{content:""}.fa-temperature-down::before{content:""}.fa-feather-pointed::before{content:""}.fa-feather-alt::before{content:""}.fa-p::before{content:"P"}.fa-snowflake::before{content:""}.fa-newspaper::before{content:""}.fa-rectangle-ad::before{content:""}.fa-ad::before{content:""}.fa-circle-arrow-right::before{content:""}.fa-arrow-circle-right::before{content:""}.fa-filter-circle-xmark::before{content:""}.fa-locust::before{content:""}.fa-sort::before{content:""}.fa-unsorted::before{content:""}.fa-list-ol::before{content:""}.fa-list-1-2::before{content:""}.fa-list-numeric::before{content:""}.fa-person-dress-burst::before{content:""}.fa-money-check-dollar::before{content:""}.fa-money-check-alt::before{content:""}.fa-vector-square::before{content:""}.fa-bread-slice::before{content:""}.fa-language::before{content:""}.fa-face-kiss-wink-heart::before{content:""}.fa-kiss-wink-heart::before{content:""}.fa-filter::before{content:""}.fa-question::before{content:"\?"}.fa-file-signature::before{content:""}.fa-up-down-left-right::before{content:""}.fa-arrows-alt::before{content:""}.fa-house-chimney-user::before{content:""}.fa-hand-holding-heart::before{content:""}.fa-puzzle-piece::before{content:""}.fa-money-check::before{content:""}.fa-star-half-stroke::before{content:""}.fa-star-half-alt::before{content:""}.fa-code::before{content:""}.fa-whiskey-glass::before{content:""}.fa-glass-whiskey::before{content:""}.fa-building-circle-exclamation::before{content:""}.fa-magnifying-glass-chart::before{content:""}.fa-arrow-up-right-from-square::before{content:""}.fa-external-link::before{content:""}.fa-cubes-stacked::before{content:""}.fa-won-sign::before{content:""}.fa-krw::before{content:""}.fa-won::before{content:""}.fa-virus-covid::before{content:""}.fa-austral-sign::before{content:""}.fa-f::before{content:"F"}.fa-leaf::before{content:""}.fa-road::before{content:""}.fa-taxi::before{content:""}.fa-cab::before{content:""}.fa-person-circle-plus::before{content:""}.fa-chart-pie::before{content:""}.fa-pie-chart::before{content:""}.fa-bolt-lightning::before{content:""}.fa-sack-xmark::before{content:""}.fa-file-excel::before{content:""}.fa-file-contract::before{content:""}.fa-fish-fins::before{content:""}.fa-building-flag::before{content:""}.fa-face-grin-beam::before{content:""}.fa-grin-beam::before{content:""}.fa-object-ungroup::before{content:""}.fa-poop::before{content:""}.fa-location-pin::before{content:""}.fa-map-marker::before{content:""}.fa-kaaba::before{content:""}.fa-toilet-paper::before{content:""}.fa-helmet-safety::before{content:""}.fa-hard-hat::before{content:""}.fa-hat-hard::before{content:""}.fa-eject::before{content:""}.fa-circle-right::before{content:""}.fa-arrow-alt-circle-right::before{content:""}.fa-plane-circle-check::before{content:""}.fa-face-rolling-eyes::before{content:""}.fa-meh-rolling-eyes::before{content:""}.fa-object-group::before{content:""}.fa-chart-line::before{content:""}.fa-line-chart::before{content:""}.fa-mask-ventilator::before{content:""}.fa-arrow-right::before{content:""}.fa-signs-post::before{content:""}.fa-map-signs::before{content:""}.fa-cash-register::before{content:""}.fa-person-circle-question::before{content:""}.fa-h::before{content:"H"}.fa-tarp::before{content:""}.fa-screwdriver-wrench::before{content:""}.fa-tools::before{content:""}.fa-arrows-to-eye::before{content:""}.fa-plug-circle-bolt::before{content:""}.fa-heart::before{content:""}.fa-mars-and-venus::before{content:""}.fa-house-user::before{content:""}.fa-home-user::before{content:""}.fa-dumpster-fire::before{content:""}.fa-house-crack::before{content:""}.fa-martini-glass-citrus::before{content:""}.fa-cocktail::before{content:""}.fa-face-surprise::before{content:""}.fa-surprise::before{content:""}.fa-bottle-water::before{content:""}.fa-circle-pause::before{content:""}.fa-pause-circle::before{content:""}.fa-toilet-paper-slash::before{content:""}.fa-apple-whole::before{content:""}.fa-apple-alt::before{content:""}.fa-kitchen-set::before{content:""}.fa-r::before{content:"R"}.fa-temperature-quarter::before{content:""}.fa-temperature-1::before{content:""}.fa-thermometer-1::before{content:""}.fa-thermometer-quarter::before{content:""}.fa-cube::before{content:""}.fa-bitcoin-sign::before{content:""}.fa-shield-dog::before{content:""}.fa-solar-panel::before{content:""}.fa-lock-open::before{content:""}.fa-elevator::before{content:""}.fa-money-bill-transfer::before{content:""}.fa-money-bill-trend-up::before{content:""}.fa-house-flood-water-circle-arrow-right::before{content:""}.fa-square-poll-horizontal::before{content:""}.fa-poll-h::before{content:""}.fa-circle::before{content:""}.fa-backward-fast::before{content:""}.fa-fast-backward::before{content:""}.fa-recycle::before{content:""}.fa-user-astronaut::before{content:""}.fa-plane-slash::before{content:""}.fa-trademark::before{content:""}.fa-basketball::before{content:""}.fa-basketball-ball::before{content:""}.fa-satellite-dish::before{content:""}.fa-circle-up::before{content:""}.fa-arrow-alt-circle-up::before{content:""}.fa-mobile-screen-button::before{content:""}.fa-mobile-alt::before{content:""}.fa-volume-high::before{content:""}.fa-volume-up::before{content:""}.fa-users-rays::before{content:""}.fa-wallet::before{content:""}.fa-clipboard-check::before{content:""}.fa-file-audio::before{content:""}.fa-burger::before{content:""}.fa-hamburger::before{content:""}.fa-wrench::before{content:""}.fa-bugs::before{content:""}.fa-rupee-sign::before{content:""}.fa-rupee::before{content:""}.fa-file-image::before{content:""}.fa-circle-question::before{content:""}.fa-question-circle::before{content:""}.fa-plane-departure::before{content:""}.fa-handshake-slash::before{content:""}.fa-book-bookmark::before{content:""}.fa-code-branch::before{content:""}.fa-hat-cowboy::before{content:""}.fa-bridge::before{content:""}.fa-phone-flip::before{content:""}.fa-phone-alt::before{content:""}.fa-truck-front::before{content:""}.fa-cat::before{content:""}.fa-anchor-circle-exclamation::before{content:""}.fa-truck-field::before{content:""}.fa-route::before{content:""}.fa-clipboard-question::before{content:""}.fa-panorama::before{content:""}.fa-comment-medical::before{content:""}.fa-teeth-open::before{content:""}.fa-file-circle-minus::before{content:""}.fa-tags::before{content:""}.fa-wine-glass::before{content:""}.fa-forward-fast::before{content:""}.fa-fast-forward::before{content:""}.fa-face-meh-blank::before{content:""}.fa-meh-blank::before{content:""}.fa-square-parking::before{content:""}.fa-parking::before{content:""}.fa-house-signal::before{content:""}.fa-bars-progress::before{content:""}.fa-tasks-alt::before{content:""}.fa-faucet-drip::before{content:""}.fa-cart-flatbed::before{content:""}.fa-dolly-flatbed::before{content:""}.fa-ban-smoking::before{content:""}.fa-smoking-ban::before{content:""}.fa-terminal::before{content:""}.fa-mobile-button::before{content:""}.fa-house-medical-flag::before{content:""}.fa-basket-shopping::before{content:""}.fa-shopping-basket::before{content:""}.fa-tape::before{content:""}.fa-bus-simple::before{content:""}.fa-bus-alt::before{content:""}.fa-eye::before{content:""}.fa-face-sad-cry::before{content:""}.fa-sad-cry::before{content:""}.fa-audio-description::before{content:""}.fa-person-military-to-person::before{content:""}.fa-file-shield::before{content:""}.fa-user-slash::before{content:""}.fa-pen::before{content:""}.fa-tower-observation::before{content:""}.fa-file-code::before{content:""}.fa-signal::before{content:""}.fa-signal-5::before{content:""}.fa-signal-perfect::before{content:""}.fa-bus::before{content:""}.fa-heart-circle-xmark::before{content:""}.fa-house-chimney::before{content:""}.fa-home-lg::before{content:""}.fa-window-maximize::before{content:""}.fa-face-frown::before{content:""}.fa-frown::before{content:""}.fa-prescription::before{content:""}.fa-shop::before{content:""}.fa-store-alt::before{content:""}.fa-floppy-disk::before{content:""}.fa-save::before{content:""}.fa-vihara::before{content:""}.fa-scale-unbalanced::before{content:""}.fa-balance-scale-left::before{content:""}.fa-sort-up::before{content:""}.fa-sort-asc::before{content:""}.fa-comment-dots::before{content:""}.fa-commenting::before{content:""}.fa-plant-wilt::before{content:""}.fa-diamond::before{content:""}.fa-face-grin-squint::before{content:""}.fa-grin-squint::before{content:""}.fa-hand-holding-dollar::before{content:""}.fa-hand-holding-usd::before{content:""}.fa-bacterium::before{content:""}.fa-hand-pointer::before{content:""}.fa-drum-steelpan::before{content:""}.fa-hand-scissors::before{content:""}.fa-hands-praying::before{content:""}.fa-praying-hands::before{content:""}.fa-arrow-rotate-right::before{content:""}.fa-arrow-right-rotate::before{content:""}.fa-arrow-rotate-forward::before{content:""}.fa-redo::before{content:""}.fa-biohazard::before{content:""}.fa-location-crosshairs::before{content:""}.fa-location::before{content:""}.fa-mars-double::before{content:""}.fa-child-dress::before{content:""}.fa-users-between-lines::before{content:""}.fa-lungs-virus::before{content:""}.fa-face-grin-tears::before{content:""}.fa-grin-tears::before{content:""}.fa-phone::before{content:""}.fa-calendar-xmark::before{content:""}.fa-calendar-times::before{content:""}.fa-child-reaching::before{content:""}.fa-head-side-virus::before{content:""}.fa-user-gear::before{content:""}.fa-user-cog::before{content:""}.fa-arrow-up-1-9::before{content:""}.fa-sort-numeric-up::before{content:""}.fa-door-closed::before{content:""}.fa-shield-virus::before{content:""}.fa-dice-six::before{content:""}.fa-mosquito-net::before{content:""}.fa-bridge-water::before{content:""}.fa-person-booth::before{content:""}.fa-text-width::before{content:""}.fa-hat-wizard::before{content:""}.fa-pen-fancy::before{content:""}.fa-person-digging::before{content:""}.fa-digging::before{content:""}.fa-trash::before{content:""}.fa-gauge-simple::before{content:""}.fa-gauge-simple-med::before{content:""}.fa-tachometer-average::before{content:""}.fa-book-medical::before{content:""}.fa-poo::before{content:""}.fa-quote-right::before{content:""}.fa-quote-right-alt::before{content:""}.fa-shirt::before{content:""}.fa-t-shirt::before{content:""}.fa-tshirt::before{content:""}.fa-cubes::before{content:""}.fa-divide::before{content:""}.fa-tenge-sign::before{content:""}.fa-tenge::before{content:""}.fa-headphones::before{content:""}.fa-hands-holding::before{content:""}.fa-hands-clapping::before{content:""}.fa-republican::before{content:""}.fa-arrow-left::before{content:""}.fa-person-circle-xmark::before{content:""}.fa-ruler::before{content:""}.fa-align-left::before{content:""}.fa-dice-d6::before{content:""}.fa-restroom::before{content:""}.fa-j::before{content:"J"}.fa-users-viewfinder::before{content:""}.fa-file-video::before{content:""}.fa-up-right-from-square::before{content:""}.fa-external-link-alt::before{content:""}.fa-table-cells::before{content:""}.fa-th::before{content:""}.fa-file-pdf::before{content:""}.fa-book-bible::before{content:""}.fa-bible::before{content:""}.fa-o::before{content:"O"}.fa-suitcase-medical::before{content:""}.fa-medkit::before{content:""}.fa-user-secret::before{content:""}.fa-otter::before{content:""}.fa-person-dress::before{content:""}.fa-female::before{content:""}.fa-comment-dollar::before{content:""}.fa-business-time::before{content:""}.fa-briefcase-clock::before{content:""}.fa-table-cells-large::before{content:""}.fa-th-large::before{content:""}.fa-book-tanakh::before{content:""}.fa-tanakh::before{content:""}.fa-phone-volume::before{content:""}.fa-volume-control-phone::before{content:""}.fa-hat-cowboy-side::before{content:""}.fa-clipboard-user::before{content:""}.fa-child::before{content:""}.fa-lira-sign::before{content:""}.fa-satellite::before{content:""}.fa-plane-lock::before{content:""}.fa-tag::before{content:""}.fa-comment::before{content:""}.fa-cake-candles::before{content:""}.fa-birthday-cake::before{content:""}.fa-cake::before{content:""}.fa-envelope::before{content:""}.fa-angles-up::before{content:""}.fa-angle-double-up::before{content:""}.fa-paperclip::before{content:""}.fa-arrow-right-to-city::before{content:""}.fa-ribbon::before{content:""}.fa-lungs::before{content:""}.fa-arrow-up-9-1::before{content:""}.fa-sort-numeric-up-alt::before{content:""}.fa-litecoin-sign::before{content:""}.fa-border-none::before{content:""}.fa-circle-nodes::before{content:""}.fa-parachute-box::before{content:""}.fa-indent::before{content:""}.fa-truck-field-un::before{content:""}.fa-hourglass::before{content:""}.fa-hourglass-empty::before{content:""}.fa-mountain::before{content:""}.fa-user-doctor::before{content:""}.fa-user-md::before{content:""}.fa-circle-info::before{content:""}.fa-info-circle::before{content:""}.fa-cloud-meatball::before{content:""}.fa-camera::before{content:""}.fa-camera-alt::before{content:""}.fa-square-virus::before{content:""}.fa-meteor::before{content:""}.fa-car-on::before{content:""}.fa-sleigh::before{content:""}.fa-arrow-down-1-9::before{content:""}.fa-sort-numeric-asc::before{content:""}.fa-sort-numeric-down::before{content:""}.fa-hand-holding-droplet::before{content:""}.fa-hand-holding-water::before{content:""}.fa-water::before{content:""}.fa-calendar-check::before{content:""}.fa-braille::before{content:""}.fa-prescription-bottle-medical::before{content:""}.fa-prescription-bottle-alt::before{content:""}.fa-landmark::before{content:""}.fa-truck::before{content:""}.fa-crosshairs::before{content:""}.fa-person-cane::before{content:""}.fa-tent::before{content:""}.fa-vest-patches::before{content:""}.fa-check-double::before{content:""}.fa-arrow-down-a-z::before{content:""}.fa-sort-alpha-asc::before{content:""}.fa-sort-alpha-down::before{content:""}.fa-money-bill-wheat::before{content:""}.fa-cookie::before{content:""}.fa-arrow-rotate-left::before{content:""}.fa-arrow-left-rotate::before{content:""}.fa-arrow-rotate-back::before{content:""}.fa-arrow-rotate-backward::before{content:""}.fa-undo::before{content:""}.fa-hard-drive::before{content:""}.fa-hdd::before{content:""}.fa-face-grin-squint-tears::before{content:""}.fa-grin-squint-tears::before{content:""}.fa-dumbbell::before{content:""}.fa-rectangle-list::before{content:""}.fa-list-alt::before{content:""}.fa-tarp-droplet::before{content:""}.fa-house-medical-circle-check::before{content:""}.fa-person-skiing-nordic::before{content:""}.fa-skiing-nordic::before{content:""}.fa-calendar-plus::before{content:""}.fa-plane-arrival::before{content:""}.fa-circle-left::before{content:""}.fa-arrow-alt-circle-left::before{content:""}.fa-train-subway::before{content:""}.fa-subway::before{content:""}.fa-chart-gantt::before{content:""}.fa-indian-rupee-sign::before{content:""}.fa-indian-rupee::before{content:""}.fa-inr::before{content:""}.fa-crop-simple::before{content:""}.fa-crop-alt::before{content:""}.fa-money-bill-1::before{content:""}.fa-money-bill-alt::before{content:""}.fa-left-long::before{content:""}.fa-long-arrow-alt-left::before{content:""}.fa-dna::before{content:""}.fa-virus-slash::before{content:""}.fa-minus::before{content:""}.fa-subtract::before{content:""}.fa-chess::before{content:""}.fa-arrow-left-long::before{content:""}.fa-long-arrow-left::before{content:""}.fa-plug-circle-check::before{content:""}.fa-street-view::before{content:""}.fa-franc-sign::before{content:""}.fa-volume-off::before{content:""}.fa-hands-asl-interpreting::before{content:""}.fa-american-sign-language-interpreting::before{content:""}.fa-asl-interpreting::before{content:""}.fa-hands-american-sign-language-interpreting::before{content:""}.fa-gear::before{content:""}.fa-cog::before{content:""}.fa-droplet-slash::before{content:""}.fa-tint-slash::before{content:""}.fa-mosque::before{content:""}.fa-mosquito::before{content:""}.fa-star-of-david::before{content:""}.fa-person-military-rifle::before{content:""}.fa-cart-shopping::before{content:""}.fa-shopping-cart::before{content:""}.fa-vials::before{content:""}.fa-plug-circle-plus::before{content:""}.fa-place-of-worship::before{content:""}.fa-grip-vertical::before{content:""}.fa-arrow-turn-up::before{content:""}.fa-level-up::before{content:""}.fa-u::before{content:"U"}.fa-square-root-variable::before{content:""}.fa-square-root-alt::before{content:""}.fa-clock::before{content:""}.fa-clock-four::before{content:""}.fa-backward-step::before{content:""}.fa-step-backward::before{content:""}.fa-pallet::before{content:""}.fa-faucet::before{content:""}.fa-baseball-bat-ball::before{content:""}.fa-s::before{content:"S"}.fa-timeline::before{content:""}.fa-keyboard::before{content:""}.fa-caret-down::before{content:""}.fa-house-chimney-medical::before{content:""}.fa-clinic-medical::before{content:""}.fa-temperature-three-quarters::before{content:""}.fa-temperature-3::before{content:""}.fa-thermometer-3::before{content:""}.fa-thermometer-three-quarters::before{content:""}.fa-mobile-screen::before{content:""}.fa-mobile-android-alt::before{content:""}.fa-plane-up::before{content:""}.fa-piggy-bank::before{content:""}.fa-battery-half::before{content:""}.fa-battery-3::before{content:""}.fa-mountain-city::before{content:""}.fa-coins::before{content:""}.fa-khanda::before{content:""}.fa-sliders::before{content:""}.fa-sliders-h::before{content:""}.fa-folder-tree::before{content:""}.fa-network-wired::before{content:""}.fa-map-pin::before{content:""}.fa-hamsa::before{content:""}.fa-cent-sign::before{content:""}.fa-flask::before{content:""}.fa-person-pregnant::before{content:""}.fa-wand-sparkles::before{content:""}.fa-ellipsis-vertical::before{content:""}.fa-ellipsis-v::before{content:""}.fa-ticket::before{content:""}.fa-power-off::before{content:""}.fa-right-long::before{content:""}.fa-long-arrow-alt-right::before{content:""}.fa-flag-usa::before{content:""}.fa-laptop-file::before{content:""}.fa-tty::before{content:""}.fa-teletype::before{content:""}.fa-diagram-next::before{content:""}.fa-person-rifle::before{content:""}.fa-house-medical-circle-exclamation::before{content:""}.fa-closed-captioning::before{content:""}.fa-person-hiking::before{content:""}.fa-hiking::before{content:""}.fa-venus-double::before{content:""}.fa-images::before{content:""}.fa-calculator::before{content:""}.fa-people-pulling::before{content:""}.fa-n::before{content:"N"}.fa-cable-car::before{content:""}.fa-tram::before{content:""}.fa-cloud-rain::before{content:""}.fa-building-circle-xmark::before{content:""}.fa-ship::before{content:""}.fa-arrows-down-to-line::before{content:""}.fa-download::before{content:""}.fa-face-grin::before{content:""}.fa-grin::before{content:""}.fa-delete-left::before{content:""}.fa-backspace::before{content:""}.fa-eye-dropper::before{content:""}.fa-eye-dropper-empty::before{content:""}.fa-eyedropper::before{content:""}.fa-file-circle-check::before{content:""}.fa-forward::before{content:""}.fa-mobile::before{content:""}.fa-mobile-android::before{content:""}.fa-mobile-phone::before{content:""}.fa-face-meh::before{content:""}.fa-meh::before{content:""}.fa-align-center::before{content:""}.fa-book-skull::before{content:""}.fa-book-dead::before{content:""}.fa-id-card::before{content:""}.fa-drivers-license::before{content:""}.fa-outdent::before{content:""}.fa-dedent::before{content:""}.fa-heart-circle-exclamation::before{content:""}.fa-house::before{content:""}.fa-home::before{content:""}.fa-home-alt::before{content:""}.fa-home-lg-alt::before{content:""}.fa-calendar-week::before{content:""}.fa-laptop-medical::before{content:""}.fa-b::before{content:"B"}.fa-file-medical::before{content:""}.fa-dice-one::before{content:""}.fa-kiwi-bird::before{content:""}.fa-arrow-right-arrow-left::before{content:""}.fa-exchange::before{content:""}.fa-rotate-right::before{content:""}.fa-redo-alt::before{content:""}.fa-rotate-forward::before{content:""}.fa-utensils::before{content:""}.fa-cutlery::before{content:""}.fa-arrow-up-wide-short::before{content:""}.fa-sort-amount-up::before{content:""}.fa-mill-sign::before{content:""}.fa-bowl-rice::before{content:""}.fa-skull::before{content:""}.fa-tower-broadcast::before{content:""}.fa-broadcast-tower::before{content:""}.fa-truck-pickup::before{content:""}.fa-up-long::before{content:""}.fa-long-arrow-alt-up::before{content:""}.fa-stop::before{content:""}.fa-code-merge::before{content:""}.fa-upload::before{content:""}.fa-hurricane::before{content:""}.fa-mound::before{content:""}.fa-toilet-portable::before{content:""}.fa-compact-disc::before{content:""}.fa-file-arrow-down::before{content:""}.fa-file-download::before{content:""}.fa-caravan::before{content:""}.fa-shield-cat::before{content:""}.fa-bolt::before{content:""}.fa-zap::before{content:""}.fa-glass-water::before{content:""}.fa-oil-well::before{content:""}.fa-vault::before{content:""}.fa-mars::before{content:""}.fa-toilet::before{content:""}.fa-plane-circle-xmark::before{content:""}.fa-yen-sign::before{content:""}.fa-cny::before{content:""}.fa-jpy::before{content:""}.fa-rmb::before{content:""}.fa-yen::before{content:""}.fa-ruble-sign::before{content:""}.fa-rouble::before{content:""}.fa-rub::before{content:""}.fa-ruble::before{content:""}.fa-sun::before{content:""}.fa-guitar::before{content:""}.fa-face-laugh-wink::before{content:""}.fa-laugh-wink::before{content:""}.fa-horse-head::before{content:""}.fa-bore-hole::before{content:""}.fa-industry::before{content:""}.fa-circle-down::before{content:""}.fa-arrow-alt-circle-down::before{content:""}.fa-arrows-turn-to-dots::before{content:""}.fa-florin-sign::before{content:""}.fa-arrow-down-short-wide::before{content:""}.fa-sort-amount-desc::before{content:""}.fa-sort-amount-down-alt::before{content:""}.fa-less-than::before{content:"\<"}.fa-angle-down::before{content:""}.fa-car-tunnel::before{content:""}.fa-head-side-cough::before{content:""}.fa-grip-lines::before{content:""}.fa-thumbs-down::before{content:""}.fa-user-lock::before{content:""}.fa-arrow-right-long::before{content:""}.fa-long-arrow-right::before{content:""}.fa-anchor-circle-xmark::before{content:""}.fa-ellipsis::before{content:""}.fa-ellipsis-h::before{content:""}.fa-chess-pawn::before{content:""}.fa-kit-medical::before{content:""}.fa-first-aid::before{content:""}.fa-person-through-window::before{content:""}.fa-toolbox::before{content:""}.fa-hands-holding-circle::before{content:""}.fa-bug::before{content:""}.fa-credit-card::before{content:""}.fa-credit-card-alt::before{content:""}.fa-car::before{content:""}.fa-automobile::before{content:""}.fa-hand-holding-hand::before{content:""}.fa-book-open-reader::before{content:""}.fa-book-reader::before{content:""}.fa-mountain-sun::before{content:""}.fa-arrows-left-right-to-line::before{content:""}.fa-dice-d20::before{content:""}.fa-truck-droplet::before{content:""}.fa-file-circle-xmark::before{content:""}.fa-temperature-arrow-up::before{content:""}.fa-temperature-up::before{content:""}.fa-medal::before{content:""}.fa-bed::before{content:""}.fa-square-h::before{content:""}.fa-h-square::before{content:""}.fa-podcast::before{content:""}.fa-temperature-full::before{content:""}.fa-temperature-4::before{content:""}.fa-thermometer-4::before{content:""}.fa-thermometer-full::before{content:""}.fa-bell::before{content:""}.fa-superscript::before{content:""}.fa-plug-circle-xmark::before{content:""}.fa-star-of-life::before{content:""}.fa-phone-slash::before{content:""}.fa-paint-roller::before{content:""}.fa-handshake-angle::before{content:""}.fa-hands-helping::before{content:""}.fa-location-dot::before{content:""}.fa-map-marker-alt::before{content:""}.fa-file::before{content:""}.fa-greater-than::before{content:"\>"}.fa-person-swimming::before{content:""}.fa-swimmer::before{content:""}.fa-arrow-down::before{content:""}.fa-droplet::before{content:""}.fa-tint::before{content:""}.fa-eraser::before{content:""}.fa-earth-americas::before{content:""}.fa-earth::before{content:""}.fa-earth-america::before{content:""}.fa-globe-americas::before{content:""}.fa-person-burst::before{content:""}.fa-dove::before{content:""}.fa-battery-empty::before{content:""}.fa-battery-0::before{content:""}.fa-socks::before{content:""}.fa-inbox::before{content:""}.fa-section::before{content:""}.fa-gauge-high::before{content:""}.fa-tachometer-alt::before{content:""}.fa-tachometer-alt-fast::before{content:""}.fa-envelope-open-text::before{content:""}.fa-hospital::before{content:""}.fa-hospital-alt::before{content:""}.fa-hospital-wide::before{content:""}.fa-wine-bottle::before{content:""}.fa-chess-rook::before{content:""}.fa-bars-staggered::before{content:""}.fa-reorder::before{content:""}.fa-stream::before{content:""}.fa-dharmachakra::before{content:""}.fa-hotdog::before{content:""}.fa-person-walking-with-cane::before{content:""}.fa-blind::before{content:""}.fa-drum::before{content:""}.fa-ice-cream::before{content:""}.fa-heart-circle-bolt::before{content:""}.fa-fax::before{content:""}.fa-paragraph::before{content:""}.fa-check-to-slot::before{content:""}.fa-vote-yea::before{content:""}.fa-star-half::before{content:""}.fa-boxes-stacked::before{content:""}.fa-boxes::before{content:""}.fa-boxes-alt::before{content:""}.fa-link::before{content:""}.fa-chain::before{content:""}.fa-ear-listen::before{content:""}.fa-assistive-listening-systems::before{content:""}.fa-tree-city::before{content:""}.fa-play::before{content:""}.fa-font::before{content:""}.fa-table-cells-row-lock::before{content:""}.fa-rupiah-sign::before{content:""}.fa-magnifying-glass::before{content:""}.fa-search::before{content:""}.fa-table-tennis-paddle-ball::before{content:""}.fa-ping-pong-paddle-ball::before{content:""}.fa-table-tennis::before{content:""}.fa-person-dots-from-line::before{content:""}.fa-diagnoses::before{content:""}.fa-trash-can-arrow-up::before{content:""}.fa-trash-restore-alt::before{content:""}.fa-naira-sign::before{content:""}.fa-cart-arrow-down::before{content:""}.fa-walkie-talkie::before{content:""}.fa-file-pen::before{content:""}.fa-file-edit::before{content:""}.fa-receipt::before{content:""}.fa-square-pen::before{content:""}.fa-pen-square::before{content:""}.fa-pencil-square::before{content:""}.fa-suitcase-rolling::before{content:""}.fa-person-circle-exclamation::before{content:""}.fa-chevron-down::before{content:""}.fa-battery-full::before{content:""}.fa-battery::before{content:""}.fa-battery-5::before{content:""}.fa-skull-crossbones::before{content:""}.fa-code-compare::before{content:""}.fa-list-ul::before{content:""}.fa-list-dots::before{content:""}.fa-school-lock::before{content:""}.fa-tower-cell::before{content:""}.fa-down-long::before{content:""}.fa-long-arrow-alt-down::before{content:""}.fa-ranking-star::before{content:""}.fa-chess-king::before{content:""}.fa-person-harassing::before{content:""}.fa-brazilian-real-sign::before{content:""}.fa-landmark-dome::before{content:""}.fa-landmark-alt::before{content:""}.fa-arrow-up::before{content:""}.fa-tv::before{content:""}.fa-television::before{content:""}.fa-tv-alt::before{content:""}.fa-shrimp::before{content:""}.fa-list-check::before{content:""}.fa-tasks::before{content:""}.fa-jug-detergent::before{content:""}.fa-circle-user::before{content:""}.fa-user-circle::before{content:""}.fa-user-shield::before{content:""}.fa-wind::before{content:""}.fa-car-burst::before{content:""}.fa-car-crash::before{content:""}.fa-y::before{content:"Y"}.fa-person-snowboarding::before{content:""}.fa-snowboarding::before{content:""}.fa-truck-fast::before{content:""}.fa-shipping-fast::before{content:""}.fa-fish::before{content:""}.fa-user-graduate::before{content:""}.fa-circle-half-stroke::before{content:""}.fa-adjust::before{content:""}.fa-clapperboard::before{content:""}.fa-circle-radiation::before{content:""}.fa-radiation-alt::before{content:""}.fa-baseball::before{content:""}.fa-baseball-ball::before{content:""}.fa-jet-fighter-up::before{content:""}.fa-diagram-project::before{content:""}.fa-project-diagram::before{content:""}.fa-copy::before{content:""}.fa-volume-xmark::before{content:""}.fa-volume-mute::before{content:""}.fa-volume-times::before{content:""}.fa-hand-sparkles::before{content:""}.fa-grip::before{content:""}.fa-grip-horizontal::before{content:""}.fa-share-from-square::before{content:""}.fa-share-square::before{content:""}.fa-child-combatant::before{content:""}.fa-child-rifle::before{content:""}.fa-gun::before{content:""}.fa-square-phone::before{content:""}.fa-phone-square::before{content:""}.fa-plus::before{content:"\+"}.fa-add::before{content:"\+"}.fa-expand::before{content:""}.fa-computer::before{content:""}.fa-xmark::before{content:""}.fa-close::before{content:""}.fa-multiply::before{content:""}.fa-remove::before{content:""}.fa-times::before{content:""}.fa-arrows-up-down-left-right::before{content:""}.fa-arrows::before{content:""}.fa-chalkboard-user::before{content:""}.fa-chalkboard-teacher::before{content:""}.fa-peso-sign::before{content:""}.fa-building-shield::before{content:""}.fa-baby::before{content:""}.fa-users-line::before{content:""}.fa-quote-left::before{content:""}.fa-quote-left-alt::before{content:""}.fa-tractor::before{content:""}.fa-trash-arrow-up::before{content:""}.fa-trash-restore::before{content:""}.fa-arrow-down-up-lock::before{content:""}.fa-lines-leaning::before{content:""}.fa-ruler-combined::before{content:""}.fa-copyright::before{content:""}.fa-equals::before{content:"\="}.fa-blender::before{content:""}.fa-teeth::before{content:""}.fa-shekel-sign::before{content:""}.fa-ils::before{content:""}.fa-shekel::before{content:""}.fa-sheqel::before{content:""}.fa-sheqel-sign::before{content:""}.fa-map::before{content:""}.fa-rocket::before{content:""}.fa-photo-film::before{content:""}.fa-photo-video::before{content:""}.fa-folder-minus::before{content:""}.fa-store::before{content:""}.fa-arrow-trend-up::before{content:""}.fa-plug-circle-minus::before{content:""}.fa-sign-hanging::before{content:""}.fa-sign::before{content:""}.fa-bezier-curve::before{content:""}.fa-bell-slash::before{content:""}.fa-tablet::before{content:""}.fa-tablet-android::before{content:""}.fa-school-flag::before{content:""}.fa-fill::before{content:""}.fa-angle-up::before{content:""}.fa-drumstick-bite::before{content:""}.fa-holly-berry::before{content:""}.fa-chevron-left::before{content:""}.fa-bacteria::before{content:""}.fa-hand-lizard::before{content:""}.fa-notdef::before{content:""}.fa-disease::before{content:""}.fa-briefcase-medical::before{content:""}.fa-genderless::before{content:""}.fa-chevron-right::before{content:""}.fa-retweet::before{content:""}.fa-car-rear::before{content:""}.fa-car-alt::before{content:""}.fa-pump-soap::before{content:""}.fa-video-slash::before{content:""}.fa-battery-quarter::before{content:""}.fa-battery-2::before{content:""}.fa-radio::before{content:""}.fa-baby-carriage::before{content:""}.fa-carriage-baby::before{content:""}.fa-traffic-light::before{content:""}.fa-thermometer::before{content:""}.fa-vr-cardboard::before{content:""}.fa-hand-middle-finger::before{content:""}.fa-percent::before{content:"\%"}.fa-percentage::before{content:"\%"}.fa-truck-moving::before{content:""}.fa-glass-water-droplet::before{content:""}.fa-display::before{content:""}.fa-face-smile::before{content:""}.fa-smile::before{content:""}.fa-thumbtack::before{content:""}.fa-thumb-tack::before{content:""}.fa-trophy::before{content:""}.fa-person-praying::before{content:""}.fa-pray::before{content:""}.fa-hammer::before{content:""}.fa-hand-peace::before{content:""}.fa-rotate::before{content:""}.fa-sync-alt::before{content:""}.fa-spinner::before{content:""}.fa-robot::before{content:""}.fa-peace::before{content:""}.fa-gears::before{content:""}.fa-cogs::before{content:""}.fa-warehouse::before{content:""}.fa-arrow-up-right-dots::before{content:""}.fa-splotch::before{content:""}.fa-face-grin-hearts::before{content:""}.fa-grin-hearts::before{content:""}.fa-dice-four::before{content:""}.fa-sim-card::before{content:""}.fa-transgender::before{content:""}.fa-transgender-alt::before{content:""}.fa-mercury::before{content:""}.fa-arrow-turn-down::before{content:""}.fa-level-down::before{content:""}.fa-person-falling-burst::before{content:""}.fa-award::before{content:""}.fa-ticket-simple::before{content:""}.fa-ticket-alt::before{content:""}.fa-building::before{content:""}.fa-angles-left::before{content:""}.fa-angle-double-left::before{content:""}.fa-qrcode::before{content:""}.fa-clock-rotate-left::before{content:""}.fa-history::before{content:""}.fa-face-grin-beam-sweat::before{content:""}.fa-grin-beam-sweat::before{content:""}.fa-file-export::before{content:""}.fa-arrow-right-from-file::before{content:""}.fa-shield::before{content:""}.fa-shield-blank::before{content:""}.fa-arrow-up-short-wide::before{content:""}.fa-sort-amount-up-alt::before{content:""}.fa-house-medical::before{content:""}.fa-golf-ball-tee::before{content:""}.fa-golf-ball::before{content:""}.fa-circle-chevron-left::before{content:""}.fa-chevron-circle-left::before{content:""}.fa-house-chimney-window::before{content:""}.fa-pen-nib::before{content:""}.fa-tent-arrow-turn-left::before{content:""}.fa-tents::before{content:""}.fa-wand-magic::before{content:""}.fa-magic::before{content:""}.fa-dog::before{content:""}.fa-carrot::before{content:""}.fa-moon::before{content:""}.fa-wine-glass-empty::before{content:""}.fa-wine-glass-alt::before{content:""}.fa-cheese::before{content:""}.fa-yin-yang::before{content:""}.fa-music::before{content:""}.fa-code-commit::before{content:""}.fa-temperature-low::before{content:""}.fa-person-biking::before{content:""}.fa-biking::before{content:""}.fa-broom::before{content:""}.fa-shield-heart::before{content:""}.fa-gopuram::before{content:""}.fa-earth-oceania::before{content:""}.fa-globe-oceania::before{content:""}.fa-square-xmark::before{content:""}.fa-times-square::before{content:""}.fa-xmark-square::before{content:""}.fa-hashtag::before{content:"\#"}.fa-up-right-and-down-left-from-center::before{content:""}.fa-expand-alt::before{content:""}.fa-oil-can::before{content:""}.fa-t::before{content:"T"}.fa-hippo::before{content:""}.fa-chart-column::before{content:""}.fa-infinity::before{content:""}.fa-vial-circle-check::before{content:""}.fa-person-arrow-down-to-line::before{content:""}.fa-voicemail::before{content:""}.fa-fan::before{content:""}.fa-person-walking-luggage::before{content:""}.fa-up-down::before{content:""}.fa-arrows-alt-v::before{content:""}.fa-cloud-moon-rain::before{content:""}.fa-calendar::before{content:""}.fa-trailer::before{content:""}.fa-bahai::before{content:""}.fa-haykal::before{content:""}.fa-sd-card::before{content:""}.fa-dragon::before{content:""}.fa-shoe-prints::before{content:""}.fa-circle-plus::before{content:""}.fa-plus-circle::before{content:""}.fa-face-grin-tongue-wink::before{content:""}.fa-grin-tongue-wink::before{content:""}.fa-hand-holding::before{content:""}.fa-plug-circle-exclamation::before{content:""}.fa-link-slash::before{content:""}.fa-chain-broken::before{content:""}.fa-chain-slash::before{content:""}.fa-unlink::before{content:""}.fa-clone::before{content:""}.fa-person-walking-arrow-loop-left::before{content:""}.fa-arrow-up-z-a::before{content:""}.fa-sort-alpha-up-alt::before{content:""}.fa-fire-flame-curved::before{content:""}.fa-fire-alt::before{content:""}.fa-tornado::before{content:""}.fa-file-circle-plus::before{content:""}.fa-book-quran::before{content:""}.fa-quran::before{content:""}.fa-anchor::before{content:""}.fa-border-all::before{content:""}.fa-face-angry::before{content:""}.fa-angry::before{content:""}.fa-cookie-bite::before{content:""}.fa-arrow-trend-down::before{content:""}.fa-rss::before{content:""}.fa-feed::before{content:""}.fa-draw-polygon::before{content:""}.fa-scale-balanced::before{content:""}.fa-balance-scale::before{content:""}.fa-gauge-simple-high::before{content:""}.fa-tachometer::before{content:""}.fa-tachometer-fast::before{content:""}.fa-shower::before{content:""}.fa-desktop::before{content:""}.fa-desktop-alt::before{content:""}.fa-m::before{content:"M"}.fa-table-list::before{content:""}.fa-th-list::before{content:""}.fa-comment-sms::before{content:""}.fa-sms::before{content:""}.fa-book::before{content:""}.fa-user-plus::before{content:""}.fa-check::before{content:""}.fa-battery-three-quarters::before{content:""}.fa-battery-4::before{content:""}.fa-house-circle-check::before{content:""}.fa-angle-left::before{content:""}.fa-diagram-successor::before{content:""}.fa-truck-arrow-right::before{content:""}.fa-arrows-split-up-and-left::before{content:""}.fa-hand-fist::before{content:""}.fa-fist-raised::before{content:""}.fa-cloud-moon::before{content:""}.fa-briefcase::before{content:""}.fa-person-falling::before{content:""}.fa-image-portrait::before{content:""}.fa-portrait::before{content:""}.fa-user-tag::before{content:""}.fa-rug::before{content:""}.fa-earth-europe::before{content:""}.fa-globe-europe::before{content:""}.fa-cart-flatbed-suitcase::before{content:""}.fa-luggage-cart::before{content:""}.fa-rectangle-xmark::before{content:""}.fa-rectangle-times::before{content:""}.fa-times-rectangle::before{content:""}.fa-window-close::before{content:""}.fa-baht-sign::before{content:""}.fa-book-open::before{content:""}.fa-book-journal-whills::before{content:""}.fa-journal-whills::before{content:""}.fa-handcuffs::before{content:""}.fa-triangle-exclamation::before{content:""}.fa-exclamation-triangle::before{content:""}.fa-warning::before{content:""}.fa-database::before{content:""}.fa-share::before{content:""}.fa-mail-forward::before{content:""}.fa-bottle-droplet::before{content:""}.fa-mask-face::before{content:""}.fa-hill-rockslide::before{content:""}.fa-right-left::before{content:""}.fa-exchange-alt::before{content:""}.fa-paper-plane::before{content:""}.fa-road-circle-exclamation::before{content:""}.fa-dungeon::before{content:""}.fa-align-right::before{content:""}.fa-money-bill-1-wave::before{content:""}.fa-money-bill-wave-alt::before{content:""}.fa-life-ring::before{content:""}.fa-hands::before{content:""}.fa-sign-language::before{content:""}.fa-signing::before{content:""}.fa-calendar-day::before{content:""}.fa-water-ladder::before{content:""}.fa-ladder-water::before{content:""}.fa-swimming-pool::before{content:""}.fa-arrows-up-down::before{content:""}.fa-arrows-v::before{content:""}.fa-face-grimace::before{content:""}.fa-grimace::before{content:""}.fa-wheelchair-move::before{content:""}.fa-wheelchair-alt::before{content:""}.fa-turn-down::before{content:""}.fa-level-down-alt::before{content:""}.fa-person-walking-arrow-right::before{content:""}.fa-square-envelope::before{content:""}.fa-envelope-square::before{content:""}.fa-dice::before{content:""}.fa-bowling-ball::before{content:""}.fa-brain::before{content:""}.fa-bandage::before{content:""}.fa-band-aid::before{content:""}.fa-calendar-minus::before{content:""}.fa-circle-xmark::before{content:""}.fa-times-circle::before{content:""}.fa-xmark-circle::before{content:""}.fa-gifts::before{content:""}.fa-hotel::before{content:""}.fa-earth-asia::before{content:""}.fa-globe-asia::before{content:""}.fa-id-card-clip::before{content:""}.fa-id-card-alt::before{content:""}.fa-magnifying-glass-plus::before{content:""}.fa-search-plus::before{content:""}.fa-thumbs-up::before{content:""}.fa-user-clock::before{content:""}.fa-hand-dots::before{content:""}.fa-allergies::before{content:""}.fa-file-invoice::before{content:""}.fa-window-minimize::before{content:""}.fa-mug-saucer::before{content:""}.fa-coffee::before{content:""}.fa-brush::before{content:""}.fa-mask::before{content:""}.fa-magnifying-glass-minus::before{content:""}.fa-search-minus::before{content:""}.fa-ruler-vertical::before{content:""}.fa-user-large::before{content:""}.fa-user-alt::before{content:""}.fa-train-tram::before{content:""}.fa-user-nurse::before{content:""}.fa-syringe::before{content:""}.fa-cloud-sun::before{content:""}.fa-stopwatch-20::before{content:""}.fa-square-full::before{content:""}.fa-magnet::before{content:""}.fa-jar::before{content:""}.fa-note-sticky::before{content:""}.fa-sticky-note::before{content:""}.fa-bug-slash::before{content:""}.fa-arrow-up-from-water-pump::before{content:""}.fa-bone::before{content:""}.fa-user-injured::before{content:""}.fa-face-sad-tear::before{content:""}.fa-sad-tear::before{content:""}.fa-plane::before{content:""}.fa-tent-arrows-down::before{content:""}.fa-exclamation::before{content:"\!"}.fa-arrows-spin::before{content:""}.fa-print::before{content:""}.fa-turkish-lira-sign::before{content:""}.fa-try::before{content:""}.fa-turkish-lira::before{content:""}.fa-dollar-sign::before{content:"\$"}.fa-dollar::before{content:"\$"}.fa-usd::before{content:"\$"}.fa-x::before{content:"X"}.fa-magnifying-glass-dollar::before{content:""}.fa-search-dollar::before{content:""}.fa-users-gear::before{content:""}.fa-users-cog::before{content:""}.fa-person-military-pointing::before{content:""}.fa-building-columns::before{content:""}.fa-bank::before{content:""}.fa-institution::before{content:""}.fa-museum::before{content:""}.fa-university::before{content:""}.fa-umbrella::before{content:""}.fa-trowel::before{content:""}.fa-d::before{content:"D"}.fa-stapler::before{content:""}.fa-masks-theater::before{content:""}.fa-theater-masks::before{content:""}.fa-kip-sign::before{content:""}.fa-hand-point-left::before{content:""}.fa-handshake-simple::before{content:""}.fa-handshake-alt::before{content:""}.fa-jet-fighter::before{content:""}.fa-fighter-jet::before{content:""}.fa-square-share-nodes::before{content:""}.fa-share-alt-square::before{content:""}.fa-barcode::before{content:""}.fa-plus-minus::before{content:""}.fa-video::before{content:""}.fa-video-camera::before{content:""}.fa-graduation-cap::before{content:""}.fa-mortar-board::before{content:""}.fa-hand-holding-medical::before{content:""}.fa-person-circle-check::before{content:""}.fa-turn-up::before{content:""}.fa-level-up-alt::before{content:""}.sr-only,.fa-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.sr-only-focusable:not(:focus),.fa-sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}/*! * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */:root,:host{--fa-style-family-classic: 'Font Awesome 6 Free';--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'}@font-face{font-family:'Font Awesome 6 Free';font-style:normal;font-weight:900;font-display:block;src:url("../webfonts/fa-solid-900.woff2") format("woff2"),url("../webfonts/fa-solid-900.ttf") format("truetype")}.fas,.fa-solid{font-weight:900}/*! * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */:root,:host{--fa-style-family-brands: 'Font Awesome 6 Brands';--fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'}@font-face{font-family:'Font Awesome 6 Brands';font-style:normal;font-weight:400;font-display:block;src:url("../webfonts/fa-brands-400.woff2") format("woff2"),url("../webfonts/fa-brands-400.ttf") format("truetype")}.fab,.fa-brands{font-weight:400}.fa-monero:before{content:""}.fa-hooli:before{content:""}.fa-yelp:before{content:""}.fa-cc-visa:before{content:""}.fa-lastfm:before{content:""}.fa-shopware:before{content:""}.fa-creative-commons-nc:before{content:""}.fa-aws:before{content:""}.fa-redhat:before{content:""}.fa-yoast:before{content:""}.fa-cloudflare:before{content:""}.fa-ups:before{content:""}.fa-pixiv:before{content:""}.fa-wpexplorer:before{content:""}.fa-dyalog:before{content:""}.fa-bity:before{content:""}.fa-stackpath:before{content:""}.fa-buysellads:before{content:""}.fa-first-order:before{content:""}.fa-modx:before{content:""}.fa-guilded:before{content:""}.fa-vnv:before{content:""}.fa-square-js:before{content:""}.fa-js-square:before{content:""}.fa-microsoft:before{content:""}.fa-qq:before{content:""}.fa-orcid:before{content:""}.fa-java:before{content:""}.fa-invision:before{content:""}.fa-creative-commons-pd-alt:before{content:""}.fa-centercode:before{content:""}.fa-glide-g:before{content:""}.fa-drupal:before{content:""}.fa-jxl:before{content:""}.fa-hire-a-helper:before{content:""}.fa-creative-commons-by:before{content:""}.fa-unity:before{content:""}.fa-whmcs:before{content:""}.fa-rocketchat:before{content:""}.fa-vk:before{content:""}.fa-untappd:before{content:""}.fa-mailchimp:before{content:""}.fa-css3-alt:before{content:""}.fa-square-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-vimeo-v:before{content:""}.fa-contao:before{content:""}.fa-square-font-awesome:before{content:""}.fa-deskpro:before{content:""}.fa-brave:before{content:""}.fa-sistrix:before{content:""}.fa-square-instagram:before{content:""}.fa-instagram-square:before{content:""}.fa-battle-net:before{content:""}.fa-the-red-yeti:before{content:""}.fa-square-hacker-news:before{content:""}.fa-hacker-news-square:before{content:""}.fa-edge:before{content:""}.fa-threads:before{content:""}.fa-napster:before{content:""}.fa-square-snapchat:before{content:""}.fa-snapchat-square:before{content:""}.fa-google-plus-g:before{content:""}.fa-artstation:before{content:""}.fa-markdown:before{content:""}.fa-sourcetree:before{content:""}.fa-google-plus:before{content:""}.fa-diaspora:before{content:""}.fa-foursquare:before{content:""}.fa-stack-overflow:before{content:""}.fa-github-alt:before{content:""}.fa-phoenix-squadron:before{content:""}.fa-pagelines:before{content:""}.fa-algolia:before{content:""}.fa-red-river:before{content:""}.fa-creative-commons-sa:before{content:""}.fa-safari:before{content:""}.fa-google:before{content:""}.fa-square-font-awesome-stroke:before{content:""}.fa-font-awesome-alt:before{content:""}.fa-atlassian:before{content:""}.fa-linkedin-in:before{content:""}.fa-digital-ocean:before{content:""}.fa-nimblr:before{content:""}.fa-chromecast:before{content:""}.fa-evernote:before{content:""}.fa-hacker-news:before{content:""}.fa-creative-commons-sampling:before{content:""}.fa-adversal:before{content:""}.fa-creative-commons:before{content:""}.fa-watchman-monitoring:before{content:""}.fa-fonticons:before{content:""}.fa-weixin:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-codepen:before{content:""}.fa-git-alt:before{content:""}.fa-lyft:before{content:""}.fa-rev:before{content:""}.fa-windows:before{content:""}.fa-wizards-of-the-coast:before{content:""}.fa-square-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-meetup:before{content:""}.fa-centos:before{content:""}.fa-adn:before{content:""}.fa-cloudsmith:before{content:""}.fa-opensuse:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-square-dribbble:before{content:""}.fa-dribbble-square:before{content:""}.fa-codiepie:before{content:""}.fa-node:before{content:""}.fa-mix:before{content:""}.fa-steam:before{content:""}.fa-cc-apple-pay:before{content:""}.fa-scribd:before{content:""}.fa-debian:before{content:""}.fa-openid:before{content:""}.fa-instalod:before{content:""}.fa-expeditedssl:before{content:""}.fa-sellcast:before{content:""}.fa-square-twitter:before{content:""}.fa-twitter-square:before{content:""}.fa-r-project:before{content:""}.fa-delicious:before{content:""}.fa-freebsd:before{content:""}.fa-vuejs:before{content:""}.fa-accusoft:before{content:""}.fa-ioxhost:before{content:""}.fa-fonticons-fi:before{content:""}.fa-app-store:before{content:""}.fa-cc-mastercard:before{content:""}.fa-itunes-note:before{content:""}.fa-golang:before{content:""}.fa-kickstarter:before{content:""}.fa-square-kickstarter:before{content:""}.fa-grav:before{content:""}.fa-weibo:before{content:""}.fa-uncharted:before{content:""}.fa-firstdraft:before{content:""}.fa-square-youtube:before{content:""}.fa-youtube-square:before{content:""}.fa-wikipedia-w:before{content:""}.fa-wpressr:before{content:""}.fa-rendact:before{content:""}.fa-angellist:before{content:""}.fa-galactic-republic:before{content:""}.fa-nfc-directional:before{content:""}.fa-skype:before{content:""}.fa-joget:before{content:""}.fa-fedora:before{content:""}.fa-stripe-s:before{content:""}.fa-meta:before{content:""}.fa-laravel:before{content:""}.fa-hotjar:before{content:""}.fa-bluetooth-b:before{content:""}.fa-square-letterboxd:before{content:""}.fa-sticker-mule:before{content:""}.fa-creative-commons-zero:before{content:""}.fa-hips:before{content:""}.fa-behance:before{content:""}.fa-reddit:before{content:""}.fa-discord:before{content:""}.fa-chrome:before{content:""}.fa-app-store-ios:before{content:""}.fa-cc-discover:before{content:""}.fa-wpbeginner:before{content:""}.fa-confluence:before{content:""}.fa-shoelace:before{content:""}.fa-mdb:before{content:""}.fa-dochub:before{content:""}.fa-accessible-icon:before{content:""}.fa-ebay:before{content:""}.fa-amazon:before{content:""}.fa-unsplash:before{content:""}.fa-yarn:before{content:""}.fa-square-steam:before{content:""}.fa-steam-square:before{content:""}.fa-500px:before{content:""}.fa-square-vimeo:before{content:""}.fa-vimeo-square:before{content:""}.fa-asymmetrik:before{content:""}.fa-font-awesome:before{content:""}.fa-font-awesome-flag:before{content:""}.fa-font-awesome-logo-full:before{content:""}.fa-gratipay:before{content:""}.fa-apple:before{content:""}.fa-hive:before{content:""}.fa-gitkraken:before{content:""}.fa-keybase:before{content:""}.fa-apple-pay:before{content:""}.fa-padlet:before{content:""}.fa-amazon-pay:before{content:""}.fa-square-github:before{content:""}.fa-github-square:before{content:""}.fa-stumbleupon:before{content:""}.fa-fedex:before{content:""}.fa-phoenix-framework:before{content:""}.fa-shopify:before{content:""}.fa-neos:before{content:""}.fa-square-threads:before{content:""}.fa-hackerrank:before{content:""}.fa-researchgate:before{content:""}.fa-swift:before{content:""}.fa-angular:before{content:""}.fa-speakap:before{content:""}.fa-angrycreative:before{content:""}.fa-y-combinator:before{content:""}.fa-empire:before{content:""}.fa-envira:before{content:""}.fa-google-scholar:before{content:""}.fa-square-gitlab:before{content:""}.fa-gitlab-square:before{content:""}.fa-studiovinari:before{content:""}.fa-pied-piper:before{content:""}.fa-wordpress:before{content:""}.fa-product-hunt:before{content:""}.fa-firefox:before{content:""}.fa-linode:before{content:""}.fa-goodreads:before{content:""}.fa-square-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-jsfiddle:before{content:""}.fa-sith:before{content:""}.fa-themeisle:before{content:""}.fa-page4:before{content:""}.fa-hashnode:before{content:""}.fa-react:before{content:""}.fa-cc-paypal:before{content:""}.fa-squarespace:before{content:""}.fa-cc-stripe:before{content:""}.fa-creative-commons-share:before{content:""}.fa-bitcoin:before{content:""}.fa-keycdn:before{content:""}.fa-opera:before{content:""}.fa-itch-io:before{content:""}.fa-umbraco:before{content:""}.fa-galactic-senate:before{content:""}.fa-ubuntu:before{content:""}.fa-draft2digital:before{content:""}.fa-stripe:before{content:""}.fa-houzz:before{content:""}.fa-gg:before{content:""}.fa-dhl:before{content:""}.fa-square-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-xing:before{content:""}.fa-blackberry:before{content:""}.fa-creative-commons-pd:before{content:""}.fa-playstation:before{content:""}.fa-quinscape:before{content:""}.fa-less:before{content:""}.fa-blogger-b:before{content:""}.fa-opencart:before{content:""}.fa-vine:before{content:""}.fa-signal-messenger:before{content:""}.fa-paypal:before{content:""}.fa-gitlab:before{content:""}.fa-typo3:before{content:""}.fa-reddit-alien:before{content:""}.fa-yahoo:before{content:""}.fa-dailymotion:before{content:""}.fa-affiliatetheme:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-bootstrap:before{content:""}.fa-odnoklassniki:before{content:""}.fa-nfc-symbol:before{content:""}.fa-mintbit:before{content:""}.fa-ethereum:before{content:""}.fa-speaker-deck:before{content:""}.fa-creative-commons-nc-eu:before{content:""}.fa-patreon:before{content:""}.fa-avianex:before{content:""}.fa-ello:before{content:""}.fa-gofore:before{content:""}.fa-bimobject:before{content:""}.fa-brave-reverse:before{content:""}.fa-facebook-f:before{content:""}.fa-square-google-plus:before{content:""}.fa-google-plus-square:before{content:""}.fa-web-awesome:before{content:""}.fa-mandalorian:before{content:""}.fa-first-order-alt:before{content:""}.fa-osi:before{content:""}.fa-google-wallet:before{content:""}.fa-d-and-d-beyond:before{content:""}.fa-periscope:before{content:""}.fa-fulcrum:before{content:""}.fa-cloudscale:before{content:""}.fa-forumbee:before{content:""}.fa-mizuni:before{content:""}.fa-schlix:before{content:""}.fa-square-xing:before{content:""}.fa-xing-square:before{content:""}.fa-bandcamp:before{content:""}.fa-wpforms:before{content:""}.fa-cloudversify:before{content:""}.fa-usps:before{content:""}.fa-megaport:before{content:""}.fa-magento:before{content:""}.fa-spotify:before{content:""}.fa-optin-monster:before{content:""}.fa-fly:before{content:""}.fa-aviato:before{content:""}.fa-itunes:before{content:""}.fa-cuttlefish:before{content:""}.fa-blogger:before{content:""}.fa-flickr:before{content:""}.fa-viber:before{content:""}.fa-soundcloud:before{content:""}.fa-digg:before{content:""}.fa-tencent-weibo:before{content:""}.fa-letterboxd:before{content:""}.fa-symfony:before{content:""}.fa-maxcdn:before{content:""}.fa-etsy:before{content:""}.fa-facebook-messenger:before{content:""}.fa-audible:before{content:""}.fa-think-peaks:before{content:""}.fa-bilibili:before{content:""}.fa-erlang:before{content:""}.fa-x-twitter:before{content:""}.fa-cotton-bureau:before{content:""}.fa-dashcube:before{content:""}.fa-42-group:before{content:""}.fa-innosoft:before{content:""}.fa-stack-exchange:before{content:""}.fa-elementor:before{content:""}.fa-square-pied-piper:before{content:""}.fa-pied-piper-square:before{content:""}.fa-creative-commons-nd:before{content:""}.fa-palfed:before{content:""}.fa-superpowers:before{content:""}.fa-resolving:before{content:""}.fa-xbox:before{content:""}.fa-square-web-awesome-stroke:before{content:""}.fa-searchengin:before{content:""}.fa-tiktok:before{content:""}.fa-square-facebook:before{content:""}.fa-facebook-square:before{content:""}.fa-renren:before{content:""}.fa-linux:before{content:""}.fa-glide:before{content:""}.fa-linkedin:before{content:""}.fa-hubspot:before{content:""}.fa-deploydog:before{content:""}.fa-twitch:before{content:""}.fa-ravelry:before{content:""}.fa-mixer:before{content:""}.fa-square-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-vimeo:before{content:""}.fa-mendeley:before{content:""}.fa-uniregistry:before{content:""}.fa-figma:before{content:""}.fa-creative-commons-remix:before{content:""}.fa-cc-amazon-pay:before{content:""}.fa-dropbox:before{content:""}.fa-instagram:before{content:""}.fa-cmplid:before{content:""}.fa-upwork:before{content:""}.fa-facebook:before{content:""}.fa-gripfire:before{content:""}.fa-jedi-order:before{content:""}.fa-uikit:before{content:""}.fa-fort-awesome-alt:before{content:""}.fa-phabricator:before{content:""}.fa-ussunnah:before{content:""}.fa-earlybirds:before{content:""}.fa-trade-federation:before{content:""}.fa-autoprefixer:before{content:""}.fa-whatsapp:before{content:""}.fa-square-upwork:before{content:""}.fa-slideshare:before{content:""}.fa-google-play:before{content:""}.fa-viadeo:before{content:""}.fa-line:before{content:""}.fa-google-drive:before{content:""}.fa-servicestack:before{content:""}.fa-simplybuilt:before{content:""}.fa-bitbucket:before{content:""}.fa-imdb:before{content:""}.fa-deezer:before{content:""}.fa-raspberry-pi:before{content:""}.fa-jira:before{content:""}.fa-docker:before{content:""}.fa-screenpal:before{content:""}.fa-bluetooth:before{content:""}.fa-gitter:before{content:""}.fa-d-and-d:before{content:""}.fa-microblog:before{content:""}.fa-cc-diners-club:before{content:""}.fa-gg-circle:before{content:""}.fa-pied-piper-hat:before{content:""}.fa-kickstarter-k:before{content:""}.fa-yandex:before{content:""}.fa-readme:before{content:""}.fa-html5:before{content:""}.fa-sellsy:before{content:""}.fa-square-web-awesome:before{content:""}.fa-sass:before{content:""}.fa-wirsindhandwerk:before{content:""}.fa-wsh:before{content:""}.fa-buromobelexperte:before{content:""}.fa-salesforce:before{content:""}.fa-octopus-deploy:before{content:""}.fa-medapps:before{content:""}.fa-ns8:before{content:""}.fa-pinterest-p:before{content:""}.fa-apper:before{content:""}.fa-fort-awesome:before{content:""}.fa-waze:before{content:""}.fa-bluesky:before{content:""}.fa-cc-jcb:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-fantasy-flight-games:before{content:""}.fa-rust:before{content:""}.fa-wix:before{content:""}.fa-square-behance:before{content:""}.fa-behance-square:before{content:""}.fa-supple:before{content:""}.fa-webflow:before{content:""}.fa-rebel:before{content:""}.fa-css3:before{content:""}.fa-staylinked:before{content:""}.fa-kaggle:before{content:""}.fa-space-awesome:before{content:""}.fa-deviantart:before{content:""}.fa-cpanel:before{content:""}.fa-goodreads-g:before{content:""}.fa-square-git:before{content:""}.fa-git-square:before{content:""}.fa-square-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-trello:before{content:""}.fa-creative-commons-nc-jp:before{content:""}.fa-get-pocket:before{content:""}.fa-perbyte:before{content:""}.fa-grunt:before{content:""}.fa-weebly:before{content:""}.fa-connectdevelop:before{content:""}.fa-leanpub:before{content:""}.fa-black-tie:before{content:""}.fa-themeco:before{content:""}.fa-python:before{content:""}.fa-android:before{content:""}.fa-bots:before{content:""}.fa-free-code-camp:before{content:""}.fa-hornbill:before{content:""}.fa-js:before{content:""}.fa-ideal:before{content:""}.fa-git:before{content:""}.fa-dev:before{content:""}.fa-sketch:before{content:""}.fa-yandex-international:before{content:""}.fa-cc-amex:before{content:""}.fa-uber:before{content:""}.fa-github:before{content:""}.fa-php:before{content:""}.fa-alipay:before{content:""}.fa-youtube:before{content:""}.fa-skyatlas:before{content:""}.fa-firefox-browser:before{content:""}.fa-replyd:before{content:""}.fa-suse:before{content:""}.fa-jenkins:before{content:""}.fa-twitter:before{content:""}.fa-rockrms:before{content:""}.fa-pinterest:before{content:""}.fa-buffer:before{content:""}.fa-npm:before{content:""}.fa-yammer:before{content:""}.fa-btc:before{content:""}.fa-dribbble:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-internet-explorer:before{content:""}.fa-stubber:before{content:""}.fa-telegram:before{content:""}.fa-telegram-plane:before{content:""}.fa-old-republic:before{content:""}.fa-odysee:before{content:""}.fa-square-whatsapp:before{content:""}.fa-whatsapp-square:before{content:""}.fa-node-js:before{content:""}.fa-edge-legacy:before{content:""}.fa-slack:before{content:""}.fa-slack-hash:before{content:""}.fa-medrt:before{content:""}.fa-usb:before{content:""}.fa-tumblr:before{content:""}.fa-vaadin:before{content:""}.fa-quora:before{content:""}.fa-square-x-twitter:before{content:""}.fa-reacteurope:before{content:""}.fa-medium:before{content:""}.fa-medium-m:before{content:""}.fa-amilia:before{content:""}.fa-mixcloud:before{content:""}.fa-flipboard:before{content:""}.fa-viacoin:before{content:""}.fa-critical-role:before{content:""}.fa-sitrox:before{content:""}.fa-discourse:before{content:""}.fa-joomla:before{content:""}.fa-mastodon:before{content:""}.fa-airbnb:before{content:""}.fa-wolf-pack-battalion:before{content:""}.fa-buy-n-large:before{content:""}.fa-gulp:before{content:""}.fa-creative-commons-sampling-plus:before{content:""}.fa-strava:before{content:""}.fa-ember:before{content:""}.fa-canadian-maple-leaf:before{content:""}.fa-teamspeak:before{content:""}.fa-pushed:before{content:""}.fa-wordpress-simple:before{content:""}.fa-nutritionix:before{content:""}.fa-wodu:before{content:""}.fa-google-pay:before{content:""}.fa-intercom:before{content:""}.fa-zhihu:before{content:""}.fa-korvue:before{content:""}.fa-pix:before{content:""}.fa-steam-symbol:before{content:""}.mfp-counter{font-family:Georgia,Times,serif}.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#000;opacity:.8;filter:alpha(opacity=80)}.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:none !important;-webkit-backface-visibility:hidden}.mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:0 8px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-container:before{content:'';display:inline-block;height:100%;vertical-align:middle}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.mfp-inline-holder .mfp-content,.mfp-ajax-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-close,.mfp-arrow,.mfp-preloader,.mfp-counter{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none !important}.mfp-preloader{color:#ccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-0.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#ccc}.mfp-preloader a:hover{color:#fff}.mfp-s-ready .mfp-preloader{display:none}.mfp-s-error .mfp-content{display:none}button.mfp-close,button.mfp-arrow{overflow:visible;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;display:block;outline:none;padding:0;z-index:1046;-webkit-box-shadow:none;box-shadow:none}button::-moz-focus-inner{padding:0;border:0}.mfp-close{width:44px;height:44px;line-height:44px;position:absolute;right:0;top:0;text-decoration:none;text-align:center;opacity:1;filter:alpha(opacity=100);padding:0 0 18px 10px;color:#fff;font-style:normal;font-size:28px;font-family:Georgia,Times,serif}.mfp-close:hover,.mfp-close:focus{opacity:1;filter:alpha(opacity=100)}.mfp-close:active{top:1px}.mfp-close-btn-in .mfp-close{color:#fff}.mfp-image-holder .mfp-close,.mfp-iframe-holder .mfp-close{color:#fff;right:-6px;text-align:right;padding-right:6px;width:100%}.mfp-counter{position:absolute;top:0;right:0;color:#ccc;font-size:12px;line-height:18px}.mfp-arrow{position:absolute;opacity:1;filter:alpha(opacity=100);margin:0;top:50%;margin-top:-55px;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:transparent}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:hover,.mfp-arrow:focus{opacity:1;filter:alpha(opacity=100)}.mfp-arrow:before,.mfp-arrow:after,.mfp-arrow .mfp-b,.mfp-arrow .mfp-a{content:'';display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:medium inset transparent}.mfp-arrow:after,.mfp-arrow .mfp-a{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow:before,.mfp-arrow .mfp-b{border-top-width:21px;border-bottom-width:21px;opacity:0.7}.mfp-arrow-left{left:0}.mfp-arrow-left:after,.mfp-arrow-left .mfp-a{border-right:17px solid #fff;margin-left:31px}.mfp-arrow-left:before,.mfp-arrow-left .mfp-b{margin-left:25px;border-right:27px solid #fff}.mfp-arrow-right{right:0}.mfp-arrow-right:after,.mfp-arrow-right .mfp-a{border-left:17px solid #fff;margin-left:39px}.mfp-arrow-right:before,.mfp-arrow-right .mfp-b{border-left:27px solid #fff}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,0.6);background:#000}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;line-height:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:40px 0 40px;margin:0 auto}.mfp-figure{line-height:0}.mfp-figure:after{content:'';position:absolute;left:0;top:40px;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,0.6);background:#444}.mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.mfp-figure figure{margin:0}.mfp-figure figcaption{margin-top:0;margin-bottom:0}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{text-align:left;line-height:18px;color:#f3f3f3;word-wrap:break-word;padding-right:36px}.mfp-image-holder .mfp-content{max-width:100%}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,0.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .mfp-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,0.6);position:fixed;text-align:center;padding:0}}@media all and (max-width: 900px){.mfp-arrow{-webkit-transform:scale(0.75);transform:scale(0.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}.mfp-ie7 .mfp-img{padding:0}.mfp-ie7 .mfp-bottom-bar{width:600px;left:50%;margin-left:-300px;margin-top:5px;padding-bottom:5px}.mfp-ie7 .mfp-container{padding:0}.mfp-ie7 .mfp-content{padding-top:44px}.mfp-ie7 .mfp-close{top:0;right:0;padding-top:0}

Markdown

Locations of key files/directories

  • Basic config options: _config.yml
  • Top navigation bar config: _data/navigation.yml
  • Single pages: _pages/
  • Collections of pages are .md or .html files in:
    • _publications/
    • _portfolio/
    • _posts/
    • _teaching/
    • _talks/
  • Footer: _includes/footer.html
  • Static files (like PDFs): /files/
  • Profile image (can set in _config.yml): images/profile.png

Tips and hints

  • Name a file “.md” to have it render in markdown, name it “.html” to render in HTML.
  • Go to the commit list (on your repo) to find the last version GitHub built with Jekyll.
    • Green check: successful build
    • Orange circle: building
    • Red X: error
    • No icon: not built
  • Academic Pages uses Jekyll Kramdown, GitHub Flavored Markdown (GFM) parser, which is similar to the version of Markdown used on GitHub, but may have some minor differences.
    • Some of emoji supported on GitHub should be supposed via the Jemoji plugin :computer:.
    • The best list of the supported emoji can be found in the Emojis for Jekyll via Jemoji blog post.
  • While GitHub Pages prevents server side code from running, client-side scripts are supported.
    • This means that Google Analytics is supported, and the wiki should contain the most up-to-date information on getting it working.
  • Your CV can be written using either Markdown (preview) or generated via JSON (preview) and the layouts are slightly different. You can update the path to the one being used in _data/navigation.yml with the JSON formatted CV being hidden by default.

Resources

MathJax

Support for MathJax Version 3.0 is included in the template:

\[\displaylines{ \nabla \cdot E= \frac{\rho}{\epsilon_0} \\\ \nabla \cdot B=0 \\\ \nabla \times E= -\partial_tB \\\ \nabla \times B = \mu_0 \left(J + \varepsilon_0 \partial_t E \right) }\]

The default delimiters of $$...$$ and \\[...\\] are supported for displayed mathematics, while \\(...\\) should be used for in-line mathematics (ex., \(a^2 + b^2 = c^2\))

Note that since Academic Pages uses Markdown which cases some interference with MathJax and LaTeX for escaping characters and new lines, although some workarounds exist. In some cases, such as when you are including MathJax in a citation field for publications, it may be necessary to use \(...\) for inline delineation.

Markdown guide

Academic Pages uses kramdown for Markdown rendering, which has some differences from other Markdown implementations such as GitHub’s. In addition to this guide, please see the kramdown Syntax page for full documentation.

Header three

Header four

Header five
Header six

Blockquotes

Single line blockquote:

Quotes are cool.

Tables

Table 1

Entry Item  
John Doe 2016 Description of the item in the list
Jane Doe 2019 Description of the item in the list
Doe Doe 2022 Description of the item in the list

Table 2

Header1 Header2 Header3
cell1 cell2 cell3
cell4 ce  
ll5 cell6  
cell1 cell2 cell3
cell4 cell5 cell6
Foot1 Foot2 Foot3

Definition Lists

Definition List Title
Definition list division.
Startup
A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model.
#dowork
Coined by Rob Dyrdek and his personal body guard Christopher “Big Black” Boykins, “Do Work” works as a self motivator, to motivating your friends.
Do It Live
I’ll let Bill O’Reilly explain this one.

Unordered Lists (Nested)

  • List item one
    • List item one
      • List item one
      • List item two
      • List item three
      • List item four
    • List item two
    • List item three
    • List item four
  • List item two
  • List item three
  • List item four

Ordered List (Nested)

  1. List item one
    1. List item one
      1. List item one
      2. List item two
      3. List item three
      4. List item four
    2. List item two
    3. List item three
    4. List item four
  2. List item two
  3. List item three
  4. List item four

Buttons

Make any link standout more when applying the .btn class.

Notices

Basic notices or call-outs are supported using the following syntax:

**Watch out!** You can also add notices by appending `{: .notice}` to the line following paragraph.
{: .notice}

which wil render as:

Watch out! You can also add notices by appending {: .notice} to the line following paragraph.

Footnotes

Footnotes can be useful for clarifying points in the text, or citing information.1 Markdown support numeric footnotes, as well as text as long as the values are unique.2

This is the regular text.[^1] This is more regular text.[^note]

[^1]: This is the footnote itself.
[^note]: This is another footnote.

HTML Tags

Address Tag

1 Infinite Loop
Cupertino, CA 95014
United States

This is an example of a link.

Abbreviation Tag

The abbreviation CSS stands for “Cascading Style Sheets”.

Cite Tag

“Code is poetry.” —Automattic

Code Tag

You will learn later on in these tests that word-wrap: break-word; will be your best friend.

You can also write larger blocks of code with syntax highlighting supported for some languages, such as Python:

print('Hello World!')

or R:

print("Hello World!", quote = FALSE)

Details Tag (collapsible sections)

The HTML <details> tag works well with Markdown and allows you to include collapsible sections, see W3Schools for more information on how to use the tag.

Collapsed by default This section was collapsed by default!

The source code:

<details>
  <summary>Collapsed by default</summary>
  This section was collapsed by default!
</details>

Or, you can leave a section open by default by including the open attribute in the tag:

Open by default This section is open by default thanks to open in the <details open> tag!

Emphasize Tag

The emphasize tag should italicize text.

Insert Tag

This tag should denote inserted text.

Keyboard Tag

This scarcely known tag emulates keyboard text, which is usually styled like the <code> tag.

Preformatted Tag

This tag styles large blocks of code.

.post-title {
  margin: 0 0 5px;
  font-weight: bold;
  font-size: 38px;
  line-height: 1.2;
  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}

Quote Tag

Developers, developers, developers… –Steve Ballmer

Strike Tag

This tag will let you strikeout text.

Strong Tag

This tag shows bold text.

Subscript Tag

Getting our science styling on with H2O, which should push the “2” down.

Superscript Tag

Still sticking with science and Isaac Newton’s E = MC2, which should lift the 2 up.

Variable Tag

This allows you to denote variables.


Footnotes

The footnotes in the page will be returned following this line, return to the section on Markdown Footnotes.

  1. Such as this footnote. 

  2. When using text for footnotes markers, no spaces are permitted in the name. 

Page not in menu

This is a page not in the menu. You can use markdown in this page.

Heading 1

Heading 2

Page Archive

{% include base_path %} {% for post in site.pages %} {% include archive-single.html %} {% endfor %}

Publications

{% if site.publication_category %} {% for category in site.publication_category %} {% assign title_shown = false %} {% for post in site.publications reversed %} {% if post.category != category[0] %} {% continue %} {% endif %} {% unless title_shown %}

{{ category[1].title }}


{% assign title_shown = true %} {% endunless %} {% include archive-single.html %} {% endfor %} {% endfor %} {% else %} {% for post in site.publications reversed %} {% include archive-single.html %} {% endfor %} {% endif %} </div> -->
{% if site.author.googlescholar %}
You can also find my articles on my Google Scholar profile.
{% endif %} {% include base_path %} {% if site.publication_category %} {% for category in site.publication_category %} {% assign title_shown = false %} {% for post in site.publications reversed %} {% if post.category != category[0] %} {% continue %} {% endif %} {% unless title_shown %}

{{ category[1].title }}


{% assign title_shown = true %} {% endunless %} {% include archive-single.html %} {% endfor %} {% endfor %} {% else %} {% for post in site.publications reversed %} {% include archive-single.html %} {% endfor %} {% endif %}

Sitemap

{% include base_path %} A list of all the posts and pages found on the site. For you robots out there, there is an [XML version]({{ base_path }}/sitemap.xml) available for digesting as well.

Pages

{% for post in site.pages %} {% include archive-single.html %} {% endfor %}

Posts

{% for post in site.posts %} {% include archive-single.html %} {% endfor %} {% capture written_label %}'None'{% endcapture %} {% for collection in site.collections %} {% unless collection.output == false or collection.label == "posts" %} {% capture label %}{{ collection.label }}{% endcapture %} {% if label != written_label %}

{{ label }}

{% capture written_label %}{{ label }}{% endcapture %} {% endif %} {% endunless %} {% for post in collection.docs %} {% unless collection.output == false or collection.label == "posts" %} {% include archive-single.html %} {% endunless %} {% endfor %} {% endfor %}

Posts by Tags

{% include base_path %} {% include group-by-array collection=site.posts field="tags" %} {% for tag in group_names %} {% assign posts = group_items[forloop.index0] %}

{{ tag }}

{% for post in posts %} {% include archive-single.html %} {% endfor %} {% endfor %}

Talk map

This map is generated from a Jupyter Notebook file in talkmap.ipynb, which mines the location fields in the .md files in _talks/.


Eduacation & Employment

2024–2025: University of Liege

  • Research Scientist/Project Leader, Urban and Environmental Engineering -Funded by European Union,
    Principal investigator – Anne Marie Habraken: anne.habraken@uliege.be

2022–2023: Northwestern University

  • Postdoc, McCormick School of Engineering, AMPL -supported by USA Vannevar Bush Faculty Fellowship award,
    Principal investigator – Jian Cao: jcao@northwestern.edu

2018–2022: National University of Singapore


2011-2018: Huazhong University of Science & Technology

  • 2015-2018: Master of Engineering, Design & Manufacture of Ships and Marine Structure (China Graduate Scholarship)
  • 2011-2015: Bachelor of Engineering, Naval Architecture & Ocean Engineering (2012 China National Scholarship)

Teaching

{% include base_path %} {% for post in site.teaching reversed %} {% include archive-single.html %} {% endfor %}

Terms and Privacy Policy

{% include base_path %} {% include toc %} ## Privacy Policy The privacy of my visitors is extremely important. This Privacy Policy outlines the types of personal information that is received and collected and how it is used. First and foremost, I will never share your email address or any other personal information to anyone without your direct consent. ### Log Files Like many other websites, this site uses log files to help learn about when, from where, and how often traffic flows to this site. The information in these log files include: * Internet Protocol addresses (IP) * Types of browser * Internet Service Provider (ISP) * Date and time stamp * Referring and exit pages * Number of clicks All of this information is not linked to anything that is personally identifiable. ### Cookies and Web Beacons When you visit this site "convenience" cookies are stored on your computer when you submit a comment to help you log in faster to [Disqus](http://disqus.com) the next time you leave a comment. Third-party advertisers may also place and read cookies on your browser and/or use web beacons to collect information. This site has no access or control over these cookies. You should review the respective privacy policies on any and all third-party ad servers for more information regarding their practices and how to opt-out. If you wish to disable cookies, you may do so through your web browser options. Instructions for doing so can be found on the specific web browsers' websites. #### Google Analytics Google Analytics is a web analytics tool I use to help understand how visitors engage with this website. It reports website trends using cookies and web beacons without identifying individual visitors. You can read [Google Analytics Privacy Policy](http://www.google.com/analytics/learn/privacy.html).

@import "jekyll-theme-primer";

{"/about/":"https://fanchennus.github.io/","/about.html":"https://fanchennus.github.io/","/resume-json":"https://fanchennus.github.io/cv-json/","/resume":"https://fanchennus.github.io/cv/","/md/":"https://fanchennus.github.io/markdown/","/markdown.html":"https://fanchennus.github.io/markdown/","/nmp/":"https://fanchennus.github.io/non-menu-page/","/nmp.html":"https://fanchennus.github.io/non-menu-page/","/posts/":"https://fanchennus.github.io/year-archive/"}

Jupyter notebook markdown generator

# Jupyter notebook markdown generator These .ipynb files are Jupyter notebook files that convert a TSV containing structured data about talks (`talks.tsv`) or presentations (`presentations.tsv`) into individual markdown files that will be properly formatted for the academicpages template. The notebooks contain a lot of documentation about the process. The .py files are pure python that do the same things if they are executed in a terminal, they just don't have pretty documentation.

{% if page.xsl %}{% endif %}<feed xmlns="http://www.w3.org/2005/Atom" {% if site.lang %}xml:lang="{{ site.lang }}"{% endif %}>Jekyll<link href="{{ '/' | absolute_url }}" rel="alternate" type="text/html" {% if site.lang %}hreflang="{{ site.lang }}" {% endif %}/>{{ site.time | date_to_xmlschema }}{{ page.url | absolute_url | xml_escape }}{% assign title = site.title | default: site.name %}{% if page.collection != "posts" %}{% assign collection = page.collection | capitalize %}{% assign title = title | append: " | " | append: collection %}{% endif %}{% if page.category %}{% assign category = page.category | capitalize %}{% assign title = title | append: " | " | append: category %}{% endif %}{% if title %}{{ title | smartify | xml_escape }}{% endif %}{% if site.description %}{{ site.description | xml_escape }}{% endif %}{% if site.author %}{{ site.author.name | default: site.author | xml_escape }}{% if site.author.email %}{{ site.author.email | xml_escape }}{% endif %}{% if site.author.uri %}{{ site.author.uri | xml_escape }}{% endif %}{% endif %}{% if page.tags %}{% assign posts = site.tags[page.tags] %}{% else %}{% assign posts = site[page.collection] %}{% endif %}{% if page.category %}{% assign posts = posts | where: "categories", page.category %}{% endif %}{% unless site.show_drafts %}{% assign posts = posts | where_exp: "post", "post.draft != true" %}{% endunless %}{% assign posts = posts | sort: "date" | reverse %}{% assign posts_limit = site.feed.posts_limit | default: 10 %}{% for post in posts limit: posts_limit %}<entry{% if post.lang %}{{" "}}xml:lang="{{ post.lang }}"{% endif %}>{% assign post_title = post.title | smartify | strip_html | normalize_whitespace | xml_escape %}{{ post_title }} {{ post.date | date_to_xmlschema }}{{ post.last_modified_at | default: post.date | date_to_xmlschema }}{{ post.id | absolute_url | xml_escape }}{% assign excerpt_only = post.feed.excerpt_only | default: site.feed.excerpt_only %}{% unless excerpt_only %}<![CDATA[{{ post.content | strip }}]]>{% endunless %}{% assign post_author = post.author | default: post.authors[0] | default: site.author %}{% assign post_author = site.data.authors[post_author] | default: post_author %}{% assign post_author_email = post_author.email | default: nil %}{% assign post_author_uri = post_author.uri | default: nil %}{% assign post_author_name = post_author.name | default: post_author %}{{ post_author_name | default: "" | xml_escape }}{% if post_author_email %}{{ post_author_email | xml_escape }}{% endif %}{% if post_author_uri %}{{ post_author_uri | xml_escape }}{% endif %}{% if post.category %}{% elsif post.categories %}{% for category in post.categories %}{% endfor %}{% endif %}{% for tag in post.tags %}{% endfor %}{% assign post_summary = post.description | default: post.excerpt %}{% if post_summary and post_summary != empty %}<![CDATA[{{ post_summary | strip_html | normalize_whitespace }}]]>{% endif %}{% assign post_image = post.image.path | default: post.image %}{% if post_image %}{% unless post_image contains "://" %}{% assign post_image = post_image | absolute_url %}{% endunless %}{% endif %}</entry>{% endfor %}</feed>

{% if page.xsl %} {% endif %} {% assign collections = site.collections | where_exp:'collection','collection.output != false' %}{% for collection in collections %}{% assign docs = collection.docs | where_exp:'doc','doc.sitemap != false' %}{% for doc in docs %} {{ doc.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if doc.last_modified_at or doc.date %}{{ doc.last_modified_at | default: doc.date | date_to_xmlschema }} {% endif %} {% endfor %}{% endfor %}{% assign pages = site.html_pages | where_exp:'doc','doc.sitemap != false' | where_exp:'doc','doc.url != "/404.html"' %}{% for page in pages %} {{ page.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if page.last_modified_at %}{{ page.last_modified_at | date_to_xmlschema }} {% endif %} {% endfor %}{% assign static_files = page.static_files | where_exp:'page','page.sitemap != false' | where_exp:'page','page.name != "404.html"' %}{% for file in static_files %} {{ file.path | replace:'/index.html','/' | absolute_url | xml_escape }} {{ file.modified_time | date_to_xmlschema }} {% endfor %}

Sitemap: {{ "sitemap.xml" | absolute_url }}

</div>

</article> </div>

Projects (Since Ph.D in NUS)

High-fidelity coupled CFD-FEM simulation on DED and LPBF

– corporation with ANSYS

Linked the high-fidelity molten pool dynamics model with the finite element solver for thermal stress simulation.

High-density dislocations in additively manufactured metals

– corporation with Shanghai Jiaotong University

Demonstrated that thermal stresses are the origin of high-density dislocations in additively manufactured metals using the coupled CFD-FEM simulation.

Physically informed data-driven prognostic model for the temperature prediction in AM

– corporation with Singapore A*STAR

High accuracy and significantly faster computation speed for the track-scale AM modeling based on the data-driven prediction (CNN, GPR, QR) of the isotherms and the isotherm-reconstructed temperature attribution on FEM model.

Pattern-oriented Strain Attribution in Part-scale Modeling of Additive Manufacturing

– corporation with Singapore A*STAR

Efficient large-scale AM modeling approaches with sound physical basis, where the layer-wise element progressive activation is applied with base strain pattern attributed onto the sample layers.

From 2022 to 2023

Hybrid Autonomous Manufacturing, Moving from Evolution to Revolution (HAMMER)

– corporation with The OHIO State University and so on.

High-fidelity English wheel simulation: distortion analysis of the sheet metal under rolling of two wheel of different size and curvature.

Micro-Casting of Titanium Alloy in Self-boiling Molds

Heat transfer analysis of liquid materials in multiple self-boiling molds for micro-casting.

DED on sheet metal forming

– corporation with Nissan

Deformation prediction using bulking analysis under the residual stress pattern achieved by track-scale DED simulation.

From 2024 to 2025

(AID4Greenest) - AI powered characterization and modelling for green steel technology

Funded by European Union

– corporation with Fraunhofer, IWM and IMDEA et al.

Fortran-based self-developed Lagamine coding platform for implementation of H. Morch visco-plasticity law & Development of the mean field creep model on Gitlab using Python.

    </div>     -->

    <!--  -->

From 2018 to 2022

High-fidelity coupled CFD-FEM simulation on DED and LPBF

– corporation with ANSYS

Linked the high-fidelity molten pool dynamics model with the finite element solver for thermal stress simulation.

High-density dislocations in additively manufactured metals

– corporation with Shanghai Jiaotong University

Demonstrated that thermal stresses are the origin of high-density dislocations in additively manufactured metals using the coupled CFD-FEM simulation.

Physically informed data-driven prognostic model for the temperature prediction in AM

– corporation with Singapore A*STAR

High accuracy and significantly faster computation speed for the track-scale AM modeling based on the data-driven prediction (CNN, GPR, QR) of the isotherms and the isotherm-reconstructed temperature attribution on FEM model.

Pattern-oriented Strain Attribution in Part-scale Modeling of Additive Manufacturing

– corporation with Singapore A*STAR

Efficient large-scale AM modeling approaches with sound physical basis, where the layer-wise element progressive activation is applied with base strain pattern attributed onto the sample layers.

From 2022 to 2023

Hybrid Autonomous Manufacturing, Moving from Evolution to Revolution (HAMMER)

– corporation with The OHIO State University and so on.

High-fidelity English wheel simulation: distortion analysis of the sheet metal under rolling of two wheel of different size and curvature.

Micro-Casting of Titanium Alloy in Self-boiling Molds

Heat transfer analysis of liquid materials in multiple self-boiling molds for micro-casting.

DED on sheet metal forming

– corporation with Nissan

Deformation prediction using bulking analysis under the residual stress pattern achieved by track-scale DED simulation.

From 2024 to 2025

(AID4Greenest) - AI powered characterization and modelling for green steel technology

Funded by European Union

– corporation with Fraunhofer, IWM and IMDEA et al.

Fortran-based self-developed Lagamine coding platform for implementation of H. Morch visco-plasticity law & Development of the mean field creep model on Gitlab using Python.

</article> </div>

Publications

Journal Articles


Conference


</div> -->
You can also find my articles on my Google Scholar profile.

Journal Articles


Conference


Sitemap

{% include base_path %} A list of all the posts and pages found on the site. For you robots out there, there is an [XML version]({{ base_path }}/sitemap.xml) available for digesting as well.

Pages

{% for post in site.pages %} {% include archive-single.html %} {% endfor %}

Posts

{% for post in site.posts %} {% include archive-single.html %} {% endfor %} {% capture written_label %}'None'{% endcapture %} {% for collection in site.collections %} {% unless collection.output == false or collection.label == "posts" %} {% capture label %}{{ collection.label }}{% endcapture %} {% if label != written_label %}

{{ label }}

{% capture written_label %}{{ label }}{% endcapture %} {% endif %} {% endunless %} {% for post in collection.docs %} {% unless collection.output == false or collection.label == "posts" %} {% include archive-single.html %} {% endunless %} {% endfor %} {% endfor %}

Posts by Tags

{% include base_path %} {% include group-by-array collection=site.posts field="tags" %} {% for tag in group_names %} {% assign posts = group_items[forloop.index0] %}

{{ tag }}

{% for post in posts %} {% include archive-single.html %} {% endfor %} {% endfor %}

Talk map

This map is generated from a Jupyter Notebook file in talkmap.ipynb, which mines the location fields in the .md files in _talks/.


Eduacation & Employment

2024–2025: University of Liege

  • Research Scientist/Project Leader, Urban and Environmental Engineering -Funded by European Union,
    Principal investigator – Anne Marie Habraken: anne.habraken@uliege.be

2022–2023: Northwestern University

  • Postdoc, McCormick School of Engineering, AMPL -supported by USA Vannevar Bush Faculty Fellowship award,
    Principal investigator – Jian Cao: jcao@northwestern.edu

2018–2022: National University of Singapore


2011-2018: Huazhong University of Science & Technology

  • 2015-2018: Master of Engineering, Design & Manufacture of Ships and Marine Structure (China Graduate Scholarship)
  • 2011-2015: Bachelor of Engineering, Naval Architecture & Ocean Engineering (2012 China National Scholarship)

Teaching

{% include base_path %} {% for post in site.teaching reversed %} {% include archive-single.html %} {% endfor %}

Terms and Privacy Policy

{% include base_path %} {% include toc %} ## Privacy Policy The privacy of my visitors is extremely important. This Privacy Policy outlines the types of personal information that is received and collected and how it is used. First and foremost, I will never share your email address or any other personal information to anyone without your direct consent. ### Log Files Like many other websites, this site uses log files to help learn about when, from where, and how often traffic flows to this site. The information in these log files include: * Internet Protocol addresses (IP) * Types of browser * Internet Service Provider (ISP) * Date and time stamp * Referring and exit pages * Number of clicks All of this information is not linked to anything that is personally identifiable. ### Cookies and Web Beacons When you visit this site "convenience" cookies are stored on your computer when you submit a comment to help you log in faster to [Disqus](http://disqus.com) the next time you leave a comment. Third-party advertisers may also place and read cookies on your browser and/or use web beacons to collect information. This site has no access or control over these cookies. You should review the respective privacy policies on any and all third-party ad servers for more information regarding their practices and how to opt-out. If you wish to disable cookies, you may do so through your web browser options. Instructions for doing so can be found on the specific web browsers' websites. #### Google Analytics Google Analytics is a web analytics tool I use to help understand how visitors engage with this website. It reports website trends using cookies and web beacons without identifying individual visitors. You can read [Google Analytics Privacy Policy](http://www.google.com/analytics/learn/privacy.html).

@import "jekyll-theme-primer";

{"/about/":"https://fanchennus.github.io/","/about.html":"https://fanchennus.github.io/","/resume-json":"https://fanchennus.github.io/cv-json/","/resume":"https://fanchennus.github.io/cv/","/md/":"https://fanchennus.github.io/markdown/","/markdown.html":"https://fanchennus.github.io/markdown/","/nmp/":"https://fanchennus.github.io/non-menu-page/","/nmp.html":"https://fanchennus.github.io/non-menu-page/","/posts/":"https://fanchennus.github.io/year-archive/"}

Jupyter notebook markdown generator

# Jupyter notebook markdown generator These .ipynb files are Jupyter notebook files that convert a TSV containing structured data about talks (`talks.tsv`) or presentations (`presentations.tsv`) into individual markdown files that will be properly formatted for the academicpages template. The notebooks contain a lot of documentation about the process. The .py files are pure python that do the same things if they are executed in a terminal, they just don't have pretty documentation.

{% if page.xsl %}{% endif %}<feed xmlns="http://www.w3.org/2005/Atom" {% if site.lang %}xml:lang="{{ site.lang }}"{% endif %}>Jekyll<link href="{{ '/' | absolute_url }}" rel="alternate" type="text/html" {% if site.lang %}hreflang="{{ site.lang }}" {% endif %}/>{{ site.time | date_to_xmlschema }}{{ page.url | absolute_url | xml_escape }}{% assign title = site.title | default: site.name %}{% if page.collection != "posts" %}{% assign collection = page.collection | capitalize %}{% assign title = title | append: " | " | append: collection %}{% endif %}{% if page.category %}{% assign category = page.category | capitalize %}{% assign title = title | append: " | " | append: category %}{% endif %}{% if title %}{{ title | smartify | xml_escape }}{% endif %}{% if site.description %}{{ site.description | xml_escape }}{% endif %}{% if site.author %}{{ site.author.name | default: site.author | xml_escape }}{% if site.author.email %}{{ site.author.email | xml_escape }}{% endif %}{% if site.author.uri %}{{ site.author.uri | xml_escape }}{% endif %}{% endif %}{% if page.tags %}{% assign posts = site.tags[page.tags] %}{% else %}{% assign posts = site[page.collection] %}{% endif %}{% if page.category %}{% assign posts = posts | where: "categories", page.category %}{% endif %}{% unless site.show_drafts %}{% assign posts = posts | where_exp: "post", "post.draft != true" %}{% endunless %}{% assign posts = posts | sort: "date" | reverse %}{% assign posts_limit = site.feed.posts_limit | default: 10 %}{% for post in posts limit: posts_limit %}<entry{% if post.lang %}{{" "}}xml:lang="{{ post.lang }}"{% endif %}>{% assign post_title = post.title | smartify | strip_html | normalize_whitespace | xml_escape %}{{ post_title }} {{ post.date | date_to_xmlschema }}{{ post.last_modified_at | default: post.date | date_to_xmlschema }}{{ post.id | absolute_url | xml_escape }}{% assign excerpt_only = post.feed.excerpt_only | default: site.feed.excerpt_only %}{% unless excerpt_only %}<![CDATA[{{ post.content | strip }}]]>{% endunless %}{% assign post_author = post.author | default: post.authors[0] | default: site.author %}{% assign post_author = site.data.authors[post_author] | default: post_author %}{% assign post_author_email = post_author.email | default: nil %}{% assign post_author_uri = post_author.uri | default: nil %}{% assign post_author_name = post_author.name | default: post_author %}{{ post_author_name | default: "" | xml_escape }}{% if post_author_email %}{{ post_author_email | xml_escape }}{% endif %}{% if post_author_uri %}{{ post_author_uri | xml_escape }}{% endif %}{% if post.category %}{% elsif post.categories %}{% for category in post.categories %}{% endfor %}{% endif %}{% for tag in post.tags %}{% endfor %}{% assign post_summary = post.description | default: post.excerpt %}{% if post_summary and post_summary != empty %}<![CDATA[{{ post_summary | strip_html | normalize_whitespace }}]]>{% endif %}{% assign post_image = post.image.path | default: post.image %}{% if post_image %}{% unless post_image contains "://" %}{% assign post_image = post_image | absolute_url %}{% endunless %}{% endif %}</entry>{% endfor %}</feed>

{% if page.xsl %} {% endif %} {% assign collections = site.collections | where_exp:'collection','collection.output != false' %}{% for collection in collections %}{% assign docs = collection.docs | where_exp:'doc','doc.sitemap != false' %}{% for doc in docs %} {{ doc.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if doc.last_modified_at or doc.date %}{{ doc.last_modified_at | default: doc.date | date_to_xmlschema }} {% endif %} {% endfor %}{% endfor %}{% assign pages = site.html_pages | where_exp:'doc','doc.sitemap != false' | where_exp:'doc','doc.url != "/404.html"' %}{% for page in pages %} {{ page.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if page.last_modified_at %}{{ page.last_modified_at | date_to_xmlschema }} {% endif %} {% endfor %}{% assign static_files = page.static_files | where_exp:'page','page.sitemap != false' | where_exp:'page','page.name != "404.html"' %}{% for file in static_files %} {{ file.path | replace:'/index.html','/' | absolute_url | xml_escape }} {{ file.modified_time | date_to_xmlschema }} {% endfor %}

Sitemap: {{ "sitemap.xml" | absolute_url }}

Posts

less than 1 minute read

Reviewer for Journals

2024 Additive Manufacturing

2024 Journal of Materials Processing Tech

2023 Chinese Journal of Mechanical Engineering: Additive Manufacturing Frontiers

2022 Smart Manufacturing

MAJOR SKILLS

Chinese, English, French (A1, A1+, A2 level passed)

Software: ABAQUS (User subroutines), COMSOL Multiphysics, FLOW 3D

Programming languages: FORTRAN, Python, MATLAB

Fundings, Scholarship and Awards

2024-2025

Funded by European Union,
-in Urban and Environmental Engineering, University of Liege

2022-2023

Funded by USA Vannevar Bush Faculty Fellowship award,
-in Northwestern University

2018-2022

Singapore research scholarship,
-in National University of Singapore

Internship
-Agency for Science, Technology and Research (A*STAR) in Singapore - display board

2015-2018

“China Graduate Scholarship”,
-in Huazhong University of Science & Technology, Design & Manufacture of Ships and Marine Structure

2011-2015

“2012 China National Scholarship”,
-in department of Naval Architecture & Ocean Engineering, Huazhong University of Science & Technology

PATENTS & DISCLOSURES

2020

A Novel Inherent Strain Modelling Tool to Predict Thermal Stress and Distortion in Additive Manufacturing. ILO Ref: 2020-156. Yan Wentao, Fan Chen.

portfolio

From 2018 to 2022

High-fidelity coupled CFD-FEM simulation on DED and LPBF

– corporation with ANSYS

Linked the high-fidelity molten pool dynamics model with the finite element solver for thermal stress simulation.

High-density dislocations in additively manufactured metals

– corporation with Shanghai Jiaotong University

Demonstrated that thermal stresses are the origin of high-density dislocations in additively manufactured metals using the coupled CFD-FEM simulation.

Physically informed data-driven prognostic model for the temperature prediction in AM

– corporation with Singapore A*STAR

High accuracy and significantly faster computation speed for the track-scale AM modeling based on the data-driven prediction (CNN, GPR, QR) of the isotherms and the isotherm-reconstructed temperature attribution on FEM model.

Pattern-oriented Strain Attribution in Part-scale Modeling of Additive Manufacturing

– corporation with Singapore A*STAR

Efficient large-scale AM modeling approaches with sound physical basis, where the layer-wise element progressive activation is applied with base strain pattern attributed onto the sample layers.

From 2022 to 2023

Hybrid Autonomous Manufacturing, Moving from Evolution to Revolution (HAMMER)

– corporation with The OHIO State University and so on.

High-fidelity English wheel simulation: distortion analysis of the sheet metal under rolling of two wheel of different size and curvature.

Micro-Casting of Titanium Alloy in Self-boiling Molds

Heat transfer analysis of liquid materials in multiple self-boiling molds for micro-casting.

DED on sheet metal forming

– corporation with Nissan

Deformation prediction using bulking analysis under the residual stress pattern achieved by track-scale DED simulation.

From 2024 to 2025

(AID4Greenest) - AI powered characterization and modelling for green steel technology

Funded by European Union

– corporation with Fraunhofer, IWM and IMDEA et al.

Fortran-based self-developed Lagamine coding platform for implementation of H. Morch visco-plasticity law & Development of the mean field creep model on Gitlab using Python.

publications

The origin of high-density dislocations in additively manufactured metals

Published in Materials Research Letters, 2020

The origin of dense dislocations in many additively manufactured metals remains a mystery. We here employed pure Cu as a prototype and fabricated the very challenging high-purity (>99.9%) bulk Cu by laser powder-bed-fusion (L-PBF) technique. We found that high-density dislocations were present in the as-built samples and these high-density dislocations were introduced on the fly during the L-PBF process. A newly developed multi-physics modeling was further employed to interpret the origin of these pre-existing dislocations, demonstrating that the compression-tension cycles rendered by the localized heating/cooling heterogeneity upon laser scanning are responsible for the residual high-density dislocations.

Doi:https://doi.org/10.1080/21663831.2020.1751739

Download Paper

High-fidelity modelling of thermal stress for additive manufacturing by linking thermal-fluid and mechanical models

Published in Materials & Design, 2020

The prediction of thermal stress and distortion is a prerequisite for high-quality additive manufacturing (AM). The widely applied thermo-mechanical model using the finite element method (FEM) leaves much to be improved due to their oversimplifications on material deposition, molten pool flow, etc. In this study, a high-fidelity modelling approach by linking the thermal-fluid (computational fluid dynamics, CFD) and mechanical models (named as CFD-FEM model) is developed to predict the thermal stress for AM taking into account the influences of thermal-fluid flow. Profiting from the precise temperature profiles and melt track geometry extracted from the thermal-fluid model as well as the remarkable flexibility of the quiet element method of FEM, this work aims at simulating the thermal stress distribution by involving physical changes in the AM process, e.g., melting and solidification of powder particles, molten pool evolution and inter-track inter-layer re-melting. Unlike the conventional thermo-mechanical analysis, in this approach, thermal stress calculation is purely based on a mechanical model where the thermal loads are applied by using a linear interpolation function to spatially and temporally map the temperature values from the thermal-fluid model’s cell centres into the FEM element nodes. With the proposed approach, the thermal stress evolution in the AM process of single track, multiple tracks and multiple layers are simulated, where the rough surfaces and internal voids can be well incorporated. Moreover, a conventional thermo-mechanical simulation of two tracks with predefined track geometry is conducted for cross comparison. Finally, the simulated thermal stress distribution can rationally explain the crack distribution observed in the experiments.

Doi:https://doi.org/10.1016/j.matdes.2020.109185

Download Paper

Enhanced strengthening and hardening via self-stabilized dislocation network in additively manufactured metals

Published in Materials Today, 2021

The advent of additive manufacturing (AM) offers the possibility of creating high-performance metallic materials with unique microstructure. Ultrafine dislocation cell structure in AM metals is believed to play a critical role in strengthening and hardening. However, its behavior is typically considered to be associated with alloying elements. Here we report that dislocations in AM metallic materials are self-stabilized even without the alloying effect. The heating–cooling cycles that are inherent to laser power-bed-fusion processes can stabilize dislocation network in situ by forming Lomer locks and a complex dislocation network. This unique dislocation assembly blocks and accumulates dislocations for strengthening and steady strain hardening, thereby rendering better material strength but several folds improvements in uniform tensile elongation compared to those made by traditional methods. The principles of dislocation manipulation and self-assembly are applicable to metals/alloys obtained by conventional routes in turn, through a simple post-cyclic deformation processing that mimics the micromechanics of AM. This work demonstrates the capability of AM to locally tune dislocation structures and achieve high-performance metallic materials.

Doi:https://doi.org/10.1016/j.mattod.2021.06.002

Download Paper

Crystal plasticity model of residual stress in additive manufacturing using the element elimination and reactivation method

Published in Computational Mechanics, 2021

Selective laser melting is receiving increasing interest as an additive manufacturing technique. Residual stresses induced by the large temperature gradients and inhomogeneous cooling process can favour the generation of cracks. In this work, a crystal plasticity finite element model is developed to simulate the formation of residual stresses and to understand the correlation between plastic deformation, grain orientation and residual stresses in the additive manufacturing process. The temperature profile and grain structure from thermal-fluid flow and grain growth simulations are implemented into the crystal plasticity model. An element elimination and reactivation method is proposed to model the melting and solidification and to reinitialize state variables, such as the plastic deformation, in the reactivated elements. The accuracy of this method is judged against previous method based on the stiffness degradation of liquid regions by comparing the plastic deformation as a function of time induced by thermal stresses. The method is used to investigate residual stresses parallel and perpendicular to the laser scan direction, and the correlation with the maximum Schmid factor of the grains along those directions. The magnitude of the residual stress can be predicted as a function of the depth, grain orientation and position with respect to the molten pool. The simulation results are directly comparable to X-ray diffraction experiments and stress–strain curves.

Doi:https://doi.org/10.1007/s00466-021-02116-z

Download Paper

Data-driven prognostic model for temperature field in additive manufacturing based on the high-fidelity thermal-fluid flow simulation

Published in Computer Methods in Applied Mechanics and Engineering, 2022

The process-structure–property relationship for additive manufacturing (AM) is typically derived starting from the temperature profile which can be achieved by the meso-scale thermal-fluid flow simulation with huge computational cost. We propose a data-driven prognostic approach with specialized physical constraints to rapidly predict the temperature profiles. The dataset is constructed from the physics-based thermal-fluid flow simulation results under different manufacturing parameters. The temperature field around the molten pool region is statistically characterized by the function parameters of the individual isotherms, which are essentially the output of the data-driven model based on the input manufacturing parameters, while the temperature field is reconstructed using the interpolation approach based on the predicted isotherms. The data-driven predicted temperature profiles are validated against those from the thermal-fluid flow simulations, and then further applied in the thermal stress and grain growth simulations, of which the results are compared with those using the temperature profile directly from thermal-fluid flow simulations. The results demonstrate that our data-driven approach is highly feasible in predicting the geometry features of the isotherms and temperature profiles around the molten pool regions.

Doi:https://doi.org/10.1016/j.cma.2022.114652

Download Paper

Metallic 4D Printing of Laser Stimulation

Published in Advanced Science, 2023

4D printing of metallic shape-morphing systems can be applied in many fields, including aerospace, smart manufacturing, naval equipment, and biomedical engineering. The existing forming materials for metallic 4D printing are still very limited except shape memory alloys. Herein, a 4D printing method to endow non-shape-memory metallic materials with active properties is presented, which could overcome the shape-forming limitation of traditional material processing technologies. The thermal stress spatial control of 316L stainless steel forming parts is achieved by programming the processing parameters during a laser powder bed fusion (LPBF) process. The printed parts can realize the shape changing of selected areas during or after forming process owing to stress release generated. It is demonstrated that complex metallic shape-morphing structures can be manufactured by this method. The principles of printing parameters programmed and thermal stress pre-set are also applicable to other thermoforming materials and additive manufacturing processes, which can expand not only the materials used for 4D printing but also the applications of 4D printing technologies.

Doi:https://doi.org/10.1002/advs.202206486

Download Paper

Factorial design analytics on effects of material parameter uncertainties in multiphysics modeling of additive manufacturing

Published in npj Computational Materials, 2023

A bottleneck in Laser Powder Bed Fusion (L-PBF) metal additive manufacturing (AM) is the quality inconsistency of its products. To address this issue without costly experimentation, computational multi-physics modeling has been used, but the effectiveness is limited by parameter uncertainties and their interactions. We propose a full factorial design and variable selection approach for the analytics of main and interaction effects arising from material parameter uncertainties in multi-physics models. Data is collected from high-fidelity thermal-fluid simulations based on a 2-level full factorial design for 5 selected material parameters. Crucial physical phenomena of the L-PBF process are analyzed to extract physics-based domain knowledge, which are used to establish a validation checkpoint for our study. Initial data visualization with half-normal probability plots, interaction plots and standard deviation plots, is used to assess if the checkpoint is being met. We then apply the combination of best subset selection and the LASSO method on multiple linear regression models for comprehensive variable selection. Analytics yield statistically and phyiscally validated findings with practical implications, emphasizing the importance of parameter interactions under uncertainty, and their relation to the underlying physics of L-PBF.

Doi:https://doi.org/10.1038/s41524-023-01004-9

Download Paper

Biomimetic 4D Printing Catapult: From Biological Prototype to Practical Implementation

Published in Advanced Functional Materials, 2023

4D printing technologies are currently suffering from the inability to produce rapid motions, which limit their applications that require fast shape transformation such as rapid unlocking and deployment of aerospace equipment. Herein, inspired by the shooting mechanisms of Viola verecunda fruit for seed dispersal, the 4D-printed biomimetic catapult is developed. Based on the structure change characteristics of gradient fan-shaped cells of the fruit pods during seed ejection, the biomimetic smart catapult is processed via the programming of spatial distribution of heterogeneous materials with various storage modulus enabled by additive manufacturing. This catapult can achieve high-speed ejection with the logically stimuli of external force, temperature, light, humidity, or electricity. The proposed biomimetic 4D printing strategy has broken through the limitations in motion speed, which helps fully unleash the potential of 4D printing.

Doi:https://doi.org/10.1002/adfm.202301286

Download Paper

Data-driven prediction of keyhole features in metal additive manufacturing based on physics-based simulation

Published in Journal of Intelligent Manufacturing, 2023

The defect formation is closely related to molten pool and keyhole features in metal additive manufacturing. Experimentation and physics-based simulation methods to capture the molten pool and keyhole features are expensive and time-consuming. A data-driven method is proposed in this work to efficiently predict the molten pool and keyhole features characterized by a series of fitting curves under given manufacturing parameters, instead of simply predicting the molten pool and keyhole sizes. The database consists of simulation cases with the high-fidelity thermal-fluid flow model. Molten pool melting regime, keyhole stability and keyhole type are recognized with the neural net pattern recognition. With the Gaussian process regression model, the keyhole dimensions are predicted and the keyhole contour is reconstructed. The comparison between predicted data and physics-based simulation results demonstrates the feasibility and accuracy of our data-driven model. Meanwhile, the predicted results can guide the selection of manufacturing parameters in actual production, and are also helpful to the further study of pores in additive manufacturing in academic research.

Doi:https://doi.org/10.1007/s10845-023-02157-6

Download Paper

A creep survey: from creep mechanism to macroscopic and microscopic models.

Published in METALLIC MICROSTRUCTURES EUROPEAN LECTURES ONLINE, 2024

At high temperature, metallic material creep is difficult to avoid. The understanding of the creep mechanisms helps metallurgists to design optimal alloy compositions and the prediction of a component life is a key input to manage safe maintenance and to define operational cost of any production line (solar plant parts, heat exchanger, any turbine parts loaded at high temperature…).

📥 Download slides (PPTX)

On the feasibility of an integrated English wheel system

Published in Journal of Manufacturing Systems, 2024

The English wheel is a highly flexible traditional metalworking tool that allows skilled craftsmen to form compound curves on sheet metal panels. Historically, geometric accuracy and repeatability of formed panels using the English wheel have been tied to the operator leading to limited industrial adoption. This paper presents a novel framework for an integrated English wheeling system that leverages robot forming with a newly developed adaptable gripper/end-effector, metrology for deformed geometry tracking and tolerance measurements, integrated sensors for real-time forming force measurements and control, computational modeling for tracking pattern/toolpath generation, and virtual reality (VR) for seamless integration. Sample panels are formed using the integrated system revealing new insights on the forming forces during the process – highlighting why an integrated system is desirable. Concepts from the proposed framework can be applied to other robotic forming processes and its merit is discussed under current digital manufacturing and industry 4.0 literature.

Doi:https://doi.org/10.1016/j.jmsy.2024.04.022

Download Paper

Efficient Representative Volume Element of a Matrix–Precipitate Microstructure—Application on AlSi10Mg Alloy

Published in Metals, 2024

In finite element models (FEMs), two- or three-dimensional Representative Volume Elements (RVEs) based on a statistical distribution of particles in a matrix can predict mechanical material properties. This article studies an alternative to 3D RVEs with a 2.5D RVE approach defined by a one-plane layer of 3D elements to model the material behavior. This 2.5D RVE relies on springs applied in the out-of-plane direction to constrain the two lateral deformations to be compatible, with the goal of achieving the isotropy of the studied material. The method is experimentally validated by the prediction of the tensile stress–strain curve of a bi-phasic microstructure of the AlSi10Mg alloy. Produced by additive manufacturing, the sample material becomes isotropic after friction stir processing post treatment. If a classical plane strain 2D RVE simulation is clearly too stiff compared to the experiment, the predictions of the stress–strain curves based on 2.5D RVE, 2D RVE with no transversal constraint (called 2D free RVE), and 3D RVE simulations are close to the experiments. The local stress fields within a 2.5D RVE present an interesting similarity with 3D RVE local fields, but differences with the 2D free RVE local results. Since a 2.5D RVE simplifies one spatial dimension, the simulations with this model are faster than the 3D RVE (factor 2580 in CPU or taking into account an optimal parallel computation, a factor 417 in real time). Such a discrepancy can affect the FEM2 multi-scale simulations or the time required to train a neural network, enhancing the interest in a 2.5D RVE model.

Doi:https://doi.org/10.3390/met14111244

Download Paper

Review of the Microstructural Impact on Creep Mechanisms and Performance for Laser Powder Bed Fusion Inconel 718

Published in Materials, 2025

Inconel 718 (IN718) is a polycrystalline nickel-based superalloy and one of the most widely used materials in the aerospace industry owing to its excellent mechanical performances at high temperatures, including creep resistance. Interest in additively manufactured components in aerospace is greatly increasing due to their ability to reduce material consumption, to manufacture complex parts, and to produce out-of-equilibrium microstructures, which can be beneficial for mechanical behavior. IN718’s properties are, however, very sensitive to microstructural features, which strongly depend on the manufacturing process and subsequent heat treatments. Additive manufacturing and, more specifically, Laser Powder Bed Fusion (LPBF) induces very high thermal gradients and anisotropic features due to its inherently directional nature, which largely defines the microstructure of the alloy. Hence, defining appropriate manufacturing parameters and heat treatments is critical to obtain appropriate mechanical behavior. This review aims to present the main microstructural features of IN718 produced by LPBF, the creep mechanisms taking place, the optimal microstructure for creep strength, and the most efficient heat treatments to yield such an optimized microstructure.

Doi:https://doi.org/10.3390/ma18020276

Download Paper

Acceleration of powder-bed-size thermal simulation considering scanning-path-scale through a pseudo-layer-wise equivalent heat flux model

Published in Journal of Manufacturing Processes, 2025

Part-scale modeling of the temperature field in metal powder bed additive manufacturing (AM) is critical for predicting mechanical properties of the AM-ed parts. Track-by-track heat transfer analysis is impractical due to the extensive number of layers and the intricate design of scan strategies for the heat source, particularly in the fabrication of specimen clusters or parts with complex geometry, where multiple regions in the powder bed are manufactured simultaneously. Many part-scale modeling approaches only focus on the thermal behavior of a single part without considering the thermal interaction from the surrounding parts to reduce computational cost. However, experimental observations have revealed that the temperature distribution along the building direction can vary among samples with identical local geometries. This discrepancy can be attributed to the heating effects from neighboring samples. In this study, we propose an integrated part-scale modeling framework that combines layer-wise equivalent heat flux attribution with layer-wise element activation. Before the layer-wise attribution, we justify the equivalent heat flux of individual layers through high-fidelity track-scale simulations. Unlike traditional heat transfer analysis for single parts, our analysis incorporates heat conduction effects through the powder bed between different fusion zones. The temperature data obtained from each equivalent layer using our approach shows consistency when compared to the experimental observations. This research presents an efficient, physically grounded method for modeling the thermal behavior of large AM specimen clusters, enhancing our understanding of temperature field evolution in AM and supporting the design of optimized scanning path strategies for large samples.

Doi:https://doi.org/10.1016/j.jmapro.2024.12.057

Download Paper

Exceptional strength paired with increased cold cracking susceptibility in laser powder bed fusion of a Mg-RE alloy

Published in Journal of Materials Science & Technology, 2025

Additive manufacturing (AM) of high-strength metallic alloys frequently encounters detrimental distortion and cracking, attributed to the accumulation of thermal stresses. These issues significantly impede the practical application of as-printed components. This study examines the Mg-15Gd-1Zn-0.4Zr (GZ151K, wt.%) alloy, a prototypical high-strength casting Mg-RE alloy, fabricated through laser powder bed fusion (LPBF). Despite achieving ultra-high strength, the GZ151K alloy concurrently exhibits a pronounced cold-cracking susceptibility. The as-printed GZ151K alloy consists of almost fully fine equiaxed grains with an average grain size of merely 2.87 µm. Subsequent direct aging (T5) heat treatment induces the formation of dense prismatic β’ precipitates. Consequently, the LPBF-T5 GZ151K alloy manifests an ultra-high yield strength of 405 MPa, surpassing all previously reported yield strengths for Mg alloys fabricated via LPBF and even exceeding that of its extrusion-T5 counterpart. Interestingly, as-printed GZ151K samples with a build height of 2 mm exhibit no cracking, whereas samples with build heights ranging from 4 to 18 mm demonstrate severe cold cracking. Thermal stress simulation also suggests that the cold cracking susceptibility increases significantly with increasing build height. The combination of high thermal stress and low ductility in the as-printed GZ151K alloy culminates in a high cold cracking susceptibility. This study offers novel insights into the intricate issue of cold cracking in the LPBF process of high-strength Mg alloys, highlighting the critical balance between achieving high strength and mitigating cold cracking susceptibility.

Doi:https://doi.org/10.1016/j.jmst.2024.07.005

Download Paper

Directed energy deposition on sheet metal forming for reinforcement structures

Published in Journal of Manufacturing Processes, 2025

While incremental forming processes can inexpensively create complex geometries from sheet metal, they struggle with adding sharp out of plane features for stiffness enhancement. With the implementation of directed-energy deposition (DED), an additive manufacturing process that locally deposits metal onto metallic substrates, reinforcement structures can be formed on the sheet metal. Furthermore, a design engineer may take advantage of the high residual stresses of DED to directly alter shapes in the substrate metal sheet. This hybrid forming-deposition process, as well as the application of local reinforcement, requires a good understanding of the process mechanism to predict expected shapes and minimize undesired deformations. In this work, numerical approaches are applied to evaluate heat transfer, thermal stress, and buckling of thin sheets under the stresses of deposition. These results are compared to analogous experiments conducted on an open-architecture laser-powder DED machine. The results of the thermal-mechanical analysis resemble the deformation trends observed in the experiments. However, the small-displacement formulation in the simulation used for ease of convergence does not fully capture the magnitude of the observed deformations. Nevertheless, the simulations effectively illustrate the effect of different scan strategies on the final deformed shape of the sheet metal.

Doi:https://doi.org/10.1016/j.jmapro.2025.03.120

Download Paper

talks

teaching

From 2018 to 2022

Undergraduate course, Department of Mechanical Engineering, National University of Singapore

2018-2022, Department of Mechanical Engineering, National University of Singapore:

-ME1102 - Engineering Principles and Practice I

-ME2112 - Strength of Materials

-ME2115 - Mechanics of Machines: Vibration Lab


From 2022 to 2025

Student superviosion, , 2022

2018-2022, Department of Mechanical Engineering, National University of Singapore:

-Paper, software and coding supervision assistance for NUS Ph.D, Master and undergraduate students


2022-2023, Department of Mechanical Engineering, Northwestern University, USA:

-Software and coding supervision assistance for Ph.D students