From daee5c7c3670ea6faed1add304aae0ce81521ceb Mon Sep 17 00:00:00 2001 From: anandamarsh Date: Thu, 5 Oct 2023 11:25:32 -0700 Subject: [PATCH] Refactored now (#29) * redy to recover Terminal dir * as Mike asked ... commit what you have :) * fir anyone to have a look - DONT RUN * works !!! --- {icon => housekeeping}/Prompt.iconset.zip | Bin {icon => public}/Prompt.icns | Bin {static => public}/bulma-0.9.4.min.css | 0 {static => public}/index-dev.html | 2 +- {static => public}/index.html | 2 +- src/{main/Main.tsx => app/app.tsx} | 25 +- .../MartianMono-VariableFont_wdth,wght.ttf | Bin src/{ => app}/assets/icons/add.svg | 0 src/{ => app}/assets/icons/apps.svg | 0 src/{ => app}/assets/icons/chevron_left.svg | 0 src/{ => app}/assets/icons/connections.svg | 0 src/{ => app}/assets/icons/discord.svg | 0 src/{ => app}/assets/icons/exec.svg | 0 src/{ => app}/assets/icons/favourites.svg | 0 src/{ => app}/assets/icons/folder.svg | 0 src/{ => app}/assets/icons/help.svg | 0 src/{ => app}/assets/icons/history.svg | 0 src/{ => app}/assets/icons/minus.svg | 0 src/{ => app}/assets/icons/pin.svg | 0 src/{ => app}/assets/icons/plus.svg | 0 src/{ => app}/assets/icons/settings.svg | 0 src/{ => app}/assets/icons/tab/actions.svg | 0 src/{ => app}/assets/icons/tab/sparkle.svg | 0 src/{ => app}/assets/icons/three_dots.svg | 0 src/{ => app}/assets/icons/tick.svg | 0 src/{ => app}/assets/icons/workspaces.svg | 0 src/{main => app}/bookmarks/bookmarks.less | 0 src/{main => app}/bookmarks/bookmarks.tsx | 4 +- src/{ => app}/common/common.less | 2 +- src/{ => app}/common/common.tsx | 2 +- src/{main => app/common}/modals/modals.less | 2 +- .../common/modals/modals.tsx} | 4 +- src/{main => app/common}/modals/settings.tsx | 10 +- src/app/common/prompt/prompt.less | 70 ++ .../common/prompt}/prompt.tsx | 10 +- src/{ => app/common}/themes.ts | 0 .../connections/connections.less} | 2 +- .../connections/connections.tsx} | 10 +- src/{main => app}/history/history.less | 0 src/{main => app}/history/history.tsx | 4 +- src/{main => app}/line/linecomps.tsx | 27 +- src/{main => app}/line/lines.less | 0 src/{main => app}/line/linesview.tsx | 0 src/{main => app}/line/lineutil.ts | 0 .../line/renderer/basicrenderer.tsx} | 10 +- src/{main => app}/sidebar/MainSideBar.tsx | 26 +- src/{main => app}/sidebar/sidebar.less | 7 +- .../workspace/cmdinput}/cmdInput.less | 0 .../workspace/cmdinput/cmdinput.tsx} | 14 +- .../workspace/cmdinput/historyinfo.tsx} | 8 +- .../workspace/cmdinput/infomsg.tsx} | 6 +- .../workspace/cmdinput/textareainput.tsx} | 4 +- src/app/workspace/screen/screenview.less | 103 +++ .../workspace/screen/screenview.tsx} | 179 +--- .../Screen => app/workspace/screen}/tabs.less | 0 src/app/workspace/screen/tabs.tsx | 193 ++++ .../workspace/workspace.less} | 0 .../workspace/workspaceview.tsx} | 13 +- src/{ => electron}/emain.ts | 8 +- src/{ => electron}/preload.js | 0 src/index.less | 102 +-- src/index.ts | 13 +- src/{ => model}/model.ts | 12 +- src/{ => model}/ws.ts | 2 +- src/plugins/code/index.tsx | 4 +- src/plugins/markdown.tsx | 2 +- src/plugins/mustache.tsx | 2 +- src/plugins/openai.tsx | 4 +- src/plugins/renderer/basicrenderer.tsx | 296 ++++++ .../renderer/incrementalrenderer.tsx} | 6 +- src/{common => plugins}/terminal/Terminal.tsx | 5 +- src/{common => plugins}/terminal/term.ts | 2 +- src/plugins/terminal/terminal.less | 63 ++ .../terminal/xterm.less} | 2 - .../terminal => plugins/util}/ptydata.ts | 0 src/terminal/term.ts | 364 -------- src/terminal/terminal.less | 195 ---- src/webshare/webshare-client-view.tsx | 178 ---- src/webshare/webshare-elems.tsx | 859 ------------------ src/webshare/webshare-model.ts | 679 -------------- src/webshare/webshare-ws.ts | 188 ---- src/webshare/webshare.less | 164 ---- src/webshare/webshare.ts | 38 - static/PromptIcon.icns | Bin 72202 -> 0 bytes webpack.electron.js | 4 +- webshare/static/bulma-0.9.4.min.css | 1 - webshare/static/favicon.ico | Bin 15406 -> 0 bytes .../static/fontawesome/css/brands.min.css | 6 - .../fontawesome/css/fontawesome.min.css | 9 - .../fontawesome/css/sharp-regular.min.css | 6 - .../fontawesome/css/sharp-solid.min.css | 6 - webshare/static/fontawesome/css/solid.min.css | 6 - .../fontawesome/webfonts/fa-brands-400.woff2 | Bin 109100 -> 0 bytes .../webfonts/fa-sharp-regular-400.woff2 | Bin 324844 -> 0 bytes .../webfonts/fa-sharp-solid-900.woff2 | Bin 253316 -> 0 bytes .../fontawesome/webfonts/fa-solid-900.woff2 | Bin 320532 -> 0 bytes .../fonts/fontawesome-webfont-4.7.woff2 | Bin 77160 -> 0 bytes .../fonts/jetbrains-mono-v13-latin-200.woff | Bin 26636 -> 0 bytes .../fonts/jetbrains-mono-v13-latin-200.woff2 | Bin 21012 -> 0 bytes .../fonts/jetbrains-mono-v13-latin-700.woff | Bin 26760 -> 0 bytes .../fonts/jetbrains-mono-v13-latin-700.woff2 | Bin 21080 -> 0 bytes .../jetbrains-mono-v13-latin-regular.woff | Bin 25940 -> 0 bytes .../jetbrains-mono-v13-latin-regular.woff2 | Bin 20388 -> 0 bytes webshare/static/index-dev.html | 17 - webshare/static/index.html | 17 - webshare/static/xterm.css | 191 ---- 106 files changed, 851 insertions(+), 3339 deletions(-) rename {icon => housekeeping}/Prompt.iconset.zip (100%) rename {icon => public}/Prompt.icns (100%) rename {static => public}/bulma-0.9.4.min.css (100%) rename {static => public}/index-dev.html (85%) rename {static => public}/index.html (84%) rename src/{main/Main.tsx => app/app.tsx} (90%) rename src/{ => app/assets}/fonts/MartianMono-VariableFont_wdth,wght.ttf (100%) rename src/{ => app}/assets/icons/add.svg (100%) rename src/{ => app}/assets/icons/apps.svg (100%) rename src/{ => app}/assets/icons/chevron_left.svg (100%) rename src/{ => app}/assets/icons/connections.svg (100%) rename src/{ => app}/assets/icons/discord.svg (100%) rename src/{ => app}/assets/icons/exec.svg (100%) rename src/{ => app}/assets/icons/favourites.svg (100%) rename src/{ => app}/assets/icons/folder.svg (100%) rename src/{ => app}/assets/icons/help.svg (100%) rename src/{ => app}/assets/icons/history.svg (100%) rename src/{ => app}/assets/icons/minus.svg (100%) rename src/{ => app}/assets/icons/pin.svg (100%) rename src/{ => app}/assets/icons/plus.svg (100%) rename src/{ => app}/assets/icons/settings.svg (100%) rename src/{ => app}/assets/icons/tab/actions.svg (100%) rename src/{ => app}/assets/icons/tab/sparkle.svg (100%) rename src/{ => app}/assets/icons/three_dots.svg (100%) rename src/{ => app}/assets/icons/tick.svg (100%) rename src/{ => app}/assets/icons/workspaces.svg (100%) rename src/{main => app}/bookmarks/bookmarks.less (100%) rename src/{main => app}/bookmarks/bookmarks.tsx (98%) rename src/{ => app}/common/common.less (99%) rename src/{ => app}/common/common.tsx (99%) rename src/{main => app/common}/modals/modals.less (99%) rename src/{main/modals/Modals.tsx => app/common/modals/modals.tsx} (99%) rename src/{main => app/common}/modals/settings.tsx (99%) create mode 100644 src/app/common/prompt/prompt.less rename src/{terminal => app/common/prompt}/prompt.tsx (95%) rename src/{ => app/common}/themes.ts (100%) rename src/{remotes/remotes.less => app/connections/connections.less} (99%) rename src/{remotes/remotes.tsx => app/connections/connections.tsx} (99%) rename src/{main => app}/history/history.less (100%) rename src/{main => app}/history/history.tsx (99%) rename src/{main => app}/line/linecomps.tsx (97%) rename src/{main => app}/line/lines.less (100%) rename src/{main => app}/line/linesview.tsx (100%) rename src/{main => app}/line/lineutil.ts (100%) rename src/{main/line/renderer/simplerenderer.tsx => app/line/renderer/basicrenderer.tsx} (97%) rename src/{main => app}/sidebar/MainSideBar.tsx (89%) rename src/{main => app}/sidebar/sidebar.less (98%) rename src/{main/sessionview/CmdWindow => app/workspace/cmdinput}/cmdInput.less (100%) rename src/{main/sessionview/CmdWindow/CmdInput.tsx => app/workspace/cmdinput/cmdinput.tsx} (95%) rename src/{main/sessionview/HistoryInfo.tsx => app/workspace/cmdinput/historyinfo.tsx} (97%) rename src/{main/sessionview/InfoMsg.tsx => app/workspace/cmdinput/infomsg.tsx} (97%) rename src/{main/sessionview/CmdWindow/TextareaInput.tsx => app/workspace/cmdinput/textareainput.tsx} (99%) create mode 100644 src/app/workspace/screen/screenview.less rename src/{main/sessionview/Screen/ScreenView.tsx => app/workspace/screen/screenview.tsx} (59%) rename src/{main/sessionview/Screen => app/workspace/screen}/tabs.less (100%) create mode 100644 src/app/workspace/screen/tabs.tsx rename src/{main/sessionview/sessionview.less => app/workspace/workspace.less} (100%) rename src/{main/sessionview/SessionView.tsx => app/workspace/workspaceview.tsx} (79%) rename src/{ => electron}/emain.ts (99%) rename src/{ => electron}/preload.js (100%) rename src/{ => model}/model.ts (99%) rename src/{ => model}/ws.ts (99%) create mode 100644 src/plugins/renderer/basicrenderer.tsx rename src/{main/line/renderer/fullrenderer.tsx => plugins/renderer/incrementalrenderer.tsx} (95%) rename src/{common => plugins}/terminal/Terminal.tsx (97%) rename src/{common => plugins}/terminal/term.ts (99%) create mode 100644 src/plugins/terminal/terminal.less rename src/{common/terminal/terminal.less => plugins/terminal/xterm.less} (99%) rename src/{common/terminal => plugins/util}/ptydata.ts (100%) delete mode 100644 src/terminal/term.ts delete mode 100644 src/terminal/terminal.less delete mode 100644 src/webshare/webshare-client-view.tsx delete mode 100644 src/webshare/webshare-elems.tsx delete mode 100644 src/webshare/webshare-model.ts delete mode 100644 src/webshare/webshare-ws.ts delete mode 100644 src/webshare/webshare.less delete mode 100644 src/webshare/webshare.ts delete mode 100644 static/PromptIcon.icns delete mode 100644 webshare/static/bulma-0.9.4.min.css delete mode 100644 webshare/static/favicon.ico delete mode 100644 webshare/static/fontawesome/css/brands.min.css delete mode 100644 webshare/static/fontawesome/css/fontawesome.min.css delete mode 100644 webshare/static/fontawesome/css/sharp-regular.min.css delete mode 100644 webshare/static/fontawesome/css/sharp-solid.min.css delete mode 100644 webshare/static/fontawesome/css/solid.min.css delete mode 100644 webshare/static/fontawesome/webfonts/fa-brands-400.woff2 delete mode 100644 webshare/static/fontawesome/webfonts/fa-sharp-regular-400.woff2 delete mode 100644 webshare/static/fontawesome/webfonts/fa-sharp-solid-900.woff2 delete mode 100644 webshare/static/fontawesome/webfonts/fa-solid-900.woff2 delete mode 100644 webshare/static/fonts/fontawesome-webfont-4.7.woff2 delete mode 100644 webshare/static/fonts/jetbrains-mono-v13-latin-200.woff delete mode 100644 webshare/static/fonts/jetbrains-mono-v13-latin-200.woff2 delete mode 100644 webshare/static/fonts/jetbrains-mono-v13-latin-700.woff delete mode 100644 webshare/static/fonts/jetbrains-mono-v13-latin-700.woff2 delete mode 100644 webshare/static/fonts/jetbrains-mono-v13-latin-regular.woff delete mode 100644 webshare/static/fonts/jetbrains-mono-v13-latin-regular.woff2 delete mode 100644 webshare/static/index-dev.html delete mode 100644 webshare/static/index.html delete mode 100644 webshare/static/xterm.css diff --git a/icon/Prompt.iconset.zip b/housekeeping/Prompt.iconset.zip similarity index 100% rename from icon/Prompt.iconset.zip rename to housekeeping/Prompt.iconset.zip diff --git a/icon/Prompt.icns b/public/Prompt.icns similarity index 100% rename from icon/Prompt.icns rename to public/Prompt.icns diff --git a/static/bulma-0.9.4.min.css b/public/bulma-0.9.4.min.css similarity index 100% rename from static/bulma-0.9.4.min.css rename to public/bulma-0.9.4.min.css diff --git a/static/index-dev.html b/public/index-dev.html similarity index 85% rename from static/index-dev.html rename to public/index-dev.html index 151e9711..1c7b8d87 100644 --- a/static/index-dev.html +++ b/public/index-dev.html @@ -4,7 +4,7 @@ - + diff --git a/static/index.html b/public/index.html similarity index 84% rename from static/index.html rename to public/index.html index 2c321bd2..9c5a0f76 100644 --- a/static/index.html +++ b/public/index.html @@ -4,7 +4,7 @@ - + diff --git a/src/main/Main.tsx b/src/app/app.tsx similarity index 90% rename from src/main/Main.tsx rename to src/app/app.tsx index ee397d78..e2dd4950 100644 --- a/src/main/Main.tsx +++ b/src/app/app.tsx @@ -6,17 +6,21 @@ import { If } from "tsx-control-statements/components"; import dayjs from "dayjs"; import type { ContextMenuOpts } from "../types/types"; import localizedFormat from "dayjs/plugin/localizedFormat"; -import { GlobalModel } from "../model"; +import { GlobalModel } from "../model/model"; import { isBlank } from "../util/util"; import { BookmarksView } from "./bookmarks/bookmarks"; -import { WebShareView } from "../webshare/webshare-client-view"; import { HistoryView } from "./history/history"; -import { ScreenSettingsModal, SessionSettingsModal, LineSettingsModal, ClientSettingsModal } from "./modals/settings"; -import { RemotesModal } from "../remotes/remotes"; -import { TosModal } from "./modals/Modals"; -import { SessionView } from "./sessionview/SessionView"; +import { + ScreenSettingsModal, + SessionSettingsModal, + LineSettingsModal, + ClientSettingsModal, +} from "./common/modals/settings"; +import { RemotesModal } from "./connections/connections"; +import { TosModal } from "./common/modals/modals"; +import { WorkspaceView } from "../app/workspace/workspaceview"; import { MainSideBar } from "./sidebar/MainSideBar"; -import { DisconnectedModal, ClientStopModal, AlertModal, WelcomeModal } from "./modals/Modals"; +import { DisconnectedModal, ClientStopModal, AlertModal, WelcomeModal } from "./common/modals/modals"; import "../index.less"; dayjs.extend(localizedFormat); @@ -24,7 +28,7 @@ dayjs.extend(localizedFormat); type OV = mobx.IObservableValue; @mobxReact.observer -class Main extends React.Component<{}, {}> { +class App extends React.Component<{}, {}> { dcWait: OV = mobx.observable.box(false, { name: "dcWait" }); constructor(props: any) { @@ -102,10 +106,9 @@ class Main extends React.Component<{}, {}> {
- + -
@@ -138,4 +141,4 @@ class Main extends React.Component<{}, {}> { } } -export { Main }; +export { App }; diff --git a/src/fonts/MartianMono-VariableFont_wdth,wght.ttf b/src/app/assets/fonts/MartianMono-VariableFont_wdth,wght.ttf similarity index 100% rename from src/fonts/MartianMono-VariableFont_wdth,wght.ttf rename to src/app/assets/fonts/MartianMono-VariableFont_wdth,wght.ttf diff --git a/src/assets/icons/add.svg b/src/app/assets/icons/add.svg similarity index 100% rename from src/assets/icons/add.svg rename to src/app/assets/icons/add.svg diff --git a/src/assets/icons/apps.svg b/src/app/assets/icons/apps.svg similarity index 100% rename from src/assets/icons/apps.svg rename to src/app/assets/icons/apps.svg diff --git a/src/assets/icons/chevron_left.svg b/src/app/assets/icons/chevron_left.svg similarity index 100% rename from src/assets/icons/chevron_left.svg rename to src/app/assets/icons/chevron_left.svg diff --git a/src/assets/icons/connections.svg b/src/app/assets/icons/connections.svg similarity index 100% rename from src/assets/icons/connections.svg rename to src/app/assets/icons/connections.svg diff --git a/src/assets/icons/discord.svg b/src/app/assets/icons/discord.svg similarity index 100% rename from src/assets/icons/discord.svg rename to src/app/assets/icons/discord.svg diff --git a/src/assets/icons/exec.svg b/src/app/assets/icons/exec.svg similarity index 100% rename from src/assets/icons/exec.svg rename to src/app/assets/icons/exec.svg diff --git a/src/assets/icons/favourites.svg b/src/app/assets/icons/favourites.svg similarity index 100% rename from src/assets/icons/favourites.svg rename to src/app/assets/icons/favourites.svg diff --git a/src/assets/icons/folder.svg b/src/app/assets/icons/folder.svg similarity index 100% rename from src/assets/icons/folder.svg rename to src/app/assets/icons/folder.svg diff --git a/src/assets/icons/help.svg b/src/app/assets/icons/help.svg similarity index 100% rename from src/assets/icons/help.svg rename to src/app/assets/icons/help.svg diff --git a/src/assets/icons/history.svg b/src/app/assets/icons/history.svg similarity index 100% rename from src/assets/icons/history.svg rename to src/app/assets/icons/history.svg diff --git a/src/assets/icons/minus.svg b/src/app/assets/icons/minus.svg similarity index 100% rename from src/assets/icons/minus.svg rename to src/app/assets/icons/minus.svg diff --git a/src/assets/icons/pin.svg b/src/app/assets/icons/pin.svg similarity index 100% rename from src/assets/icons/pin.svg rename to src/app/assets/icons/pin.svg diff --git a/src/assets/icons/plus.svg b/src/app/assets/icons/plus.svg similarity index 100% rename from src/assets/icons/plus.svg rename to src/app/assets/icons/plus.svg diff --git a/src/assets/icons/settings.svg b/src/app/assets/icons/settings.svg similarity index 100% rename from src/assets/icons/settings.svg rename to src/app/assets/icons/settings.svg diff --git a/src/assets/icons/tab/actions.svg b/src/app/assets/icons/tab/actions.svg similarity index 100% rename from src/assets/icons/tab/actions.svg rename to src/app/assets/icons/tab/actions.svg diff --git a/src/assets/icons/tab/sparkle.svg b/src/app/assets/icons/tab/sparkle.svg similarity index 100% rename from src/assets/icons/tab/sparkle.svg rename to src/app/assets/icons/tab/sparkle.svg diff --git a/src/assets/icons/three_dots.svg b/src/app/assets/icons/three_dots.svg similarity index 100% rename from src/assets/icons/three_dots.svg rename to src/app/assets/icons/three_dots.svg diff --git a/src/assets/icons/tick.svg b/src/app/assets/icons/tick.svg similarity index 100% rename from src/assets/icons/tick.svg rename to src/app/assets/icons/tick.svg diff --git a/src/assets/icons/workspaces.svg b/src/app/assets/icons/workspaces.svg similarity index 100% rename from src/assets/icons/workspaces.svg rename to src/app/assets/icons/workspaces.svg diff --git a/src/main/bookmarks/bookmarks.less b/src/app/bookmarks/bookmarks.less similarity index 100% rename from src/main/bookmarks/bookmarks.less rename to src/app/bookmarks/bookmarks.less diff --git a/src/main/bookmarks/bookmarks.tsx b/src/app/bookmarks/bookmarks.tsx similarity index 98% rename from src/main/bookmarks/bookmarks.tsx rename to src/app/bookmarks/bookmarks.tsx index bce6f89b..3d8c0e58 100644 --- a/src/main/bookmarks/bookmarks.tsx +++ b/src/app/bookmarks/bookmarks.tsx @@ -5,8 +5,8 @@ import { boundMethod } from "autobind-decorator"; import { If, For } from "tsx-control-statements/components"; import cn from "classnames"; import type { BookmarkType } from "../../types/types"; -import { GlobalModel } from "../../model"; -import { CmdStrCode, Markdown } from "../../common/common"; +import { GlobalModel } from "../../model/model"; +import { CmdStrCode, Markdown } from "../common/common"; import "./bookmarks.less"; diff --git a/src/common/common.less b/src/app/common/common.less similarity index 99% rename from src/common/common.less rename to src/app/common/common.less index b079a6dd..bbe1ef87 100644 --- a/src/common/common.less +++ b/src/app/common/common.less @@ -1,4 +1,4 @@ -@import "../index.less"; +@import "../../index.less"; .info-message { position: relative; diff --git a/src/common/common.tsx b/src/app/common/common.tsx similarity index 99% rename from src/common/common.tsx rename to src/app/common/common.tsx index c0e249a6..658d2565 100644 --- a/src/common/common.tsx +++ b/src/app/common/common.tsx @@ -6,7 +6,7 @@ import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; import cn from "classnames"; import { If } from "tsx-control-statements/components"; -import type { RemoteType } from "../types/types"; +import type { RemoteType } from "../../types/types"; import "./common.less"; diff --git a/src/main/modals/modals.less b/src/app/common/modals/modals.less similarity index 99% rename from src/main/modals/modals.less rename to src/app/common/modals/modals.less index 039f710e..b3505402 100644 --- a/src/main/modals/modals.less +++ b/src/app/common/modals/modals.less @@ -1,4 +1,4 @@ -@import "../../index.less"; +@import "../../../index.less"; // modal css (also includes settings-field) diff --git a/src/main/modals/Modals.tsx b/src/app/common/modals/modals.tsx similarity index 99% rename from src/main/modals/Modals.tsx rename to src/app/common/modals/modals.tsx index 609b6564..d10c7f07 100644 --- a/src/main/modals/Modals.tsx +++ b/src/app/common/modals/modals.tsx @@ -6,8 +6,8 @@ import { If, For } from "tsx-control-statements/components"; import cn from "classnames"; import dayjs from "dayjs"; import localizedFormat from "dayjs/plugin/localizedFormat"; -import { GlobalModel } from "../../model"; -import { Markdown } from "../../common/common"; +import { GlobalModel } from "../../../model/model"; +import { Markdown } from "../common"; dayjs.extend(localizedFormat); diff --git a/src/main/modals/settings.tsx b/src/app/common/modals/settings.tsx similarity index 99% rename from src/main/modals/settings.tsx rename to src/app/common/modals/settings.tsx index 6f360edf..adda6659 100644 --- a/src/main/modals/settings.tsx +++ b/src/app/common/modals/settings.tsx @@ -4,11 +4,11 @@ import * as mobx from "mobx"; import { boundMethod } from "autobind-decorator"; import { If, For } from "tsx-control-statements/components"; import cn from "classnames"; -import { GlobalModel, GlobalCommandRunner, TabColors } from "../../model"; -import { Toggle, InlineSettingsTextEdit, SettingsError, InfoMessage } from "../../common/common"; -import { LineType, RendererPluginType, ClientDataType, CommandRtnType } from "../../types/types"; -import { PluginModel } from "../../plugins/plugins"; -import * as util from "../../util/util"; +import { GlobalModel, GlobalCommandRunner, TabColors } from "../../../model/model"; +import { Toggle, InlineSettingsTextEdit, SettingsError, InfoMessage } from "../common"; +import { LineType, RendererPluginType, ClientDataType, CommandRtnType } from "../../../types/types"; +import { PluginModel } from "../../../plugins/plugins"; +import * as util from "../../../util/util"; import "./modals.less"; diff --git a/src/app/common/prompt/prompt.less b/src/app/common/prompt/prompt.less new file mode 100644 index 00000000..7b5e987f --- /dev/null +++ b/src/app/common/prompt/prompt.less @@ -0,0 +1,70 @@ +@import "../../../index.less"; + +.term-prompt { + font-weight: 300; + .icon { + margin: 0 4px 0 2px; + vertical-align: middle; + width: 1.2em; + height: 1.2em; + fill: @prompt-green; + } + + .term-prompt-branch { + color: @term-white; + } + + .term-prompt-python { + color: @term-bright-magenta; + } + + .term-prompt-remote { + i { + margin-right: 0; + } + } + + .term-prompt-remote { + color: @term-bright-green; + + &.color-green { + color: @term-bright-green; + } + + &.color-red { + color: @term-bright-red; + } + + &.color-blue { + color: @term-bright-blue; + } + + &.color-yellow { + color: @term-bright-yellow; + } + + &.color-magenta { + color: @term-bright-magenta; + } + + &.color-cyan { + color: @term-bright-cyan; + } + + &.color-white { + color: @term-bright-white; + } + + &.color-orange { + color: @tab-orange; + } + } + + .term-prompt-cwd { + color: @term-bright-green; + } + + .term-prompt-end { + color: @term-bright-green; + } +} diff --git a/src/terminal/prompt.tsx b/src/app/common/prompt/prompt.tsx similarity index 95% rename from src/terminal/prompt.tsx rename to src/app/common/prompt/prompt.tsx index c956731a..90ef1a73 100644 --- a/src/terminal/prompt.tsx +++ b/src/app/common/prompt/prompt.tsx @@ -3,13 +3,13 @@ import * as mobxReact from "mobx-react"; import * as mobx from "mobx"; import dayjs from "dayjs"; import localizedFormat from "dayjs/plugin/localizedFormat"; -import { GlobalModel, LineContainerModel } from "../model"; -import type { LineType, RemoteType, RemotePtrType, LineHeightChangeCallbackType } from "../../types/types"; +import { GlobalModel, LineContainerModel } from "../../../model/model"; +import type { LineType, RemoteType, RemotePtrType, LineHeightChangeCallbackType } from "../../../types/types"; import cn from "classnames"; -import { isBlank } from "../util/util"; -import { ReactComponent as FolderIcon } from "../assets/icons/folder.svg"; +import { isBlank } from "../../../util/util"; +import { ReactComponent as FolderIcon } from "../../assets/icons/folder.svg"; -import "./terminal.less"; +import "./prompt.less"; dayjs.extend(localizedFormat); diff --git a/src/themes.ts b/src/app/common/themes.ts similarity index 100% rename from src/themes.ts rename to src/app/common/themes.ts diff --git a/src/remotes/remotes.less b/src/app/connections/connections.less similarity index 99% rename from src/remotes/remotes.less rename to src/app/connections/connections.less index 7d81745f..61ede4e1 100644 --- a/src/remotes/remotes.less +++ b/src/app/connections/connections.less @@ -1,4 +1,4 @@ -@import "../index.less"; +@import "../../index.less"; .modal.prompt-modal.remotes-modal { .modal-content { diff --git a/src/remotes/remotes.tsx b/src/app/connections/connections.tsx similarity index 99% rename from src/remotes/remotes.tsx rename to src/app/connections/connections.tsx index 8fb751d8..cd919ee3 100644 --- a/src/remotes/remotes.tsx +++ b/src/app/connections/connections.tsx @@ -4,13 +4,13 @@ import * as mobx from "mobx"; import { boundMethod } from "autobind-decorator"; import { If, For } from "tsx-control-statements/components"; import cn from "classnames"; -import { GlobalModel, GlobalCommandRunner, RemotesModalModel } from "../model"; +import { GlobalModel, GlobalCommandRunner, RemotesModalModel } from "../../model/model"; import { Toggle, RemoteStatusLight, InfoMessage } from "../common/common"; -import { RemoteType, RemoteEditType } from "../types/types"; -import * as util from "../util/util"; -import * as textmeasure from "../util/textmeasure"; +import { RemoteType, RemoteEditType } from "../../types/types"; +import * as util from "../../util/util"; +import * as textmeasure from "../../util/textmeasure"; -import "./remotes.less"; +import "./connections.less"; type OV = mobx.IObservableValue; type OArr = mobx.IObservableArray; diff --git a/src/main/history/history.less b/src/app/history/history.less similarity index 100% rename from src/main/history/history.less rename to src/app/history/history.less diff --git a/src/main/history/history.tsx b/src/app/history/history.tsx similarity index 99% rename from src/main/history/history.tsx rename to src/app/history/history.tsx index e4802045..dd7d2112 100644 --- a/src/main/history/history.tsx +++ b/src/app/history/history.tsx @@ -5,13 +5,13 @@ import { If, For, When, Otherwise, Choose } from "tsx-control-statements/compone import { sprintf } from "sprintf-js"; import { boundMethod } from "autobind-decorator"; import cn from "classnames"; -import { GlobalModel, GlobalCommandRunner, Cmd } from "../../model"; +import { GlobalModel, GlobalCommandRunner, Cmd } from "../../model/model"; import { HistoryItem, RemotePtrType, LineType, CmdDataType } from "../../types/types"; import dayjs from "dayjs"; import localizedFormat from "dayjs/plugin/localizedFormat"; import customParseFormat from "dayjs/plugin/customParseFormat"; import { Line } from "../line/linecomps"; -import { CmdStrCode } from "../../common/common"; +import { CmdStrCode } from "../common/common"; import "./history.less"; diff --git a/src/main/line/linecomps.tsx b/src/app/line/linecomps.tsx similarity index 97% rename from src/main/line/linecomps.tsx rename to src/app/line/linecomps.tsx index ae28cc69..c198c51b 100644 --- a/src/main/line/linecomps.tsx +++ b/src/app/line/linecomps.tsx @@ -6,17 +6,14 @@ import { boundMethod } from "autobind-decorator"; import dayjs from "dayjs"; import localizedFormat from "dayjs/plugin/localizedFormat"; import { If } from "tsx-control-statements/components"; -import { GlobalModel, GlobalCommandRunner, Cmd, getTermPtyData } from "../../model"; +import { GlobalModel, GlobalCommandRunner, Cmd, getTermPtyData } from "../../model/model"; import { termHeightFromRows } from "../../util/textmeasure"; import type { LineType, - CmdDataType, RemoteType, RemotePtrType, RenderModeType, - RendererContext, RendererOpts, - SimpleBlobRendererComponent, RendererPluginType, LineHeightChangeCallbackType, RendererModelInitializeParams, @@ -24,19 +21,19 @@ import type { } from "../../types/types"; import cn from "classnames"; -import { ReactComponent as FavouritesIcon } from "../../assets/icons/favourites.svg"; -import { ReactComponent as PinIcon } from "../../assets/icons/pin.svg"; -import { ReactComponent as PlusIcon } from "../../assets/icons/plus.svg"; -import { ReactComponent as MinusIcon } from "../../assets/icons/minus.svg"; +import { ReactComponent as FavouritesIcon } from "../assets/icons/favourites.svg"; +import { ReactComponent as PinIcon } from "../assets/icons/pin.svg"; +import { ReactComponent as PlusIcon } from "../assets/icons/plus.svg"; +import { ReactComponent as MinusIcon } from "../assets/icons/minus.svg"; -import type { LineContainerModel } from "../../model"; -import { renderCmdText } from "../../common/common"; -import { SimpleBlobRenderer } from "./renderer/simplerenderer"; -import { FullRenderer } from "./renderer/fullrenderer"; -import { TerminalRenderer } from "../../common/terminal/Terminal"; +import type { LineContainerModel } from "../../model/model"; +import { renderCmdText } from "../common/common"; +import { SimpleBlobRenderer } from "../../plugins/renderer/basicrenderer"; +import { IncrementalRenderer } from "../../plugins/renderer/incrementalrenderer"; +import { TerminalRenderer } from "../../plugins/terminal/Terminal"; import { isBlank } from "../../util/util"; import { PluginModel } from "../../plugins/plugins"; -import { Prompt } from "../../terminal/prompt"; +import { Prompt } from "../common/prompt/prompt"; import * as lineutil from "./lineutil"; import "./lines.less"; @@ -776,7 +773,7 @@ class LineCmd extends React.Component< /> - = mobx.IObservableValue; type CV = mobx.IComputedValue; diff --git a/src/main/sidebar/MainSideBar.tsx b/src/app/sidebar/MainSideBar.tsx similarity index 89% rename from src/main/sidebar/MainSideBar.tsx rename to src/app/sidebar/MainSideBar.tsx index cd6aa5a4..c92613a9 100644 --- a/src/main/sidebar/MainSideBar.tsx +++ b/src/app/sidebar/MainSideBar.tsx @@ -2,27 +2,25 @@ import * as React from "react"; import * as mobxReact from "mobx-react"; import * as mobx from "mobx"; import { boundMethod } from "autobind-decorator"; -import { If, For } from "tsx-control-statements/components"; import cn from "classnames"; import dayjs from "dayjs"; import type { RemoteType } from "../../types/types"; -import { ReactComponent as LeftChevronIcon } from "../../assets/icons/chevron_left.svg"; -import { ReactComponent as HelpIcon } from "../../assets/icons/help.svg"; -import { ReactComponent as SettingsIcon } from "../../assets/icons/settings.svg"; -import { ReactComponent as DiscordIcon } from "../../assets/icons/discord.svg"; -import { ReactComponent as HistoryIcon } from "../../assets/icons/history.svg"; -import { ReactComponent as FavouritesIcon } from "../../assets/icons/favourites.svg"; -import { ReactComponent as AppsIcon } from "../../assets/icons/apps.svg"; -import { ReactComponent as ConnectionsIcon } from "../../assets/icons/connections.svg"; -import { ReactComponent as WorkspacesIcon } from "../../assets/icons/workspaces.svg"; -import { ReactComponent as AddIcon } from "../../assets/icons/add.svg"; -import { ReactComponent as ActionsIcon } from "../../assets/icons/tab/actions.svg"; +import { ReactComponent as LeftChevronIcon } from "../assets/icons/chevron_left.svg"; +import { ReactComponent as HelpIcon } from "../assets/icons/help.svg"; +import { ReactComponent as SettingsIcon } from "../assets/icons/settings.svg"; +import { ReactComponent as DiscordIcon } from "../assets/icons/discord.svg"; +import { ReactComponent as HistoryIcon } from "../assets/icons/history.svg"; +import { ReactComponent as FavouritesIcon } from "../assets/icons/favourites.svg"; +import { ReactComponent as AppsIcon } from "../assets/icons/apps.svg"; +import { ReactComponent as ConnectionsIcon } from "../assets/icons/connections.svg"; +import { ReactComponent as WorkspacesIcon } from "../assets/icons/workspaces.svg"; +import { ReactComponent as AddIcon } from "../assets/icons/add.svg"; +import { ReactComponent as ActionsIcon } from "../assets/icons/tab/actions.svg"; import localizedFormat from "dayjs/plugin/localizedFormat"; -import { GlobalModel, GlobalCommandRunner, Session } from "../../model"; +import { GlobalModel, GlobalCommandRunner, Session } from "../../model/model"; import { sortAndFilterRemotes, isBlank, openLink } from "../../util/util"; -import { RemoteStatusLight } from "../../common/common"; import "./sidebar.less"; diff --git a/src/main/sidebar/sidebar.less b/src/app/sidebar/sidebar.less similarity index 98% rename from src/main/sidebar/sidebar.less rename to src/app/sidebar/sidebar.less index 38580b1c..0b8d20bf 100644 --- a/src/main/sidebar/sidebar.less +++ b/src/app/sidebar/sidebar.less @@ -3,6 +3,7 @@ .main-sidebar { padding: 0; width: 20rem; + min-width: 20rem; overflow-x: hidden; display: flex; flex-direction: column; @@ -253,9 +254,3 @@ } } } - -.menu-list .emote-status.status-connecting { - position: relative; - top: 0px; - margin-left: -3px; -} diff --git a/src/main/sessionview/CmdWindow/cmdInput.less b/src/app/workspace/cmdinput/cmdInput.less similarity index 100% rename from src/main/sessionview/CmdWindow/cmdInput.less rename to src/app/workspace/cmdinput/cmdInput.less diff --git a/src/main/sessionview/CmdWindow/CmdInput.tsx b/src/app/workspace/cmdinput/cmdinput.tsx similarity index 95% rename from src/main/sessionview/CmdWindow/CmdInput.tsx rename to src/app/workspace/cmdinput/cmdinput.tsx index a1c684b1..796bcd98 100644 --- a/src/main/sessionview/CmdWindow/CmdInput.tsx +++ b/src/app/workspace/cmdinput/cmdinput.tsx @@ -7,13 +7,13 @@ import cn from "classnames"; import dayjs from "dayjs"; import type { RemoteType, RemoteInstanceType, RemotePtrType } from "../../../types/types"; import localizedFormat from "dayjs/plugin/localizedFormat"; -import { GlobalModel, GlobalCommandRunner } from "../../../model"; -import { renderCmdText } from "../../../common/common"; -import { TextAreaInput } from "./TextareaInput"; -import { InfoMsg } from "../InfoMsg"; -import { HistoryInfo } from "../HistoryInfo"; -import { Prompt } from "../../../terminal/prompt"; -import { ReactComponent as ExecIcon } from "../../../assets/icons/exec.svg"; +import { GlobalModel, GlobalCommandRunner } from "../../../model/model"; +import { renderCmdText } from "../../common/common"; +import { TextAreaInput } from "./textareainput"; +import { InfoMsg } from "./infomsg"; +import { HistoryInfo } from "./historyinfo"; +import { Prompt } from "../../common/prompt/prompt"; +import { ReactComponent as ExecIcon } from "../../assets/icons/exec.svg"; import "./cmdInput.less"; dayjs.extend(localizedFormat); diff --git a/src/main/sessionview/HistoryInfo.tsx b/src/app/workspace/cmdinput/historyinfo.tsx similarity index 97% rename from src/main/sessionview/HistoryInfo.tsx rename to src/app/workspace/cmdinput/historyinfo.tsx index d9a4126f..c403a1e2 100644 --- a/src/main/sessionview/HistoryInfo.tsx +++ b/src/app/workspace/cmdinput/historyinfo.tsx @@ -6,11 +6,11 @@ import { boundMethod } from "autobind-decorator"; import { If, For } from "tsx-control-statements/components"; import cn from "classnames"; import dayjs from "dayjs"; -import type { HistoryItem, HistoryQueryOpts } from "../../types/types"; +import type { HistoryItem, HistoryQueryOpts } from "../../../types/types"; import localizedFormat from "dayjs/plugin/localizedFormat"; -import { GlobalModel } from "../../model"; -import { isBlank } from "../../util/util"; -import "./sessionview.less"; +import { GlobalModel } from "../../../model/model"; +import { isBlank } from "../../../util/util"; +import "./cmdInput.less"; dayjs.extend(localizedFormat); diff --git a/src/main/sessionview/InfoMsg.tsx b/src/app/workspace/cmdinput/infomsg.tsx similarity index 97% rename from src/main/sessionview/InfoMsg.tsx rename to src/app/workspace/cmdinput/infomsg.tsx index b037ac25..0f79d24c 100644 --- a/src/main/sessionview/InfoMsg.tsx +++ b/src/app/workspace/cmdinput/infomsg.tsx @@ -4,9 +4,9 @@ import { If, For } from "tsx-control-statements/components"; import cn from "classnames"; import dayjs from "dayjs"; import localizedFormat from "dayjs/plugin/localizedFormat"; -import { GlobalModel } from "../../model"; -import { makeExternLink } from "../../util/util"; -import "./sessionview.less"; +import { GlobalModel } from "../../../model/model"; +import { makeExternLink } from "../../../util/util"; +import "./cmdInput.less"; dayjs.extend(localizedFormat); diff --git a/src/main/sessionview/CmdWindow/TextareaInput.tsx b/src/app/workspace/cmdinput/textareainput.tsx similarity index 99% rename from src/main/sessionview/CmdWindow/TextareaInput.tsx rename to src/app/workspace/cmdinput/textareainput.tsx index 95b25d56..280856d7 100644 --- a/src/main/sessionview/CmdWindow/TextareaInput.tsx +++ b/src/app/workspace/cmdinput/textareainput.tsx @@ -3,10 +3,10 @@ import * as mobxReact from "mobx-react"; import * as mobx from "mobx"; import { boundMethod } from "autobind-decorator"; import cn from "classnames"; -import { GlobalModel, GlobalCommandRunner } from "../../../model"; +import { GlobalModel, GlobalCommandRunner } from "../../../model/model"; import { getMonoFontSize } from "../../../util/textmeasure"; import { isModKeyPress, hasNoModifiers } from "../../../util/util"; -import "../sessionview.less"; +import "./cmdInput.less"; function pageSize(div: any): number { if (div == null) { diff --git a/src/app/workspace/screen/screenview.less b/src/app/workspace/screen/screenview.less new file mode 100644 index 00000000..de7548ee --- /dev/null +++ b/src/app/workspace/screen/screenview.less @@ -0,0 +1,103 @@ +@import "../../../index.less"; + +.main-content { + .screen-view { + flex-grow: 1; + border-right: 1px solid #ccc; + position: relative; + } + + .window-view { + display: flex; + flex-direction: column; + position: absolute; + width: 100%; + height: calc(100% - 3em); + overflow-x: hidden; + + .rendermode-tag { + position: absolute; + top: 0; + right: 0; + background-color: rgba(78, 154, 6, 0.65); + color: @term-black; + padding: 2px 8px 2px 4px; + border-bottom-left-radius: 5px; + z-index: 10; + + &.is-active { + color: @term-white; + } + + .render-mode { + padding-top: 2px; + + position: relative; + cursor: pointer; + color: @term-white; + + &:hover { + color: @term-white; + } + } + } + + .share-tag { + color: @term-white; + position: absolute; + top: 0; + left: 40%; + background-color: darken(rgb(0, 177, 10), 20%); + padding: 2px 8px 2px 4px; + z-index: 11; + + /* border-radius: 0 0 5px 5px; */ + opacity: 0.8; + display: flex; + flex-direction: column; + + .share-tag-link { + margin-top: 10px; + display: none; + } + + &:hover { + .share-tag-title { + font-weight: bold; + } + opacity: 1; + padding: 20px; + width: 250px; + border: 1px solid #ccc; + border-top: 0; + + .share-tag-link { + display: flex; + flex-direction: row; + align-items: center; + gap: 10px; + } + } + } + + .window-empty { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + padding: 10px; + height: 100%; + color: @term-white; + + code { + background-color: @term-black; + color: #4e9a06; + } + + &.should-fade { + opacity: 1; + animation: fade-in 2.5s; + } + } + } +} diff --git a/src/main/sessionview/Screen/ScreenView.tsx b/src/app/workspace/screen/screenview.tsx similarity index 59% rename from src/main/sessionview/Screen/ScreenView.tsx rename to src/app/workspace/screen/screenview.tsx index 08ea3cf9..70b67ab1 100644 --- a/src/main/sessionview/Screen/ScreenView.tsx +++ b/src/app/workspace/screen/screenview.tsx @@ -9,15 +9,11 @@ import { debounce } from "throttle-debounce"; import dayjs from "dayjs"; import type { LineType, RenderModeType, LineFactoryProps } from "../../../types/types"; import localizedFormat from "dayjs/plugin/localizedFormat"; -import { GlobalModel, GlobalCommandRunner, Session, ScreenLines, Screen } from "../../../model"; +import { GlobalModel, ScreenLines, Screen } from "../../../model/model"; import { Line } from "../../line/linecomps"; -import { renderCmdText } from "../../../common/common"; import { LinesView } from "../../line/linesview"; -import { ReactComponent as SparkleIcon } from "../../../assets/icons/tab/sparkle.svg"; -import { ReactComponent as ActionsIcon } from "../../../assets/icons/tab/actions.svg"; -import { ReactComponent as AddIcon } from "../../../assets/icons/add.svg"; -import "../sessionview.less"; +import "./screenview.less"; import "./tabs.less"; dayjs.extend(localizedFormat); @@ -255,173 +251,4 @@ class ScreenWindowView extends React.Component<{ screen: Screen }, {}> { } } -@mobxReact.observer -class ScreenTabs extends React.Component<{ session: Session }, {}> { - tabsRef: React.RefObject = React.createRef(); - lastActiveScreenId: string = null; - scrolling: OV = mobx.observable.box(false, { name: "screentabs-scrolling" }); - - stopScrolling_debounced: () => void; - - constructor(props: any) { - super(props); - this.stopScrolling_debounced = debounce(1500, this.stopScrolling.bind(this)); - } - - @boundMethod - handleNewScreen() { - let { session } = this.props; - GlobalCommandRunner.createNewScreen(); - } - - @boundMethod - handleSwitchScreen(screenId: string) { - let { session } = this.props; - if (session == null) { - return; - } - if (session.activeScreenId.get() == screenId) { - return; - } - let screen = session.getScreenById(screenId); - if (screen == null) { - return; - } - GlobalCommandRunner.switchScreen(screenId); - } - - componentDidMount(): void { - this.componentDidUpdate(); - } - - componentDidUpdate(): void { - let { session } = this.props; - let activeScreenId = session.activeScreenId.get(); - if (activeScreenId != this.lastActiveScreenId && this.tabsRef.current) { - let tabElem = this.tabsRef.current.querySelector( - sprintf('.screen-tab[data-screenid="%s"]', activeScreenId) - ); - if (tabElem != null) { - tabElem.scrollIntoView(); - } - } - this.lastActiveScreenId = activeScreenId; - } - - stopScrolling(): void { - mobx.action(() => { - this.scrolling.set(false); - })(); - } - - @boundMethod - handleScroll() { - if (!this.scrolling.get()) { - mobx.action(() => { - this.scrolling.set(true); - })(); - } - this.stopScrolling_debounced(); - } - - @boundMethod - openScreenSettings(e: any, screen: Screen): void { - e.preventDefault(); - e.stopPropagation(); - mobx.action(() => { - GlobalModel.screenSettingsModal.set({ sessionId: screen.sessionId, screenId: screen.screenId }); - })(); - } - - renderTab(screen: Screen, activeScreenId: string, index: number): any { - let tabIndex = null; - if (index + 1 <= 9) { - tabIndex =
{renderCmdText(String(index + 1))}
; - } - let settings = ( -
this.openScreenSettings(e, screen)} title="Actions" className="tab-gear"> - -
- ); - let archived = screen.archived.get() ? ( - - ) : null; - - let webShared = screen.isWebShared() ? ( - - ) : null; - return ( -
this.handleSwitchScreen(screen.screenId)} - onContextMenu={(event) => this.openScreenSettings(event, screen)} - > - -
- {archived} - {webShared} - {screen.name.get()} -
- {tabIndex} - {settings} -
- ); - } - - render() { - let { session } = this.props; - if (session == null) { - return null; - } - let screen: Screen = null; - let index = 0; - let showingScreens = []; - let activeScreenId = session.activeScreenId.get(); - let screens = GlobalModel.getSessionScreens(session.sessionId); - for (let screen of screens) { - if (!screen.archived.get() || activeScreenId == screen.screenId) { - showingScreens.push(screen); - } - } - showingScreens.sort((a, b) => { - let aidx = a.screenIdx.get(); - let bidx = b.screenIdx.get(); - if (aidx < bidx) { - return -1; - } - if (aidx > bidx) { - return 1; - } - return 0; - }); - return ( -
-
- - {this.renderTab(screen, activeScreenId, index)} - -
- -
-
- {/**
-
move left {renderCmdText("[")}
-
move right {renderCmdText("]")}
-
new tab {renderCmdText("T")}
-
*/} -
- ); - } -} - -export { ScreenView, ScreenTabs }; +export { ScreenView }; diff --git a/src/main/sessionview/Screen/tabs.less b/src/app/workspace/screen/tabs.less similarity index 100% rename from src/main/sessionview/Screen/tabs.less rename to src/app/workspace/screen/tabs.less diff --git a/src/app/workspace/screen/tabs.tsx b/src/app/workspace/screen/tabs.tsx new file mode 100644 index 00000000..a00d7d4b --- /dev/null +++ b/src/app/workspace/screen/tabs.tsx @@ -0,0 +1,193 @@ +import * as React from "react"; +import * as mobxReact from "mobx-react"; +import * as mobx from "mobx"; +import { sprintf } from "sprintf-js"; +import { boundMethod } from "autobind-decorator"; +import { For } from "tsx-control-statements/components"; +import cn from "classnames"; +import { debounce } from "throttle-debounce"; +import dayjs from "dayjs"; +import localizedFormat from "dayjs/plugin/localizedFormat"; +import { GlobalModel, GlobalCommandRunner, Session, ScreenLines, Screen } from "../../../model/model"; +import { renderCmdText } from "../../common/common"; +import { ReactComponent as SparkleIcon } from "../../assets/icons/tab/sparkle.svg"; +import { ReactComponent as ActionsIcon } from "../../assets/icons/tab/actions.svg"; +import { ReactComponent as AddIcon } from "../../assets/icons/add.svg"; + +import "../workspace.less"; +import "./tabs.less"; + +dayjs.extend(localizedFormat); + +type OV = mobx.IObservableValue; + +@mobxReact.observer +class ScreenTabs extends React.Component<{ session: Session }, {}> { + tabsRef: React.RefObject = React.createRef(); + lastActiveScreenId: string = null; + scrolling: OV = mobx.observable.box(false, { name: "screentabs-scrolling" }); + + stopScrolling_debounced: () => void; + + constructor(props: any) { + super(props); + this.stopScrolling_debounced = debounce(1500, this.stopScrolling.bind(this)); + } + + @boundMethod + handleNewScreen() { + let { session } = this.props; + GlobalCommandRunner.createNewScreen(); + } + + @boundMethod + handleSwitchScreen(screenId: string) { + let { session } = this.props; + if (session == null) { + return; + } + if (session.activeScreenId.get() == screenId) { + return; + } + let screen = session.getScreenById(screenId); + if (screen == null) { + return; + } + GlobalCommandRunner.switchScreen(screenId); + } + + componentDidMount(): void { + this.componentDidUpdate(); + } + + componentDidUpdate(): void { + let { session } = this.props; + let activeScreenId = session.activeScreenId.get(); + if (activeScreenId != this.lastActiveScreenId && this.tabsRef.current) { + let tabElem = this.tabsRef.current.querySelector( + sprintf('.screen-tab[data-screenid="%s"]', activeScreenId) + ); + if (tabElem != null) { + tabElem.scrollIntoView(); + } + } + this.lastActiveScreenId = activeScreenId; + } + + stopScrolling(): void { + mobx.action(() => { + this.scrolling.set(false); + })(); + } + + @boundMethod + handleScroll() { + if (!this.scrolling.get()) { + mobx.action(() => { + this.scrolling.set(true); + })(); + } + this.stopScrolling_debounced(); + } + + @boundMethod + openScreenSettings(e: any, screen: Screen): void { + e.preventDefault(); + e.stopPropagation(); + mobx.action(() => { + GlobalModel.screenSettingsModal.set({ sessionId: screen.sessionId, screenId: screen.screenId }); + })(); + } + + renderTab(screen: Screen, activeScreenId: string, index: number): any { + let tabIndex = null; + if (index + 1 <= 9) { + tabIndex =
{renderCmdText(String(index + 1))}
; + } + let settings = ( +
this.openScreenSettings(e, screen)} title="Actions" className="tab-gear"> + +
+ ); + let archived = screen.archived.get() ? ( + + ) : null; + + let webShared = screen.isWebShared() ? ( + + ) : null; + return ( +
this.handleSwitchScreen(screen.screenId)} + onContextMenu={(event) => this.openScreenSettings(event, screen)} + > + +
+ {archived} + {webShared} + {screen.name.get()} +
+ {tabIndex} + {settings} +
+ ); + } + + render() { + let { session } = this.props; + if (session == null) { + return null; + } + let screen: Screen = null; + let index = 0; + let showingScreens = []; + let activeScreenId = session.activeScreenId.get(); + let screens = GlobalModel.getSessionScreens(session.sessionId); + for (let screen of screens) { + if (!screen.archived.get() || activeScreenId == screen.screenId) { + showingScreens.push(screen); + } + } + showingScreens.sort((a, b) => { + let aidx = a.screenIdx.get(); + let bidx = b.screenIdx.get(); + if (aidx < bidx) { + return -1; + } + if (aidx > bidx) { + return 1; + } + return 0; + }); + return ( +
+
+ + {this.renderTab(screen, activeScreenId, index)} + +
+ +
+
+ {/**
+
move left {renderCmdText("[")}
+
move right {renderCmdText("]")}
+
new tab {renderCmdText("T")}
+
*/} +
+ ); + } +} + +export { ScreenTabs }; diff --git a/src/main/sessionview/sessionview.less b/src/app/workspace/workspace.less similarity index 100% rename from src/main/sessionview/sessionview.less rename to src/app/workspace/workspace.less diff --git a/src/main/sessionview/SessionView.tsx b/src/app/workspace/workspaceview.tsx similarity index 79% rename from src/main/sessionview/SessionView.tsx rename to src/app/workspace/workspaceview.tsx index af8346be..328b4b52 100644 --- a/src/main/sessionview/SessionView.tsx +++ b/src/app/workspace/workspaceview.tsx @@ -4,17 +4,18 @@ import * as mobx from "mobx"; import cn from "classnames"; import dayjs from "dayjs"; import localizedFormat from "dayjs/plugin/localizedFormat"; -import { GlobalModel } from "../../model"; -import { CmdInput } from "./CmdWindow/CmdInput"; -import { ScreenView, ScreenTabs } from "./Screen/ScreenView"; -import "./sessionview.less"; +import { GlobalModel } from "../../model/model"; +import { CmdInput } from "./cmdinput/cmdinput"; +import { ScreenView } from "./screen/screenview"; +import { ScreenTabs } from "./screen/tabs"; +import "./workspace.less"; dayjs.extend(localizedFormat); type OV = mobx.IObservableValue; @mobxReact.observer -class SessionView extends React.Component<{}, {}> { +class WorkspaceView extends React.Component<{}, {}> { render() { let model = GlobalModel; let session = model.getActiveSession(); @@ -38,4 +39,4 @@ class SessionView extends React.Component<{}, {}> { } } -export { SessionView }; +export { WorkspaceView }; diff --git a/src/emain.ts b/src/electron/emain.ts similarity index 99% rename from src/emain.ts rename to src/electron/emain.ts index 7e5ea6aa..2280e0a0 100644 --- a/src/emain.ts +++ b/src/electron/emain.ts @@ -4,7 +4,7 @@ import * as fs from "fs"; import fetch from "node-fetch"; import * as child_process from "node:child_process"; import { debounce } from "throttle-debounce"; -import { handleJsonFetchResponse } from "./util/util"; +import { handleJsonFetchResponse } from "../util/util"; import * as winston from "winston"; import * as util from "util"; import { sprintf } from "sprintf-js"; @@ -204,14 +204,14 @@ function createMainWindow(clientData) { titleBarStyle: "hiddenInset", width: bounds.width, height: bounds.height, - minWidth: 600, - minHeight: 400, + minWidth: 800, + minHeight: 600, webPreferences: { preload: path.join(getAppBasePath(), DistDir, "preload.js"), }, }); let indexHtml = isDev ? "index-dev.html" : "index.html"; - win.loadFile(path.join(getAppBasePath(), "static", indexHtml)); + win.loadFile(path.join(getAppBasePath(), "public", indexHtml)); win.webContents.on("before-input-event", (e, input) => { if (win.isFocused()) { wasActive = true; diff --git a/src/preload.js b/src/electron/preload.js similarity index 100% rename from src/preload.js rename to src/electron/preload.js diff --git a/src/index.less b/src/index.less index 2dd6fb3d..584ccb02 100644 --- a/src/index.less +++ b/src/index.less @@ -43,7 +43,7 @@ @font-face { font-family: "Martian Mono"; - src: url("./fonts/MartianMono-VariableFont_wdth,wght.ttf") format("truetype"); + src: url("./app/assets/fonts/MartianMono-VariableFont_wdth,wght.ttf") format("truetype"); font-weight: normal; font-style: normal; } @@ -184,106 +184,6 @@ a.a-block { display: none; } } - - .screen-view { - flex-grow: 1; - border-right: 1px solid #ccc; - position: relative; - } - - .window-view { - display: flex; - flex-direction: column; - position: absolute; - width: 100%; - height: calc(100% - 3em); - overflow-x: hidden; - - .rendermode-tag { - position: absolute; - top: 0; - right: 0; - background-color: rgba(78, 154, 6, 0.65); - color: @term-black; - padding: 2px 8px 2px 4px; - border-bottom-left-radius: 5px; - z-index: 10; - - &.is-active { - color: @term-white; - } - - .render-mode { - padding-top: 2px; - - position: relative; - cursor: pointer; - color: @term-white; - - &:hover { - color: @term-white; - } - } - } - - .share-tag { - color: @term-white; - position: absolute; - top: 0; - left: 40%; - background-color: darken(rgb(0, 177, 10), 20%); - padding: 2px 8px 2px 4px; - z-index: 11; - - /* border-radius: 0 0 5px 5px; */ - opacity: 0.8; - display: flex; - flex-direction: column; - - .share-tag-link { - margin-top: 10px; - display: none; - } - - &:hover { - .share-tag-title { - font-weight: bold; - } - opacity: 1; - padding: 20px; - width: 250px; - border: 1px solid #ccc; - border-top: 0; - - .share-tag-link { - display: flex; - flex-direction: row; - align-items: center; - gap: 10px; - } - } - } - - .window-empty { - display: flex; - align-items: center; - justify-content: center; - width: 100%; - padding: 10px; - height: 100%; - color: @term-white; - - code { - background-color: @term-black; - color: #4e9a06; - } - - &.should-fade { - opacity: 1; - animation: fade-in 2.5s; - } - } - } } } diff --git a/src/index.ts b/src/index.ts index f39b4898..1e7c5f03 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,8 +2,7 @@ import * as mobx from "mobx"; import * as React from "react"; import { createRoot } from "react-dom/client"; import { sprintf } from "sprintf-js"; -import { Main } from "./main/Main"; -import { loadFonts } from "./util/util"; +import { App } from "./app/app"; import * as DOMPurify from "dompurify"; // @ts-ignore @@ -11,17 +10,11 @@ let VERSION = __PROMPT_VERSION__; // @ts-ignore let BUILD = __PROMPT_BUILD__; -//loadFonts(); - document.addEventListener("DOMContentLoaded", () => { - let reactElem = React.createElement(Main, null, null); + let reactElem = React.createElement(App, null, null); let elem = document.getElementById("app"); let root = createRoot(elem); - // @check:font - // let isFontLoaded = document.fonts.check("12px 'JetBrains Mono'"); - document.fonts.ready.then(() => { - root.render(reactElem); - }); + root.render(reactElem); }); (window as any).mobx = mobx; diff --git a/src/model.ts b/src/model/model.ts similarity index 99% rename from src/model.ts rename to src/model/model.ts index 41cb6d54..10ddd1bb 100644 --- a/src/model.ts +++ b/src/model/model.ts @@ -10,8 +10,8 @@ import { genMergeSimpleData, boundInt, isModKeyPress, -} from "./util/util"; -import { TermWrap } from "./common/terminal/term"; +} from "../util/util"; +import { TermWrap } from "../plugins/terminal/term"; import type { SessionDataType, LineType, @@ -57,8 +57,8 @@ import type { CommandRtnType, WebCmd, WebRemote, -} from "./types/types"; -import * as T from "./types/types"; +} from "../types/types"; +import * as T from "../types/types"; import { WSControl } from "./ws"; import { measureText, @@ -67,11 +67,11 @@ import { windowHeightToRows, termWidthFromCols, termHeightFromRows, -} from "./util/textmeasure"; +} from "../util/textmeasure"; import dayjs from "dayjs"; import localizedFormat from "dayjs/plugin/localizedFormat"; import customParseFormat from "dayjs/plugin/customParseFormat"; -import { getRendererContext, cmdStatusIsRunning } from "./main/line/lineutil"; +import { getRendererContext, cmdStatusIsRunning } from "../app/line/lineutil"; dayjs.extend(customParseFormat); dayjs.extend(localizedFormat); diff --git a/src/ws.ts b/src/model/ws.ts similarity index 99% rename from src/ws.ts rename to src/model/ws.ts index 31f00411..bd6cdc0a 100644 --- a/src/ws.ts +++ b/src/model/ws.ts @@ -1,7 +1,7 @@ import * as mobx from "mobx"; import { sprintf } from "sprintf-js"; import { boundMethod } from "autobind-decorator"; -import { WatchScreenPacketType } from "./types/types"; +import { WatchScreenPacketType } from "../types/types"; import dayjs from "dayjs"; class WSControl { diff --git a/src/plugins/code/index.tsx b/src/plugins/code/index.tsx index cc376d05..08eef0f6 100644 --- a/src/plugins/code/index.tsx +++ b/src/plugins/code/index.tsx @@ -1,8 +1,8 @@ import * as React from "react"; import { RendererContext, RendererOpts, LineStateType, RendererModelContainerApi } from "../../types/types"; import Editor from "@monaco-editor/react"; -import { Markdown } from "../../common/common"; -import { GlobalModel, GlobalCommandRunner } from "../../model"; +import { Markdown } from "../../app/common/common"; +import { GlobalModel, GlobalCommandRunner } from "../../model/model"; import Split from "react-split-it"; import loader from "@monaco-editor/loader"; loader.config({ paths: { vs: "./node_modules/monaco-editor/min/vs" } }); diff --git a/src/plugins/markdown.tsx b/src/plugins/markdown.tsx index 72ace874..2e761152 100644 --- a/src/plugins/markdown.tsx +++ b/src/plugins/markdown.tsx @@ -5,7 +5,7 @@ import cn from "classnames"; import { If, For, When, Otherwise, Choose } from "tsx-control-statements/components"; import { WindowSize, RendererContext, TermOptsType, LineType, RendererOpts } from "../types/types"; import { sprintf } from "sprintf-js"; -import { Markdown } from "../common/common"; +import { Markdown } from "../app/common/common"; import "./plugins.less"; diff --git a/src/plugins/mustache.tsx b/src/plugins/mustache.tsx index 69726225..8e07f310 100644 --- a/src/plugins/mustache.tsx +++ b/src/plugins/mustache.tsx @@ -9,7 +9,7 @@ import { sprintf } from "sprintf-js"; import { isBlank } from "../util/util"; import mustache from "mustache"; import * as DOMPurify from "dompurify"; -import { GlobalModel } from "../model"; +import { GlobalModel } from "../model/model"; import "./plugins.less"; diff --git a/src/plugins/openai.tsx b/src/plugins/openai.tsx index 5464aa88..7d29f606 100644 --- a/src/plugins/openai.tsx +++ b/src/plugins/openai.tsx @@ -4,8 +4,8 @@ import * as mobxReact from "mobx-react"; import * as T from "../types/types"; import { debounce } from "throttle-debounce"; import { boundMethod } from "autobind-decorator"; -import { PacketDataBuffer } from "../common/terminal/ptydata"; -import { Markdown } from "../common/common"; +import { PacketDataBuffer } from "./util/ptydata"; +import { Markdown } from "../app/common/common"; import "./plugins.less"; diff --git a/src/plugins/renderer/basicrenderer.tsx b/src/plugins/renderer/basicrenderer.tsx new file mode 100644 index 00000000..14f09076 --- /dev/null +++ b/src/plugins/renderer/basicrenderer.tsx @@ -0,0 +1,296 @@ +import * as React from "react"; +import * as mobxReact from "mobx-react"; +import * as mobx from "mobx"; +import { sprintf } from "sprintf-js"; +import { boundMethod } from "autobind-decorator"; +import { If, For, When, Otherwise, Choose } from "tsx-control-statements/components"; +import type { + RendererModelInitializeParams, + TermOptsType, + RendererContext, + RendererOpts, + SimpleBlobRendererComponent, + RendererModelContainerApi, + RendererPluginType, + PtyDataType, + RendererModel, + RendererOptsUpdate, + LineStateType, + LineType, + TermContextUnion, + RendererContainerType, +} from "../../types/types"; +import * as T from "../../types/types"; +import { PacketDataBuffer } from "../../common/prompt/ptydata"; +import { debounce, throttle } from "throttle-debounce"; +import * as util from "../../util/util"; +import { GlobalModel } from "../../model/model"; + +type OV = mobx.IObservableValue; +type CV = mobx.IComputedValue; + +class SimpleBlobRendererModel { + context: RendererContext; + opts: RendererOpts; + isDone: OV; + api: RendererModelContainerApi; + savedHeight: number; + loading: OV; + loadError: OV = mobx.observable.box(null, { + name: "renderer-loadError", + }); + lineState: LineStateType; + ptyData: PtyDataType; + ptyDataSource: (termContext: TermContextUnion) => Promise; + dataBlob: Blob; + readOnly: boolean; + notFound: boolean; + + initialize(params: RendererModelInitializeParams): void { + this.loading = mobx.observable.box(true, { name: "renderer-loading" }); + this.isDone = mobx.observable.box(params.isDone, { + name: "renderer-isDone", + }); + this.context = params.context; + this.opts = params.opts; + this.api = params.api; + this.lineState = params.lineState; + this.savedHeight = params.savedHeight; + this.ptyDataSource = params.ptyDataSource; + if (this.isDone.get()) { + setTimeout(() => this.reload(0), 10); + } + } + + dispose(): void { + return; + } + + giveFocus(): void { + return; + } + + updateOpts(update: RendererOptsUpdate): void { + Object.assign(this.opts, update); + } + + updateHeight(newHeight: number): void { + if (this.savedHeight != newHeight) { + this.savedHeight = newHeight; + this.api.saveHeight(newHeight); + } + } + + setIsDone(): void { + if (this.isDone.get()) { + return; + } + mobx.action(() => { + this.isDone.set(true); + })(); + this.reload(0); + } + + reload(delayMs: number): void { + mobx.action(() => { + this.loading.set(true); + })(); + if (delayMs == 0) { + this.reload_noDelay(); + } else { + setTimeout(() => { + this.reload_noDelay(); + }, delayMs); + } + } + + reload_noDelay(): void { + let source = this.lineState["prompt:source"] || "pty"; + if (source == "pty") { + this.reloadPtyData(); + } else if (source == "file") { + this.reloadFileData(); + } else { + mobx.action(() => { + this.loadError.set("error: invalid load source: " + source); + })(); + } + } + + reloadFileData(): void { + // todo add file methods to API, so we don't have a GlobalModel dependency here! + let path = this.lineState["prompt:file"]; + if (util.isBlank(path)) { + mobx.action(() => { + this.loadError.set("renderer has file source, but no prompt:file specified"); + })(); + return; + } + let rtnp = GlobalModel.readRemoteFile(this.context.screenId, this.context.lineId, path); + rtnp.then((file) => { + this.notFound = (file as any).notFound; + this.readOnly = (file as any).readOnly; + this.dataBlob = file; + mobx.action(() => { + this.loading.set(false); + this.loadError.set(null); + })(); + }).catch((e) => { + mobx.action(() => { + this.loadError.set("error loading file data: " + e); + })(); + }); + } + + reloadPtyData(): void { + this.readOnly = true; + let rtnp = this.ptyDataSource(this.context); + if (rtnp == null) { + console.log("no promise returned from ptyDataSource (simplerenderer)", this.context); + return; + } + rtnp.then((ptydata) => { + this.ptyData = ptydata; + this.dataBlob = new Blob([this.ptyData.data]); + mobx.action(() => { + this.loading.set(false); + this.loadError.set(null); + })(); + }).catch((e) => { + mobx.action(() => { + this.loadError.set("error loading data: " + e); + })(); + }); + } + + receiveData(pos: number, data: Uint8Array, reason?: string): void { + // this.dataBuf.receiveData(pos, data, reason); + } +} + +@mobxReact.observer +class SimpleBlobRenderer extends React.Component< + { + rendererContainer: RendererContainerType; + lineId: string; + plugin: RendererPluginType; + onHeightChange: () => void; + initParams: RendererModelInitializeParams; + scrollToBringIntoViewport: () => void; + isSelected: boolean; + shouldFocus: boolean; + }, + {} +> { + model: SimpleBlobRendererModel; + wrapperDivRef: React.RefObject = React.createRef(); + rszObs: ResizeObserver; + updateHeight_debounced: (newHeight: number) => void; + + constructor(props: any) { + super(props); + let { rendererContainer, lineId, plugin, initParams } = this.props; + this.model = new SimpleBlobRendererModel(); + this.model.initialize(initParams); + rendererContainer.registerRenderer(lineId, this.model); + this.updateHeight_debounced = debounce(1000, this.updateHeight.bind(this)); + } + + updateHeight(newHeight: number): void { + this.model.updateHeight(newHeight); + } + + handleResize(entries: ResizeObserverEntry[]): void { + if (this.model.loading.get()) { + return; + } + if (this.props.onHeightChange) { + this.props.onHeightChange(); + } + if (!this.model.loading.get() && this.wrapperDivRef.current != null) { + let height = this.wrapperDivRef.current.offsetHeight; + this.updateHeight_debounced(height); + } + } + + checkRszObs() { + if (this.rszObs != null) { + return; + } + if (this.wrapperDivRef.current == null) { + return; + } + this.rszObs = new ResizeObserver(this.handleResize.bind(this)); + this.rszObs.observe(this.wrapperDivRef.current); + } + + componentDidMount() { + this.checkRszObs(); + } + + componentWillUnmount() { + let { rendererContainer, lineId } = this.props; + rendererContainer.unloadRenderer(lineId); + if (this.rszObs != null) { + this.rszObs.disconnect(); + this.rszObs = null; + } + } + + componentDidUpdate() { + this.checkRszObs(); + } + + render() { + let { plugin } = this.props; + let model = this.model; + if (model.loadError.get() != null) { + let errorText = model.loadError.get(); + let height = this.model.savedHeight; + return ( +
+
ERROR: {errorText}
+
+ ); + } + if (model.loading.get()) { + let height = this.model.savedHeight; + return ( +
+ loading content +
+ ); + } + let Comp = plugin.simpleComponent; + if (Comp == null) { +
(no component found in plugin)
; + } + let { festate, cmdstr, exitcode } = this.props.initParams.rawCmd; + return ( +
+ +
+ ); + } +} + +export { SimpleBlobRendererModel, SimpleBlobRenderer }; diff --git a/src/main/line/renderer/fullrenderer.tsx b/src/plugins/renderer/incrementalrenderer.tsx similarity index 95% rename from src/main/line/renderer/fullrenderer.tsx rename to src/plugins/renderer/incrementalrenderer.tsx index eee5ac15..2a4d1b70 100644 --- a/src/main/line/renderer/fullrenderer.tsx +++ b/src/plugins/renderer/incrementalrenderer.tsx @@ -6,14 +6,14 @@ import type { RendererPluginType, RendererModel, RendererContainerType, -} from "../../../types/types"; +} from "../../types/types"; import { debounce, throttle } from "throttle-debounce"; type OV = mobx.IObservableValue; type CV = mobx.IComputedValue; @mobxReact.observer -class FullRenderer extends React.Component< +class IncrementalRenderer extends React.Component< { rendererContainer: RendererContainerType; lineId: string; @@ -94,4 +94,4 @@ class FullRenderer extends React.Component< } } -export { FullRenderer }; +export { IncrementalRenderer }; diff --git a/src/common/terminal/Terminal.tsx b/src/plugins/terminal/Terminal.tsx similarity index 97% rename from src/common/terminal/Terminal.tsx rename to src/plugins/terminal/Terminal.tsx index fc23474c..a83d0091 100644 --- a/src/common/terminal/Terminal.tsx +++ b/src/plugins/terminal/Terminal.tsx @@ -5,12 +5,11 @@ import { boundMethod } from "autobind-decorator"; import dayjs from "dayjs"; import localizedFormat from "dayjs/plugin/localizedFormat"; import { If } from "tsx-control-statements/components"; -import { GlobalModel } from "../../model"; +import { GlobalModel, LineContainerModel } from "../../model/model"; import { termHeightFromRows } from "../../util/textmeasure"; import type { LineType } from "../../types/types"; import cn from "classnames"; -import type { LineContainerModel } from "../../model"; -import * as lineutil from "../../main/line/lineutil"; +import * as lineutil from "../../app/line/lineutil"; import "./terminal.less"; diff --git a/src/common/terminal/term.ts b/src/plugins/terminal/term.ts similarity index 99% rename from src/common/terminal/term.ts rename to src/plugins/terminal/term.ts index a6518448..b093c167 100644 --- a/src/common/terminal/term.ts +++ b/src/plugins/terminal/term.ts @@ -12,7 +12,7 @@ import type { WindowSize, PtyDataType, } from "../../types/types"; -import { getTheme } from "../../themes"; +import { getTheme } from "../../app/common/themes"; type DataUpdate = { data: Uint8Array; diff --git a/src/plugins/terminal/terminal.less b/src/plugins/terminal/terminal.less new file mode 100644 index 00000000..f8a2bca1 --- /dev/null +++ b/src/plugins/terminal/terminal.less @@ -0,0 +1,63 @@ +@import "../../index.less"; +@import "./xterm.less"; + +.terminal-wrapper { + position: relative; + margin-top: 1em; + + .term-block { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: transparent; + z-index: 10; + } + + .xterm-screen { + &::-webkit-scrollbar { + display: none; + } + } + + &.focus .xterm { + .xterm-screen { + overflow-y: scroll; + overscroll-behavior: contain; + } + + .xterm-viewport { + overscroll-behavior: contain; + } + } + + &.focus .xterm-viewport { + &::-webkit-scrollbar { + background-color: #777; + width: 5px; + height: 5px; + } + + &::-webkit-scrollbar-thumb { + background: white; + } + } + + .xterm-viewport { + &::-webkit-scrollbar { + background-color: #222; + width: 5px; + height: 5px; + } + + &::-webkit-scrollbar-thumb { + background: #555; + } + } +} + +body .xterm .xterm-viewport { + overflow-y: auto; + width: calc(100% + 5px); +} diff --git a/src/common/terminal/terminal.less b/src/plugins/terminal/xterm.less similarity index 99% rename from src/common/terminal/terminal.less rename to src/plugins/terminal/xterm.less index 9662b5d5..36b89485 100644 --- a/src/common/terminal/terminal.less +++ b/src/plugins/terminal/xterm.less @@ -1,5 +1,3 @@ -@import "../../index.less"; - /** * Adapted from xterm.css * Copyright (c) 2014 The xterm.js authors. All rights reserved. diff --git a/src/common/terminal/ptydata.ts b/src/plugins/util/ptydata.ts similarity index 100% rename from src/common/terminal/ptydata.ts rename to src/plugins/util/ptydata.ts diff --git a/src/terminal/term.ts b/src/terminal/term.ts deleted file mode 100644 index 2ec3d3d0..00000000 --- a/src/terminal/term.ts +++ /dev/null @@ -1,364 +0,0 @@ -import * as mobx from "mobx"; -import { Terminal } from "xterm"; -import { sprintf } from "sprintf-js"; -import { boundMethod } from "autobind-decorator"; -import { v4 as uuidv4 } from "uuid"; -import { termHeightFromRows, windowWidthToCols, windowHeightToRows } from "../util/textmeasure"; -import { boundInt } from "../util/util"; -import type { - TermContextUnion, - TermOptsType, - TermWinSize, - RendererContext, - WindowSize, - PtyDataType, -} from "../types/types"; - -type DataUpdate = { - data: Uint8Array; - pos: number; -}; - -const MinTermCols = 10; -const MaxTermCols = 1024; - -type TermWrapOpts = { - termContext: TermContextUnion; - usedRows?: number; - termOpts: TermOptsType; - winSize: WindowSize; - keyHandler?: (event: any, termWrap: TermWrap) => void; - focusHandler?: (focus: boolean) => void; - dataHandler?: (data: string, termWrap: TermWrap) => void; - isRunning: boolean; - customKeyHandler?: (event: any, termWrap: TermWrap) => boolean; - fontSize: number; - ptyDataSource: (termContext: TermContextUnion) => Promise; - onUpdateContentHeight: (termContext: RendererContext, height: number) => void; -}; - -// cmd-instance -class TermWrap { - terminal: any; - termContext: TermContextUnion; - atRowMax: boolean; - usedRows: mobx.IObservableValue; - flexRows: boolean; - connectedElem: Element; - ptyPos: number = 0; - reloading: boolean = false; - dataUpdates: DataUpdate[] = []; - loadError: mobx.IObservableValue = mobx.observable.box(false, { name: "term-loaderror" }); - winSize: WindowSize; - numParseErrors: number = 0; - termSize: TermWinSize; - focusHandler: (focus: boolean) => void; - isRunning: boolean; - fontSize: number; - onUpdateContentHeight: (termContext: RendererContext, height: number) => void; - ptyDataSource: (termContext: TermContextUnion) => Promise; - initializing: boolean; - - constructor(elem: Element, opts: TermWrapOpts) { - opts = opts ?? ({} as any); - this.termContext = opts.termContext; - this.connectedElem = elem; - this.flexRows = opts.termOpts.flexrows ?? false; - this.winSize = opts.winSize; - this.focusHandler = opts.focusHandler; - this.isRunning = opts.isRunning; - this.fontSize = opts.fontSize; - this.ptyDataSource = opts.ptyDataSource; - this.onUpdateContentHeight = opts.onUpdateContentHeight; - this.initializing = true; - if (this.flexRows) { - this.atRowMax = false; - this.usedRows = mobx.observable.box(opts.usedRows ?? (opts.isRunning ? 1 : 0), { name: "term-usedrows" }); - } else { - this.atRowMax = true; - this.usedRows = mobx.observable.box(opts.termOpts.rows, { name: "term-usedrows" }); - } - if (opts.winSize == null) { - this.termSize = { rows: opts.termOpts.rows, cols: opts.termOpts.cols }; - } else { - let cols = windowWidthToCols(opts.winSize.width, opts.fontSize); - this.termSize = { rows: opts.termOpts.rows, cols: cols }; - } - this.terminal = new Terminal({ - rows: this.termSize.rows, - cols: this.termSize.cols, - fontSize: opts.fontSize, - }); - this.terminal._core._inputHandler._parser.setErrorHandler((state) => { - this.numParseErrors++; - return state; - }); - this.terminal.open(elem); - if (opts.keyHandler != null) { - this.terminal.onKey((e) => opts.keyHandler(e, this)); - } - if (opts.dataHandler != null) { - this.terminal.onData((e) => opts.dataHandler(e, this)); - } - this.terminal.textarea.addEventListener("focus", () => { - if (this.focusHandler != null) { - this.focusHandler(true); - } - }); - this.terminal.textarea.addEventListener("blur", (e: any) => { - if (document.activeElement == this.terminal.textarea) { - return; - } - if (this.focusHandler != null) { - this.focusHandler(false); - } - }); - elem.addEventListener("scroll", this.elemScrollHandler); - if (opts.customKeyHandler != null) { - this.terminal.attachCustomKeyEventHandler((e) => opts.customKeyHandler(e, this)); - } - setTimeout(() => this.reload(0), 10); - } - - getUsedRows(): number { - return this.usedRows.get(); - } - - @boundMethod - elemScrollHandler(e: any) { - // this stops a weird behavior in the terminal - // xterm.js renders a textarea that handles focus. when it focuses and a space is typed the browser - // will scroll to make it visible (even though our terminal element has overflow hidden) - // this will undo that scroll. - if (this.atRowMax || e.target.scrollTop == 0) { - return; - } - e.target.scrollTop = 0; - } - - getContextRemoteId(): string { - if ("remoteId" in this.termContext) { - return this.termContext.remoteId; - } - return null; - } - - getRendererContext(): RendererContext { - if ("remoteId" in this.termContext) { - return null; - } - return this.termContext; - } - - getFontHeight(): number { - return this.terminal._core.viewport._currentRowHeight; - } - - dispose() { - if (this.terminal != null) { - this.terminal.dispose(); - this.terminal = null; - } - } - - giveFocus() { - if (this.terminal == null) { - return; - } - this.terminal.focus(); - setTimeout(() => this.terminal._core.viewport.syncScrollArea(true), 0); - } - - disconnectElem() { - this.connectedElem = null; - } - - getTermUsedRows(): number { - let term = this.terminal; - if (term == null) { - return 0; - } - let termBuf = term._core.buffer; - let termNumLines = termBuf.lines.length; - let termYPos = termBuf.y; - if (termNumLines > term.rows) { - return term.rows; - } - let usedRows = this.isRunning ? 1 : 0; - if (this.isRunning && termYPos >= usedRows) { - usedRows = termYPos + 1; - } - for (let i = term.rows - 1; i >= usedRows; i--) { - let line = termBuf.translateBufferLineToString(i, true); - if (line != null && line.trim() != "") { - usedRows = i + 1; - break; - } - } - return usedRows; - } - - updateUsedRows(forceFull: boolean, reason: string) { - if (this.terminal == null) { - return; - } - if (!this.flexRows) { - return; - } - let termContext = this.getRendererContext(); - if ("remoteId" in termContext) { - return; - } - if (forceFull) { - this.atRowMax = false; - } - if (this.atRowMax) { - return; - } - let tur = this.getTermUsedRows(); - if (tur >= this.terminal.rows) { - this.atRowMax = true; - } - mobx.action(() => { - let oldUsedRows = this.usedRows.get(); - if (!forceFull && tur <= oldUsedRows) { - return; - } - if (tur == oldUsedRows) { - return; - } - this.usedRows.set(tur); - if (this.onUpdateContentHeight != null) { - this.onUpdateContentHeight(termContext, tur); - } - })(); - } - - resizeCols(cols: number): void { - this.resize({ rows: this.termSize.rows, cols: cols }); - } - - resize(size: TermWinSize): void { - if (this.terminal == null) { - return; - } - let newSize = { rows: size.rows, cols: size.cols }; - newSize.cols = boundInt(newSize.cols, MinTermCols, MaxTermCols); - if (newSize.rows == this.termSize.rows && newSize.cols == this.termSize.cols) { - return; - } - this.termSize = newSize; - this.terminal.resize(newSize.cols, newSize.rows); - this.updateUsedRows(true, "resize"); - } - - resizeWindow(size: WindowSize): void { - let cols = windowWidthToCols(size.width, this.fontSize); - let rows = windowHeightToRows(size.height, this.fontSize); - this.resize({ rows, cols }); - } - - _reloadThenHandler(ptydata: PtyDataType) { - this.reloading = false; - this.ptyPos = ptydata.pos; - this.receiveData(ptydata.pos, ptydata.data, "reload-main"); - for (let i = 0; i < this.dataUpdates.length; i++) { - this.receiveData(this.dataUpdates[i].pos, this.dataUpdates[i].data, "reload-update-" + i); - } - this.dataUpdates = []; - if (this.terminal != null) { - this.terminal.write(new Uint8Array(), () => { - this.updateUsedRows(true, "reload"); - }); - } - } - - getLineNum(): number { - let context = this.getRendererContext(); - if (context == null) { - return 0; - } - return context.lineNum; - } - - hardResetTerminal(): void { - if (this.terminal == null) { - return; - } - this.terminal.reset(); - this.ptyPos = 0; - this.updateUsedRows(true, "term-reset"); - this.dataUpdates = []; - this.numParseErrors = 0; - } - - reload(delayMs: number) { - if (this.terminal == null) { - return; - } - // console.log("reload-term", this.getLineNum()); - if (!this.initializing) { - this.hardResetTerminal(); - } - this.reloading = true; - this.initializing = false; - let rtnp = this.ptyDataSource(this.termContext); - if (rtnp == null) { - console.log("no promise returned from ptyDataSource (termwrap)", this.termContext); - return; - } - rtnp.then((ptydata) => { - setTimeout(() => { - this._reloadThenHandler(ptydata); - }, delayMs); - }).catch((e) => { - mobx.action(() => { - this.loadError.set(true); - })(); - this.dataUpdates = []; - this.reloading = false; - console.log("error reloading terminal", this.termContext, e); - }); - } - - receiveData(pos: number, data: Uint8Array, reason?: string) { - // console.log("update-pty-data", reason, "line:" + this.getLineNum(), pos, data.length, "=>", pos + data.length); - if (this.initializing) { - return; - } - if (this.terminal == null) { - return; - } - if (this.loadError.get()) { - return; - } - if (this.reloading) { - this.dataUpdates.push({ data: data, pos: pos }); - return; - } - if (pos > this.ptyPos) { - console.log(sprintf("pty-jump term[%s] %d => %d", JSON.stringify(this.termContext), this.ptyPos, pos)); - this.ptyPos = pos; - } - if (pos < this.ptyPos) { - let diff = this.ptyPos - pos; - if (diff >= data.length) { - // already contains all the data - return; - } - data = data.slice(diff); - pos += diff; - } - this.ptyPos += data.length; - this.terminal.write(data, () => { - this.updateUsedRows(false, "updatePtyData"); - }); - } - - cmdDone(): void { - this.isRunning = false; - this.updateUsedRows(true, "cmd-done"); - } -} - -export { TermWrap }; diff --git a/src/terminal/terminal.less b/src/terminal/terminal.less deleted file mode 100644 index 33c9e157..00000000 --- a/src/terminal/terminal.less +++ /dev/null @@ -1,195 +0,0 @@ -@import "../index.less"; - -.term-prompt { - font-weight: 300; - .icon { - margin: 0 4px 0 2px; - vertical-align: middle; - width: 1.2em; - height: 1.2em; - fill: @prompt-green; - } - - .term-prompt-branch { - color: @term-white; - } - - .term-prompt-python { - color: @term-bright-magenta; - } - - .term-prompt-remote { - i { - margin-right: 0; - } - } - - .term-prompt-remote { - color: @term-bright-green; - - &.color-green { - color: @term-bright-green; - } - - &.color-red { - color: @term-bright-red; - } - - &.color-blue { - color: @term-bright-blue; - } - - &.color-yellow { - color: @term-bright-yellow; - } - - &.color-magenta { - color: @term-bright-magenta; - } - - &.color-cyan { - color: @term-bright-cyan; - } - - &.color-white { - color: @term-bright-white; - } - - &.color-orange { - color: @tab-orange; - } - } - - .term-prompt-cwd { - color: @term-bright-green; - } - - .term-prompt-end { - color: @term-bright-green; - } -} - -.terminal-wrapper { - position: relative; - margin-top: 1em; - - .term-block { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: transparent; - z-index: 10; - } - - .xterm-screen { - &::-webkit-scrollbar { - display: none; - } - } - - &.focus .xterm { - .xterm-screen { - overflow-y: scroll; - overscroll-behavior: contain; - } - - .xterm-viewport { - overscroll-behavior: contain; - } - } - - &.focus .xterm-viewport { - &::-webkit-scrollbar { - background-color: #777; - width: 5px; - height: 5px; - } - - &::-webkit-scrollbar-thumb { - background: white; - } - } - - .xterm-viewport { - &::-webkit-scrollbar { - background-color: #222; - width: 5px; - height: 5px; - } - - &::-webkit-scrollbar-thumb { - background: #555; - } - } -} - -body .xterm .xterm-viewport { - overflow-y: auto; - width: calc(100% + 5px); -} - -#main .term-prompt { - i { - margin-right: 3px; - } - - .term-prompt-branch { - color: @term-white; - } - - .term-prompt-python { - color: @term-bright-magenta; - } - - .term-prompt-remote { - i { - margin-right: 0; - } - } - - .term-prompt-remote { - color: @term-bright-green; - - &.color-green { - color: @term-bright-green; - } - - &.color-red { - color: @term-bright-red; - } - - &.color-blue { - color: @term-bright-blue; - } - - &.color-yellow { - color: @term-bright-yellow; - } - - &.color-magenta { - color: @term-bright-magenta; - } - - &.color-cyan { - color: @term-bright-cyan; - } - - &.color-white { - color: @term-bright-white; - } - - &.color-orange { - color: @tab-orange; - } - } - - .term-prompt-cwd { - color: @term-bright-green; - } - - .term-prompt-end { - color: @term-bright-green; - } -} diff --git a/src/webshare/webshare-client-view.tsx b/src/webshare/webshare-client-view.tsx deleted file mode 100644 index 72dbc3d6..00000000 --- a/src/webshare/webshare-client-view.tsx +++ /dev/null @@ -1,178 +0,0 @@ -import * as React from "react"; -import * as mobxReact from "mobx-react"; -import * as mobx from "mobx"; -import { sprintf } from "sprintf-js"; -import { boundMethod } from "autobind-decorator"; -import { v4 as uuidv4 } from "uuid"; -import dayjs from "dayjs"; -import { If, For, When, Otherwise, Choose } from "tsx-control-statements/components"; -import cn from "classnames"; -import { GlobalModel, GlobalCommandRunner, Screen } from "../model"; -import { WebStopShareConfirmMarkdown } from "../main/modals/settings"; -import * as util from "../util/util"; - -import "./webshare.less"; - -type OV = mobx.IObservableValue; -type OArr = mobx.IObservableArray; -type OMap = mobx.ObservableMap; - -@mobxReact.observer -class WebShareView extends React.Component<{}, {}> { - shareCopied: OV = mobx.observable.box(null, { name: "sw-shareCopied" }); - - @boundMethod - closeView(): void { - GlobalModel.showSessionView(); - } - - @boundMethod - viewInContext(screen: Screen) { - GlobalModel.historyViewModel.closeView(); - GlobalCommandRunner.lineView(screen.sessionId, screen.screenId, screen.selectedLine.get()); - } - - getSSName(screen: Screen, snames: Record): string { - let sessionName = snames[screen.sessionId] ?? "unknown"; - return sprintf("#%s[%s]", sessionName, screen.name.get()); - } - - @boundMethod - copyShareLink(screen: Screen): void { - let shareLink = screen.getWebShareUrl(); - if (shareLink == null) { - return; - } - navigator.clipboard.writeText(shareLink); - mobx.action(() => { - this.shareCopied.set(screen.screenId); - })(); - setTimeout(() => { - mobx.action(() => { - this.shareCopied.set(null); - })(); - }, 600); - } - - @boundMethod - openScreenSettings(screen: Screen): void { - mobx.action(() => { - GlobalModel.screenSettingsModal.set({ sessionId: screen.sessionId, screenId: screen.screenId }); - })(); - } - - @boundMethod - stopSharing(screen: Screen): void { - let message = WebStopShareConfirmMarkdown; - let alertRtn = GlobalModel.showAlert({ message: message, confirm: true, markdown: true }); - alertRtn.then((result) => { - if (!result) { - return; - } - let prtn = GlobalCommandRunner.screenWebShare(screen.screenId, false); - prtn.then((crtn) => { - if (crtn.success) { - return; - } - GlobalModel.showAlert({ message: crtn.error }); - }); - }); - } - - render() { - let isHidden = GlobalModel.activeMainView.get() != "webshare"; - if (isHidden) { - return null; - } - let snames = GlobalModel.getSessionNames(); - let screenList = GlobalModel.getWebSharedScreens(); - let screen: Screen = null; - return ( -
-
- -
-
- - WEB SHARING 0}> ({screenList.length}) -
- -
- No Active Web Shares. -
- Share a screen using the "web share" toggle in screen/tab settings{" "} - . -
-
- 0}> -
- -
- -
- -
- this.viewInContext(screen)}> - {this.getSSName(screen, snames)} - -
-
- - open in browser - - - - -
this.copyShareLink(screen)} - > - copy link - - - -
-
this.openScreenSettings(screen)} - > - open settings - - - -
-
this.stopSharing(screen)} - > - stop sharing - - - -
-
-
- -
- -
-
- Currently limited to a maximum of 3 screens, each with up to 50 commands. -
- Contact us on{" "} - - Discord - {" "} - to get a higher limit. -
-
-
- ); - } -} - -export { WebShareView }; diff --git a/src/webshare/webshare-elems.tsx b/src/webshare/webshare-elems.tsx deleted file mode 100644 index 7b73239d..00000000 --- a/src/webshare/webshare-elems.tsx +++ /dev/null @@ -1,859 +0,0 @@ -import * as React from "react"; -import * as mobxReact from "mobx-react"; -import * as mobx from "mobx"; -import { sprintf } from "sprintf-js"; -import { boundMethod } from "autobind-decorator"; -import { If, For, When, Otherwise, Choose } from "tsx-control-statements/components"; -import cn from "classnames"; -import { WebShareModel, getTermPtyData } from "./webshare-model"; -import * as T from "./types"; -import { isBlank } from "./util"; -import { PluginModel } from "./plugins"; -import * as lineutil from "./lineutil"; -import * as util from "./util"; -import { windowWidthToCols, windowHeightToRows, termHeightFromRows, termWidthFromCols } from "./textmeasure"; -import { debounce, throttle } from "throttle-debounce"; -import { LinesView } from "./linesview"; -import { Toggle } from "./elements"; -import { SimpleBlobRendererModel, SimpleBlobRenderer } from "./simplerenderer"; - -type OV = mobx.IObservableValue; -type OArr = mobx.IObservableArray; -type OMap = mobx.ObservableMap; - -let foo = LinesView; - -// TODO reshare -// TODO document.visibility API to disconnect websocket: document.addEventListener("visibilitychange", () => { document.hidden }); - -function makeFullRemoteRef(ownerName: string, remoteRef: string, name: string): string { - if (isBlank(ownerName) && isBlank(name)) { - return remoteRef; - } - if (!isBlank(ownerName) && isBlank(name)) { - return ownerName + ":" + remoteRef; - } - if (isBlank(ownerName) && !isBlank(name)) { - return remoteRef + ":" + name; - } - return ownerName + ":" + remoteRef + ":" + name; -} - -function getShortVEnv(venvDir: string): string { - if (isBlank(venvDir)) { - return ""; - } - let lastSlash = venvDir.lastIndexOf("/"); - if (lastSlash == -1) { - return venvDir; - } - return venvDir.substr(lastSlash + 1); -} - -function replaceHomePath(path: string, homeDir: string): string { - if (path == homeDir) { - return "~"; - } - if (path.startsWith(homeDir + "/")) { - return "~" + path.substr(homeDir.length); - } - return path; -} - -function getCwdStr(remote: T.WebRemote, state: Record): string { - if (state == null || isBlank(state.cwd)) { - return "~"; - } - let cwd = state.cwd; - if (remote && remote.homedir) { - cwd = replaceHomePath(cwd, remote.homedir); - } - return cwd; -} - -function getRemoteStr(remote: T.WebRemote): string { - if (remote == null) { - return "(invalid remote)"; - } - let remoteRef = !isBlank(remote.alias) ? remote.alias : remote.canonicalname; - let fullRef = makeFullRemoteRef(null, remoteRef, remote.name); - return fullRef; -} - -@mobxReact.observer -class Prompt extends React.Component<{ remote: T.WebRemote; festate: Record }, {}> { - render() { - let { remote, festate } = this.props; - let remoteStr = getRemoteStr(remote); - let cwd = getCwdStr(remote, festate); - let isRoot = !!remote.isroot; - let remoteColorClass = isRoot ? "color-red" : "color-green"; - let remoteTitle: string = null; - if (remote && remote.canonicalname) { - remoteTitle = remote.canonicalname; - } - let cwdElem = ( - - - {cwd} - - ); - let remoteElem = ( - - [{remoteStr}]{" "} - - ); - let rootIndicatorElem = {isRoot ? "#" : "$"}; - let branchElem = null; - let pythonElem = null; - if (!isBlank(festate["PROMPTVAR_GITBRANCH"])) { - let branchName = festate["PROMPTVAR_GITBRANCH"]; - branchElem = ( - - - {branchName}{" "} - - ); - } - if (!isBlank(festate["VIRTUAL_ENV"])) { - let venvDir = festate["VIRTUAL_ENV"]; - let venv = getShortVEnv(venvDir); - pythonElem = ( - - - {venv}{" "} - - ); - } - return ( - - {remoteElem} {pythonElem} - {branchElem} - {cwdElem} {rootIndicatorElem} - - ); - } -} - -@mobxReact.observer -class LineAvatar extends React.Component<{ line: T.WebLine; cmd: T.WebCmd }, {}> { - render() { - let { line, cmd } = this.props; - let lineNumStr = String(line.linenum); - let status = cmd != null ? cmd.status : "done"; - let rtnstate = cmd != null ? cmd.rtnstate : false; - let isComment = line.linetype == "text"; - return ( -
- {lineNumStr} - - - - - - - - - -
- ); - } -} - -@mobxReact.observer -class WebLineCmdView extends React.Component< - { - line: T.WebLine; - cmd: T.WebCmd; - topBorder: boolean; - width: number; - onHeightChange: T.LineHeightChangeCallbackType; - staticRender: boolean; - visible: OV; - }, - {} -> { - lineRef: React.RefObject = React.createRef(); - isCmdExpanded: OV = mobx.observable.box(false, { name: "cmd-expanded" }); - isOverflow: OV = mobx.observable.box(false, { name: "line-overflow" }); - cmdTextRef: React.RefObject = React.createRef(); - copiedIndicator: OV = mobx.observable.box(false, { name: "copiedIndicator" }); - lastHeight: number; - - componentDidMount(): void { - this.checkCmdText(); - this.componentDidUpdate(); - } - - componentDidUpdate(): void { - this.handleHeightChange(); - } - - renderSimple() { - let { line, cmd, topBorder } = this.props; - let height: number = 0; - if (isBlank(line.renderer) || line.renderer == "terminal") { - height = this.getTerminalRendererHeight(cmd); - } else { - let { line, width } = this.props; - let usedRows = WebShareModel.getUsedRows(lineutil.getWebRendererContext(line), line, cmd, width); - height = 36 + usedRows; - } - let mainCn = cn("line", "line-cmd", { "top-border": topBorder }); - return ( -
- -
- ); - } - - getTerminalRendererHeight(cmd: T.WebCmd): number { - let { line, width } = this.props; - let height = 42; // height of zero height terminal - let usedRows = WebShareModel.getUsedRows(lineutil.getWebRendererContext(line), line, cmd, width); - if (usedRows > 0) { - height = 53 + termHeightFromRows(usedRows, WebShareModel.getTermFontSize()); - } - return height; - } - - @boundMethod - handleExpandCmd(): void { - mobx.action(() => { - this.isCmdExpanded.set(true); - })(); - } - - renderCmdText(cmd: T.WebCmd, remote: T.WebRemote): any { - if (cmd == null) { - return ( -
- (cmd not found) -
- ); - } - if (this.isCmdExpanded.get()) { - return ( - -
-
- -
-
-
-
{lineutil.getFullCmdText(cmd.cmdstr)}
-
-
- ); - } - let isMultiLine = lineutil.isMultiLineCmdText(cmd.cmdstr); - return ( -
-
- - - {lineutil.getSingleLineCmdText(cmd.cmdstr)} -
- -
- ...▼ -
-
-
- ); - } - - checkCmdText() { - let metaElem = this.cmdTextRef.current; - if (metaElem == null || metaElem.childNodes.length == 0) { - return; - } - let metaElemWidth = metaElem.offsetWidth; - let metaChild = metaElem.firstChild; - let children = metaChild.childNodes; - let childWidth = 0; - for (let i = 0; i < children.length; i++) { - let ch = children[i]; - childWidth += ch.offsetWidth; - } - let isOverflow = childWidth > metaElemWidth; - if (isOverflow != this.isOverflow.get()) { - mobx.action(() => { - this.isOverflow.set(isOverflow); - })(); - } - } - - @boundMethod - handleHeightChange(): void { - let { line } = this.props; - let curHeight = 0; - let curWidth = 0; - let elem = this.lineRef.current; - if (elem != null) { - curHeight = elem.offsetHeight; - curWidth = elem.offsetWidth; - } - if (this.lastHeight == curHeight) { - return; - } - let lastHeight = this.lastHeight; - this.lastHeight = curHeight; - this.props.onHeightChange(line.linenum, curHeight, lastHeight); - // console.log("line height change: ", line.linenum, lastHeight, "=>", curHeight); - } - - @boundMethod - handleClick(): void { - WebShareModel.setSelectedLine(this.props.line.linenum); - } - - renderMetaWrap() { - let { line, cmd } = this.props; - let formattedTime = lineutil.getLineDateTimeStr(line.ts); - let termOpts = cmd.termopts; - let remote = cmd.remote; - let renderer = line.renderer; - return ( -
-
-
{formattedTime}
-
 
- -
- - {renderer}  -
-
-
- ({termOpts.rows}x{termOpts.cols}) -
-
- {this.renderCmdText(cmd, remote)} -
- ); - } - - copyAllowed(): boolean { - return navigator.clipboard != null; - } - - @boundMethod - clickCopy(): void { - if (this.copyAllowed()) { - let { cmd } = this.props; - navigator.clipboard.writeText(cmd.cmdstr); - } - mobx.action(() => { - this.copiedIndicator.set(true); - })(); - setTimeout(() => { - mobx.action(() => { - this.copiedIndicator.set(false); - })(); - }, 600); - } - - getRendererOpts(cmd: T.WebCmd): T.RendererOpts { - return { - maxSize: WebShareModel.getMaxContentSize(), - idealSize: WebShareModel.getIdealContentSize(), - termOpts: mobx.toJS(cmd.termopts), - termFontSize: WebShareModel.getTermFontSize(), - }; - } - - makeRendererModelInitializeParams(): T.RendererModelInitializeParams { - let { line, cmd } = this.props; - let context = lineutil.getWebRendererContext(line); - let savedHeight = WebShareModel.getContentHeight(context); - if (savedHeight == null) { - if (line.contentheight != null && line.contentheight != -1) { - savedHeight = line.contentheight; - } else { - savedHeight = 0; - } - } - let api = { - saveHeight: (height: number) => { - WebShareModel.setContentHeight(lineutil.getWebRendererContext(line), height); - }, - onFocusChanged: (focus: boolean) => { - // nothing - }, - dataHandler: (data: string, model: T.RendererModel) => { - // nothing - }, - }; - return { - context: context, - isDone: !lineutil.cmdStatusIsRunning(cmd.status), - savedHeight: savedHeight, - opts: this.getRendererOpts(cmd), - ptyDataSource: getTermPtyData, - api: api, - }; - } - - render() { - let { line, cmd, topBorder, staticRender, visible } = this.props; - let isVisible = visible.get(); - if (staticRender || !isVisible) { - return this.renderSimple(); - } - let model = WebShareModel; - let isSelected = mobx - .computed(() => model.getSelectedLine() == line.linenum, { name: "computed-isSelected" }) - .get(); - let isServerSelected = mobx - .computed(() => model.getServerSelectedLine() == line.linenum, { name: "computed-isServerSelected" }) - .get(); - let rendererPlugin: T.RendererPluginType = null; - let isNoneRenderer = line.renderer == "none"; - if (!isBlank(line.renderer) && line.renderer != "terminal" && !isNoneRenderer) { - rendererPlugin = PluginModel.getRendererPluginByName(line.renderer); - } - let rendererType = lineutil.getRendererType(line); - let mainCn = cn("web-line line line-cmd", { "top-border": topBorder }); - let visObs = mobx.observable.box(true, { name: "visObs" }); - let width = this.props.width; - if (width == 0) { - width = 1024; - } - let isExpanded = this.isCmdExpanded.get(); - return ( -
- -
-
copied
-
-
-
-
- - {this.renderMetaWrap()} - -
- -
-
-
- - - - - - - -
- -
state unchanged
-
-
- -
new state
-
-
{cmd.rtnstatestr}
-
-
-
-
- ); - } -} - -@mobxReact.observer -class WebLineTextView extends React.Component<{ line: T.WebLine; cmd: T.WebCmd; topBorder: boolean }, {}> { - render() { - let { line, topBorder } = this.props; - let model = WebShareModel; - let isSelected = mobx - .computed(() => model.getSelectedLine() == line.linenum, { name: "computed-isSelected" }) - .get(); - let mainCn = cn("web-line line line-text", { "top-border": topBorder }); - return ( -
-
-
- -
-
-
{line.text}
-
-
- ); - } -} - -@mobxReact.observer -class TerminalRenderer extends React.Component< - { - line: T.WebLine; - cmd: T.WebCmd; - width: number; - staticRender: boolean; - visible: OV; - onHeightChange: () => void; - }, - {} -> { - termLoaded: mobx.IObservableValue = mobx.observable.box(false, { name: "termrenderer-termLoaded" }); - elemRef: React.RefObject = React.createRef(); - termRef: React.RefObject = React.createRef(); - - constructor(props) { - super(props); - } - - componentDidMount() { - this.componentDidUpdate(null, null, null); - } - - componentWillUnmount() { - if (this.termLoaded.get()) { - this.unloadTerminal(true); - } - } - - getSnapshotBeforeUpdate(prevProps, prevState): { height: number } { - let elem = this.elemRef.current; - if (elem == null) { - return { height: 0 }; - } - return { height: elem.offsetHeight }; - } - - componentDidUpdate(prevProps, prevState, snapshot: { height: number }): void { - if (this.props.onHeightChange == null) { - return; - } - let { line } = this.props; - let curHeight = 0; - let elem = this.elemRef.current; - if (elem != null) { - curHeight = elem.offsetHeight; - } - if (snapshot == null) { - snapshot = { height: 0 }; - } - if (snapshot.height != curHeight) { - this.props.onHeightChange(); - // console.log("term-render height change: ", line.linenum, snapshot.height, "=>", curHeight); - } - this.checkLoad(); - } - - checkLoad(): void { - let { line, staticRender, visible } = this.props; - if (staticRender) { - return; - } - let vis = visible && visible.get(); - let curVis = this.termLoaded.get(); - if (vis && !curVis) { - this.loadTerminal(); - } else if (!vis && curVis) { - this.unloadTerminal(false); - } - } - - loadTerminal(): void { - let { line, cmd } = this.props; - if (cmd == null) { - return; - } - let termElem = this.termRef.current; - if (termElem == null) { - console.log("cannot load terminal, no term elem found", line); - return; - } - WebShareModel.loadTerminalRenderer(termElem, line, cmd, this.props.width); - mobx.action(() => this.termLoaded.set(true))(); - } - - unloadTerminal(unmount: boolean): void { - let { line } = this.props; - WebShareModel.unloadRenderer(line.lineid); - if (!unmount) { - mobx.action(() => this.termLoaded.set(false))(); - let termElem = this.termRef.current; - if (termElem != null) { - termElem.replaceChildren(); - } - } - } - - @boundMethod - clickTermBlock(e: any) { - let { line } = this.props; - let termWrap = WebShareModel.getTermWrap(line.lineid); - if (termWrap != null) { - termWrap.giveFocus(); - } - mobx.action(() => { - WebShareModel.setSelectedLine(line.linenum); - })(); - } - - render() { - let { cmd, line, width, staticRender, visible } = this.props; - let isVisible = visible.get(); // for reaction - let usedRows = WebShareModel.getUsedRows(lineutil.getWebRendererContext(line), line, cmd, width); - let termHeight = termHeightFromRows(usedRows, WebShareModel.getTermFontSize()); - let termLoaded = this.termLoaded.get(); - let isFocused = WebShareModel.getSelectedLine() == line.linenum; - return ( -
- -
-
-
- -
- ... -
-
-
- ); - } -} - -@mobxReact.observer -class WebLineView extends React.Component< - { - line: T.WebLine; - cmd: T.WebCmd; - topBorder: boolean; - width: number; - onHeightChange: T.LineHeightChangeCallbackType; - staticRender: boolean; - visible: OV; - }, - {} -> { - render() { - let { line } = this.props; - if (line.linetype == "text") { - return ; - } - if (line.linetype == "cmd") { - return ; - } - return
invalid linetype "{line.linetype}"
; - } -} - -@mobxReact.observer -class WebScreenView extends React.Component<{}, {}> { - viewRef: React.RefObject = React.createRef(); - width: OV = mobx.observable.box(0, { name: "WebScreenView-width" }); - handleResize_debounced: () => void; - rszObs: ResizeObserver; - - constructor(props: any) { - super(props); - this.handleResize_debounced = debounce(1000, this.handleResize.bind(this)); - } - - componentDidMount(): void { - if (this.viewRef.current != null) { - let viewElem = this.viewRef.current; - this.rszObs = new ResizeObserver(this.handleResize_debounced.bind(this)); - this.rszObs.observe(viewElem); - let width = viewElem.offsetWidth; - if (width > 0) { - mobx.action(() => { - this.width.set(width); - this.handleResize(); - })(); - } - } - } - - handleResize(): void { - let viewElem = this.viewRef.current; - if (viewElem == null) { - return; - } - let width = viewElem.offsetWidth; - let height = viewElem.offsetHeight; - WebShareModel.setLastScreenSize({ width, height }); - if (width != this.width.get()) { - WebShareModel.resizeWindow({ width: width, height: height }); - mobx.action(() => { - this.width.set(width); - })(); - } - } - - @boundMethod - buildLineComponent(lineProps: T.LineFactoryProps): JSX.Element { - let line: T.WebLine = lineProps.line as T.WebLine; - let cmd = WebShareModel.getCmdById(lineProps.line.lineid); - return ( - - ); - } - - renderEmpty(): any { - return ( -
-
-
-
-
- ); - } - - render() { - let fullScreen = WebShareModel.fullScreen.get(); - if (fullScreen == null || fullScreen.lines.length == 0) { - return this.renderEmpty(); - } - return ( -
- -
- ); - } -} - -@mobxReact.observer -class WebShareMain extends React.Component<{}, {}> { - renderCopy() { - return
© 2023 Dashborg Inc
; - } - - render() { - let screen = WebShareModel.fullScreen.get(); - let errMessage = WebShareModel.errMessage.get(); - let shareName = ""; - if (screen != null) { - shareName = isBlank(screen.screen.sharename) ? "(no name)" : screen.screen.sharename; - } - return ( -
-
- - -
-
{shareName}
-
-
-
Sync Selection
- WebShareModel.setSyncSelectedLine(val)} - /> -
-
-
- - - - -
{WebShareModel.errMessage.get()}
-
-
-
- {this.renderCopy()} - -
- ); - } -} - -export { WebShareMain }; diff --git a/src/webshare/webshare-model.ts b/src/webshare/webshare-model.ts deleted file mode 100644 index fe84fa6a..00000000 --- a/src/webshare/webshare-model.ts +++ /dev/null @@ -1,679 +0,0 @@ -import * as mobx from "mobx"; -import { sprintf } from "sprintf-js"; -import { boundMethod } from "autobind-decorator"; -import { handleJsonFetchResponse, isModKeyPress, base64ToArray } from "./util"; -import * as T from "./types"; -import { TermWrap } from "./term"; -import * as lineutil from "./lineutil"; -import * as util from "./util"; -import { windowWidthToCols, windowHeightToRows, termWidthFromCols, termHeightFromRows } from "./textmeasure"; -import { WebShareWSControl } from "./webshare-ws"; - -// @ts-ignore -let PROMPT_DEV = __PROMPT_DEV__; -// @ts-ignore -let PROMPT_VERSION = __PROMPT_VERSION__; -// @ts-ignore -let PROMPT_BULILD = __PROMPT_BUILD__; -// @ts-ignore -let PROMPT_API_ENDPOINT = __PROMPT_API_ENDPOINT__; -// @ts-ignore -let PROMPT_WSAPI_ENDPOINT = __PROMPT_WSAPI_ENDPOINT__; - -type OV = mobx.IObservableValue; -type OArr = mobx.IObservableArray; -type OMap = mobx.ObservableMap; -type CV = mobx.IComputedValue; - -type PtyListener = { - receiveData(ptyPos: number, data: Uint8Array, reason?: string); -}; - -function isBlank(s: string) { - return s == null || s == ""; -} - -function getBaseUrl() { - return PROMPT_API_ENDPOINT; -} - -function getBaseWSUrl() { - return PROMPT_WSAPI_ENDPOINT; -} - -class WebShareModelClass { - viewKey: string; - screenId: string; - errMessage: OV = mobx.observable.box(null, { name: "errMessage" }); - fullScreen: OV = mobx.observable.box(null, { name: "webScreen" }); - terminals: Record = {}; // lineid => TermWrap - renderers: Record = {}; // lineid => RendererModel - contentHeightCache: Record = {}; // lineid => height - wsControl: WebShareWSControl; - anchor: { anchorLine: number; anchorOffset: number } = { anchorLine: 0, anchorOffset: 0 }; - selectedLine: OV = mobx.observable.box(0, { name: "selectedLine" }); - syncSelectedLine: OV = mobx.observable.box(true, { name: "syncSelectedLine" }); - lastScreenSize: T.WindowSize = null; - activePtyFetch: Record = {}; // lineid -> active - localPtyOffsetMap: Record = {}; - remotePtyOffsetMap: Record = {}; - activeUpdateFetch: boolean = false; - remoteScreenVts: number = 0; - isDev: boolean = PROMPT_DEV; - - constructor() { - let pathName = window.location.pathname; - let screenMatch = pathName.match(/\/share\/([a-f0-9-]+)/); - if (screenMatch != null) { - this.screenId = screenMatch[1]; - } - let urlParams = new URLSearchParams(window.location.search); - this.viewKey = urlParams.get("viewkey"); - if (this.screenId == null) { - this.screenId = urlParams.get("screenid"); - } - setTimeout(() => this.loadFullScreenData(false), 10); - this.wsControl = new WebShareWSControl( - getBaseWSUrl(), - this.screenId, - this.viewKey, - this.wsMessageCallback.bind(this) - ); - document.addEventListener("keydown", this.docKeyDownHandler.bind(this)); - } - - setErrMessage(msg: string): void { - mobx.action(() => { - this.errMessage.set(msg); - })(); - } - - setSyncSelectedLine(val: boolean): void { - mobx.action(() => { - this.syncSelectedLine.set(val); - if (val) { - let fullScreen = this.fullScreen.get(); - if (fullScreen != null) { - this.selectedLine.set(fullScreen.screen.selectedline); - } - } - })(); - } - - setLastScreenSize(winSize: T.WindowSize) { - if (winSize == null || winSize.height == 0 || winSize.width == 0) { - return; - } - this.lastScreenSize = winSize; - } - - getMaxContentSize(): T.WindowSize { - if (this.lastScreenSize == null) { - let width = termWidthFromCols(80, WebShareModel.getTermFontSize()); - let height = termHeightFromRows(25, WebShareModel.getTermFontSize()); - return { width, height }; - } - let winSize = this.lastScreenSize; - let width = util.boundInt(winSize.width - 50, 100, 5000); - let height = util.boundInt(winSize.height - 100, 100, 5000); - return { width, height }; - } - - getIdealContentSize(): T.WindowSize { - if (this.lastScreenSize == null) { - let width = termWidthFromCols(80, WebShareModel.getTermFontSize()); - let height = termHeightFromRows(25, WebShareModel.getTermFontSize()); - return { width, height }; - } - let winSize = this.lastScreenSize; - let width = util.boundInt(Math.ceil((winSize.width - 50) * 0.7), 100, 5000); - let height = util.boundInt(Math.ceil((winSize.height - 100) * 0.5), 100, 5000); - return { width, height }; - } - - getSelectedLine(): number { - return this.selectedLine.get(); - } - - getServerSelectedLine(): number { - let fullScreen = this.fullScreen.get(); - if (fullScreen != null) { - return fullScreen.screen.selectedline; - } - } - - setSelectedLine(lineNum: number): void { - mobx.action(() => { - this.selectedLine.set(lineNum); - })(); - } - - updateSelectedLineIndex(delta: number): void { - let fullScreen = this.fullScreen.get(); - if (fullScreen == null) { - return; - } - let lineIndex = this.getLineIndex(this.selectedLine.get()); - if (lineIndex == -1) { - return; - } - lineIndex += delta; - let lines = fullScreen.lines; - if (lineIndex < 0 || lineIndex >= lines.length) { - return; - } - this.setSelectedLine(lines[lineIndex].linenum); - } - - setAnchorFields(anchorLine: number, anchorOffset: number, reason: string): void { - this.anchor.anchorLine = anchorLine; - this.anchor.anchorOffset = anchorOffset; - } - - getAnchor(): { anchorLine: number; anchorOffset: number } { - return this.anchor; - } - - getTermFontSize(): number { - return 12; - } - - resizeWindow(winSize: T.WindowSize): void { - let cols = windowWidthToCols(winSize.width, this.getTermFontSize()); - for (let lineId in this.terminals) { - let termWrap = this.terminals[lineId]; - termWrap.resizeCols(cols); - } - } - - mergeLine(fullScreen: T.WebFullScreen, newLine: T.WebLine) { - for (let i = 0; i < fullScreen.lines.length; i++) { - let line = fullScreen.lines[i]; - if (line.lineid == newLine.lineid) { - fullScreen.lines[i] = newLine; - return; - } - if (line.linenum > newLine.linenum) { - fullScreen.lines.splice(i, 0, newLine); - return; - } - } - fullScreen.lines.push(newLine); - } - - removeLine(fullScreen: T.WebFullScreen, lineId: string) { - for (let i = 0; i < fullScreen.lines.length; i++) { - let line = fullScreen.lines[i]; - if (line.lineid == lineId) { - fullScreen.lines.splice(i, 1); - break; - } - } - for (let i = 0; i < fullScreen.cmds.length; i++) { - let cmd = fullScreen.cmds[i]; - if (cmd.lineid == lineId) { - fullScreen.cmds.splice(i, 1); - break; - } - } - this.unloadRenderer(lineId); - } - - setCmdDone(lineId: string): void { - let termWrap = this.getTermWrap(lineId); - if (termWrap != null) { - termWrap.cmdDone(); - } - } - - mergeCmd(fullScreen: T.WebFullScreen, newCmd: T.WebCmd) { - for (let i = 0; i < fullScreen.cmds.length; i++) { - let cmd = fullScreen.cmds[i]; - if (cmd.lineid == newCmd.lineid) { - let wasRunning = lineutil.cmdStatusIsRunning(cmd.status); - let isRunning = lineutil.cmdStatusIsRunning(newCmd.status); - if (wasRunning && !isRunning) { - setTimeout(() => this.setCmdDone(cmd.lineid), 300); - } - fullScreen.cmds[i] = newCmd; - return; - } - } - fullScreen.cmds.push(newCmd); - } - - mergeUpdate(msg: T.WebFullScreen) { - if (msg.screenid != this.screenId) { - console.log("bad WebFullScreen update, wrong screenid", msg.screenid); - return; - } - // console.log("merge screen-update", "vts=" + msg.vts); - // console.log("merge", "vts=" + msg.vts, msg); - mobx.action(() => { - let fullScreen = this.fullScreen.get(); - if (fullScreen.vts >= msg.vts) { - console.log("stale merge", "cur-vts=" + fullScreen.vts, "merge-vts=" + msg.vts); - return; - } - fullScreen.vts = msg.vts; - if (msg.screen) { - fullScreen.screen = msg.screen; - if (this.syncSelectedLine.get()) { - this.selectedLine.set(msg.screen.selectedline); - } - } - if (msg.lines != null && msg.lines.length > 0) { - for (let line of msg.lines) { - if (line.archived) { - this.removeLine(fullScreen, line.lineid); - continue; - } - this.mergeLine(fullScreen, line); - } - } - if (msg.cmds != null && msg.cmds.length > 0) { - for (let cmd of msg.cmds) { - this.mergeCmd(fullScreen, cmd); - } - } - this.handleCmdPtyMap(msg.cmdptymap); - })(); - } - - handleCmdPtyMap(ptyMap: Record) { - if (ptyMap == null) { - return; - } - for (let lineId in ptyMap) { - let newOffset = ptyMap[lineId]; - this.remotePtyOffsetMap[lineId] = newOffset; - let localOffset = this.localPtyOffsetMap[lineId]; - if (localOffset != null && localOffset < newOffset) { - this.runPtyFetch(lineId); - } - } - } - - runPtyFetch(lineId: string) { - let prtn = this.checkFetchPtyData(lineId, false); - let ptyListener = this.getPtyListener(lineId); - if (ptyListener != null) { - prtn.then((ptydata) => { - ptyListener.receiveData(ptydata.pos, ptydata.data, "model-fetch"); - if (ptydata.data.length > 0) { - setTimeout(() => this.checkFetchPtyData(lineId, false), 100); - } - }); - } - } - - getPtyListener(lineId: string) { - let termWrap = this.getTermWrap(lineId); - if (termWrap != null) { - return termWrap; - } - let renderer = this.getRenderer(lineId); - if (renderer != null) { - return renderer; - } - return null; - } - - receivePtyData(lineId: string, ptyPos: number, data: Uint8Array, reason?: string): void { - let termWrap = this.getTermWrap(lineId); - if (termWrap != null) { - termWrap.receiveData(ptyPos, data, reason); - } - let renderer = this.getRenderer(lineId); - if (renderer != null) { - renderer.receiveData(ptyPos, data, reason); - } - } - - checkFetchPtyData(lineId: string, reload: boolean): Promise { - let lineNum = this.getLineNumFromId(lineId); - if (this.activePtyFetch[lineId]) { - // console.log("check-fetch", lineNum, "already running"); - return; - } - if (reload) { - this.localPtyOffsetMap[lineId] = 0; - } - let ptyOffset = this.localPtyOffsetMap[lineId]; - if (ptyOffset == null) { - // console.log("check-fetch", lineNum, "no local offset"); - return; - } - let remotePtyOffset = this.remotePtyOffsetMap[lineId]; - if (ptyOffset >= remotePtyOffset) { - // up to date - return Promise.resolve({ pos: ptyOffset, data: new Uint8Array(0) }); - } - this.activePtyFetch[lineId] = true; - let viewKey = WebShareModel.viewKey; - // console.log("fetch pty", lineNum, "pos=" + ptyOffset); - let usp = new URLSearchParams({ - screenid: this.screenId, - viewkey: viewKey, - lineid: lineId, - pos: String(ptyOffset), - }); - let url = new URL(getBaseUrl() + "/webshare/ptydata?" + usp.toString()); - return fetch(url, { method: "GET", mode: "cors", cache: "no-cache" }) - .then((resp) => { - if (!resp.ok) { - throw new Error( - sprintf("Bad fetch response for /webshare/ptydata: %d %s", resp.status, resp.statusText) - ); - } - let ptyOffsetStr = resp.headers.get("X-PtyDataOffset"); - if (ptyOffsetStr != null && !isNaN(parseInt(ptyOffsetStr))) { - ptyOffset = parseInt(ptyOffsetStr); - } - return resp.arrayBuffer(); - }) - .then((buf) => { - let dataArr = new Uint8Array(buf); - let newOffset = ptyOffset + dataArr.length; - // console.log("fetch pty success", lineNum, "len=" + dataArr.length, "pos => " + newOffset); - this.localPtyOffsetMap[lineId] = newOffset; - return { pos: ptyOffset, data: dataArr }; - }) - .finally(() => { - this.activePtyFetch[lineId] = false; - }); - } - - wsMessageCallback(msg: any) { - if (msg.type == "webscreen:update") { - // console.log("[ws] update vts", msg.vts); - if (msg.vts > this.remoteScreenVts) { - this.remoteScreenVts = msg.vts; - setTimeout(() => this.checkUpdateScreenData(), 10); - } - return; - } - if (msg.type == "success:webshare") { - return; - } - console.log("[ws] unhandled message", msg); - } - - setWebFullScreen(screen: T.WebFullScreen) { - // console.log("got initial screen", "vts=" + screen.vts); - mobx.action(() => { - if (screen.lines == null) { - screen.lines = []; - } - if (screen.cmds == null) { - screen.cmds = []; - } - this.handleCmdPtyMap(screen.cmdptymap); - screen.cmdptymap = null; - this.fullScreen.set(screen); - this.wsControl.reconnect(true); - if (this.syncSelectedLine.get()) { - this.selectedLine.set(screen.screen.selectedline); - } - })(); - } - - loadTerminalRenderer(elem: Element, line: T.WebLine, cmd: T.WebCmd, width: number): void { - let lineId = cmd.lineid; - let termWrap = this.getTermWrap(lineId); - if (termWrap != null) { - console.log("term-wrap already exists for", lineId); - return; - } - let cols = windowWidthToCols(width, this.getTermFontSize()); - let usedRows = this.getContentHeight(lineutil.getWebRendererContext(line)); - if (line.contentheight != null && line.contentheight != -1) { - usedRows = line.contentheight; - } - let termContext = lineutil.getWebRendererContext(line); - termWrap = new TermWrap(elem, { - termContext: termContext, - usedRows: usedRows, - termOpts: cmd.termopts, - winSize: { height: 0, width: width }, - dataHandler: null, - focusHandler: (focus: boolean) => this.setTermFocus(line.linenum, focus), - isRunning: lineutil.cmdStatusIsRunning(cmd.status), - customKeyHandler: this.termCustomKeyHandler.bind(this), - fontSize: this.getTermFontSize(), - ptyDataSource: getTermPtyData, - onUpdateContentHeight: (termContext: T.RendererContext, height: number) => { - this.setContentHeight(termContext, height); - }, - }); - this.terminals[lineId] = termWrap; - if (this.localPtyOffsetMap[lineId] == null) { - this.localPtyOffsetMap[lineId] = 0; - } - this.localPtyOffsetMap[lineId] = 0; - if (this.getSelectedLine() == line.linenum) { - termWrap.giveFocus(); - } - return; - } - - termCustomKeyHandler(e: any, termWrap: TermWrap): boolean { - if (e.type != "keydown" || isModKeyPress(e)) { - return false; - } - e.stopPropagation(); - e.preventDefault(); - if (e.code == "ArrowUp") { - termWrap.terminal.scrollLines(-1); - return false; - } - if (e.code == "ArrowDown") { - termWrap.terminal.scrollLines(1); - return false; - } - if (e.code == "PageUp") { - termWrap.terminal.scrollPages(-1); - return false; - } - if (e.code == "PageDown") { - termWrap.terminal.scrollPages(1); - return false; - } - return false; - } - - setTermFocus(lineNum: number, focus: boolean): void {} - - getContentHeight(context: T.RendererContext): number { - let key = context.lineId; - return this.contentHeightCache[key]; - } - - setContentHeight(context: T.RendererContext, height: number): void { - let key = context.lineId; - this.contentHeightCache[key] = height; - } - - unloadRenderer(lineId: string): void { - let rmodel = this.renderers[lineId]; - if (rmodel != null) { - rmodel.dispose(); - delete this.renderers[lineId]; - } - let term = this.terminals[lineId]; - if (term != null) { - term.dispose(); - delete this.terminals[lineId]; - } - delete this.localPtyOffsetMap[lineId]; - } - - getUsedRows(context: T.RendererContext, line: T.WebLine, cmd: T.WebCmd, width: number): number { - if (cmd == null) { - return 0; - } - let termOpts = cmd.termopts; - if (!termOpts.flexrows) { - return termOpts.rows; - } - let termWrap = this.getTermWrap(cmd.lineid); - if (termWrap == null) { - let cols = windowWidthToCols(width, this.getTermFontSize()); - let usedRows = this.getContentHeight(context); - if (usedRows != null) { - return usedRows; - } - if (line.contentheight != null && line.contentheight != -1) { - return line.contentheight; - } - return lineutil.cmdStatusIsRunning(cmd.status) ? 1 : 0; - } - return termWrap.getUsedRows(); - } - - getTermWrap(lineId: string): TermWrap { - return this.terminals[lineId]; - } - - getRenderer(lineId: string): T.RendererModel { - return this.renderers[lineId]; - } - - registerRenderer(lineId: string, renderer: T.RendererModel) { - this.renderers[lineId] = renderer; - if (this.localPtyOffsetMap[lineId] == null) { - this.localPtyOffsetMap[lineId] = 0; - } - } - - checkUpdateScreenData(): void { - let fullScreen = this.fullScreen.get(); - if (fullScreen == null) { - return; - } - // console.log("check-update", "vts=" + fullScreen.vts, "remote-vts=" + this.remoteScreenVts); - if (fullScreen.vts >= this.remoteScreenVts) { - return; - } - this.loadFullScreenData(true); - } - - loadFullScreenData(update: boolean): void { - if (isBlank(this.screenId)) { - this.setErrMessage("No ScreenId Specified, Cannot Load."); - return; - } - if (isBlank(this.viewKey)) { - this.setErrMessage("No ViewKey Specified, Cannot Load."); - return; - } - if (this.activeUpdateFetch) { - // console.log("there is already an active update fetch"); - return; - } - // console.log("running screen-data update"); - this.activeUpdateFetch = true; - let urlParams: Record = { screenid: this.screenId, viewkey: this.viewKey }; - if (update) { - let fullScreen = this.fullScreen.get(); - if (fullScreen != null) { - urlParams.vts = String(fullScreen.vts); - } - } - let usp = new URLSearchParams(urlParams); - let url = new URL(getBaseUrl() + "/webshare/screen?" + usp.toString()); - fetch(url, { method: "GET", mode: "cors", cache: "no-cache" }) - .then((resp) => handleJsonFetchResponse(url, resp)) - .then((data) => { - let screen: T.WebFullScreen = data; - if (update) { - this.mergeUpdate(screen); - } else { - this.setWebFullScreen(screen); - } - setTimeout(() => this.checkUpdateScreenData(), 300); - }) - .catch((err) => { - this.errMessage.set("Cannot get screen: " + err.message); - }) - .finally(() => { - this.activeUpdateFetch = false; - }); - } - - getLineNumFromId(lineId: string): number { - let fullScreen = this.fullScreen.get(); - if (fullScreen == null) { - return -1; - } - for (let i = 0; i < fullScreen.lines.length; i++) { - let line = fullScreen.lines[i]; - if (line.lineid == lineId) { - return line.linenum; - } - } - return -1; - } - - getLineIndex(lineNum: number): number { - let fullScreen = this.fullScreen.get(); - if (fullScreen == null) { - return -1; - } - for (let i = 0; i < fullScreen.lines.length; i++) { - let line = fullScreen.lines[i]; - if (line.linenum == lineNum) { - return i; - } - } - return -1; - } - - getNumLines(): number { - let fullScreen = this.fullScreen.get(); - if (fullScreen == null) { - return 0; - } - return fullScreen.lines.length; - } - - getCmdById(lineId: string): T.WebCmd { - let fullScreen = this.fullScreen.get(); - if (fullScreen == null) { - return null; - } - for (let cmd of fullScreen.cmds) { - if (cmd.lineid == lineId) { - return cmd; - } - } - return null; - } - - docKeyDownHandler(e: any): void { - if (isModKeyPress(e)) { - return; - } - if (e.code == "PageUp" && e.getModifierState("Meta")) { - this.updateSelectedLineIndex(-1); - } - if (e.code == "PageDown" && e.getModifierState("Meta")) { - this.updateSelectedLineIndex(1); - } - } -} - -function getTermPtyData(termContext: T.TermContextUnion): Promise { - if ("remoteId" in termContext) { - throw new Error("remote term ptydata is not supported in webshare"); - } - return WebShareModel.checkFetchPtyData(termContext.lineId, true); -} - -let WebShareModel: WebShareModelClass = null; -if ((window as any).WebShareModel == null) { - WebShareModel = new WebShareModelClass(); - (window as any).WebShareModel = WebShareModel; -} - -export { WebShareModel, getTermPtyData }; diff --git a/src/webshare/webshare-ws.ts b/src/webshare/webshare-ws.ts deleted file mode 100644 index 09a11f00..00000000 --- a/src/webshare/webshare-ws.ts +++ /dev/null @@ -1,188 +0,0 @@ -import * as mobx from "mobx"; -import { sprintf } from "sprintf-js"; -import { boundMethod } from "autobind-decorator"; -import { WebShareWSMessage } from "./types"; -import dayjs from "dayjs"; - -class WebShareWSControl { - wsConn: any; - open: mobx.IObservableValue; - opening: boolean = false; - reconnectTimes: number = 0; - msgQueue: any[] = []; - messageCallback: (any) => void = null; - screenId: string = null; - viewKey: string = null; - wsUrl: string; - closed: boolean; - - constructor(wsUrl: string, screenId: string, viewKey: string, messageCallback: (any) => void) { - this.wsUrl = wsUrl; - this.messageCallback = messageCallback; - this.screenId = screenId; - this.viewKey = viewKey; - this.open = mobx.observable.box(false, { name: "WSOpen" }); - this.closed = true; - setInterval(this.sendPing, 20000); - } - - close(): void { - this.closed = true; - if (this.wsConn != null) { - this.wsConn.close(); - } - } - - log(str: string) { - console.log("[wscontrol]", str); - } - - @mobx.action - setOpen(val: boolean) { - mobx.action(() => { - this.open.set(val); - })(); - } - - connectNow(desc: string) { - this.closed = false; - if (this.open.get()) { - return; - } - this.log(sprintf("try reconnect (%s)", desc)); - this.opening = true; - this.wsConn = new WebSocket(this.wsUrl); - this.wsConn.onopen = this.onopen; - this.wsConn.onmessage = this.onmessage; - this.wsConn.onclose = this.onclose; - // turns out onerror is not necessary (onclose always follows onerror) - // this.wsConn.onerror = this.onerror; - } - - reconnect(forceClose?: boolean) { - this.closed = false; - if (this.open.get()) { - if (forceClose) { - this.wsConn.close(); // this will force a reconnect - } - return; - } - this.reconnectTimes++; - if (this.reconnectTimes > 20) { - this.log("cannot connect, giving up"); - return; - } - let timeoutArr = [0, 0, 5, 5, 15, 30, 60, 300, 3600]; - let timeout = timeoutArr[timeoutArr.length - 1]; - if (this.reconnectTimes < timeoutArr.length) { - timeout = timeoutArr[this.reconnectTimes]; - } - if (timeout > 0) { - this.log(sprintf("sleeping %ds", timeout)); - } - setTimeout(() => { - this.connectNow(String(this.reconnectTimes)); - }, timeout * 1000); - } - - @boundMethod - onclose(event: any) { - // console.log("close", event); - if (event.wasClean) { - this.log("connection closed"); - } else { - this.log("connection error/disconnected"); - } - if (this.open.get() || this.opening) { - this.setOpen(false); - this.opening = false; - if (!this.closed) { - this.reconnect(); - } - } - } - - @boundMethod - onopen() { - this.log("connection open"); - this.setOpen(true); - this.opening = false; - this.runMsgQueue(); - this.sendWebShareInit(); - // reconnectTimes is reset in onmessage:hello - } - - runMsgQueue() { - if (!this.open.get()) { - return; - } - if (this.msgQueue.length == 0) { - return; - } - let msg = this.msgQueue.shift(); - this.sendMessage(msg); - setTimeout(() => { - this.runMsgQueue(); - }, 100); - } - - @boundMethod - onmessage(event: any) { - let eventData = null; - if (event.data != null) { - eventData = JSON.parse(event.data); - } - if (eventData == null) { - return; - } - if (eventData.type == "ping") { - this.wsConn.send(JSON.stringify({ type: "pong", stime: Date.now() })); - return; - } - if (eventData.type == "pong") { - // nothing - return; - } - if (eventData.type == "hello") { - this.reconnectTimes = 0; - return; - } - if (this.messageCallback) { - try { - this.messageCallback(eventData); - } catch (e) { - this.log("[error] messageCallback " + e); - } - } - } - - @boundMethod - sendPing() { - if (!this.open.get()) { - return; - } - this.wsConn.send(JSON.stringify({ type: "ping", stime: Date.now() })); - } - - sendMessage(data: any) { - if (!this.open.get()) { - return; - } - this.wsConn.send(JSON.stringify(data)); - } - - pushMessage(data: any) { - if (!this.open.get()) { - this.msgQueue.push(data); - return; - } - this.sendMessage(data); - } - - sendWebShareInit() { - let pk: WebShareWSMessage = { type: "webshare", screenid: this.screenId, viewkey: this.viewKey }; - this.pushMessage(pk); - } -} - -export { WebShareWSControl }; diff --git a/src/webshare/webshare.less b/src/webshare/webshare.less deleted file mode 100644 index d87b77c6..00000000 --- a/src/webshare/webshare.less +++ /dev/null @@ -1,164 +0,0 @@ -@import "../index.less"; - -body.prompt-webshare #main { - display: flex; - flex-direction: column; - - .logo-header { - display: flex; - flex-direction: row; - padding: 10px; - border-bottom: 1px solid #777; - align-items: center; - flex-shrink: 0; - - .logo-text { - a { - color: @prompt-green; - } - } - - .screen-name { - color: @term-white; - - margin-left: 20px; - } - - .download-button { - margin-right: 20px; - } - } - - .webshare-controls { - display: flex; - flex-direction: row; - flex-shrink: 0; - height: 40px; - align-items: center; - padding-left: 20px; - padding-right: 20px; - background-color: darken(@prompt-green, 30%); - color: @term-white; - - .screen-sharename { - font-weight: bold; - } - - .sync-control { - display: flex; - flex-direction: row; - color: @term-white; - - align-items: center; - - div:first-child { - margin-right: 5px; - } - } - } - - .prompt-content { - flex-grow: 1; - padding: 10px 0; - display: flex; - flex-direction: row; - overflow: hidden; - - .web-screen-view { - height: 100%; - width: 100%; - flex-grow: 1; - display: flex; - flex-direction: column; - - .lines { - height: 100%; - flex-grow: 1; - padding-top: 0; - } - } - } - - .prompt-footer { - display: flex; - flex-direction: row; - align-items: center; - color: #aaa; - border-top: 1px solid #777; - height: 50px; - padding-left: 20px; - padding-right: 20px; - flex-shrink: 0; - - .footer-copy { - } - - a { - display: block; - } - } - - color: @term-white; - - #app { - color: @term-white; - } - - .lines .line-sep { - margin-left: 0px; - margin-right: 10px; - } - - .lines .line.line-cmd { - .line-icon.copy-icon { - color: @term-white; - - &:hover { - color: @term-bright-white; - } - } - - .copied-indicator { - z-index: 10; - } - } -} - -.webshare-view { - .webshare-item { - padding: 4px 5px 8px 15px; - margin-bottom: 4px; - border-top: 1px solid white; - display: flex; - flex-direction: row; - position: relative; - min-height: 55px; - align-items: center; - - &:first-child { - border-top: 0; - } - - .webshare-vic { - width: 200px; - - .webshare-vic-link { - cursor: pointer; - - &:hover { - text-decoration: underline; - } - } - } - - .actions { - display: flex; - flex-direction: row; - gap: 10px; - } - - &:hover { - background-color: #222; - } - } -} diff --git a/src/webshare/webshare.ts b/src/webshare/webshare.ts deleted file mode 100644 index 01031d2d..00000000 --- a/src/webshare/webshare.ts +++ /dev/null @@ -1,38 +0,0 @@ -import * as mobx from "mobx"; -import * as React from "react"; -import { createRoot } from "react-dom/client"; -import { sprintf } from "sprintf-js"; -import { WebShareMain } from "./webshare-elems"; -import { loadFonts } from "./util"; -import { WebShareModel } from "./webshare-model"; -import * as textmeasure from "./textmeasure"; - -// @ts-ignore -let PROMPT_DEV = __PROMPT_DEV__; -// @ts-ignore -let PROMPT_VERSION = __PROMPT_VERSION__; -// @ts-ignore -let PROMPT_BUILD = __PROMPT_BUILD__; - -loadFonts(); - -document.addEventListener("DOMContentLoaded", () => { - let elem = document.getElementById("app"); - let root = createRoot(elem); - let reactElem = React.createElement(WebShareMain, null, null); - // @check:font - let isFontLoaded = document.fonts.check("12px 'JetBrains Mono'"); - if (isFontLoaded) { - root.render(reactElem); - } else { - document.fonts.ready.then(() => { - root.render(reactElem); - }); - } -}); - -(window as any).textmeasure = textmeasure; -(window as any).mobx = mobx; -(window as any).sprintf = sprintf; - -console.log("PROMPT webshare", PROMPT_VERSION, PROMPT_BUILD); diff --git a/static/PromptIcon.icns b/static/PromptIcon.icns deleted file mode 100644 index d1c1854be9b23c1d3bcea237b38249ab4da50880..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72202 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.delete{right:.5rem;position:absolute;top:.5rem}.notification .content,.notification .subtitle,.notification .title{color:currentColor}.notification.is-white{background-color:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.notification.is-dark{background-color:#363636;color:#fff}.notification.is-primary{background-color:#00d1b2;color:#fff}.notification.is-primary.is-light{background-color:#ebfffc;color:#00947e}.notification.is-link{background-color:#485fc7;color:#fff}.notification.is-link.is-light{background-color:#eff1fa;color:#3850b7}.notification.is-info{background-color:#3e8ed0;color:#fff}.notification.is-info.is-light{background-color:#eff5fb;color:#296fa8}.notification.is-success{background-color:#48c78e;color:#fff}.notification.is-success.is-light{background-color:#effaf5;color:#257953}.notification.is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.notification.is-warning.is-light{background-color:#fffaeb;color:#946c00}.notification.is-danger{background-color:#f14668;color:#fff}.notification.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#ededed}.progress::-webkit-progress-value{background-color:#4a4a4a}.progress::-moz-progress-bar{background-color:#4a4a4a}.progress::-ms-fill{background-color:#4a4a4a;border:none}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-white::-ms-fill{background-color:#fff}.progress.is-white:indeterminate{background-image:linear-gradient(to right,#fff 30%,#ededed 30%)}.progress.is-black::-webkit-progress-value{background-color:#0a0a0a}.progress.is-black::-moz-progress-bar{background-color:#0a0a0a}.progress.is-black::-ms-fill{background-color:#0a0a0a}.progress.is-black:indeterminate{background-image:linear-gradient(to right,#0a0a0a 30%,#ededed 30%)}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(to right,#f5f5f5 30%,#ededed 30%)}.progress.is-dark::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar{background-color:#363636}.progress.is-dark::-ms-fill{background-color:#363636}.progress.is-dark:indeterminate{background-image:linear-gradient(to right,#363636 30%,#ededed 30%)}.progress.is-primary::-webkit-progress-value{background-color:#00d1b2}.progress.is-primary::-moz-progress-bar{background-color:#00d1b2}.progress.is-primary::-ms-fill{background-color:#00d1b2}.progress.is-primary:indeterminate{background-image:linear-gradient(to right,#00d1b2 30%,#ededed 30%)}.progress.is-link::-webkit-progress-value{background-color:#485fc7}.progress.is-link::-moz-progress-bar{background-color:#485fc7}.progress.is-link::-ms-fill{background-color:#485fc7}.progress.is-link:indeterminate{background-image:linear-gradient(to right,#485fc7 30%,#ededed 30%)}.progress.is-info::-webkit-progress-value{background-color:#3e8ed0}.progress.is-info::-moz-progress-bar{background-color:#3e8ed0}.progress.is-info::-ms-fill{background-color:#3e8ed0}.progress.is-info:indeterminate{background-image:linear-gradient(to right,#3e8ed0 30%,#ededed 30%)}.progress.is-success::-webkit-progress-value{background-color:#48c78e}.progress.is-success::-moz-progress-bar{background-color:#48c78e}.progress.is-success::-ms-fill{background-color:#48c78e}.progress.is-success:indeterminate{background-image:linear-gradient(to right,#48c78e 30%,#ededed 30%)}.progress.is-warning::-webkit-progress-value{background-color:#ffe08a}.progress.is-warning::-moz-progress-bar{background-color:#ffe08a}.progress.is-warning::-ms-fill{background-color:#ffe08a}.progress.is-warning:indeterminate{background-image:linear-gradient(to right,#ffe08a 30%,#ededed 30%)}.progress.is-danger::-webkit-progress-value{background-color:#f14668}.progress.is-danger::-moz-progress-bar{background-color:#f14668}.progress.is-danger::-ms-fill{background-color:#f14668}.progress.is-danger:indeterminate{background-image:linear-gradient(to right,#f14668 30%,#ededed 30%)}.progress:indeterminate{-webkit-animation-duration:1.5s;animation-duration:1.5s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:moveIndeterminate;animation-name:moveIndeterminate;-webkit-animation-timing-function:linear;animation-timing-function:linear;background-color:#ededed;background-image:linear-gradient(to right,#4a4a4a 30%,#ededed 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress:indeterminate::-ms-fill{animation-name:none}.progress.is-small{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}@-webkit-keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}.table{background-color:#fff;color:#363636}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.table td.is-white,.table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}.table td.is-black,.table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#fff}.table td.is-primary,.table th.is-primary{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.table td.is-link,.table th.is-link{background-color:#485fc7;border-color:#485fc7;color:#fff}.table td.is-info,.table th.is-info{background-color:#3e8ed0;border-color:#3e8ed0;color:#fff}.table td.is-success,.table th.is-success{background-color:#48c78e;border-color:#48c78e;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#ffe08a;border-color:#ffe08a;color:rgba(0,0,0,.7)}.table td.is-danger,.table th.is-danger{background-color:#f14668;border-color:#f14668;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:#00d1b2;color:#fff}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table td.is-vcentered,.table th.is-vcentered{vertical-align:middle}.table th{color:#363636}.table th:not([align]){text-align:left}.table tr.is-selected{background-color:#00d1b2;color:#fff}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.table thead{background-color:transparent}.table thead td,.table thead th{border-width:0 0 2px;color:#363636}.table tfoot{background-color:transparent}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#363636}.table tbody{background-color:transparent}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(2n){background-color:#f5f5f5}.table.is-narrow td,.table.is-narrow th{padding:.25em .5em}.table.is-striped tbody tr:not(.is-selected):nth-child(2n){background-color:#fafafa}.table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}.tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.tags .tag{margin-bottom:.5rem}.tags .tag:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.are-medium .tag:not(.is-normal):not(.is-large){font-size:1rem}.tags.are-large .tag:not(.is-normal):not(.is-medium){font-size:1.25rem}.tags.is-centered{justify-content:center}.tags.is-centered .tag{margin-right:.25rem;margin-left:.25rem}.tags.is-right{justify-content:flex-end}.tags.is-right .tag:not(:first-child){margin-left:.5rem}.tags.is-right .tag:not(:last-child){margin-right:0}.tags.has-addons .tag{margin-right:0}.tags.has-addons .tag:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.tags.has-addons .tag:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tag:not(body){align-items:center;background-color:#f5f5f5;border-radius:4px;color:#4a4a4a;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:.75em;padding-right:.75em;white-space:nowrap}.tag:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}.tag:not(body).is-white{background-color:#fff;color:#0a0a0a}.tag:not(body).is-black{background-color:#0a0a0a;color:#fff}.tag:not(body).is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.tag:not(body).is-dark{background-color:#363636;color:#fff}.tag:not(body).is-primary{background-color:#00d1b2;color:#fff}.tag:not(body).is-primary.is-light{background-color:#ebfffc;color:#00947e}.tag:not(body).is-link{background-color:#485fc7;color:#fff}.tag:not(body).is-link.is-light{background-color:#eff1fa;color:#3850b7}.tag:not(body).is-info{background-color:#3e8ed0;color:#fff}.tag:not(body).is-info.is-light{background-color:#eff5fb;color:#296fa8}.tag:not(body).is-success{background-color:#48c78e;color:#fff}.tag:not(body).is-success.is-light{background-color:#effaf5;color:#257953}.tag:not(body).is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.tag:not(body).is-warning.is-light{background-color:#fffaeb;color:#946c00}.tag:not(body).is-danger{background-color:#f14668;color:#fff}.tag:not(body).is-danger.is-light{background-color:#feecf0;color:#cc0f35}.tag:not(body).is-normal{font-size:.75rem}.tag:not(body).is-medium{font-size:1rem}.tag:not(body).is-large{font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}.tag:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}.tag:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}.tag:not(body).is-delete{margin-left:1px;padding:0;position:relative;width:2em}.tag:not(body).is-delete::after,.tag:not(body).is-delete::before{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.tag:not(body).is-delete::before{height:1px;width:50%}.tag:not(body).is-delete::after{height:50%;width:1px}.tag:not(body).is-delete:focus,.tag:not(body).is-delete:hover{background-color:#e8e8e8}.tag:not(body).is-delete:active{background-color:#dbdbdb}.tag:not(body).is-rounded{border-radius:9999px}a.tag:hover{text-decoration:underline}.subtitle,.title{word-break:break-word}.subtitle em,.subtitle span,.title em,.title span{font-weight:inherit}.subtitle sub,.title sub{font-size:.75em}.subtitle sup,.title sup{font-size:.75em}.subtitle .tag,.title .tag{vertical-align:middle}.title{color:#363636;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#4a4a4a;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#363636;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.number{align-items:center;background-color:#f5f5f5;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:.25rem .5rem;text-align:center;vertical-align:top}.input,.select select,.textarea{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#363636}.input::-moz-placeholder,.select select::-moz-placeholder,.textarea::-moz-placeholder{color:rgba(54,54,54,.3)}.input::-webkit-input-placeholder,.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder{color:rgba(54,54,54,.3)}.input:-moz-placeholder,.select select:-moz-placeholder,.textarea:-moz-placeholder{color:rgba(54,54,54,.3)}.input:-ms-input-placeholder,.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder{color:rgba(54,54,54,.3)}.input:hover,.is-hovered.input,.is-hovered.textarea,.select select.is-hovered,.select select:hover,.textarea:hover{border-color:#b5b5b5}.input:active,.input:focus,.is-active.input,.is-active.textarea,.is-focused.input,.is-focused.textarea,.select select.is-active,.select select.is-focused,.select select:active,.select select:focus,.textarea:active,.textarea:focus{border-color:#485fc7;box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.input[disabled],.select fieldset[disabled] select,.select select[disabled],.textarea[disabled],fieldset[disabled] .input,fieldset[disabled] .select select,fieldset[disabled] .textarea{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#7a7a7a}.input[disabled]::-moz-placeholder,.select fieldset[disabled] select::-moz-placeholder,.select select[disabled]::-moz-placeholder,.textarea[disabled]::-moz-placeholder,fieldset[disabled] .input::-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,fieldset[disabled] .textarea::-moz-placeholder{color:rgba(122,122,122,.3)}.input[disabled]::-webkit-input-placeholder,.select fieldset[disabled] select::-webkit-input-placeholder,.select select[disabled]::-webkit-input-placeholder,.textarea[disabled]::-webkit-input-placeholder,fieldset[disabled] .input::-webkit-input-placeholder,fieldset[disabled] .select select::-webkit-input-placeholder,fieldset[disabled] .textarea::-webkit-input-placeholder{color:rgba(122,122,122,.3)}.input[disabled]:-moz-placeholder,.select fieldset[disabled] select:-moz-placeholder,.select select[disabled]:-moz-placeholder,.textarea[disabled]:-moz-placeholder,fieldset[disabled] .input:-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,fieldset[disabled] .textarea:-moz-placeholder{color:rgba(122,122,122,.3)}.input[disabled]:-ms-input-placeholder,.select fieldset[disabled] select:-ms-input-placeholder,.select select[disabled]:-ms-input-placeholder,.textarea[disabled]:-ms-input-placeholder,fieldset[disabled] .input:-ms-input-placeholder,fieldset[disabled] .select select:-ms-input-placeholder,fieldset[disabled] .textarea:-ms-input-placeholder{color:rgba(122,122,122,.3)}.input,.textarea{box-shadow:inset 0 .0625em .125em rgba(10,10,10,.05);max-width:100%;width:100%}.input[readonly],.textarea[readonly]{box-shadow:none}.is-white.input,.is-white.textarea{border-color:#fff}.is-white.input:active,.is-white.input:focus,.is-white.is-active.input,.is-white.is-active.textarea,.is-white.is-focused.input,.is-white.is-focused.textarea,.is-white.textarea:active,.is-white.textarea:focus{box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.is-black.input,.is-black.textarea{border-color:#0a0a0a}.is-black.input:active,.is-black.input:focus,.is-black.is-active.input,.is-black.is-active.textarea,.is-black.is-focused.input,.is-black.is-focused.textarea,.is-black.textarea:active,.is-black.textarea:focus{box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.is-light.input,.is-light.textarea{border-color:#f5f5f5}.is-light.input:active,.is-light.input:focus,.is-light.is-active.input,.is-light.is-active.textarea,.is-light.is-focused.input,.is-light.is-focused.textarea,.is-light.textarea:active,.is-light.textarea:focus{box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.is-dark.input,.is-dark.textarea{border-color:#363636}.is-dark.input:active,.is-dark.input:focus,.is-dark.is-active.input,.is-dark.is-active.textarea,.is-dark.is-focused.input,.is-dark.is-focused.textarea,.is-dark.textarea:active,.is-dark.textarea:focus{box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.is-primary.input,.is-primary.textarea{border-color:#00d1b2}.is-primary.input:active,.is-primary.input:focus,.is-primary.is-active.input,.is-primary.is-active.textarea,.is-primary.is-focused.input,.is-primary.is-focused.textarea,.is-primary.textarea:active,.is-primary.textarea:focus{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.is-link.input,.is-link.textarea{border-color:#485fc7}.is-link.input:active,.is-link.input:focus,.is-link.is-active.input,.is-link.is-active.textarea,.is-link.is-focused.input,.is-link.is-focused.textarea,.is-link.textarea:active,.is-link.textarea:focus{box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.is-info.input,.is-info.textarea{border-color:#3e8ed0}.is-info.input:active,.is-info.input:focus,.is-info.is-active.input,.is-info.is-active.textarea,.is-info.is-focused.input,.is-info.is-focused.textarea,.is-info.textarea:active,.is-info.textarea:focus{box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.is-success.input,.is-success.textarea{border-color:#48c78e}.is-success.input:active,.is-success.input:focus,.is-success.is-active.input,.is-success.is-active.textarea,.is-success.is-focused.input,.is-success.is-focused.textarea,.is-success.textarea:active,.is-success.textarea:focus{box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.is-warning.input,.is-warning.textarea{border-color:#ffe08a}.is-warning.input:active,.is-warning.input:focus,.is-warning.is-active.input,.is-warning.is-active.textarea,.is-warning.is-focused.input,.is-warning.is-focused.textarea,.is-warning.textarea:active,.is-warning.textarea:focus{box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.is-danger.input,.is-danger.textarea{border-color:#f14668}.is-danger.input:active,.is-danger.input:focus,.is-danger.is-active.input,.is-danger.is-active.textarea,.is-danger.is-focused.input,.is-danger.is-focused.textarea,.is-danger.textarea:active,.is-danger.textarea:focus{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.is-small.input,.is-small.textarea{border-radius:2px;font-size:.75rem}.is-medium.input,.is-medium.textarea{font-size:1.25rem}.is-large.input,.is-large.textarea{font-size:1.5rem}.is-fullwidth.input,.is-fullwidth.textarea{display:block;width:100%}.is-inline.input,.is-inline.textarea{display:inline;width:auto}.input.is-rounded{border-radius:9999px;padding-left:calc(calc(.75em - 1px) + .375em);padding-right:calc(calc(.75em - 1px) + .375em)}.input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}.textarea{display:block;max-width:100%;min-width:100%;padding:calc(.75em - 1px);resize:vertical}.textarea:not([rows]){max-height:40em;min-height:8em}.textarea[rows]{height:initial}.textarea.has-fixed-size{resize:none}.checkbox,.radio{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.checkbox input,.radio input{cursor:pointer}.checkbox:hover,.radio:hover{color:#363636}.checkbox input[disabled],.checkbox[disabled],.radio input[disabled],.radio[disabled],fieldset[disabled] .checkbox,fieldset[disabled] .radio{color:#7a7a7a;cursor:not-allowed}.radio+.radio{margin-left:.5em}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.5em}.select:not(.is-multiple):not(.is-loading)::after{border-color:#485fc7;right:1.125em;z-index:4}.select.is-rounded select{border-radius:9999px;padding-left:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:0}.select select::-ms-expand{display:none}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#f5f5f5}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:.5em 1em}.select:not(.is-multiple):not(.is-loading):hover::after{border-color:#363636}.select.is-white:not(:hover)::after{border-color:#fff}.select.is-white select{border-color:#fff}.select.is-white select.is-hovered,.select.is-white select:hover{border-color:#f2f2f2}.select.is-white select.is-active,.select.is-white select.is-focused,.select.is-white select:active,.select.is-white select:focus{box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.select.is-black:not(:hover)::after{border-color:#0a0a0a}.select.is-black select{border-color:#0a0a0a}.select.is-black select.is-hovered,.select.is-black select:hover{border-color:#000}.select.is-black select.is-active,.select.is-black select.is-focused,.select.is-black select:active,.select.is-black select:focus{box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.select.is-light:not(:hover)::after{border-color:#f5f5f5}.select.is-light select{border-color:#f5f5f5}.select.is-light select.is-hovered,.select.is-light select:hover{border-color:#e8e8e8}.select.is-light select.is-active,.select.is-light select.is-focused,.select.is-light select:active,.select.is-light select:focus{box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.select.is-dark:not(:hover)::after{border-color:#363636}.select.is-dark select{border-color:#363636}.select.is-dark select.is-hovered,.select.is-dark select:hover{border-color:#292929}.select.is-dark select.is-active,.select.is-dark select.is-focused,.select.is-dark select:active,.select.is-dark select:focus{box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.select.is-primary:not(:hover)::after{border-color:#00d1b2}.select.is-primary select{border-color:#00d1b2}.select.is-primary select.is-hovered,.select.is-primary select:hover{border-color:#00b89c}.select.is-primary select.is-active,.select.is-primary select.is-focused,.select.is-primary select:active,.select.is-primary select:focus{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.select.is-link:not(:hover)::after{border-color:#485fc7}.select.is-link select{border-color:#485fc7}.select.is-link select.is-hovered,.select.is-link select:hover{border-color:#3a51bb}.select.is-link select.is-active,.select.is-link select.is-focused,.select.is-link select:active,.select.is-link select:focus{box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.select.is-info:not(:hover)::after{border-color:#3e8ed0}.select.is-info select{border-color:#3e8ed0}.select.is-info select.is-hovered,.select.is-info select:hover{border-color:#3082c5}.select.is-info select.is-active,.select.is-info select.is-focused,.select.is-info select:active,.select.is-info select:focus{box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.select.is-success:not(:hover)::after{border-color:#48c78e}.select.is-success select{border-color:#48c78e}.select.is-success select.is-hovered,.select.is-success select:hover{border-color:#3abb81}.select.is-success select.is-active,.select.is-success select.is-focused,.select.is-success select:active,.select.is-success select:focus{box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.select.is-warning:not(:hover)::after{border-color:#ffe08a}.select.is-warning select{border-color:#ffe08a}.select.is-warning select.is-hovered,.select.is-warning select:hover{border-color:#ffd970}.select.is-warning select.is-active,.select.is-warning select.is-focused,.select.is-warning select:active,.select.is-warning select:focus{box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.select.is-danger:not(:hover)::after{border-color:#f14668}.select.is-danger select{border-color:#f14668}.select.is-danger select.is-hovered,.select.is-danger select:hover{border-color:#ef2e55}.select.is-danger select.is-active,.select.is-danger select.is-focused,.select.is-danger select:active,.select.is-danger select:focus{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.select.is-small{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled::after{border-color:#7a7a7a!important;opacity:.5}.select.is-fullwidth{width:100%}.select.is-fullwidth select{width:100%}.select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:.625em;transform:none}.select.is-loading.is-small:after{font-size:.75rem}.select.is-loading.is-medium:after{font-size:1.25rem}.select.is-loading.is-large:after{font-size:1.5rem}.file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}.file.is-white.is-hovered .file-cta,.file.is-white:hover .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.file.is-white.is-focused .file-cta,.file.is-white:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(255,255,255,.25);color:#0a0a0a}.file.is-white.is-active .file-cta,.file.is-white:active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}.file.is-black.is-hovered .file-cta,.file.is-black:hover .file-cta{background-color:#040404;border-color:transparent;color:#fff}.file.is-black.is-focused .file-cta,.file.is-black:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(10,10,10,.25);color:#fff}.file.is-black.is-active .file-cta,.file.is-black:active .file-cta{background-color:#000;border-color:transparent;color:#fff}.file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-light.is-hovered .file-cta,.file.is-light:hover .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-light.is-focused .file-cta,.file.is-light:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(245,245,245,.25);color:rgba(0,0,0,.7)}.file.is-light.is-active .file-cta,.file.is-light:active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-dark .file-cta{background-color:#363636;border-color:transparent;color:#fff}.file.is-dark.is-hovered .file-cta,.file.is-dark:hover .file-cta{background-color:#2f2f2f;border-color:transparent;color:#fff}.file.is-dark.is-focused .file-cta,.file.is-dark:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(54,54,54,.25);color:#fff}.file.is-dark.is-active .file-cta,.file.is-dark:active .file-cta{background-color:#292929;border-color:transparent;color:#fff}.file.is-primary .file-cta{background-color:#00d1b2;border-color:transparent;color:#fff}.file.is-primary.is-hovered .file-cta,.file.is-primary:hover .file-cta{background-color:#00c4a7;border-color:transparent;color:#fff}.file.is-primary.is-focused .file-cta,.file.is-primary:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(0,209,178,.25);color:#fff}.file.is-primary.is-active .file-cta,.file.is-primary:active .file-cta{background-color:#00b89c;border-color:transparent;color:#fff}.file.is-link .file-cta{background-color:#485fc7;border-color:transparent;color:#fff}.file.is-link.is-hovered .file-cta,.file.is-link:hover .file-cta{background-color:#3e56c4;border-color:transparent;color:#fff}.file.is-link.is-focused .file-cta,.file.is-link:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(72,95,199,.25);color:#fff}.file.is-link.is-active .file-cta,.file.is-link:active .file-cta{background-color:#3a51bb;border-color:transparent;color:#fff}.file.is-info .file-cta{background-color:#3e8ed0;border-color:transparent;color:#fff}.file.is-info.is-hovered .file-cta,.file.is-info:hover .file-cta{background-color:#3488ce;border-color:transparent;color:#fff}.file.is-info.is-focused .file-cta,.file.is-info:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(62,142,208,.25);color:#fff}.file.is-info.is-active .file-cta,.file.is-info:active .file-cta{background-color:#3082c5;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#48c78e;border-color:transparent;color:#fff}.file.is-success.is-hovered .file-cta,.file.is-success:hover .file-cta{background-color:#3ec487;border-color:transparent;color:#fff}.file.is-success.is-focused .file-cta,.file.is-success:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(72,199,142,.25);color:#fff}.file.is-success.is-active .file-cta,.file.is-success:active .file-cta{background-color:#3abb81;border-color:transparent;color:#fff}.file.is-warning .file-cta{background-color:#ffe08a;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-warning.is-hovered .file-cta,.file.is-warning:hover .file-cta{background-color:#ffdc7d;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-warning.is-focused .file-cta,.file.is-warning:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(255,224,138,.25);color:rgba(0,0,0,.7)}.file.is-warning.is-active .file-cta,.file.is-warning:active .file-cta{background-color:#ffd970;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-danger .file-cta{background-color:#f14668;border-color:transparent;color:#fff}.file.is-danger.is-hovered .file-cta,.file.is-danger:hover .file-cta{background-color:#f03a5f;border-color:transparent;color:#fff}.file.is-danger.is-focused .file-cta,.file.is-danger:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(241,70,104,.25);color:#fff}.file.is-danger.is-active .file-cta,.file.is-danger:active .file-cta{background-color:#ef2e55;border-color:transparent;color:#fff}.file.is-small{font-size:.75rem}.file.is-normal{font-size:1rem}.file.is-medium{font-size:1.25rem}.file.is-medium .file-icon .fa{font-size:21px}.file.is-large{font-size:1.5rem}.file.is-large .file-icon .fa{font-size:28px}.file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}.file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}.file.has-name.is-empty .file-cta{border-radius:4px}.file.has-name.is-empty .file-name{display:none}.file.is-boxed .file-label{flex-direction:column}.file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}.file.is-boxed .file-name{border-width:0 1px 1px}.file.is-boxed .file-icon{height:1.5em;width:1.5em}.file.is-boxed .file-icon .fa{font-size:21px}.file.is-boxed.is-small .file-icon .fa{font-size:14px}.file.is-boxed.is-medium .file-icon .fa{font-size:28px}.file.is-boxed.is-large .file-icon .fa{font-size:35px}.file.is-boxed.has-name .file-cta{border-radius:4px 4px 0 0}.file.is-boxed.has-name .file-name{border-radius:0 0 4px 4px;border-width:0 1px 1px}.file.is-centered{justify-content:center}.file.is-fullwidth .file-label{width:100%}.file.is-fullwidth .file-name{flex-grow:1;max-width:none}.file.is-right{justify-content:flex-end}.file.is-right .file-cta{border-radius:0 4px 4px 0}.file.is-right .file-name{border-radius:4px 0 0 4px;border-width:1px 0 1px 1px;order:-1}.file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}.file-label:hover .file-cta{background-color:#eee;color:#363636}.file-label:hover .file-name{border-color:#d5d5d5}.file-label:active .file-cta{background-color:#e8e8e8;color:#363636}.file-label:active .file-name{border-color:#cfcfcf}.file-input{height:100%;left:0;opacity:0;outline:0;position:absolute;top:0;width:100%}.file-cta,.file-name{border-color:#dbdbdb;border-radius:4px;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta{background-color:#f5f5f5;color:#4a4a4a}.file-name{border-color:#dbdbdb;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}.file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}.file-icon .fa{font-size:14px}.label{color:#363636;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:.5em}.label.is-small{font-size:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:.25rem}.help.is-white{color:#fff}.help.is-black{color:#0a0a0a}.help.is-light{color:#f5f5f5}.help.is-dark{color:#363636}.help.is-primary{color:#00d1b2}.help.is-link{color:#485fc7}.help.is-info{color:#3e8ed0}.help.is-success{color:#48c78e}.help.is-warning{color:#ffe08a}.help.is-danger{color:#f14668}.field:not(:last-child){margin-bottom:.75rem}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button:not([disabled]).is-hovered,.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .input:not([disabled]).is-hovered,.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]).is-hovered,.field.has-addons .control .select select:not([disabled]):hover{z-index:2}.field.has-addons .control .button:not([disabled]).is-active,.field.has-addons .control .button:not([disabled]).is-focused,.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .input:not([disabled]).is-active,.field.has-addons .control .input:not([disabled]).is-focused,.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control .select select:not([disabled]).is-active,.field.has-addons .control .select select:not([disabled]).is-focused,.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select:not([disabled]):focus{z-index:3}.field.has-addons .control .button:not([disabled]).is-active:hover,.field.has-addons .control .button:not([disabled]).is-focused:hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .input:not([disabled]).is-active:hover,.field.has-addons .control .input:not([disabled]).is-focused:hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control .select select:not([disabled]).is-active:hover,.field.has-addons .control .select select:not([disabled]).is-focused:hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select:not([disabled]):focus:hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.has-addons.has-addons-centered{justify-content:center}.field.has-addons.has-addons-right{justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}.field.is-grouped{display:flex;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{justify-content:center}.field.is-grouped.is-grouped-right{justify-content:flex-end}.field.is-grouped.is-grouped-multiline{flex-wrap:wrap}.field.is-grouped.is-grouped-multiline>.control:last-child,.field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width:769px),print{.field.is-horizontal{display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width:768px){.field-label{margin-bottom:.5rem}}@media screen and (min-width:769px),print{.field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small{font-size:.75rem;padding-top:.375em}.field-label.is-normal{padding-top:.375em}.field-label.is-medium{font-size:1.25rem;padding-top:.375em}.field-label.is-large{font-size:1.5rem;padding-top:.375em}}.field-body .field .field{margin-bottom:0}@media screen and (min-width:769px),print{.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-right:.75rem}}.control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}.control.has-icons-left .input:focus~.icon,.control.has-icons-left .select:focus~.icon,.control.has-icons-right .input:focus~.icon,.control.has-icons-right .select:focus~.icon{color:#4a4a4a}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left .select.is-small~.icon,.control.has-icons-right .input.is-small~.icon,.control.has-icons-right .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon,.control.has-icons-right .input.is-medium~.icon,.control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left .select.is-large~.icon,.control.has-icons-right .input.is-large~.icon,.control.has-icons-right .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdbdb;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:2.5em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right .select select{padding-right:2.5em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading::after{position:absolute!important;right:.625em;top:.625em;z-index:4}.control.is-loading.is-small:after{font-size:.75rem}.control.is-loading.is-medium:after{font-size:1.25rem}.control.is-loading.is-large:after{font-size:1.5rem}.breadcrumb{font-size:1rem;white-space:nowrap}.breadcrumb a{align-items:center;color:#485fc7;display:flex;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#363636;cursor:default;pointer-events:none}.breadcrumb li+li::before{color:#b5b5b5;content:"\0002f"}.breadcrumb ol,.breadcrumb ul{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:.5em}.breadcrumb .icon:last-child{margin-left:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{justify-content:flex-end}.breadcrumb.is-small{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.breadcrumb.has-arrow-separator li+li::before{content:"\02192"}.breadcrumb.has-bullet-separator li+li::before{content:"\02022"}.breadcrumb.has-dot-separator li+li::before{content:"\000b7"}.breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}.card{background-color:#fff;border-radius:.25rem;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);color:#4a4a4a;max-width:100%;position:relative}.card-content:first-child,.card-footer:first-child,.card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-content:last-child,.card-footer:last-child,.card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-header{background-color:transparent;align-items:stretch;box-shadow:0 .125em .25em rgba(10,10,10,.1);display:flex}.card-header-title{align-items:center;color:#363636;display:flex;flex-grow:1;font-weight:700;padding:.75rem 1rem}.card-header-title.is-centered{justify-content:center}.card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:0 0;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:.75rem 1rem}.card-image{display:block;position:relative}.card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-content{background-color:transparent;padding:1.5rem}.card-footer{background-color:transparent;border-top:1px solid #ededed;align-items:stretch;display:flex}.card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}.card-footer-item:not(:last-child){border-right:1px solid #ededed}.card .media:not(:last-child){margin-bottom:1.5rem}.dropdown{display:inline-flex;position:relative;vertical-align:top}.dropdown.is-active .dropdown-menu,.dropdown.is-hoverable:hover .dropdown-menu{display:block}.dropdown.is-right .dropdown-menu{left:auto;right:0}.dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}.dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}.dropdown-content{background-color:#fff;border-radius:4px;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);padding-bottom:.5rem;padding-top:.5rem}.dropdown-item{color:#4a4a4a;display:block;font-size:.875rem;line-height:1.5;padding:.375rem 1rem;position:relative}a.dropdown-item,button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}a.dropdown-item:hover,button.dropdown-item:hover{background-color:#f5f5f5;color:#0a0a0a}a.dropdown-item.is-active,button.dropdown-item.is-active{background-color:#485fc7;color:#fff}.dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:.5rem 0}.level{align-items:center;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:flex}.level.is-mobile .level-left,.level.is-mobile .level-right{display:flex}.level.is-mobile .level-left+.level-right{margin-top:0}.level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}.level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width:769px),print{.level{display:flex}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .subtitle,.level-item .title{margin-bottom:0}@media screen and (max-width:768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width:769px),print{.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{align-items:center;justify-content:flex-start}@media screen and (max-width:768px){.level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width:769px),print{.level-left{display:flex}}.level-right{align-items:center;justify-content:flex-end}@media screen and (min-width:769px),print{.level-right{display:flex}}.media{align-items:flex-start;display:flex;text-align:inherit}.media .content:not(:last-child){margin-bottom:.75rem}.media .media{border-top:1px solid rgba(219,219,219,.5);display:flex;padding-top:.75rem}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:.5rem}.media .media .media{padding-top:.5rem}.media .media .media+.media{margin-top:.5rem}.media+.media{border-top:1px solid rgba(219,219,219,.5);margin-top:1rem;padding-top:1rem}.media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}.media-left,.media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.media-left{margin-right:1rem}.media-right{margin-left:1rem}.media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width:768px){.media-content{overflow-x:auto}}.menu{font-size:1rem}.menu.is-small{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#4a4a4a;display:block;padding:.5em .75em}.menu-list a:hover{background-color:#f5f5f5;color:#363636}.menu-list a.is-active{background-color:#485fc7;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#7a7a7a;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.message.is-light .message-body{border-color:#f5f5f5}.message.is-dark{background-color:#fafafa}.message.is-dark .message-header{background-color:#363636;color:#fff}.message.is-dark .message-body{border-color:#363636}.message.is-primary{background-color:#ebfffc}.message.is-primary .message-header{background-color:#00d1b2;color:#fff}.message.is-primary .message-body{border-color:#00d1b2;color:#00947e}.message.is-link{background-color:#eff1fa}.message.is-link .message-header{background-color:#485fc7;color:#fff}.message.is-link .message-body{border-color:#485fc7;color:#3850b7}.message.is-info{background-color:#eff5fb}.message.is-info .message-header{background-color:#3e8ed0;color:#fff}.message.is-info .message-body{border-color:#3e8ed0;color:#296fa8}.message.is-success{background-color:#effaf5}.message.is-success .message-header{background-color:#48c78e;color:#fff}.message.is-success .message-body{border-color:#48c78e;color:#257953}.message.is-warning{background-color:#fffaeb}.message.is-warning .message-header{background-color:#ffe08a;color:rgba(0,0,0,.7)}.message.is-warning .message-body{border-color:#ffe08a;color:#946c00}.message.is-danger{background-color:#feecf0}.message.is-danger .message-header{background-color:#f14668;color:#fff}.message.is-danger .message-body{border-color:#f14668;color:#cc0f35}.message-header{align-items:center;background-color:#4a4a4a;border-radius:4px 4px 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:.75em 1em;position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-color:#dbdbdb;border-radius:4px;border-style:solid;border-width:0 0 0 4px;color:#4a4a4a;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:transparent}.modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}.modal.is-active{display:flex}.modal-background{background-color:rgba(10,10,10,.86)}.modal-card,.modal-content{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width:769px){.modal-card,.modal-content{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{background:0 0;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}.modal-card-foot,.modal-card-head{align-items:center;background-color:#f5f5f5;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #dbdbdb;border-top-left-radius:6px;border-top-right-radius:6px}.modal-card-title{color:#363636;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:1px solid #dbdbdb}.modal-card-foot .button:not(:last-child){margin-right:.5em}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:30}.navbar.is-white{background-color:#fff;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link,.navbar.is-white .navbar-brand>.navbar-item{color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link.is-active,.navbar.is-white .navbar-brand .navbar-link:focus,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand>a.navbar-item.is-active,.navbar.is-white .navbar-brand>a.navbar-item:focus,.navbar.is-white .navbar-brand>a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width:1024px){.navbar.is-white .navbar-end .navbar-link,.navbar.is-white .navbar-end>.navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-start>.navbar-item{color:#0a0a0a}.navbar.is-white .navbar-end .navbar-link.is-active,.navbar.is-white .navbar-end .navbar-link:focus,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end>a.navbar-item.is-active,.navbar.is-white .navbar-end>a.navbar-item:focus,.navbar.is-white .navbar-end>a.navbar-item:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-start .navbar-link:focus,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start>a.navbar-item.is-active,.navbar.is-white .navbar-start>a.navbar-item:focus,.navbar.is-white .navbar-start>a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-end .navbar-link::after,.navbar.is-white .navbar-start .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand .navbar-link,.navbar.is-black .navbar-brand>.navbar-item{color:#fff}.navbar.is-black .navbar-brand .navbar-link.is-active,.navbar.is-black .navbar-brand .navbar-link:focus,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand>a.navbar-item.is-active,.navbar.is-black .navbar-brand>a.navbar-item:focus,.navbar.is-black .navbar-brand>a.navbar-item:hover{background-color:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-black .navbar-end .navbar-link,.navbar.is-black .navbar-end>.navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-start>.navbar-item{color:#fff}.navbar.is-black .navbar-end .navbar-link.is-active,.navbar.is-black .navbar-end .navbar-link:focus,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end>a.navbar-item.is-active,.navbar.is-black .navbar-end>a.navbar-item:focus,.navbar.is-black .navbar-end>a.navbar-item:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-start .navbar-link:focus,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start>a.navbar-item.is-active,.navbar.is-black .navbar-start>a.navbar-item:focus,.navbar.is-black .navbar-start>a.navbar-item:hover{background-color:#000;color:#fff}.navbar.is-black .navbar-end .navbar-link::after,.navbar.is-black .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link{background-color:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link,.navbar.is-light .navbar-brand>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width:1024px){.navbar.is-light .navbar-end .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-start>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-end .navbar-link.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-end .navbar-link::after,.navbar.is-light .navbar-start .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,.7)}}.navbar.is-dark{background-color:#363636;color:#fff}.navbar.is-dark .navbar-brand .navbar-link,.navbar.is-dark .navbar-brand>.navbar-item{color:#fff}.navbar.is-dark .navbar-brand .navbar-link.is-active,.navbar.is-dark .navbar-brand .navbar-link:focus,.navbar.is-dark .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand>a.navbar-item.is-active,.navbar.is-dark .navbar-brand>a.navbar-item:focus,.navbar.is-dark .navbar-brand>a.navbar-item:hover{background-color:#292929;color:#fff}.navbar.is-dark .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-dark .navbar-end .navbar-link,.navbar.is-dark .navbar-end>.navbar-item,.navbar.is-dark .navbar-start .navbar-link,.navbar.is-dark .navbar-start>.navbar-item{color:#fff}.navbar.is-dark .navbar-end .navbar-link.is-active,.navbar.is-dark .navbar-end .navbar-link:focus,.navbar.is-dark .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end>a.navbar-item.is-active,.navbar.is-dark .navbar-end>a.navbar-item:focus,.navbar.is-dark .navbar-end>a.navbar-item:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-start .navbar-link:focus,.navbar.is-dark .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start>a.navbar-item.is-active,.navbar.is-dark .navbar-start>a.navbar-item:focus,.navbar.is-dark .navbar-start>a.navbar-item:hover{background-color:#292929;color:#fff}.navbar.is-dark .navbar-end .navbar-link::after,.navbar.is-dark .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link{background-color:#292929;color:#fff}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#fff}}.navbar.is-primary{background-color:#00d1b2;color:#fff}.navbar.is-primary .navbar-brand .navbar-link,.navbar.is-primary .navbar-brand>.navbar-item{color:#fff}.navbar.is-primary .navbar-brand .navbar-link.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-primary .navbar-end .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.navbar.is-primary .navbar-start>.navbar-item{color:#fff}.navbar.is-primary .navbar-end .navbar-link.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-end .navbar-link::after,.navbar.is-primary .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active{background-color:#00d1b2;color:#fff}}.navbar.is-link{background-color:#485fc7;color:#fff}.navbar.is-link .navbar-brand .navbar-link,.navbar.is-link .navbar-brand>.navbar-item{color:#fff}.navbar.is-link .navbar-brand .navbar-link.is-active,.navbar.is-link .navbar-brand .navbar-link:focus,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-link .navbar-end .navbar-link,.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-start>.navbar-item{color:#fff}.navbar.is-link .navbar-end .navbar-link.is-active,.navbar.is-link .navbar-end .navbar-link:focus,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-start .navbar-link:focus,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-end .navbar-link::after,.navbar.is-link .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#485fc7;color:#fff}}.navbar.is-info{background-color:#3e8ed0;color:#fff}.navbar.is-info .navbar-brand .navbar-link,.navbar.is-info .navbar-brand>.navbar-item{color:#fff}.navbar.is-info .navbar-brand .navbar-link.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-info .navbar-end .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-start>.navbar-item{color:#fff}.navbar.is-info .navbar-end .navbar-link.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-end .navbar-link::after,.navbar.is-info .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#3e8ed0;color:#fff}}.navbar.is-success{background-color:#48c78e;color:#fff}.navbar.is-success .navbar-brand .navbar-link,.navbar.is-success .navbar-brand>.navbar-item{color:#fff}.navbar.is-success .navbar-brand .navbar-link.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-success .navbar-end .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-start>.navbar-item{color:#fff}.navbar.is-success .navbar-end .navbar-link.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-end .navbar-link::after,.navbar.is-success .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#48c78e;color:#fff}}.navbar.is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link,.navbar.is-warning .navbar-brand>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width:1024px){.navbar.is-warning .navbar-end .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-start>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-end .navbar-link.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-end .navbar-link::after,.navbar.is-warning .navbar-start .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffe08a;color:rgba(0,0,0,.7)}}.navbar.is-danger{background-color:#f14668;color:#fff}.navbar.is-danger .navbar-brand .navbar-link,.navbar.is-danger .navbar-brand>.navbar-item{color:#fff}.navbar.is-danger .navbar-brand .navbar-link.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-danger .navbar-end .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-start>.navbar-item{color:#fff}.navbar.is-danger .navbar-end .navbar-link.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-end .navbar-link::after,.navbar.is-danger .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#f14668;color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px 0 0 #f5f5f5}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #f5f5f5}.navbar.is-fixed-top{top:0}body.has-navbar-fixed-top,html.has-navbar-fixed-top{padding-top:3.25rem}body.has-navbar-fixed-bottom,html.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{color:#4a4a4a;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:0 0;border:none;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color,opacity,transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:first-child{top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,.05)}.navbar-burger.is-active span:first-child{transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#4a4a4a;display:block;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-.25rem;margin-right:-.25rem}.navbar-link,a.navbar-item{cursor:pointer}.navbar-link.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,a.navbar-item.is-active,a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover{background-color:#fafafa;color:#485fc7}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:transparent;border-bottom-color:#485fc7}.navbar-item.is-tab.is-active{background-color:transparent;border-bottom-color:#485fc7;border-bottom-style:solid;border-bottom-width:3px;color:#485fc7;padding-bottom:calc(.5rem - 3px)}.navbar-content{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless)::after{border-color:#485fc7;margin-top:-.375em;right:1.125em}.navbar-dropdown{font-size:.875rem;padding-bottom:.5rem;padding-top:.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#f5f5f5;border:none;display:none;height:2px;margin:.5rem 0}@media screen and (max-width:1023px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{align-items:center;display:flex}.navbar-link::after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px rgba(10,10,10,.1);padding:.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}body.has-navbar-fixed-top-touch,html.has-navbar-fixed-top-touch{padding-top:3.25rem}body.has-navbar-fixed-bottom-touch,html.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width:1024px){.navbar,.navbar-end,.navbar-menu,.navbar-start{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-spaced{padding:1rem 2rem}.navbar.is-spaced .navbar-end,.navbar.is-spaced .navbar-start{align-items:center}.navbar.is-spaced .navbar-link,.navbar.is-spaced a.navbar-item{border-radius:4px}.navbar.is-transparent .navbar-link.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover{background-color:transparent!important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent!important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(.25em,-.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:2px solid #dbdbdb;border-radius:6px 6px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,.1);top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-active .navbar-dropdown,.navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown,.navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid #dbdbdb;box-shadow:0 8px 8px rgba(10,10,10,.1);display:none;font-size:.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-dropdown{border-radius:6px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity,transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.container>.navbar .navbar-brand,.navbar>.container .navbar-brand{margin-left:-.75rem}.container>.navbar .navbar-menu,.navbar>.container .navbar-menu{margin-right:-.75rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top-desktop{top:0}body.has-navbar-fixed-top-desktop,html.has-navbar-fixed-top-desktop{padding-top:3.25rem}body.has-navbar-fixed-bottom-desktop,html.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}body.has-spaced-navbar-fixed-top,html.has-spaced-navbar-fixed-top{padding-top:5.25rem}body.has-spaced-navbar-fixed-bottom,html.has-spaced-navbar-fixed-bottom{padding-bottom:5.25rem}.navbar-link.is-active,a.navbar-item.is-active{color:#0a0a0a}.navbar-link.is-active:not(:focus):not(:hover),a.navbar-item.is-active:not(:focus):not(:hover){background-color:transparent}.navbar-item.has-dropdown.is-active .navbar-link,.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link{background-color:#fafafa}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - 3.25rem)}.pagination{font-size:1rem;margin:-.25rem}.pagination.is-small{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-next,.pagination.is-rounded .pagination-previous{padding-left:1em;padding-right:1em;border-radius:9999px}.pagination.is-rounded .pagination-link{border-radius:9999px}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}.pagination-link,.pagination-next,.pagination-previous{border-color:#dbdbdb;color:#363636;min-width:2.5em}.pagination-link:hover,.pagination-next:hover,.pagination-previous:hover{border-color:#b5b5b5;color:#363636}.pagination-link:focus,.pagination-next:focus,.pagination-previous:focus{border-color:#485fc7}.pagination-link:active,.pagination-next:active,.pagination-previous:active{box-shadow:inset 0 1px 2px rgba(10,10,10,.2)}.pagination-link.is-disabled,.pagination-link[disabled],.pagination-next.is-disabled,.pagination-next[disabled],.pagination-previous.is-disabled,.pagination-previous[disabled]{background-color:#dbdbdb;border-color:#dbdbdb;box-shadow:none;color:#7a7a7a;opacity:.5}.pagination-next,.pagination-previous{padding-left:.75em;padding-right:.75em;white-space:nowrap}.pagination-link.is-current{background-color:#485fc7;border-color:#485fc7;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list{flex-wrap:wrap}.pagination-list li{list-style:none}@media screen and (max-width:768px){.pagination{flex-wrap:wrap}.pagination-next,.pagination-previous{flex-grow:1;flex-shrink:1}.pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width:769px),print{.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous{margin-bottom:0;margin-top:0}.pagination-previous{order:2}.pagination-next{order:3}.pagination{justify-content:space-between;margin-bottom:0;margin-top:0}.pagination.is-centered .pagination-previous{order:1}.pagination.is-centered .pagination-list{justify-content:center;order:2}.pagination.is-centered .pagination-next{order:3}.pagination.is-right .pagination-previous{order:1}.pagination.is-right .pagination-next{order:2}.pagination.is-right .pagination-list{justify-content:flex-end;order:3}}.panel{border-radius:6px;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}.panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}.panel.is-white .panel-block.is-active .panel-icon{color:#fff}.panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}.panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}.panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}.panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}.panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}.panel.is-dark .panel-heading{background-color:#363636;color:#fff}.panel.is-dark .panel-tabs a.is-active{border-bottom-color:#363636}.panel.is-dark .panel-block.is-active .panel-icon{color:#363636}.panel.is-primary .panel-heading{background-color:#00d1b2;color:#fff}.panel.is-primary .panel-tabs a.is-active{border-bottom-color:#00d1b2}.panel.is-primary .panel-block.is-active .panel-icon{color:#00d1b2}.panel.is-link .panel-heading{background-color:#485fc7;color:#fff}.panel.is-link .panel-tabs a.is-active{border-bottom-color:#485fc7}.panel.is-link .panel-block.is-active .panel-icon{color:#485fc7}.panel.is-info .panel-heading{background-color:#3e8ed0;color:#fff}.panel.is-info .panel-tabs a.is-active{border-bottom-color:#3e8ed0}.panel.is-info .panel-block.is-active .panel-icon{color:#3e8ed0}.panel.is-success .panel-heading{background-color:#48c78e;color:#fff}.panel.is-success .panel-tabs a.is-active{border-bottom-color:#48c78e}.panel.is-success .panel-block.is-active .panel-icon{color:#48c78e}.panel.is-warning .panel-heading{background-color:#ffe08a;color:rgba(0,0,0,.7)}.panel.is-warning .panel-tabs a.is-active{border-bottom-color:#ffe08a}.panel.is-warning .panel-block.is-active .panel-icon{color:#ffe08a}.panel.is-danger .panel-heading{background-color:#f14668;color:#fff}.panel.is-danger .panel-tabs a.is-active{border-bottom-color:#f14668}.panel.is-danger .panel-block.is-active .panel-icon{color:#f14668}.panel-block:not(:last-child),.panel-tabs:not(:last-child){border-bottom:1px solid #ededed}.panel-heading{background-color:#ededed;border-radius:6px 6px 0 0;color:#363636;font-size:1.25em;font-weight:700;line-height:1.25;padding:.75em 1em}.panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}.panel-tabs a{border-bottom:1px solid #dbdbdb;margin-bottom:-1px;padding:.5em}.panel-tabs a.is-active{border-bottom-color:#4a4a4a;color:#363636}.panel-list a{color:#4a4a4a}.panel-list a:hover{color:#485fc7}.panel-block{align-items:center;color:#363636;display:flex;justify-content:flex-start;padding:.5em .75em}.panel-block input[type=checkbox]{margin-right:.75em}.panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}.panel-block.is-wrapped{flex-wrap:wrap}.panel-block.is-active{border-left-color:#485fc7;color:#363636}.panel-block.is-active .panel-icon{color:#485fc7}.panel-block:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#7a7a7a;margin-right:.75em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;color:#4a4a4a;display:flex;justify-content:center;margin-bottom:-1px;padding:.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#363636;color:#363636}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#485fc7;color:#485fc7}.tabs ul{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-left{padding-right:.75em}.tabs ul.is-center{flex:none;justify-content:center;padding-left:.75em;padding-right:.75em}.tabs ul.is-right{justify-content:flex-end;padding-left:.75em}.tabs .icon:first-child{margin-right:.5em}.tabs .icon:last-child{margin-left:.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-right ul{justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:4px 4px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:transparent!important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-toggle a{border-color:#dbdbdb;border-style:solid;border-width:1px;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#f5f5f5;border-color:#b5b5b5;z-index:2}.tabs.is-toggle li+li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabs.is-toggle li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.tabs.is-toggle li.is-active a{background-color:#485fc7;border-color:#485fc7;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}.tabs.is-small{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>.column.is-narrow{flex:none;width:unset}.columns.is-mobile>.column.is-full{flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{flex:none;width:50%}.columns.is-mobile>.column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>.column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>.column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>.column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>.column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>.column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-left:50%}.columns.is-mobile>.column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>.column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>.column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>.column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>.column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>.column.is-0{flex:none;width:0%}.columns.is-mobile>.column.is-offset-0{margin-left:0}.columns.is-mobile>.column.is-1{flex:none;width:8.33333%}.columns.is-mobile>.column.is-offset-1{margin-left:8.33333%}.columns.is-mobile>.column.is-2{flex:none;width:16.66667%}.columns.is-mobile>.column.is-offset-2{margin-left:16.66667%}.columns.is-mobile>.column.is-3{flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-left:25%}.columns.is-mobile>.column.is-4{flex:none;width:33.33333%}.columns.is-mobile>.column.is-offset-4{margin-left:33.33333%}.columns.is-mobile>.column.is-5{flex:none;width:41.66667%}.columns.is-mobile>.column.is-offset-5{margin-left:41.66667%}.columns.is-mobile>.column.is-6{flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-left:50%}.columns.is-mobile>.column.is-7{flex:none;width:58.33333%}.columns.is-mobile>.column.is-offset-7{margin-left:58.33333%}.columns.is-mobile>.column.is-8{flex:none;width:66.66667%}.columns.is-mobile>.column.is-offset-8{margin-left:66.66667%}.columns.is-mobile>.column.is-9{flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-left:75%}.columns.is-mobile>.column.is-10{flex:none;width:83.33333%}.columns.is-mobile>.column.is-offset-10{margin-left:83.33333%}.columns.is-mobile>.column.is-11{flex:none;width:91.66667%}.columns.is-mobile>.column.is-offset-11{margin-left:91.66667%}.columns.is-mobile>.column.is-12{flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-left:100%}@media screen and (max-width:768px){.column.is-narrow-mobile{flex:none;width:unset}.column.is-full-mobile{flex:none;width:100%}.column.is-three-quarters-mobile{flex:none;width:75%}.column.is-two-thirds-mobile{flex:none;width:66.6666%}.column.is-half-mobile{flex:none;width:50%}.column.is-one-third-mobile{flex:none;width:33.3333%}.column.is-one-quarter-mobile{flex:none;width:25%}.column.is-one-fifth-mobile{flex:none;width:20%}.column.is-two-fifths-mobile{flex:none;width:40%}.column.is-three-fifths-mobile{flex:none;width:60%}.column.is-four-fifths-mobile{flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-offset-one-fifth-mobile{margin-left:20%}.column.is-offset-two-fifths-mobile{margin-left:40%}.column.is-offset-three-fifths-mobile{margin-left:60%}.column.is-offset-four-fifths-mobile{margin-left:80%}.column.is-0-mobile{flex:none;width:0%}.column.is-offset-0-mobile{margin-left:0}.column.is-1-mobile{flex:none;width:8.33333%}.column.is-offset-1-mobile{margin-left:8.33333%}.column.is-2-mobile{flex:none;width:16.66667%}.column.is-offset-2-mobile{margin-left:16.66667%}.column.is-3-mobile{flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{flex:none;width:33.33333%}.column.is-offset-4-mobile{margin-left:33.33333%}.column.is-5-mobile{flex:none;width:41.66667%}.column.is-offset-5-mobile{margin-left:41.66667%}.column.is-6-mobile{flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{flex:none;width:58.33333%}.column.is-offset-7-mobile{margin-left:58.33333%}.column.is-8-mobile{flex:none;width:66.66667%}.column.is-offset-8-mobile{margin-left:66.66667%}.column.is-9-mobile{flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{flex:none;width:83.33333%}.column.is-offset-10-mobile{margin-left:83.33333%}.column.is-11-mobile{flex:none;width:91.66667%}.column.is-offset-11-mobile{margin-left:91.66667%}.column.is-12-mobile{flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width:769px),print{.column.is-narrow,.column.is-narrow-tablet{flex:none;width:unset}.column.is-full,.column.is-full-tablet{flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-left:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-left:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-left:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-left:80%}.column.is-0,.column.is-0-tablet{flex:none;width:0%}.column.is-offset-0,.column.is-offset-0-tablet{margin-left:0}.column.is-1,.column.is-1-tablet{flex:none;width:8.33333%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.33333%}.column.is-2,.column.is-2-tablet{flex:none;width:16.66667%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.66667%}.column.is-3,.column.is-3-tablet{flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{flex:none;width:33.33333%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.33333%}.column.is-5,.column.is-5-tablet{flex:none;width:41.66667%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.66667%}.column.is-6,.column.is-6-tablet{flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{flex:none;width:58.33333%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.33333%}.column.is-8,.column.is-8-tablet{flex:none;width:66.66667%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.66667%}.column.is-9,.column.is-9-tablet{flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{flex:none;width:83.33333%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.33333%}.column.is-11,.column.is-11-tablet{flex:none;width:91.66667%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.66667%}.column.is-12,.column.is-12-tablet{flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width:1023px){.column.is-narrow-touch{flex:none;width:unset}.column.is-full-touch{flex:none;width:100%}.column.is-three-quarters-touch{flex:none;width:75%}.column.is-two-thirds-touch{flex:none;width:66.6666%}.column.is-half-touch{flex:none;width:50%}.column.is-one-third-touch{flex:none;width:33.3333%}.column.is-one-quarter-touch{flex:none;width:25%}.column.is-one-fifth-touch{flex:none;width:20%}.column.is-two-fifths-touch{flex:none;width:40%}.column.is-three-fifths-touch{flex:none;width:60%}.column.is-four-fifths-touch{flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-left:75%}.column.is-offset-two-thirds-touch{margin-left:66.6666%}.column.is-offset-half-touch{margin-left:50%}.column.is-offset-one-third-touch{margin-left:33.3333%}.column.is-offset-one-quarter-touch{margin-left:25%}.column.is-offset-one-fifth-touch{margin-left:20%}.column.is-offset-two-fifths-touch{margin-left:40%}.column.is-offset-three-fifths-touch{margin-left:60%}.column.is-offset-four-fifths-touch{margin-left:80%}.column.is-0-touch{flex:none;width:0%}.column.is-offset-0-touch{margin-left:0}.column.is-1-touch{flex:none;width:8.33333%}.column.is-offset-1-touch{margin-left:8.33333%}.column.is-2-touch{flex:none;width:16.66667%}.column.is-offset-2-touch{margin-left:16.66667%}.column.is-3-touch{flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{flex:none;width:33.33333%}.column.is-offset-4-touch{margin-left:33.33333%}.column.is-5-touch{flex:none;width:41.66667%}.column.is-offset-5-touch{margin-left:41.66667%}.column.is-6-touch{flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{flex:none;width:58.33333%}.column.is-offset-7-touch{margin-left:58.33333%}.column.is-8-touch{flex:none;width:66.66667%}.column.is-offset-8-touch{margin-left:66.66667%}.column.is-9-touch{flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{flex:none;width:83.33333%}.column.is-offset-10-touch{margin-left:83.33333%}.column.is-11-touch{flex:none;width:91.66667%}.column.is-offset-11-touch{margin-left:91.66667%}.column.is-12-touch{flex:none;width:100%}.column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width:1024px){.column.is-narrow-desktop{flex:none;width:unset}.column.is-full-desktop{flex:none;width:100%}.column.is-three-quarters-desktop{flex:none;width:75%}.column.is-two-thirds-desktop{flex:none;width:66.6666%}.column.is-half-desktop{flex:none;width:50%}.column.is-one-third-desktop{flex:none;width:33.3333%}.column.is-one-quarter-desktop{flex:none;width:25%}.column.is-one-fifth-desktop{flex:none;width:20%}.column.is-two-fifths-desktop{flex:none;width:40%}.column.is-three-fifths-desktop{flex:none;width:60%}.column.is-four-fifths-desktop{flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-offset-one-fifth-desktop{margin-left:20%}.column.is-offset-two-fifths-desktop{margin-left:40%}.column.is-offset-three-fifths-desktop{margin-left:60%}.column.is-offset-four-fifths-desktop{margin-left:80%}.column.is-0-desktop{flex:none;width:0%}.column.is-offset-0-desktop{margin-left:0}.column.is-1-desktop{flex:none;width:8.33333%}.column.is-offset-1-desktop{margin-left:8.33333%}.column.is-2-desktop{flex:none;width:16.66667%}.column.is-offset-2-desktop{margin-left:16.66667%}.column.is-3-desktop{flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{flex:none;width:33.33333%}.column.is-offset-4-desktop{margin-left:33.33333%}.column.is-5-desktop{flex:none;width:41.66667%}.column.is-offset-5-desktop{margin-left:41.66667%}.column.is-6-desktop{flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{flex:none;width:58.33333%}.column.is-offset-7-desktop{margin-left:58.33333%}.column.is-8-desktop{flex:none;width:66.66667%}.column.is-offset-8-desktop{margin-left:66.66667%}.column.is-9-desktop{flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{flex:none;width:83.33333%}.column.is-offset-10-desktop{margin-left:83.33333%}.column.is-11-desktop{flex:none;width:91.66667%}.column.is-offset-11-desktop{margin-left:91.66667%}.column.is-12-desktop{flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width:1216px){.column.is-narrow-widescreen{flex:none;width:unset}.column.is-full-widescreen{flex:none;width:100%}.column.is-three-quarters-widescreen{flex:none;width:75%}.column.is-two-thirds-widescreen{flex:none;width:66.6666%}.column.is-half-widescreen{flex:none;width:50%}.column.is-one-third-widescreen{flex:none;width:33.3333%}.column.is-one-quarter-widescreen{flex:none;width:25%}.column.is-one-fifth-widescreen{flex:none;width:20%}.column.is-two-fifths-widescreen{flex:none;width:40%}.column.is-three-fifths-widescreen{flex:none;width:60%}.column.is-four-fifths-widescreen{flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-offset-one-fifth-widescreen{margin-left:20%}.column.is-offset-two-fifths-widescreen{margin-left:40%}.column.is-offset-three-fifths-widescreen{margin-left:60%}.column.is-offset-four-fifths-widescreen{margin-left:80%}.column.is-0-widescreen{flex:none;width:0%}.column.is-offset-0-widescreen{margin-left:0}.column.is-1-widescreen{flex:none;width:8.33333%}.column.is-offset-1-widescreen{margin-left:8.33333%}.column.is-2-widescreen{flex:none;width:16.66667%}.column.is-offset-2-widescreen{margin-left:16.66667%}.column.is-3-widescreen{flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{flex:none;width:33.33333%}.column.is-offset-4-widescreen{margin-left:33.33333%}.column.is-5-widescreen{flex:none;width:41.66667%}.column.is-offset-5-widescreen{margin-left:41.66667%}.column.is-6-widescreen{flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{flex:none;width:58.33333%}.column.is-offset-7-widescreen{margin-left:58.33333%}.column.is-8-widescreen{flex:none;width:66.66667%}.column.is-offset-8-widescreen{margin-left:66.66667%}.column.is-9-widescreen{flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{flex:none;width:83.33333%}.column.is-offset-10-widescreen{margin-left:83.33333%}.column.is-11-widescreen{flex:none;width:91.66667%}.column.is-offset-11-widescreen{margin-left:91.66667%}.column.is-12-widescreen{flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width:1408px){.column.is-narrow-fullhd{flex:none;width:unset}.column.is-full-fullhd{flex:none;width:100%}.column.is-three-quarters-fullhd{flex:none;width:75%}.column.is-two-thirds-fullhd{flex:none;width:66.6666%}.column.is-half-fullhd{flex:none;width:50%}.column.is-one-third-fullhd{flex:none;width:33.3333%}.column.is-one-quarter-fullhd{flex:none;width:25%}.column.is-one-fifth-fullhd{flex:none;width:20%}.column.is-two-fifths-fullhd{flex:none;width:40%}.column.is-three-fifths-fullhd{flex:none;width:60%}.column.is-four-fifths-fullhd{flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-left:75%}.column.is-offset-two-thirds-fullhd{margin-left:66.6666%}.column.is-offset-half-fullhd{margin-left:50%}.column.is-offset-one-third-fullhd{margin-left:33.3333%}.column.is-offset-one-quarter-fullhd{margin-left:25%}.column.is-offset-one-fifth-fullhd{margin-left:20%}.column.is-offset-two-fifths-fullhd{margin-left:40%}.column.is-offset-three-fifths-fullhd{margin-left:60%}.column.is-offset-four-fifths-fullhd{margin-left:80%}.column.is-0-fullhd{flex:none;width:0%}.column.is-offset-0-fullhd{margin-left:0}.column.is-1-fullhd{flex:none;width:8.33333%}.column.is-offset-1-fullhd{margin-left:8.33333%}.column.is-2-fullhd{flex:none;width:16.66667%}.column.is-offset-2-fullhd{margin-left:16.66667%}.column.is-3-fullhd{flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{flex:none;width:33.33333%}.column.is-offset-4-fullhd{margin-left:33.33333%}.column.is-5-fullhd{flex:none;width:41.66667%}.column.is-offset-5-fullhd{margin-left:41.66667%}.column.is-6-fullhd{flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{flex:none;width:58.33333%}.column.is-offset-7-fullhd{margin-left:58.33333%}.column.is-8-fullhd{flex:none;width:66.66667%}.column.is-offset-8-fullhd{margin-left:66.66667%}.column.is-9-fullhd{flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{flex:none;width:83.33333%}.column.is-offset-10-fullhd{margin-left:83.33333%}.column.is-11-fullhd{flex:none;width:91.66667%}.column.is-offset-11-fullhd{margin-left:91.66667%}.column.is-12-fullhd{flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}.columns.is-centered{justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless>.column{margin:0;padding:0!important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:flex}.columns.is-multiline{flex-wrap:wrap}.columns.is-vcentered{align-items:center}@media screen and (min-width:769px),print{.columns:not(.is-desktop){display:flex}}@media screen and (min-width:1024px){.columns.is-desktop{display:flex}}.columns.is-variable{--columnGap:0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}.columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-0{--columnGap:0rem}@media screen and (max-width:768px){.columns.is-variable.is-0-mobile{--columnGap:0rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-0-tablet{--columnGap:0rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-0-tablet-only{--columnGap:0rem}}@media screen and (max-width:1023px){.columns.is-variable.is-0-touch{--columnGap:0rem}}@media screen and (min-width:1024px){.columns.is-variable.is-0-desktop{--columnGap:0rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-0-desktop-only{--columnGap:0rem}}@media screen and (min-width:1216px){.columns.is-variable.is-0-widescreen{--columnGap:0rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-0-widescreen-only{--columnGap:0rem}}@media screen and (min-width:1408px){.columns.is-variable.is-0-fullhd{--columnGap:0rem}}.columns.is-variable.is-1{--columnGap:0.25rem}@media screen and (max-width:768px){.columns.is-variable.is-1-mobile{--columnGap:0.25rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-1-tablet{--columnGap:0.25rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-1-tablet-only{--columnGap:0.25rem}}@media screen and (max-width:1023px){.columns.is-variable.is-1-touch{--columnGap:0.25rem}}@media screen and (min-width:1024px){.columns.is-variable.is-1-desktop{--columnGap:0.25rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-1-desktop-only{--columnGap:0.25rem}}@media screen and (min-width:1216px){.columns.is-variable.is-1-widescreen{--columnGap:0.25rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-1-widescreen-only{--columnGap:0.25rem}}@media screen and (min-width:1408px){.columns.is-variable.is-1-fullhd{--columnGap:0.25rem}}.columns.is-variable.is-2{--columnGap:0.5rem}@media screen and (max-width:768px){.columns.is-variable.is-2-mobile{--columnGap:0.5rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-2-tablet{--columnGap:0.5rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-2-tablet-only{--columnGap:0.5rem}}@media screen and (max-width:1023px){.columns.is-variable.is-2-touch{--columnGap:0.5rem}}@media screen and (min-width:1024px){.columns.is-variable.is-2-desktop{--columnGap:0.5rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-2-desktop-only{--columnGap:0.5rem}}@media screen and (min-width:1216px){.columns.is-variable.is-2-widescreen{--columnGap:0.5rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-2-widescreen-only{--columnGap:0.5rem}}@media screen and (min-width:1408px){.columns.is-variable.is-2-fullhd{--columnGap:0.5rem}}.columns.is-variable.is-3{--columnGap:0.75rem}@media screen and (max-width:768px){.columns.is-variable.is-3-mobile{--columnGap:0.75rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-3-tablet{--columnGap:0.75rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-3-tablet-only{--columnGap:0.75rem}}@media screen and (max-width:1023px){.columns.is-variable.is-3-touch{--columnGap:0.75rem}}@media screen and (min-width:1024px){.columns.is-variable.is-3-desktop{--columnGap:0.75rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-3-desktop-only{--columnGap:0.75rem}}@media screen and (min-width:1216px){.columns.is-variable.is-3-widescreen{--columnGap:0.75rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-3-widescreen-only{--columnGap:0.75rem}}@media screen and (min-width:1408px){.columns.is-variable.is-3-fullhd{--columnGap:0.75rem}}.columns.is-variable.is-4{--columnGap:1rem}@media screen and (max-width:768px){.columns.is-variable.is-4-mobile{--columnGap:1rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-4-tablet{--columnGap:1rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-4-tablet-only{--columnGap:1rem}}@media screen and (max-width:1023px){.columns.is-variable.is-4-touch{--columnGap:1rem}}@media screen and (min-width:1024px){.columns.is-variable.is-4-desktop{--columnGap:1rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-4-desktop-only{--columnGap:1rem}}@media screen and (min-width:1216px){.columns.is-variable.is-4-widescreen{--columnGap:1rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-4-widescreen-only{--columnGap:1rem}}@media screen and (min-width:1408px){.columns.is-variable.is-4-fullhd{--columnGap:1rem}}.columns.is-variable.is-5{--columnGap:1.25rem}@media screen and (max-width:768px){.columns.is-variable.is-5-mobile{--columnGap:1.25rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-5-tablet{--columnGap:1.25rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-5-tablet-only{--columnGap:1.25rem}}@media screen and (max-width:1023px){.columns.is-variable.is-5-touch{--columnGap:1.25rem}}@media screen and (min-width:1024px){.columns.is-variable.is-5-desktop{--columnGap:1.25rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-5-desktop-only{--columnGap:1.25rem}}@media screen and (min-width:1216px){.columns.is-variable.is-5-widescreen{--columnGap:1.25rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-5-widescreen-only{--columnGap:1.25rem}}@media screen and (min-width:1408px){.columns.is-variable.is-5-fullhd{--columnGap:1.25rem}}.columns.is-variable.is-6{--columnGap:1.5rem}@media screen and (max-width:768px){.columns.is-variable.is-6-mobile{--columnGap:1.5rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-6-tablet{--columnGap:1.5rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-6-tablet-only{--columnGap:1.5rem}}@media screen and (max-width:1023px){.columns.is-variable.is-6-touch{--columnGap:1.5rem}}@media screen and (min-width:1024px){.columns.is-variable.is-6-desktop{--columnGap:1.5rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-6-desktop-only{--columnGap:1.5rem}}@media screen and (min-width:1216px){.columns.is-variable.is-6-widescreen{--columnGap:1.5rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-6-widescreen-only{--columnGap:1.5rem}}@media screen and (min-width:1408px){.columns.is-variable.is-6-fullhd{--columnGap:1.5rem}}.columns.is-variable.is-7{--columnGap:1.75rem}@media screen and (max-width:768px){.columns.is-variable.is-7-mobile{--columnGap:1.75rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-7-tablet{--columnGap:1.75rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-7-tablet-only{--columnGap:1.75rem}}@media screen and (max-width:1023px){.columns.is-variable.is-7-touch{--columnGap:1.75rem}}@media screen and (min-width:1024px){.columns.is-variable.is-7-desktop{--columnGap:1.75rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-7-desktop-only{--columnGap:1.75rem}}@media screen and (min-width:1216px){.columns.is-variable.is-7-widescreen{--columnGap:1.75rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-7-widescreen-only{--columnGap:1.75rem}}@media screen and (min-width:1408px){.columns.is-variable.is-7-fullhd{--columnGap:1.75rem}}.columns.is-variable.is-8{--columnGap:2rem}@media screen and (max-width:768px){.columns.is-variable.is-8-mobile{--columnGap:2rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-8-tablet{--columnGap:2rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-8-tablet-only{--columnGap:2rem}}@media screen and (max-width:1023px){.columns.is-variable.is-8-touch{--columnGap:2rem}}@media screen and (min-width:1024px){.columns.is-variable.is-8-desktop{--columnGap:2rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-8-desktop-only{--columnGap:2rem}}@media screen and (min-width:1216px){.columns.is-variable.is-8-widescreen{--columnGap:2rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-8-widescreen-only{--columnGap:2rem}}@media screen and (min-width:1408px){.columns.is-variable.is-8-fullhd{--columnGap:2rem}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:-webkit-min-content;min-height:-moz-min-content;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0!important}.tile.is-parent{padding:.75rem}.tile.is-vertical{flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem!important}@media screen and (min-width:769px),print{.tile:not(.is-child){display:flex}.tile.is-1{flex:none;width:8.33333%}.tile.is-2{flex:none;width:16.66667%}.tile.is-3{flex:none;width:25%}.tile.is-4{flex:none;width:33.33333%}.tile.is-5{flex:none;width:41.66667%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.33333%}.tile.is-8{flex:none;width:66.66667%}.tile.is-9{flex:none;width:75%}.tile.is-10{flex:none;width:83.33333%}.tile.is-11{flex:none;width:91.66667%}.tile.is-12{flex:none;width:100%}}.has-text-white{color:#fff!important}a.has-text-white:focus,a.has-text-white:hover{color:#e6e6e6!important}.has-background-white{background-color:#fff!important}.has-text-black{color:#0a0a0a!important}a.has-text-black:focus,a.has-text-black:hover{color:#000!important}.has-background-black{background-color:#0a0a0a!important}.has-text-light{color:#f5f5f5!important}a.has-text-light:focus,a.has-text-light:hover{color:#dbdbdb!important}.has-background-light{background-color:#f5f5f5!important}.has-text-dark{color:#363636!important}a.has-text-dark:focus,a.has-text-dark:hover{color:#1c1c1c!important}.has-background-dark{background-color:#363636!important}.has-text-primary{color:#00d1b2!important}a.has-text-primary:focus,a.has-text-primary:hover{color:#009e86!important}.has-background-primary{background-color:#00d1b2!important}.has-text-primary-light{color:#ebfffc!important}a.has-text-primary-light:focus,a.has-text-primary-light:hover{color:#b8fff4!important}.has-background-primary-light{background-color:#ebfffc!important}.has-text-primary-dark{color:#00947e!important}a.has-text-primary-dark:focus,a.has-text-primary-dark:hover{color:#00c7a9!important}.has-background-primary-dark{background-color:#00947e!important}.has-text-link{color:#485fc7!important}a.has-text-link:focus,a.has-text-link:hover{color:#3449a8!important}.has-background-link{background-color:#485fc7!important}.has-text-link-light{color:#eff1fa!important}a.has-text-link-light:focus,a.has-text-link-light:hover{color:#c8cfee!important}.has-background-link-light{background-color:#eff1fa!important}.has-text-link-dark{color:#3850b7!important}a.has-text-link-dark:focus,a.has-text-link-dark:hover{color:#576dcb!important}.has-background-link-dark{background-color:#3850b7!important}.has-text-info{color:#3e8ed0!important}a.has-text-info:focus,a.has-text-info:hover{color:#2b74b1!important}.has-background-info{background-color:#3e8ed0!important}.has-text-info-light{color:#eff5fb!important}a.has-text-info-light:focus,a.has-text-info-light:hover{color:#c6ddf1!important}.has-background-info-light{background-color:#eff5fb!important}.has-text-info-dark{color:#296fa8!important}a.has-text-info-dark:focus,a.has-text-info-dark:hover{color:#368ace!important}.has-background-info-dark{background-color:#296fa8!important}.has-text-success{color:#48c78e!important}a.has-text-success:focus,a.has-text-success:hover{color:#34a873!important}.has-background-success{background-color:#48c78e!important}.has-text-success-light{color:#effaf5!important}a.has-text-success-light:focus,a.has-text-success-light:hover{color:#c8eedd!important}.has-background-success-light{background-color:#effaf5!important}.has-text-success-dark{color:#257953!important}a.has-text-success-dark:focus,a.has-text-success-dark:hover{color:#31a06e!important}.has-background-success-dark{background-color:#257953!important}.has-text-warning{color:#ffe08a!important}a.has-text-warning:focus,a.has-text-warning:hover{color:#ffd257!important}.has-background-warning{background-color:#ffe08a!important}.has-text-warning-light{color:#fffaeb!important}a.has-text-warning-light:focus,a.has-text-warning-light:hover{color:#ffecb8!important}.has-background-warning-light{background-color:#fffaeb!important}.has-text-warning-dark{color:#946c00!important}a.has-text-warning-dark:focus,a.has-text-warning-dark:hover{color:#c79200!important}.has-background-warning-dark{background-color:#946c00!important}.has-text-danger{color:#f14668!important}a.has-text-danger:focus,a.has-text-danger:hover{color:#ee1742!important}.has-background-danger{background-color:#f14668!important}.has-text-danger-light{color:#feecf0!important}a.has-text-danger-light:focus,a.has-text-danger-light:hover{color:#fabdc9!important}.has-background-danger-light{background-color:#feecf0!important}.has-text-danger-dark{color:#cc0f35!important}a.has-text-danger-dark:focus,a.has-text-danger-dark:hover{color:#ee2049!important}.has-background-danger-dark{background-color:#cc0f35!important}.has-text-black-bis{color:#121212!important}.has-background-black-bis{background-color:#121212!important}.has-text-black-ter{color:#242424!important}.has-background-black-ter{background-color:#242424!important}.has-text-grey-darker{color:#363636!important}.has-background-grey-darker{background-color:#363636!important}.has-text-grey-dark{color:#4a4a4a!important}.has-background-grey-dark{background-color:#4a4a4a!important}.has-text-grey{color:#7a7a7a!important}.has-background-grey{background-color:#7a7a7a!important}.has-text-grey-light{color:#b5b5b5!important}.has-background-grey-light{background-color:#b5b5b5!important}.has-text-grey-lighter{color:#dbdbdb!important}.has-background-grey-lighter{background-color:#dbdbdb!important}.has-text-white-ter{color:#f5f5f5!important}.has-background-white-ter{background-color:#f5f5f5!important}.has-text-white-bis{color:#fafafa!important}.has-background-white-bis{background-color:#fafafa!important}.is-flex-direction-row{flex-direction:row!important}.is-flex-direction-row-reverse{flex-direction:row-reverse!important}.is-flex-direction-column{flex-direction:column!important}.is-flex-direction-column-reverse{flex-direction:column-reverse!important}.is-flex-wrap-nowrap{flex-wrap:nowrap!important}.is-flex-wrap-wrap{flex-wrap:wrap!important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse!important}.is-justify-content-flex-start{justify-content:flex-start!important}.is-justify-content-flex-end{justify-content:flex-end!important}.is-justify-content-center{justify-content:center!important}.is-justify-content-space-between{justify-content:space-between!important}.is-justify-content-space-around{justify-content:space-around!important}.is-justify-content-space-evenly{justify-content:space-evenly!important}.is-justify-content-start{justify-content:start!important}.is-justify-content-end{justify-content:end!important}.is-justify-content-left{justify-content:left!important}.is-justify-content-right{justify-content:right!important}.is-align-content-flex-start{align-content:flex-start!important}.is-align-content-flex-end{align-content:flex-end!important}.is-align-content-center{align-content:center!important}.is-align-content-space-between{align-content:space-between!important}.is-align-content-space-around{align-content:space-around!important}.is-align-content-space-evenly{align-content:space-evenly!important}.is-align-content-stretch{align-content:stretch!important}.is-align-content-start{align-content:start!important}.is-align-content-end{align-content:end!important}.is-align-content-baseline{align-content:baseline!important}.is-align-items-stretch{align-items:stretch!important}.is-align-items-flex-start{align-items:flex-start!important}.is-align-items-flex-end{align-items:flex-end!important}.is-align-items-center{align-items:center!important}.is-align-items-baseline{align-items:baseline!important}.is-align-items-start{align-items:start!important}.is-align-items-end{align-items:end!important}.is-align-items-self-start{align-items:self-start!important}.is-align-items-self-end{align-items:self-end!important}.is-align-self-auto{align-self:auto!important}.is-align-self-flex-start{align-self:flex-start!important}.is-align-self-flex-end{align-self:flex-end!important}.is-align-self-center{align-self:center!important}.is-align-self-baseline{align-self:baseline!important}.is-align-self-stretch{align-self:stretch!important}.is-flex-grow-0{flex-grow:0!important}.is-flex-grow-1{flex-grow:1!important}.is-flex-grow-2{flex-grow:2!important}.is-flex-grow-3{flex-grow:3!important}.is-flex-grow-4{flex-grow:4!important}.is-flex-grow-5{flex-grow:5!important}.is-flex-shrink-0{flex-shrink:0!important}.is-flex-shrink-1{flex-shrink:1!important}.is-flex-shrink-2{flex-shrink:2!important}.is-flex-shrink-3{flex-shrink:3!important}.is-flex-shrink-4{flex-shrink:4!important}.is-flex-shrink-5{flex-shrink:5!important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left!important}.is-pulled-right{float:right!important}.is-radiusless{border-radius:0!important}.is-shadowless{box-shadow:none!important}.is-clickable{cursor:pointer!important;pointer-events:all!important}.is-clipped{overflow:hidden!important}.is-relative{position:relative!important}.is-marginless{margin:0!important}.is-paddingless{padding:0!important}.m-0{margin:0!important}.mt-0{margin-top:0!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mx-0{margin-left:0!important;margin-right:0!important}.my-0{margin-top:0!important;margin-bottom:0!important}.m-1{margin:.25rem!important}.mt-1{margin-top:.25rem!important}.mr-1{margin-right:.25rem!important}.mb-1{margin-bottom:.25rem!important}.ml-1{margin-left:.25rem!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-2{margin:.5rem!important}.mt-2{margin-top:.5rem!important}.mr-2{margin-right:.5rem!important}.mb-2{margin-bottom:.5rem!important}.ml-2{margin-left:.5rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-3{margin:.75rem!important}.mt-3{margin-top:.75rem!important}.mr-3{margin-right:.75rem!important}.mb-3{margin-bottom:.75rem!important}.ml-3{margin-left:.75rem!important}.mx-3{margin-left:.75rem!important;margin-right:.75rem!important}.my-3{margin-top:.75rem!important;margin-bottom:.75rem!important}.m-4{margin:1rem!important}.mt-4{margin-top:1rem!important}.mr-4{margin-right:1rem!important}.mb-4{margin-bottom:1rem!important}.ml-4{margin-left:1rem!important}.mx-4{margin-left:1rem!important;margin-right:1rem!important}.my-4{margin-top:1rem!important;margin-bottom:1rem!important}.m-5{margin:1.5rem!important}.mt-5{margin-top:1.5rem!important}.mr-5{margin-right:1.5rem!important}.mb-5{margin-bottom:1.5rem!important}.ml-5{margin-left:1.5rem!important}.mx-5{margin-left:1.5rem!important;margin-right:1.5rem!important}.my-5{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-6{margin:3rem!important}.mt-6{margin-top:3rem!important}.mr-6{margin-right:3rem!important}.mb-6{margin-bottom:3rem!important}.ml-6{margin-left:3rem!important}.mx-6{margin-left:3rem!important;margin-right:3rem!important}.my-6{margin-top:3rem!important;margin-bottom:3rem!important}.m-auto{margin:auto!important}.mt-auto{margin-top:auto!important}.mr-auto{margin-right:auto!important}.mb-auto{margin-bottom:auto!important}.ml-auto{margin-left:auto!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.p-0{padding:0!important}.pt-0{padding-top:0!important}.pr-0{padding-right:0!important}.pb-0{padding-bottom:0!important}.pl-0{padding-left:0!important}.px-0{padding-left:0!important;padding-right:0!important}.py-0{padding-top:0!important;padding-bottom:0!important}.p-1{padding:.25rem!important}.pt-1{padding-top:.25rem!important}.pr-1{padding-right:.25rem!important}.pb-1{padding-bottom:.25rem!important}.pl-1{padding-left:.25rem!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-2{padding:.5rem!important}.pt-2{padding-top:.5rem!important}.pr-2{padding-right:.5rem!important}.pb-2{padding-bottom:.5rem!important}.pl-2{padding-left:.5rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-3{padding:.75rem!important}.pt-3{padding-top:.75rem!important}.pr-3{padding-right:.75rem!important}.pb-3{padding-bottom:.75rem!important}.pl-3{padding-left:.75rem!important}.px-3{padding-left:.75rem!important;padding-right:.75rem!important}.py-3{padding-top:.75rem!important;padding-bottom:.75rem!important}.p-4{padding:1rem!important}.pt-4{padding-top:1rem!important}.pr-4{padding-right:1rem!important}.pb-4{padding-bottom:1rem!important}.pl-4{padding-left:1rem!important}.px-4{padding-left:1rem!important;padding-right:1rem!important}.py-4{padding-top:1rem!important;padding-bottom:1rem!important}.p-5{padding:1.5rem!important}.pt-5{padding-top:1.5rem!important}.pr-5{padding-right:1.5rem!important}.pb-5{padding-bottom:1.5rem!important}.pl-5{padding-left:1.5rem!important}.px-5{padding-left:1.5rem!important;padding-right:1.5rem!important}.py-5{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-6{padding:3rem!important}.pt-6{padding-top:3rem!important}.pr-6{padding-right:3rem!important}.pb-6{padding-bottom:3rem!important}.pl-6{padding-left:3rem!important}.px-6{padding-left:3rem!important;padding-right:3rem!important}.py-6{padding-top:3rem!important;padding-bottom:3rem!important}.p-auto{padding:auto!important}.pt-auto{padding-top:auto!important}.pr-auto{padding-right:auto!important}.pb-auto{padding-bottom:auto!important}.pl-auto{padding-left:auto!important}.px-auto{padding-left:auto!important;padding-right:auto!important}.py-auto{padding-top:auto!important;padding-bottom:auto!important}.is-size-1{font-size:3rem!important}.is-size-2{font-size:2.5rem!important}.is-size-3{font-size:2rem!important}.is-size-4{font-size:1.5rem!important}.is-size-5{font-size:1.25rem!important}.is-size-6{font-size:1rem!important}.is-size-7{font-size:.75rem!important}@media screen and (max-width:768px){.is-size-1-mobile{font-size:3rem!important}.is-size-2-mobile{font-size:2.5rem!important}.is-size-3-mobile{font-size:2rem!important}.is-size-4-mobile{font-size:1.5rem!important}.is-size-5-mobile{font-size:1.25rem!important}.is-size-6-mobile{font-size:1rem!important}.is-size-7-mobile{font-size:.75rem!important}}@media screen and (min-width:769px),print{.is-size-1-tablet{font-size:3rem!important}.is-size-2-tablet{font-size:2.5rem!important}.is-size-3-tablet{font-size:2rem!important}.is-size-4-tablet{font-size:1.5rem!important}.is-size-5-tablet{font-size:1.25rem!important}.is-size-6-tablet{font-size:1rem!important}.is-size-7-tablet{font-size:.75rem!important}}@media screen and (max-width:1023px){.is-size-1-touch{font-size:3rem!important}.is-size-2-touch{font-size:2.5rem!important}.is-size-3-touch{font-size:2rem!important}.is-size-4-touch{font-size:1.5rem!important}.is-size-5-touch{font-size:1.25rem!important}.is-size-6-touch{font-size:1rem!important}.is-size-7-touch{font-size:.75rem!important}}@media screen and (min-width:1024px){.is-size-1-desktop{font-size:3rem!important}.is-size-2-desktop{font-size:2.5rem!important}.is-size-3-desktop{font-size:2rem!important}.is-size-4-desktop{font-size:1.5rem!important}.is-size-5-desktop{font-size:1.25rem!important}.is-size-6-desktop{font-size:1rem!important}.is-size-7-desktop{font-size:.75rem!important}}@media screen and (min-width:1216px){.is-size-1-widescreen{font-size:3rem!important}.is-size-2-widescreen{font-size:2.5rem!important}.is-size-3-widescreen{font-size:2rem!important}.is-size-4-widescreen{font-size:1.5rem!important}.is-size-5-widescreen{font-size:1.25rem!important}.is-size-6-widescreen{font-size:1rem!important}.is-size-7-widescreen{font-size:.75rem!important}}@media screen and (min-width:1408px){.is-size-1-fullhd{font-size:3rem!important}.is-size-2-fullhd{font-size:2.5rem!important}.is-size-3-fullhd{font-size:2rem!important}.is-size-4-fullhd{font-size:1.5rem!important}.is-size-5-fullhd{font-size:1.25rem!important}.is-size-6-fullhd{font-size:1rem!important}.is-size-7-fullhd{font-size:.75rem!important}}.has-text-centered{text-align:center!important}.has-text-justified{text-align:justify!important}.has-text-left{text-align:left!important}.has-text-right{text-align:right!important}@media screen and (max-width:768px){.has-text-centered-mobile{text-align:center!important}}@media screen and (min-width:769px),print{.has-text-centered-tablet{text-align:center!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-centered-tablet-only{text-align:center!important}}@media screen and (max-width:1023px){.has-text-centered-touch{text-align:center!important}}@media screen and (min-width:1024px){.has-text-centered-desktop{text-align:center!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-centered-desktop-only{text-align:center!important}}@media screen and (min-width:1216px){.has-text-centered-widescreen{text-align:center!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-centered-widescreen-only{text-align:center!important}}@media screen and (min-width:1408px){.has-text-centered-fullhd{text-align:center!important}}@media screen and (max-width:768px){.has-text-justified-mobile{text-align:justify!important}}@media screen and (min-width:769px),print{.has-text-justified-tablet{text-align:justify!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-justified-tablet-only{text-align:justify!important}}@media screen and (max-width:1023px){.has-text-justified-touch{text-align:justify!important}}@media screen and (min-width:1024px){.has-text-justified-desktop{text-align:justify!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-justified-desktop-only{text-align:justify!important}}@media screen and (min-width:1216px){.has-text-justified-widescreen{text-align:justify!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-justified-widescreen-only{text-align:justify!important}}@media screen and (min-width:1408px){.has-text-justified-fullhd{text-align:justify!important}}@media screen and (max-width:768px){.has-text-left-mobile{text-align:left!important}}@media screen and (min-width:769px),print{.has-text-left-tablet{text-align:left!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-left-tablet-only{text-align:left!important}}@media screen and (max-width:1023px){.has-text-left-touch{text-align:left!important}}@media screen and (min-width:1024px){.has-text-left-desktop{text-align:left!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-left-desktop-only{text-align:left!important}}@media screen and (min-width:1216px){.has-text-left-widescreen{text-align:left!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-left-widescreen-only{text-align:left!important}}@media screen and (min-width:1408px){.has-text-left-fullhd{text-align:left!important}}@media screen and (max-width:768px){.has-text-right-mobile{text-align:right!important}}@media screen and (min-width:769px),print{.has-text-right-tablet{text-align:right!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-right-tablet-only{text-align:right!important}}@media screen and (max-width:1023px){.has-text-right-touch{text-align:right!important}}@media screen and (min-width:1024px){.has-text-right-desktop{text-align:right!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-right-desktop-only{text-align:right!important}}@media screen and (min-width:1216px){.has-text-right-widescreen{text-align:right!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-right-widescreen-only{text-align:right!important}}@media screen and (min-width:1408px){.has-text-right-fullhd{text-align:right!important}}.is-capitalized{text-transform:capitalize!important}.is-lowercase{text-transform:lowercase!important}.is-uppercase{text-transform:uppercase!important}.is-italic{font-style:italic!important}.is-underlined{text-decoration:underline!important}.has-text-weight-light{font-weight:300!important}.has-text-weight-normal{font-weight:400!important}.has-text-weight-medium{font-weight:500!important}.has-text-weight-semibold{font-weight:600!important}.has-text-weight-bold{font-weight:700!important}.is-family-primary{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif!important}.is-family-secondary{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif!important}.is-family-sans-serif{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif!important}.is-family-monospace{font-family:monospace!important}.is-family-code{font-family:monospace!important}.is-block{display:block!important}@media screen and (max-width:768px){.is-block-mobile{display:block!important}}@media screen and (min-width:769px),print{.is-block-tablet{display:block!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-block-tablet-only{display:block!important}}@media screen and (max-width:1023px){.is-block-touch{display:block!important}}@media screen and (min-width:1024px){.is-block-desktop{display:block!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-block-desktop-only{display:block!important}}@media screen and (min-width:1216px){.is-block-widescreen{display:block!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-block-widescreen-only{display:block!important}}@media screen and (min-width:1408px){.is-block-fullhd{display:block!important}}.is-flex{display:flex!important}@media screen and (max-width:768px){.is-flex-mobile{display:flex!important}}@media screen and (min-width:769px),print{.is-flex-tablet{display:flex!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-flex-tablet-only{display:flex!important}}@media screen and (max-width:1023px){.is-flex-touch{display:flex!important}}@media screen and (min-width:1024px){.is-flex-desktop{display:flex!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-flex-desktop-only{display:flex!important}}@media screen and (min-width:1216px){.is-flex-widescreen{display:flex!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-flex-widescreen-only{display:flex!important}}@media screen and (min-width:1408px){.is-flex-fullhd{display:flex!important}}.is-inline{display:inline!important}@media screen and (max-width:768px){.is-inline-mobile{display:inline!important}}@media screen and (min-width:769px),print{.is-inline-tablet{display:inline!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-inline-tablet-only{display:inline!important}}@media screen and (max-width:1023px){.is-inline-touch{display:inline!important}}@media screen and (min-width:1024px){.is-inline-desktop{display:inline!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-inline-desktop-only{display:inline!important}}@media screen and (min-width:1216px){.is-inline-widescreen{display:inline!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-inline-widescreen-only{display:inline!important}}@media screen and (min-width:1408px){.is-inline-fullhd{display:inline!important}}.is-inline-block{display:inline-block!important}@media screen and (max-width:768px){.is-inline-block-mobile{display:inline-block!important}}@media screen and (min-width:769px),print{.is-inline-block-tablet{display:inline-block!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-inline-block-tablet-only{display:inline-block!important}}@media screen and (max-width:1023px){.is-inline-block-touch{display:inline-block!important}}@media screen and (min-width:1024px){.is-inline-block-desktop{display:inline-block!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-inline-block-desktop-only{display:inline-block!important}}@media screen and (min-width:1216px){.is-inline-block-widescreen{display:inline-block!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-inline-block-widescreen-only{display:inline-block!important}}@media screen and (min-width:1408px){.is-inline-block-fullhd{display:inline-block!important}}.is-inline-flex{display:inline-flex!important}@media screen and (max-width:768px){.is-inline-flex-mobile{display:inline-flex!important}}@media screen and (min-width:769px),print{.is-inline-flex-tablet{display:inline-flex!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-inline-flex-tablet-only{display:inline-flex!important}}@media screen and (max-width:1023px){.is-inline-flex-touch{display:inline-flex!important}}@media screen and (min-width:1024px){.is-inline-flex-desktop{display:inline-flex!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-inline-flex-desktop-only{display:inline-flex!important}}@media screen and (min-width:1216px){.is-inline-flex-widescreen{display:inline-flex!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-inline-flex-widescreen-only{display:inline-flex!important}}@media screen and (min-width:1408px){.is-inline-flex-fullhd{display:inline-flex!important}}.is-hidden{display:none!important}.is-sr-only{border:none!important;clip:rect(0,0,0,0)!important;height:.01em!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:.01em!important}@media screen and (max-width:768px){.is-hidden-mobile{display:none!important}}@media screen and (min-width:769px),print{.is-hidden-tablet{display:none!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-hidden-tablet-only{display:none!important}}@media screen and (max-width:1023px){.is-hidden-touch{display:none!important}}@media screen and (min-width:1024px){.is-hidden-desktop{display:none!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-hidden-desktop-only{display:none!important}}@media screen and (min-width:1216px){.is-hidden-widescreen{display:none!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-hidden-widescreen-only{display:none!important}}@media screen and (min-width:1408px){.is-hidden-fullhd{display:none!important}}.is-invisible{visibility:hidden!important}@media screen and (max-width:768px){.is-invisible-mobile{visibility:hidden!important}}@media screen and (min-width:769px),print{.is-invisible-tablet{visibility:hidden!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-invisible-tablet-only{visibility:hidden!important}}@media screen and (max-width:1023px){.is-invisible-touch{visibility:hidden!important}}@media screen and (min-width:1024px){.is-invisible-desktop{visibility:hidden!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-invisible-desktop-only{visibility:hidden!important}}@media screen and (min-width:1216px){.is-invisible-widescreen{visibility:hidden!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-invisible-widescreen-only{visibility:hidden!important}}@media screen and (min-width:1408px){.is-invisible-fullhd{visibility:hidden!important}}.hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:0 0}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:#fff;color:#0a0a0a}.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-white strong{color:inherit}.hero.is-white .title{color:#0a0a0a}.hero.is-white .subtitle{color:rgba(10,10,10,.9)}.hero.is-white .subtitle a:not(.button),.hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width:1023px){.hero.is-white .navbar-menu{background-color:#fff}}.hero.is-white .navbar-item,.hero.is-white .navbar-link{color:rgba(10,10,10,.7)}.hero.is-white .navbar-link.is-active,.hero.is-white .navbar-link:hover,.hero.is-white a.navbar-item.is-active,.hero.is-white a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.hero.is-white .tabs a{color:#0a0a0a;opacity:.9}.hero.is-white .tabs a:hover{opacity:1}.hero.is-white .tabs li.is-active a{color:#fff!important;opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#0a0a0a}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.hero.is-white.is-bold{background-image:linear-gradient(141deg,#e6e6e6 0,#fff 71%,#fff 100%)}@media screen and (max-width:768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg,#e6e6e6 0,#fff 71%,#fff 100%)}}.hero.is-black{background-color:#0a0a0a;color:#fff}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-black strong{color:inherit}.hero.is-black .title{color:#fff}.hero.is-black .subtitle{color:rgba(255,255,255,.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-black .navbar-menu{background-color:#0a0a0a}}.hero.is-black .navbar-item,.hero.is-black .navbar-link{color:rgba(255,255,255,.7)}.hero.is-black .navbar-link.is-active,.hero.is-black .navbar-link:hover,.hero.is-black a.navbar-item.is-active,.hero.is-black a.navbar-item:hover{background-color:#000;color:#fff}.hero.is-black .tabs a{color:#fff;opacity:.9}.hero.is-black .tabs a:hover{opacity:1}.hero.is-black .tabs li.is-active a{color:#0a0a0a!important;opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:#fff}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.hero.is-black.is-bold{background-image:linear-gradient(141deg,#000 0,#0a0a0a 71%,#181616 100%)}@media screen and (max-width:768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg,#000 0,#0a0a0a 71%,#181616 100%)}}.hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-light strong{color:inherit}.hero.is-light .title{color:rgba(0,0,0,.7)}.hero.is-light .subtitle{color:rgba(0,0,0,.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width:1023px){.hero.is-light .navbar-menu{background-color:#f5f5f5}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(0,0,0,.7)}.hero.is-light .navbar-link.is-active,.hero.is-light .navbar-link:hover,.hero.is-light a.navbar-item.is-active,.hero.is-light a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.hero.is-light .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-light .tabs a:hover{opacity:1}.hero.is-light .tabs li.is-active a{color:#f5f5f5!important;opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#f5f5f5}.hero.is-light.is-bold{background-image:linear-gradient(141deg,#dfd8d9 0,#f5f5f5 71%,#fff 100%)}@media screen and (max-width:768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg,#dfd8d9 0,#f5f5f5 71%,#fff 100%)}}.hero.is-dark{background-color:#363636;color:#fff}.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-dark strong{color:inherit}.hero.is-dark .title{color:#fff}.hero.is-dark .subtitle{color:rgba(255,255,255,.9)}.hero.is-dark .subtitle a:not(.button),.hero.is-dark .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-dark .navbar-menu{background-color:#363636}}.hero.is-dark .navbar-item,.hero.is-dark .navbar-link{color:rgba(255,255,255,.7)}.hero.is-dark .navbar-link.is-active,.hero.is-dark .navbar-link:hover,.hero.is-dark a.navbar-item.is-active,.hero.is-dark a.navbar-item:hover{background-color:#292929;color:#fff}.hero.is-dark .tabs a{color:#fff;opacity:.9}.hero.is-dark .tabs a:hover{opacity:1}.hero.is-dark .tabs li.is-active a{color:#363636!important;opacity:1}.hero.is-dark .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a{color:#fff}.hero.is-dark .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#363636}.hero.is-dark.is-bold{background-image:linear-gradient(141deg,#1f191a 0,#363636 71%,#46403f 100%)}@media screen and (max-width:768px){.hero.is-dark.is-bold .navbar-menu{background-image:linear-gradient(141deg,#1f191a 0,#363636 71%,#46403f 100%)}}.hero.is-primary{background-color:#00d1b2;color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-primary strong{color:inherit}.hero.is-primary .title{color:#fff}.hero.is-primary .subtitle{color:rgba(255,255,255,.9)}.hero.is-primary .subtitle a:not(.button),.hero.is-primary .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-primary .navbar-menu{background-color:#00d1b2}}.hero.is-primary .navbar-item,.hero.is-primary .navbar-link{color:rgba(255,255,255,.7)}.hero.is-primary .navbar-link.is-active,.hero.is-primary .navbar-link:hover,.hero.is-primary a.navbar-item.is-active,.hero.is-primary a.navbar-item:hover{background-color:#00b89c;color:#fff}.hero.is-primary .tabs a{color:#fff;opacity:.9}.hero.is-primary .tabs a:hover{opacity:1}.hero.is-primary .tabs li.is-active a{color:#00d1b2!important;opacity:1}.hero.is-primary .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#00d1b2}.hero.is-primary.is-bold{background-image:linear-gradient(141deg,#009e6c 0,#00d1b2 71%,#00e7eb 100%)}@media screen and (max-width:768px){.hero.is-primary.is-bold .navbar-menu{background-image:linear-gradient(141deg,#009e6c 0,#00d1b2 71%,#00e7eb 100%)}}.hero.is-link{background-color:#485fc7;color:#fff}.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-link strong{color:inherit}.hero.is-link .title{color:#fff}.hero.is-link .subtitle{color:rgba(255,255,255,.9)}.hero.is-link .subtitle a:not(.button),.hero.is-link .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-link .navbar-menu{background-color:#485fc7}}.hero.is-link .navbar-item,.hero.is-link .navbar-link{color:rgba(255,255,255,.7)}.hero.is-link .navbar-link.is-active,.hero.is-link .navbar-link:hover,.hero.is-link a.navbar-item.is-active,.hero.is-link a.navbar-item:hover{background-color:#3a51bb;color:#fff}.hero.is-link .tabs a{color:#fff;opacity:.9}.hero.is-link .tabs a:hover{opacity:1}.hero.is-link .tabs li.is-active a{color:#485fc7!important;opacity:1}.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{color:#fff}.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-link .tabs.is-boxed li.is-active a,.hero.is-link .tabs.is-boxed li.is-active a:hover,.hero.is-link .tabs.is-toggle li.is-active a,.hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#485fc7}.hero.is-link.is-bold{background-image:linear-gradient(141deg,#2959b3 0,#485fc7 71%,#5658d2 100%)}@media screen and (max-width:768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg,#2959b3 0,#485fc7 71%,#5658d2 100%)}}.hero.is-info{background-color:#3e8ed0;color:#fff}.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:rgba(255,255,255,.9)}.hero.is-info .subtitle a:not(.button),.hero.is-info .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-info .navbar-menu{background-color:#3e8ed0}}.hero.is-info .navbar-item,.hero.is-info .navbar-link{color:rgba(255,255,255,.7)}.hero.is-info .navbar-link.is-active,.hero.is-info .navbar-link:hover,.hero.is-info a.navbar-item.is-active,.hero.is-info a.navbar-item:hover{background-color:#3082c5;color:#fff}.hero.is-info .tabs a{color:#fff;opacity:.9}.hero.is-info .tabs a:hover{opacity:1}.hero.is-info .tabs li.is-active a{color:#3e8ed0!important;opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3e8ed0}.hero.is-info.is-bold{background-image:linear-gradient(141deg,#208fbc 0,#3e8ed0 71%,#4d83db 100%)}@media screen and (max-width:768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg,#208fbc 0,#3e8ed0 71%,#4d83db 100%)}}.hero.is-success{background-color:#48c78e;color:#fff}.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:rgba(255,255,255,.9)}.hero.is-success .subtitle a:not(.button),.hero.is-success .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-success .navbar-menu{background-color:#48c78e}}.hero.is-success .navbar-item,.hero.is-success .navbar-link{color:rgba(255,255,255,.7)}.hero.is-success .navbar-link.is-active,.hero.is-success .navbar-link:hover,.hero.is-success a.navbar-item.is-active,.hero.is-success a.navbar-item:hover{background-color:#3abb81;color:#fff}.hero.is-success .tabs a{color:#fff;opacity:.9}.hero.is-success .tabs a:hover{opacity:1}.hero.is-success .tabs li.is-active a{color:#48c78e!important;opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#48c78e}.hero.is-success.is-bold{background-image:linear-gradient(141deg,#29b35e 0,#48c78e 71%,#56d2af 100%)}@media screen and (max-width:768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg,#29b35e 0,#48c78e 71%,#56d2af 100%)}}.hero.is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:rgba(0,0,0,.7)}.hero.is-warning .subtitle{color:rgba(0,0,0,.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width:1023px){.hero.is-warning .navbar-menu{background-color:#ffe08a}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(0,0,0,.7)}.hero.is-warning .navbar-link.is-active,.hero.is-warning .navbar-link:hover,.hero.is-warning a.navbar-item.is-active,.hero.is-warning a.navbar-item:hover{background-color:#ffd970;color:rgba(0,0,0,.7)}.hero.is-warning .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-warning .tabs a:hover{opacity:1}.hero.is-warning .tabs li.is-active a{color:#ffe08a!important;opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#ffe08a}.hero.is-warning.is-bold{background-image:linear-gradient(141deg,#ffb657 0,#ffe08a 71%,#fff6a3 100%)}@media screen and (max-width:768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg,#ffb657 0,#ffe08a 71%,#fff6a3 100%)}}.hero.is-danger{background-color:#f14668;color:#fff}.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:rgba(255,255,255,.9)}.hero.is-danger .subtitle a:not(.button),.hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-danger .navbar-menu{background-color:#f14668}}.hero.is-danger .navbar-item,.hero.is-danger .navbar-link{color:rgba(255,255,255,.7)}.hero.is-danger .navbar-link.is-active,.hero.is-danger .navbar-link:hover,.hero.is-danger a.navbar-item.is-active,.hero.is-danger a.navbar-item:hover{background-color:#ef2e55;color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:.9}.hero.is-danger .tabs a:hover{opacity:1}.hero.is-danger .tabs li.is-active a{color:#f14668!important;opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#f14668}.hero.is-danger.is-bold{background-image:linear-gradient(141deg,#fa0a62 0,#f14668 71%,#f7595f 100%)}@media screen and (max-width:768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg,#fa0a62 0,#f14668 71%,#f7595f 100%)}}.hero.is-small .hero-body{padding:1.5rem}@media screen and (min-width:769px),print{.hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width:769px),print{.hero.is-large .hero-body{padding:18rem 6rem}}.hero.is-fullheight .hero-body,.hero.is-fullheight-with-navbar .hero-body,.hero.is-halfheight .hero-body{align-items:center;display:flex}.hero.is-fullheight .hero-body>.container,.hero.is-fullheight-with-navbar .hero-body>.container,.hero.is-halfheight .hero-body>.container{flex-grow:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0)}.hero-video.is-transparent{opacity:.3}@media screen and (max-width:768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width:768px){.hero-buttons .button{display:flex}.hero-buttons .button:not(:last-child){margin-bottom:.75rem}}@media screen and (min-width:769px),print{.hero-buttons{display:flex;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-foot,.hero-head{flex-grow:0;flex-shrink:0}.hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width:769px),print{.hero-body{padding:3rem 3rem}}.section{padding:3rem 1.5rem}@media screen and (min-width:1024px){.section{padding:3rem 3rem}.section.is-medium{padding:9rem 4.5rem}.section.is-large{padding:18rem 6rem}}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem} \ No newline at end of file diff --git a/webshare/static/favicon.ico b/webshare/static/favicon.ico deleted file mode 100644 index 00a7ac2e249ed90b3529d0064a26fe79381e3908..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15406 zcmZQzU}Rus5D);-3Je)63=C!r3=9ei5Wa>W1H(KP1_lEI2tPxOf#H}a1A_(w1A_oa z9Roz10XO*1z`!uFx))6O36<^@7B(*$)aMCS!*G z49uA7L3+TLnc+W34LCfI!;h8WKZ^$hgTfoE7RkSGJ_|$*NG$^!9(%Cq9lT<=O9moj zK;?`A0|SG@2rXyeX=Cul@31S|N5h=am&c$wE|1|q z=L#b2=Rq|KWHzG+ZoQ0B4F9<{GW_S5#qgiK1A-ZaQPqRYAl816+hOK#%z&89D359$ za+-zN&*Fny4cPwW4F4G=82+=eBV(%CzlPyI10$+k z9FrLSv$vy)(aL^o>5sh^(zZml6PZm-{|~tRt1!bER3?Gj-#F@9YWg2kMli}Exq%Z> zCb3l@iJ`fJn)Y+9gtVWT?HK+uTQK|w<$sWy@bzt|Wj|{g!+(z14F8#p82)oEfRrg9 z_ppZI_B$vYQpgM0+q_Rx5siTzNs;qJl1A4>Lv`)Fwl|3Puh0196`{=(~b zZipEmbJ$xTX$5cnC(7`jVs%fbRtG5p7dL1VAj+UX#*ps^Cp#T2-o2fLjhvq|Z%GHFBl#31*eVZnH2EYYl7WgY+(s^{~Ct>Y~`q9?Vz!2YL#=+sZoZ&y$Du|z$ z$Z$XB5{Cb{+>7o9xce7E#+{f{A!8gI?F|3fn;8DHMnlcQH{Xm_PJ_nsIp)*X{Ty={ z{xh2~{O6p*@Ske~6mNvM0W|-?Yz~>@NB2KA{(!iD7Q=tgS_rlrhW||J4F8#w82+<_ zGW_RU2K7S^!+%C0;?nX!xStc0XEHIv7&L|pn%@BBac0xO>wZw00nNK$qz5L3{~S{w zaR8bt#E?fz`ylxN3IAo7b2uQkfG}uY4HW*M@&&{vga^d^cE|~6Plw|nN zwHo4n7Eerhbhm@}1L1y9J@J_5NN6#lFc4F8E;%SYGnw}Pxs0kwS?xfuSlh9J3nBg22r zSq%SKTp9i|auOHz^iDq@`!Fyw!+&sF0@Pk(BHrCFbLbiVFgvM9kGdb)XTs7pq-Hqd zGK=EyUkWMvz-zxj>%T#mg#I5cci|KV){?<6qcZ9F z5T|?5;uTac!0Z9hAiF{9$3SH-N$%H#^!Gq@5jtj4qn-Pili{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-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .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{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-transition-delay:0s;transition-delay:0s;-webkit-transition-duration:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index: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:"\f576"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-wagon-covered:before{content:"\f8ee"}.fa-line-height:before{content:"\f871"}.fa-bagel:before{content:"\e3d7"}.fa-transporter-7:before{content:"\e2a8"}.fa-at:before{content:"\40"}.fa-rectangles-mixed:before{content:"\e323"}.fa-phone-arrow-up-right:before,.fa-phone-arrow-up:before,.fa-phone-outgoing:before{content:"\e224"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-circle-l:before{content:"\e114"}.fa-head-side-goggles:before,.fa-head-vr:before{content:"\f6ea"}.fa-text-height:before{content:"\f034"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-face-hand-yawn:before{content:"\e379"}.fa-gauge-simple-min:before,.fa-tachometer-slowest:before{content:"\f62d"}.fa-stethoscope:before{content:"\f0f1"}.fa-coffin:before{content:"\f6c6"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-bowl-salad:before,.fa-salad:before{content:"\f81e"}.fa-info:before{content:"\f129"}.fa-robot-astromech:before{content:"\e2d2"}.fa-ring-diamond:before{content:"\e5ab"}.fa-fondue-pot:before{content:"\e40d"}.fa-theta:before{content:"\f69e"}.fa-face-hand-peeking:before{content:"\e481"}.fa-square-user:before{content:"\e283"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-explosion:before{content:"\e4e9"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-wave-square:before{content:"\f83e"}.fa-ring:before{content:"\f70b"}.fa-building-un:before{content:"\e4d9"}.fa-dice-three:before{content:"\f527"}.fa-tire-pressure-warning:before{content:"\f633"}.fa-wifi-2:before,.fa-wifi-fair:before{content:"\f6ab"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-mp3-player:before{content:"\f8ce"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-tally-4:before{content:"\e297"}.fa-rectangle-history:before{content:"\e4a2"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-sun-haze:before{content:"\f765"}.fa-text-size:before{content:"\f894"}.fa-ufo:before{content:"\e047"}.fa-fork:before,.fa-utensil-fork:before{content:"\f2e3"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-mobile-signal:before{content:"\e1ef"}.fa-barcode-scan:before{content:"\f465"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-folder-arrow-down:before,.fa-folder-download:before{content:"\e053"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-face-icicles:before{content:"\e37c"}.fa-shovel:before{content:"\f713"}.fa-door-open:before{content:"\f52b"}.fa-films:before{content:"\e17a"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-face-glasses:before{content:"\e377"}.fa-nfc:before{content:"\e1f7"}.fa-atom:before{content:"\f5d2"}.fa-soap:before{content:"\e06e"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-closed-captioning-slash:before{content:"\e135"}.fa-calculator-alt:before,.fa-calculator-simple:before{content:"\f64c"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-sliders-up:before,.fa-sliders-v:before{content:"\f3f1"}.fa-location-minus:before,.fa-map-marker-minus:before{content:"\f609"}.fa-pump-medical:before{content:"\e06a"}.fa-fingerprint:before{content:"\f577"}.fa-ski-boot:before{content:"\e3cc"}.fa-rectangle-sd:before,.fa-standard-definition:before{content:"\e28a"}.fa-h1:before{content:"\f313"}.fa-hand-point-right:before{content:"\f0a4"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-message-bot:before{content:"\e3b8"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-light-ceiling:before{content:"\e016"}.fa-comment-alt-exclamation:before,.fa-message-exclamation:before{content:"\f4a5"}.fa-bowl-scoop:before,.fa-bowl-shaved-ice:before{content:"\e3de"}.fa-square-x:before{content:"\e286"}.fa-utility-pole-double:before{content:"\e2c4"}.fa-flag-checkered:before{content:"\f11e"}.fa-chevron-double-up:before,.fa-chevrons-up:before{content:"\f325"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-user-vneck:before{content:"\e461"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-crop:before{content:"\f125"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-users-rectangle:before{content:"\e594"}.fa-people-roof:before{content:"\e537"}.fa-arrow-square-right:before,.fa-square-arrow-right:before{content:"\f33b"}.fa-location-plus:before,.fa-map-marker-plus:before{content:"\f60a"}.fa-lightbulb-exclamation-on:before{content:"\e1ca"}.fa-people-line:before{content:"\e534"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-crate-empty:before{content:"\e151"}.fa-diagram-predecessor:before{content:"\e477"}.fa-transporter:before{content:"\e042"}.fa-calendar-circle-user:before{content:"\e471"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-person-carry-box:before,.fa-person-carry:before{content:"\f4cf"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-laptop:before{content:"\f109"}.fa-file-csv:before{content:"\f6dd"}.fa-menorah:before{content:"\f676"}.fa-union:before{content:"\f6a2"}.fa-chevron-double-left:before,.fa-chevrons-left:before{content:"\f323"}.fa-circle-heart:before,.fa-heart-circle:before{content:"\f4c7"}.fa-truck-plane:before{content:"\e58f"}.fa-record-vinyl:before{content:"\f8d9"}.fa-bring-forward:before{content:"\f856"}.fa-square-p:before{content:"\e279"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-sigma:before{content:"\f68b"}.fa-camera-movie:before{content:"\f8a9"}.fa-bong:before{content:"\f55c"}.fa-clarinet:before{content:"\f8ad"}.fa-truck-flatbed:before{content:"\e2b6"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-leaf-heart:before{content:"\f4cb"}.fa-house-building:before{content:"\e1b1"}.fa-cheese-swiss:before{content:"\f7f0"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-jar-wheat:before{content:"\e517"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-bow-arrow:before{content:"\f6b9"}.fa-cart-xmark:before{content:"\e0dd"}.fa-hexagon-xmark:before,.fa-times-hexagon:before,.fa-xmark-hexagon:before{content:"\f2ee"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-merge:before{content:"\e526"}.fa-pager:before{content:"\f815"}.fa-cart-minus:before{content:"\e0db"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-pan-frying:before{content:"\e42c"}.fa-grid-3:before,.fa-grid:before{content:"\e195"}.fa-football-helmet:before{content:"\f44f"}.fa-hand-love:before{content:"\e1a5"}.fa-trees:before{content:"\f724"}.fa-strikethrough:before{content:"\f0cc"}.fa-page:before{content:"\e428"}.fa-k:before{content:"\4b"}.fa-diagram-previous:before{content:"\e478"}.fa-gauge-min:before,.fa-tachometer-alt-slowest:before{content:"\f628"}.fa-folder-grid:before{content:"\e188"}.fa-eggplant:before{content:"\e16c"}.fa-ram:before{content:"\f70a"}.fa-landmark-flag:before{content:"\e51c"}.fa-lips:before{content:"\f600"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-backward:before{content:"\f04a"}.fa-caret-right:before{content:"\f0da"}.fa-comments:before{content:"\f086"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-desktop-arrow-down:before{content:"\e155"}.fa-code-pull-request:before{content:"\e13c"}.fa-pumpkin:before{content:"\f707"}.fa-clipboard-list:before{content:"\f46d"}.fa-pen-field:before{content:"\e211"}.fa-blueberries:before{content:"\e2e8"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-note:before{content:"\e1ff"}.fa-arrow-down-to-square:before{content:"\e096"}.fa-user-check:before{content:"\f4fc"}.fa-cloud-xmark:before{content:"\e35f"}.fa-vial-virus:before{content:"\e597"}.fa-book-alt:before,.fa-book-blank:before{content:"\f5d9"}.fa-golf-flag-hole:before{content:"\e3ac"}.fa-comment-alt-arrow-down:before,.fa-message-arrow-down:before{content:"\e1db"}.fa-face-unamused:before{content:"\e39f"}.fa-sheet-plastic:before{content:"\e571"}.fa-circle-9:before{content:"\e0f6"}.fa-blog:before{content:"\f781"}.fa-user-ninja:before{content:"\f504"}.fa-pencil-slash:before{content:"\e215"}.fa-bowling-pins:before{content:"\f437"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-down-right:before{content:"\e16b"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-webhook:before{content:"\e5d5"}.fa-blinds-open:before{content:"\f8fc"}.fa-fence:before{content:"\e303"}.fa-arrow-alt-up:before,.fa-up:before{content:"\f357"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-drumstick:before{content:"\f6d6"}.fa-square-v:before{content:"\e284"}.fa-face-awesome:before,.fa-gave-dandy:before{content:"\e409"}.fa-dial-off:before{content:"\e162"}.fa-toggle-off:before{content:"\f204"}.fa-face-smile-horns:before{content:"\e391"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-grapes:before{content:"\e306"}.fa-person-drowning:before{content:"\e545"}.fa-dial-max:before{content:"\e15e"}.fa-circle-m:before{content:"\e115"}.fa-calendar-image:before{content:"\e0d4"}.fa-caret-circle-down:before,.fa-circle-caret-down:before{content:"\f32d"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-shish-kebab:before{content:"\f821"}.fa-spray-can:before{content:"\f5bd"}.fa-alarm-snooze:before{content:"\f845"}.fa-scarecrow:before{content:"\f70d"}.fa-truck-monster:before{content:"\f63b"}.fa-gift-card:before{content:"\f663"}.fa-w:before{content:"\57"}.fa-code-pull-request-draft:before{content:"\e3fa"}.fa-square-b:before{content:"\e264"}.fa-elephant:before{content:"\f6da"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-rainbow:before{content:"\f75b"}.fa-circle-notch:before{content:"\f1ce"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-paw:before{content:"\f1b0"}.fa-message-question:before{content:"\e1e3"}.fa-cloud:before{content:"\f0c2"}.fa-trowel-bricks:before{content:"\e58a"}.fa-square-3:before{content:"\e258"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-hospital-user:before{content:"\f80d"}.fa-microwave:before{content:"\e01b"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-cart-circle-arrow-up:before{content:"\e3f0"}.fa-trash-clock:before{content:"\e2b0"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-sprinkler-ceiling:before{content:"\e44c"}.fa-browsers:before{content:"\e0cb"}.fa-trillium:before{content:"\e588"}.fa-music-slash:before{content:"\f8d1"}.fa-truck-ramp:before{content:"\f4e0"}.fa-binoculars:before{content:"\f1e5"}.fa-microphone-slash:before{content:"\f131"}.fa-box-tissue:before{content:"\e05b"}.fa-circle-c:before{content:"\e101"}.fa-star-christmas:before{content:"\f7d4"}.fa-chart-bullet:before{content:"\e0e1"}.fa-motorcycle:before{content:"\f21c"}.fa-tree-christmas:before{content:"\f7db"}.fa-tire-flat:before{content:"\f632"}.fa-sunglasses:before{content:"\f892"}.fa-badge:before{content:"\f335"}.fa-comment-alt-edit:before,.fa-message-edit:before,.fa-message-pen:before{content:"\f4a4"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-chess-rook-alt:before,.fa-chess-rook-piece:before{content:"\f448"}.fa-square-root:before{content:"\f697"}.fa-album-collection-circle-plus:before{content:"\e48e"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-face-angry-horns:before{content:"\e368"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-tombstone:before{content:"\f720"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-list-music:before{content:"\f8c9"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-toilets-portable:before{content:"\e584"}.fa-hockey-puck:before{content:"\f453"}.fa-mustache:before{content:"\e5bc"}.fa-hyphen:before{content:"\2d"}.fa-table:before{content:"\f0ce"}.fa-user-chef:before{content:"\e3d2"}.fa-comment-alt-image:before,.fa-message-image:before{content:"\e1e0"}.fa-users-medical:before{content:"\f830"}.fa-sensor-alert:before,.fa-sensor-triangle-exclamation:before{content:"\e029"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-face-mask:before{content:"\e37f"}.fa-pickleball:before{content:"\e435"}.fa-star-sharp-half:before{content:"\e28c"}.fa-users-slash:before{content:"\e073"}.fa-clover:before{content:"\e139"}.fa-meat:before{content:"\f814"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-star-and-crescent:before{content:"\f699"}.fa-empty-set:before{content:"\f656"}.fa-house-fire:before{content:"\e50c"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-helicopter:before{content:"\f533"}.fa-bird:before{content:"\e469"}.fa-compass:before{content:"\f14e"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-heart-half-alt:before,.fa-heart-half-stroke:before{content:"\e1ac"}.fa-file-circle-question:before{content:"\e4ef"}.fa-laptop-code:before{content:"\f5fc"}.fa-joystick:before{content:"\f8c5"}.fa-grill-fire:before{content:"\e5a4"}.fa-rectangle-vertical-history:before{content:"\e237"}.fa-swatchbook:before{content:"\f5c3"}.fa-prescription-bottle:before{content:"\f485"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-keyboard-left:before{content:"\e1c3"}.fa-people-group:before{content:"\e533"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-face-beam-hand-over-mouth:before{content:"\e47c"}.fa-droplet-percent:before,.fa-humidity:before{content:"\f750"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-corn:before{content:"\f6c7"}.fa-roller-coaster:before{content:"\e324"}.fa-photo-film-music:before{content:"\e228"}.fa-radar:before{content:"\e024"}.fa-sickle:before{content:"\f822"}.fa-film:before{content:"\f008"}.fa-coconut:before{content:"\e2f6"}.fa-ruler-horizontal:before{content:"\f547"}.fa-shield-cross:before{content:"\f712"}.fa-cassette-tape:before{content:"\f8ab"}.fa-square-terminal:before{content:"\e32a"}.fa-people-robbery:before{content:"\e536"}.fa-lightbulb:before{content:"\f0eb"}.fa-caret-left:before{content:"\f0d9"}.fa-comment-middle:before{content:"\e149"}.fa-trash-can-list:before{content:"\e2ab"}.fa-block:before{content:"\e46a"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-face-frown-slight:before{content:"\e376"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-sidebar-flip:before{content:"\e24f"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-temperature-list:before{content:"\e299"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-sitemap:before{content:"\f0e8"}.fa-pipe-section:before{content:"\e438"}.fa-space-station-moon-alt:before,.fa-space-station-moon-construction:before{content:"\e034"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-memory:before{content:"\f538"}.fa-face-sleeping:before{content:"\e38d"}.fa-road-spikes:before{content:"\e568"}.fa-fire-burner:before{content:"\e4f1"}.fa-squirrel:before{content:"\f71a"}.fa-arrow-to-top:before,.fa-arrow-up-to-line:before{content:"\f341"}.fa-flag:before{content:"\f024"}.fa-face-cowboy-hat:before{content:"\e36e"}.fa-hanukiah:before{content:"\f6e6"}.fa-chart-scatter-3d:before{content:"\e0e8"}.fa-square-code:before{content:"\e267"}.fa-feather:before{content:"\f52d"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-times-to-slot:before,.fa-vote-nay:before,.fa-xmark-to-slot:before{content:"\f771"}.fa-box-alt:before,.fa-box-taped:before{content:"\f49a"}.fa-comment-slash:before{content:"\f4b3"}.fa-swords:before{content:"\f71d"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-album:before{content:"\f89f"}.fa-circle-n:before{content:"\e118"}.fa-compress:before{content:"\f066"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-ankh:before{content:"\f644"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-asterisk:before{content:"\2a"}.fa-key-skeleton-left-right:before{content:"\e3b4"}.fa-comment-lines:before{content:"\f4b0"}.fa-luchador-mask:before,.fa-luchador:before,.fa-mask-luchador:before{content:"\f455"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-shredder:before{content:"\f68a"}.fa-book-open-alt:before,.fa-book-open-cover:before{content:"\e0c0"}.fa-sandwich:before{content:"\f81f"}.fa-peseta-sign:before{content:"\e221"}.fa-parking-slash:before,.fa-square-parking-slash:before{content:"\f617"}.fa-train-tunnel:before{content:"\e454"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-ghost:before{content:"\f6e2"}.fa-face-anguished:before{content:"\e369"}.fa-hockey-sticks:before{content:"\f454"}.fa-abacus:before{content:"\f640"}.fa-film-alt:before,.fa-film-simple:before{content:"\f3a0"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-tree-palm:before{content:"\f82b"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-cart-plus:before{content:"\f217"}.fa-gamepad:before{content:"\f11b"}.fa-border-center-v:before{content:"\f89d"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-clipboard-medical:before{content:"\e133"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-egg:before{content:"\f7fb"}.fa-arrow-alt-to-top:before,.fa-up-to-line:before{content:"\f34d"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-watch-fitness:before{content:"\f63e"}.fa-clock-nine-thirty:before{content:"\e34d"}.fa-campground:before{content:"\f6bb"}.fa-folder-plus:before{content:"\f65e"}.fa-jug:before{content:"\f8c6"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-snow-blowing:before{content:"\f761"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-lock:before{content:"\f023"}.fa-arrow-down-from-line:before,.fa-arrow-from-top:before{content:"\f345"}.fa-gas-pump:before{content:"\f52f"}.fa-signal-alt-slash:before,.fa-signal-bars-slash:before{content:"\f694"}.fa-monkey:before{content:"\f6fb"}.fa-pro:before,.fa-rectangle-pro:before{content:"\e235"}.fa-house-night:before{content:"\e010"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-blanket:before{content:"\f498"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-house-flood-water:before{content:"\e50e"}.fa-comments-question-check:before{content:"\e14f"}.fa-tree:before{content:"\f1bb"}.fa-arrows-cross:before{content:"\e0a2"}.fa-backpack:before{content:"\f5d4"}.fa-square-small:before{content:"\e27e"}.fa-folder-arrow-up:before,.fa-folder-upload:before{content:"\e054"}.fa-bridge-lock:before{content:"\e4cc"}.fa-crosshairs-simple:before{content:"\e59f"}.fa-sack-dollar:before{content:"\f81d"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-sliders-h-square:before,.fa-square-sliders:before{content:"\f3f0"}.fa-car-side:before{content:"\f5e4"}.fa-comment-middle-top-alt:before,.fa-message-middle-top:before{content:"\e1e2"}.fa-lightbulb-on:before{content:"\f672"}.fa-knife:before,.fa-utensil-knife:before{content:"\f2e4"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-wave-sine:before{content:"\f899"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-circle-w:before{content:"\e12c"}.fa-calendar-circle:before,.fa-circle-calendar:before{content:"\e102"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-microscope:before{content:"\f610"}.fa-sunset:before{content:"\f767"}.fa-sink:before{content:"\e06d"}.fa-calendar-exclamation:before{content:"\f334"}.fa-truck-container-empty:before{content:"\e2b5"}.fa-hand-heart:before{content:"\f4bc"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-mitten:before{content:"\f7b5"}.fa-reply-clock:before,.fa-reply-time:before{content:"\e239"}.fa-person-rays:before{content:"\e54d"}.fa-arrow-alt-right:before,.fa-right:before{content:"\f356"}.fa-circle-f:before{content:"\e10e"}.fa-users:before{content:"\f0c0"}.fa-face-pleading:before{content:"\e386"}.fa-eye-slash:before{content:"\f070"}.fa-flask-vial:before{content:"\e4f3"}.fa-police-box:before{content:"\e021"}.fa-cucumber:before{content:"\e401"}.fa-head-side-brain:before{content:"\f808"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-biking-mountain:before,.fa-person-biking-mountain:before{content:"\f84b"}.fa-utensils-slash:before{content:"\e464"}.fa-print-magnifying-glass:before,.fa-print-search:before{content:"\f81a"}.fa-folder-bookmark:before{content:"\e186"}.fa-om:before{content:"\f679"}.fa-pi:before{content:"\f67e"}.fa-flask-potion:before,.fa-flask-round-potion:before{content:"\f6e1"}.fa-face-shush:before{content:"\e38c"}.fa-worm:before{content:"\e599"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-plug:before{content:"\f1e6"}.fa-calendar-circle-exclamation:before{content:"\e46e"}.fa-square-i:before{content:"\e272"}.fa-chevron-up:before{content:"\f077"}.fa-face-saluting:before{content:"\e484"}.fa-gauge-simple-low:before,.fa-tachometer-slow:before{content:"\f62c"}.fa-face-persevering:before{content:"\e385"}.fa-camera-circle:before,.fa-circle-camera:before{content:"\e103"}.fa-hand-spock:before{content:"\f259"}.fa-spider-web:before{content:"\f719"}.fa-circle-microphone:before,.fa-microphone-circle:before{content:"\e116"}.fa-book-arrow-up:before{content:"\e0ba"}.fa-popsicle:before{content:"\e43e"}.fa-command:before{content:"\e142"}.fa-blinds:before{content:"\f8fb"}.fa-stopwatch:before{content:"\f2f2"}.fa-saxophone:before{content:"\f8dc"}.fa-square-2:before{content:"\e257"}.fa-field-hockey-stick-ball:before,.fa-field-hockey:before{content:"\f44c"}.fa-arrow-up-square-triangle:before,.fa-sort-shapes-up-alt:before{content:"\f88b"}.fa-face-scream:before{content:"\e38b"}.fa-square-m:before{content:"\e276"}.fa-camera-web:before,.fa-webcam:before{content:"\f832"}.fa-comment-arrow-down:before{content:"\e143"}.fa-lightbulb-cfl:before{content:"\e5a6"}.fa-window-frame-open:before{content:"\e050"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-period:before{content:"\2e"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-up-to-dotted-line:before{content:"\e457"}.fa-thought-bubble:before{content:"\e32e"}.fa-skeleton-ribs:before{content:"\e5cb"}.fa-raygun:before{content:"\e025"}.fa-flute:before{content:"\f8b9"}.fa-acorn:before{content:"\f6ae"}.fa-video-arrow-up-right:before{content:"\e2c9"}.fa-grate-droplet:before{content:"\e194"}.fa-seal-exclamation:before{content:"\e242"}.fa-chess-bishop:before{content:"\f43a"}.fa-message-sms:before{content:"\e1e5"}.fa-coffee-beans:before{content:"\e13f"}.fa-hat-witch:before{content:"\f6e7"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-clock-three-thirty:before{content:"\e357"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-alarm-clock:before{content:"\f34e"}.fa-eclipse:before{content:"\f749"}.fa-face-relieved:before{content:"\e389"}.fa-road-circle-check:before{content:"\e564"}.fa-dice-five:before{content:"\f523"}.fa-minus-octagon:before,.fa-octagon-minus:before{content:"\f308"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-face-zany:before{content:"\e3a4"}.fa-tricycle:before{content:"\e5c3"}.fa-land-mine-on:before{content:"\e51b"}.fa-square-arrow-up-left:before{content:"\e263"}.fa-i-cursor:before{content:"\f246"}.fa-salt-shaker:before{content:"\e446"}.fa-stamp:before{content:"\f5bf"}.fa-file-plus:before{content:"\f319"}.fa-draw-square:before{content:"\f5ef"}.fa-toilet-paper-reverse-slash:before,.fa-toilet-paper-under-slash:before{content:"\e2a1"}.fa-stairs:before{content:"\e289"}.fa-drone-alt:before,.fa-drone-front:before{content:"\f860"}.fa-glass-empty:before{content:"\e191"}.fa-dial-high:before{content:"\e15c"}.fa-user-construction:before,.fa-user-hard-hat:before,.fa-user-helmet-safety:before{content:"\f82c"}.fa-i:before{content:"\49"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-arrow-down-left-and-arrow-up-right-to-center:before{content:"\e092"}.fa-pills:before{content:"\f484"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-tooth:before{content:"\f5c9"}.fa-basketball-hoop:before{content:"\f435"}.fa-objects-align-bottom:before{content:"\e3bb"}.fa-v:before{content:"\56"}.fa-sparkles:before{content:"\f890"}.fa-squid:before{content:"\e450"}.fa-leafy-green:before{content:"\e41d"}.fa-circle-arrow-up-right:before{content:"\e0fc"}.fa-calendars:before{content:"\e0d7"}.fa-bangladeshi-taka-sign:before{content:"\e2e6"}.fa-bicycle:before{content:"\f206"}.fa-hammer-war:before{content:"\f6e4"}.fa-circle-d:before{content:"\e104"}.fa-spider-black-widow:before{content:"\f718"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-pear:before{content:"\e20c"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-triangle:before{content:"\f2ec"}.fa-apartment:before{content:"\e468"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-pepper:before{content:"\e432"}.fa-piano:before{content:"\f8d4"}.fa-gun-squirt:before{content:"\e19d"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-snowman:before{content:"\f7d0"}.fa-user-alien:before{content:"\e04a"}.fa-shield-check:before{content:"\f2f7"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-road-barrier:before{content:"\e562"}.fa-chart-candlestick:before{content:"\e0e2"}.fa-briefcase-blank:before{content:"\e0c8"}.fa-school:before{content:"\f549"}.fa-igloo:before{content:"\f7ae"}.fa-bracket-round:before,.fa-parenthesis:before{content:"\28"}.fa-joint:before{content:"\f595"}.fa-horse-saddle:before{content:"\f8c3"}.fa-mug-marshmallows:before{content:"\f7b7"}.fa-filters:before{content:"\e17e"}.fa-bell-on:before{content:"\f8fa"}.fa-angle-right:before{content:"\f105"}.fa-dial-med:before{content:"\e15f"}.fa-horse:before{content:"\f6f0"}.fa-q:before{content:"\51"}.fa-monitor-heart-rate:before,.fa-monitor-waveform:before{content:"\f611"}.fa-link-simple:before{content:"\e1cd"}.fa-whistle:before{content:"\f460"}.fa-g:before{content:"\47"}.fa-fragile:before,.fa-wine-glass-crack:before{content:"\f4bb"}.fa-slot-machine:before{content:"\e3ce"}.fa-notes-medical:before{content:"\f481"}.fa-car-wash:before{content:"\f5e6"}.fa-escalator:before{content:"\e171"}.fa-comment-image:before{content:"\e148"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-dong-sign:before{content:"\e169"}.fa-donut:before,.fa-doughnut:before{content:"\e406"}.fa-capsules:before{content:"\f46b"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-tally-1:before{content:"\e294"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-square-dashed:before{content:"\e269"}.fa-square-j:before{content:"\e273"}.fa-hand-point-up:before{content:"\f0a6"}.fa-money-bill:before{content:"\f0d6"}.fa-arrow-up-big-small:before,.fa-sort-size-up:before{content:"\f88e"}.fa-barcode-read:before{content:"\f464"}.fa-baguette:before{content:"\e3d8"}.fa-bowl-soft-serve:before{content:"\e46b"}.fa-face-holding-back-tears:before{content:"\e482"}.fa-arrow-alt-square-up:before,.fa-square-up:before{content:"\f353"}.fa-subway-tunnel:before,.fa-train-subway-tunnel:before{content:"\e2a3"}.fa-exclamation-square:before,.fa-square-exclamation:before{content:"\f321"}.fa-semicolon:before{content:"\3b"}.fa-bookmark:before{content:"\f02e"}.fa-fan-table:before{content:"\e004"}.fa-align-justify:before{content:"\f039"}.fa-battery-1:before,.fa-battery-low:before{content:"\e0b1"}.fa-credit-card-front:before{content:"\f38a"}.fa-brain-arrow-curved-right:before,.fa-mind-share:before{content:"\f677"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-helmet-un:before{content:"\e503"}.fa-location-smile:before,.fa-map-marker-smile:before{content:"\f60d"}.fa-arrow-left-to-line:before,.fa-arrow-to-left:before{content:"\f33e"}.fa-bullseye:before{content:"\f140"}.fa-nigiri:before,.fa-sushi:before{content:"\e48a"}.fa-comment-alt-captions:before,.fa-message-captions:before{content:"\e1de"}.fa-trash-list:before{content:"\e2b1"}.fa-bacon:before{content:"\f7e5"}.fa-option:before{content:"\e318"}.fa-hand-point-down:before{content:"\f0a7"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-trash-plus:before{content:"\e2b2"}.fa-objects-align-top:before{content:"\e3c0"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-face-anxious-sweat:before{content:"\e36a"}.fa-credit-card-blank:before{content:"\f389"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-microchip-ai:before{content:"\e1ec"}.fa-mug:before{content:"\f874"}.fa-plane-up-slash:before{content:"\e22e"}.fa-radiation:before{content:"\f7b9"}.fa-pen-circle:before{content:"\e20e"}.fa-chart-simple:before{content:"\e473"}.fa-crutches:before{content:"\f7f8"}.fa-circle-parking:before,.fa-parking-circle:before{content:"\f615"}.fa-mars-stroke:before{content:"\f229"}.fa-leaf-oak:before{content:"\f6f7"}.fa-square-bolt:before{content:"\e265"}.fa-vial:before{content:"\f492"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-lambda:before{content:"\f66e"}.fa-e:before{content:"\45"}.fa-pizza:before{content:"\f817"}.fa-bowl-chopsticks-noodles:before{content:"\e2ea"}.fa-h3:before{content:"\f315"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-badge-percent:before{content:"\f646"}.fa-user:before{content:"\f007"}.fa-sensor:before{content:"\e028"}.fa-comma:before{content:"\2c"}.fa-school-circle-check:before{content:"\e56b"}.fa-toilet-paper-reverse:before,.fa-toilet-paper-under:before{content:"\e2a0"}.fa-light-emergency:before{content:"\e41f"}.fa-arrow-down-to-arc:before{content:"\e4ae"}.fa-dumpster:before{content:"\f793"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-building-user:before{content:"\e4da"}.fa-light-switch:before{content:"\e017"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-highlighter:before{content:"\f591"}.fa-heart-rate:before,.fa-wave-pulse:before{content:"\f5f8"}.fa-key:before{content:"\f084"}.fa-hat-santa:before{content:"\f7a7"}.fa-tamale:before{content:"\e451"}.fa-box-check:before{content:"\f467"}.fa-bullhorn:before{content:"\f0a1"}.fa-steak:before{content:"\f824"}.fa-location-crosshairs-slash:before,.fa-location-slash:before{content:"\f603"}.fa-person-dolly:before{content:"\f4d0"}.fa-globe:before{content:"\f0ac"}.fa-synagogue:before{content:"\f69b"}.fa-file-chart-column:before,.fa-file-chart-line:before{content:"\f659"}.fa-person-half-dress:before{content:"\e548"}.fa-folder-image:before{content:"\e18a"}.fa-calendar-edit:before,.fa-calendar-pen:before{content:"\f333"}.fa-road-bridge:before{content:"\e563"}.fa-face-smile-tear:before{content:"\e393"}.fa-comment-alt-plus:before,.fa-message-plus:before{content:"\f4a8"}.fa-location-arrow:before{content:"\f124"}.fa-c:before{content:"\43"}.fa-tablet-button:before{content:"\f10a"}.fa-rectangle-history-circle-user:before{content:"\e4a4"}.fa-building-lock:before{content:"\e4d6"}.fa-chart-line-up:before{content:"\e0e5"}.fa-mailbox:before{content:"\f813"}.fa-truck-bolt:before{content:"\e3d0"}.fa-pizza-slice:before{content:"\f818"}.fa-money-bill-wave:before{content:"\f53a"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-house-flag:before{content:"\e50d"}.fa-circle-three-quarters-stroke:before{content:"\e5d4"}.fa-person-circle-minus:before{content:"\e540"}.fa-scalpel:before{content:"\f61d"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-bell-exclamation:before{content:"\f848"}.fa-bookmark-circle:before,.fa-circle-bookmark:before{content:"\e100"}.fa-egg-fried:before{content:"\f7fc"}.fa-face-weary:before{content:"\e3a1"}.fa-uniform-martial-arts:before{content:"\e3d1"}.fa-camera-rotate:before{content:"\e0d8"}.fa-sun-dust:before{content:"\f764"}.fa-comment-text:before{content:"\e14d"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-signal-alt-4:before,.fa-signal-alt:before,.fa-signal-bars-strong:before,.fa-signal-bars:before{content:"\f690"}.fa-diamond-exclamation:before{content:"\e405"}.fa-star:before{content:"\f005"}.fa-dial-min:before{content:"\e161"}.fa-repeat:before{content:"\f363"}.fa-cross:before{content:"\f654"}.fa-file-caret-down:before,.fa-page-caret-down:before{content:"\e429"}.fa-box:before{content:"\f466"}.fa-venus-mars:before{content:"\f228"}.fa-clock-seven-thirty:before{content:"\e351"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-clock-four-thirty:before{content:"\e34b"}.fa-signal-alt-3:before,.fa-signal-bars-good:before{content:"\f693"}.fa-cactus:before{content:"\f8a7"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-charging-station:before{content:"\f5e7"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-plane-tail:before{content:"\e22c"}.fa-gauge-simple-max:before,.fa-tachometer-fastest:before{content:"\f62b"}.fa-circle-u:before{content:"\e127"}.fa-shield-slash:before{content:"\e24b"}.fa-phone-square-down:before,.fa-square-phone-hangup:before{content:"\e27a"}.fa-arrow-up-left:before{content:"\e09d"}.fa-transporter-1:before{content:"\e043"}.fa-peanuts:before{content:"\e431"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-mobile-retro:before{content:"\e527"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-arrow-up-from-square:before{content:"\e09c"}.fa-file-dashed-line:before,.fa-page-break:before{content:"\f877"}.fa-bracket-curly-right:before{content:"\7d"}.fa-spider:before{content:"\f717"}.fa-clock-three:before{content:"\e356"}.fa-hands-bound:before{content:"\e4f9"}.fa-scalpel-line-dashed:before,.fa-scalpel-path:before{content:"\f61e"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-pipe-smoking:before{content:"\e3c4"}.fa-face-astonished:before{content:"\e36b"}.fa-window:before{content:"\f40e"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-ear:before{content:"\f5f0"}.fa-file-lock:before{content:"\e3a6"}.fa-diagram-venn:before{content:"\e15a"}.fa-x-ray:before{content:"\f497"}.fa-goal-net:before{content:"\e3ab"}.fa-coffin-cross:before{content:"\e051"}.fa-spell-check:before{content:"\f891"}.fa-location-xmark:before,.fa-map-marker-times:before,.fa-map-marker-xmark:before{content:"\f60e"}.fa-circle-quarter-stroke:before{content:"\e5d3"}.fa-lasso:before{content:"\f8c8"}.fa-slash:before{content:"\f715"}.fa-person-to-portal:before,.fa-portal-enter:before{content:"\e022"}.fa-calendar-star:before{content:"\f736"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-pegasus:before{content:"\f703"}.fa-files-medical:before{content:"\f7fd"}.fa-nfc-lock:before{content:"\e1f8"}.fa-person-ski-lift:before,.fa-ski-lift:before{content:"\f7c8"}.fa-square-6:before{content:"\e25b"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-wind-turbine:before{content:"\f89b"}.fa-sliders-simple:before{content:"\e253"}.fa-badge-sheriff:before{content:"\f8a2"}.fa-server:before{content:"\f233"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-intersection:before{content:"\f668"}.fa-shop-lock:before{content:"\e4a5"}.fa-family:before{content:"\e300"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-user-hair-buns:before{content:"\e3d3"}.fa-blender-phone:before{content:"\f6b6"}.fa-hourglass-clock:before{content:"\e41b"}.fa-person-seat-reclined:before{content:"\e21f"}.fa-paper-plane-alt:before,.fa-paper-plane-top:before,.fa-send:before{content:"\e20a"}.fa-comment-alt-arrow-up:before,.fa-message-arrow-up:before{content:"\e1dc"}.fa-lightbulb-exclamation:before{content:"\f671"}.fa-layer-group-minus:before,.fa-layer-minus:before{content:"\f5fe"}.fa-circle-e:before{content:"\e109"}.fa-building-wheat:before{content:"\e4db"}.fa-gauge-max:before,.fa-tachometer-alt-fastest:before{content:"\f626"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-apostrophe:before{content:"\27"}.fa-fire-hydrant:before{content:"\e17f"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-video-plus:before{content:"\f4e1"}.fa-arrow-alt-square-right:before,.fa-square-right:before{content:"\f352"}.fa-comment-smile:before{content:"\f4b4"}.fa-venus:before{content:"\f221"}.fa-passport:before{content:"\f5ab"}.fa-inbox-arrow-down:before,.fa-inbox-in:before{content:"\f310"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-circle-8:before{content:"\e0f5"}.fa-clouds-moon:before{content:"\f745"}.fa-clock-ten-thirty:before{content:"\e355"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-folder-user:before{content:"\e18e"}.fa-trash-can-xmark:before{content:"\e2ae"}.fa-temperature-high:before{content:"\f769"}.fa-microchip:before{content:"\f2db"}.fa-left-long-to-line:before{content:"\e41e"}.fa-crown:before{content:"\f521"}.fa-weight-hanging:before{content:"\f5cd"}.fa-xmarks-lines:before{content:"\e59a"}.fa-file-prescription:before{content:"\f572"}.fa-calendar-range:before{content:"\e0d6"}.fa-flower-daffodil:before{content:"\f800"}.fa-hand-back-point-up:before{content:"\e1a2"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-star-exclamation:before{content:"\f2f3"}.fa-books:before{content:"\f5db"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-layer-group-plus:before,.fa-layer-plus:before{content:"\f5ff"}.fa-play-pause:before{content:"\e22f"}.fa-block-question:before{content:"\e3dd"}.fa-snooze:before,.fa-zzz:before{content:"\f880"}.fa-scanner-image:before{content:"\f8f3"}.fa-tv-retro:before{content:"\f401"}.fa-square-t:before{content:"\e280"}.fa-barn-silo:before,.fa-farm:before{content:"\f864"}.fa-chess-knight:before{content:"\f441"}.fa-bars-sort:before{content:"\e0ae"}.fa-palette-boxes:before,.fa-pallet-alt:before,.fa-pallet-boxes:before{content:"\f483"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-code-simple:before{content:"\e13d"}.fa-bolt-slash:before{content:"\e0b8"}.fa-panel-fire:before{content:"\e42f"}.fa-binary-circle-check:before{content:"\e33c"}.fa-comment-minus:before{content:"\f4b1"}.fa-burrito:before{content:"\f7ed"}.fa-violin:before{content:"\f8ed"}.fa-objects-column:before{content:"\e3c1"}.fa-chevron-square-down:before,.fa-square-chevron-down:before{content:"\f329"}.fa-comment-plus:before{content:"\f4b2"}.fa-triangle-instrument:before,.fa-triangle-music:before{content:"\f8e2"}.fa-wheelchair:before{content:"\f193"}.fa-user-pilot-tie:before{content:"\e2c1"}.fa-piano-keyboard:before{content:"\f8d5"}.fa-bed-empty:before{content:"\f8f9"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-toggle-on:before{content:"\f205"}.fa-rectangle-portrait:before,.fa-rectangle-vertical:before{content:"\f2fb"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-l:before{content:"\4c"}.fa-signal-stream:before{content:"\f8dd"}.fa-down-to-bracket:before{content:"\e4e7"}.fa-circle-z:before{content:"\e130"}.fa-stars:before{content:"\f762"}.fa-fire:before{content:"\f06d"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-house-day:before{content:"\e00e"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-shirt-long-sleeve:before{content:"\e3c7"}.fa-chart-pie-alt:before,.fa-chart-pie-simple:before{content:"\f64e"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-folder-open:before{content:"\f07c"}.fa-album-collection-circle-user:before{content:"\e48f"}.fa-candy:before{content:"\e3e7"}.fa-bowl-hot:before,.fa-soup:before{content:"\f823"}.fa-flatbread:before{content:"\e40b"}.fa-heart-circle-plus:before{content:"\e500"}.fa-code-fork:before{content:"\e13b"}.fa-city:before{content:"\f64f"}.fa-signal-alt-1:before,.fa-signal-bars-weak:before{content:"\f691"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-clock-twelve:before{content:"\e358"}.fa-pepper-hot:before{content:"\f816"}.fa-citrus-slice:before{content:"\e2f5"}.fa-sheep:before{content:"\f711"}.fa-unlock:before{content:"\f09c"}.fa-colon-sign:before{content:"\e140"}.fa-headset:before{content:"\f590"}.fa-badger-honey:before{content:"\f6b4"}.fa-h4:before{content:"\f86a"}.fa-store-slash:before{content:"\e071"}.fa-road-circle-xmark:before{content:"\e566"}.fa-signal-slash:before{content:"\f695"}.fa-user-minus:before{content:"\f503"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-taco:before{content:"\f826"}.fa-hexagon-plus:before,.fa-plus-hexagon:before{content:"\f300"}.fa-clipboard:before{content:"\f328"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-comments-alt:before,.fa-messages:before{content:"\f4b6"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-umbrella-alt:before,.fa-umbrella-simple:before{content:"\e2bc"}.fa-rectangle-history-circle-plus:before{content:"\e4a3"}.fa-underline:before{content:"\f0cd"}.fa-prescription-bottle-pill:before{content:"\e5c0"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-binary-slash:before{content:"\e33e"}.fa-square-o:before{content:"\e278"}.fa-signature:before{content:"\f5b7"}.fa-stroopwafel:before{content:"\f551"}.fa-bold:before{content:"\f032"}.fa-anchor-lock:before{content:"\e4ad"}.fa-building-ngo:before{content:"\e4d7"}.fa-transporter-3:before{content:"\e045"}.fa-engine-exclamation:before,.fa-engine-warning:before{content:"\f5f2"}.fa-circle-down-right:before{content:"\e108"}.fa-square-k:before{content:"\e274"}.fa-manat-sign:before{content:"\e1d5"}.fa-money-check-edit:before,.fa-money-check-pen:before{content:"\f872"}.fa-not-equal:before{content:"\f53e"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-tilde:before{content:"\7e"}.fa-jedi:before{content:"\f669"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-arrow-down-square-triangle:before,.fa-sort-shapes-down-alt:before{content:"\f889"}.fa-mug-hot:before{content:"\f7b6"}.fa-dog-leashed:before{content:"\f6d4"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-face-downcast-sweat:before{content:"\e371"}.fa-mailbox-flag-up:before{content:"\e5bb"}.fa-memo-circle-info:before{content:"\e49a"}.fa-gift:before{content:"\f06b"}.fa-dice-two:before{content:"\f528"}.fa-volume-medium:before,.fa-volume:before{content:"\f6a8"}.fa-transporter-5:before{content:"\e2a6"}.fa-gauge-circle-bolt:before{content:"\e496"}.fa-coin-front:before{content:"\e3fc"}.fa-file-slash:before{content:"\e3a7"}.fa-message-arrow-up-right:before{content:"\e1dd"}.fa-treasure-chest:before{content:"\f723"}.fa-chess-queen:before{content:"\f445"}.fa-paint-brush-alt:before,.fa-paint-brush-fine:before,.fa-paintbrush-alt:before,.fa-paintbrush-fine:before{content:"\f5a9"}.fa-glasses:before{content:"\f530"}.fa-hood-cloak:before{content:"\f6ef"}.fa-square-quote:before{content:"\e329"}.fa-up-left:before{content:"\e2bd"}.fa-bring-front:before{content:"\f857"}.fa-chess-board:before{content:"\f43c"}.fa-burger-cheese:before,.fa-cheeseburger:before{content:"\f7f1"}.fa-building-circle-check:before{content:"\e4d2"}.fa-repeat-1:before{content:"\f365"}.fa-arrow-down-to-line:before,.fa-arrow-to-bottom:before{content:"\f33d"}.fa-grid-5:before{content:"\e199"}.fa-right-long-to-line:before{content:"\e444"}.fa-person-chalkboard:before{content:"\e53d"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-tally-5:before,.fa-tally:before{content:"\f69c"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-less-than-equal:before{content:"\f537"}.fa-train:before{content:"\f238"}.fa-up-from-dotted-line:before{content:"\e456"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-traffic-light-go:before{content:"\f638"}.fa-face-exhaling:before{content:"\e480"}.fa-sensor-fire:before{content:"\e02a"}.fa-user-unlock:before{content:"\e058"}.fa-hexagon-divide:before{content:"\e1ad"}.fa-00:before{content:"\e467"}.fa-crow:before{content:"\f520"}.fa-betamax:before,.fa-cassette-betamax:before{content:"\f8a4"}.fa-sailboat:before{content:"\e445"}.fa-window-restore:before{content:"\f2d2"}.fa-nfc-magnifying-glass:before{content:"\e1f9"}.fa-file-binary:before{content:"\e175"}.fa-circle-v:before{content:"\e12a"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-bowl-scoops:before{content:"\e3df"}.fa-mistletoe:before{content:"\f7b4"}.fa-custard:before{content:"\e403"}.fa-lacrosse-stick:before{content:"\e3b5"}.fa-hockey-mask:before{content:"\f6ee"}.fa-sunrise:before{content:"\f766"}.fa-panel-ews:before{content:"\e42e"}.fa-torii-gate:before{content:"\f6a1"}.fa-cloud-exclamation:before{content:"\e491"}.fa-comment-alt-lines:before,.fa-message-lines:before{content:"\f4a6"}.fa-frog:before{content:"\f52e"}.fa-bucket:before{content:"\e4cf"}.fa-floppy-disk-pen:before{content:"\e182"}.fa-image:before{content:"\f03e"}.fa-window-frame:before{content:"\e04f"}.fa-microphone:before{content:"\f130"}.fa-cow:before{content:"\f6c8"}.fa-square-ring:before{content:"\e44f"}.fa-arrow-alt-from-top:before,.fa-down-from-line:before{content:"\f349"}.fa-caret-up:before{content:"\f0d8"}.fa-shield-times:before,.fa-shield-xmark:before{content:"\e24c"}.fa-screwdriver:before{content:"\f54a"}.fa-circle-sort-down:before,.fa-sort-circle-down:before{content:"\e031"}.fa-folder-closed:before{content:"\e185"}.fa-house-tsunami:before{content:"\e515"}.fa-square-nfi:before{content:"\e576"}.fa-forklift:before{content:"\f47a"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-bracket-square-right:before{content:"\5d"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-square-a:before{content:"\e25f"}.fa-tick:before{content:"\e32f"}.fa-lemon:before{content:"\f094"}.fa-head-side-mask:before{content:"\e063"}.fa-handshake:before{content:"\f2b5"}.fa-gem:before{content:"\f3a5"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-smoking:before{content:"\f48d"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-refrigerator:before{content:"\e026"}.fa-monument:before{content:"\f5a6"}.fa-octagon-xmark:before,.fa-times-octagon:before,.fa-xmark-octagon:before{content:"\f2f0"}.fa-align-slash:before{content:"\f846"}.fa-snowplow:before{content:"\f7d2"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-truck-couch:before,.fa-truck-ramp-couch:before{content:"\f4dd"}.fa-cannabis:before{content:"\f55f"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-arrow-up-right-and-arrow-down-left-from-center:before{content:"\e0a0"}.fa-tablets:before{content:"\f490"}.fa-360-degrees:before{content:"\e2dc"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-chair:before{content:"\f6c0"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-square-dashed-circle-plus:before{content:"\e5c2"}.fa-money-simple-from-bracket:before{content:"\e313"}.fa-bat:before{content:"\f6b5"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-head-side-headphones:before{content:"\f8c2"}.fa-phone-rotary:before{content:"\f8d3"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-plate-wheat:before{content:"\e55a"}.fa-calendar-circle-minus:before{content:"\e46f"}.fa-chopsticks:before{content:"\e3f7"}.fa-car-mechanic:before,.fa-car-wrench:before{content:"\f5e3"}.fa-icicles:before{content:"\f7ad"}.fa-person-shelter:before{content:"\e54f"}.fa-neuter:before{content:"\f22c"}.fa-id-badge:before{content:"\f2c1"}.fa-kazoo:before{content:"\f8c7"}.fa-marker:before{content:"\f5a1"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-square-arrow-down-left:before{content:"\e261"}.fa-battery-bolt:before{content:"\f376"}.fa-tree-large:before{content:"\f7dd"}.fa-helicopter-symbol:before{content:"\e502"}.fa-aperture:before{content:"\e2df"}.fa-universal-access:before{content:"\f29a"}.fa-file-magnifying-glass:before,.fa-file-search:before{content:"\f865"}.fa-up-right:before{content:"\e2be"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-user-police:before{content:"\e333"}.fa-lari-sign:before{content:"\e1c8"}.fa-volcano:before{content:"\f770"}.fa-teddy-bear:before{content:"\e3cf"}.fa-stocking:before{content:"\f7d5"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-image-slash:before{content:"\e1b7"}.fa-mask-snorkel:before{content:"\e3b7"}.fa-smoke:before{content:"\f760"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-battery-exclamation:before{content:"\e0b0"}.fa-viruses:before{content:"\e076"}.fa-square-person-confined:before{content:"\e577"}.fa-user-tie:before{content:"\f508"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-certificate:before{content:"\f0a3"}.fa-crystal-ball:before{content:"\e362"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-suitcase:before{content:"\f0f2"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-star-shooting:before{content:"\e036"}.fa-binary-lock:before{content:"\e33d"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-camera-retro:before{content:"\f083"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-comment-edit:before,.fa-comment-pen:before{content:"\f4ae"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-banjo:before{content:"\f8a3"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-light-emergency-on:before{content:"\e420"}.fa-kerning:before{content:"\f86f"}.fa-box-open:before{content:"\f49e"}.fa-square-f:before{content:"\e270"}.fa-scroll:before{content:"\f70e"}.fa-spa:before{content:"\f5bb"}.fa-arrow-from-right:before,.fa-arrow-left-from-line:before{content:"\f344"}.fa-strawberry:before{content:"\e32b"}.fa-location-pin-lock:before{content:"\e51f"}.fa-pause:before{content:"\f04c"}.fa-clock-eight-thirty:before{content:"\e346"}.fa-plane-alt:before,.fa-plane-engines:before{content:"\f3de"}.fa-hill-avalanche:before{content:"\e507"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-bomb:before{content:"\f1e2"}.fa-gauge-low:before,.fa-tachometer-alt-slow:before{content:"\f627"}.fa-registered:before{content:"\f25d"}.fa-trash-can-plus:before{content:"\e2ac"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-globe-snow:before{content:"\f7a3"}.fa-subscript:before{content:"\f12c"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-integral:before{content:"\f667"}.fa-burst:before{content:"\e4dc"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-money-bills:before{content:"\e1f3"}.fa-blinds-raised:before{content:"\f8fd"}.fa-smog:before{content:"\f75f"}.fa-ufo-beam:before{content:"\e048"}.fa-caret-circle-up:before,.fa-circle-caret-up:before{content:"\f331"}.fa-user-vneck-hair-long:before{content:"\e463"}.fa-square-a-lock:before{content:"\e44d"}.fa-crutch:before{content:"\f7f7"}.fa-gas-pump-slash:before{content:"\f5f4"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-palette:before{content:"\f53f"}.fa-transporter-4:before{content:"\e2a5"}.fa-objects-align-right:before{content:"\e3bf"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-vest:before{content:"\e085"}.fa-pig:before{content:"\f706"}.fa-inbox-full:before{content:"\e1ba"}.fa-circle-envelope:before,.fa-envelope-circle:before{content:"\e10c"}.fa-construction:before,.fa-triangle-person-digging:before{content:"\f85d"}.fa-ferry:before{content:"\e4ea"}.fa-bullseye-arrow:before{content:"\f648"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-clock-seven:before{content:"\e350"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-boxes-packing:before{content:"\e4c7"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-flashlight:before{content:"\f8b8"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-bowl-food:before{content:"\e4c6"}.fa-square-9:before{content:"\e25e"}.fa-candy-cane:before{content:"\f786"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-dollar-square:before,.fa-square-dollar:before,.fa-usd-square:before{content:"\f2e9"}.fa-phone-arrow-right:before{content:"\e5be"}.fa-hand-holding-seedling:before{content:"\f4bf"}.fa-comment-alt-check:before,.fa-message-check:before{content:"\f4a2"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-watch:before{content:"\f2e1"}.fa-circle-down-left:before{content:"\e107"}.fa-text:before{content:"\f893"}.fa-projector:before{content:"\f8d6"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-tombstone-alt:before,.fa-tombstone-blank:before{content:"\f721"}.fa-chess-king-alt:before,.fa-chess-king-piece:before{content:"\f440"}.fa-circle-6:before{content:"\e0f3"}.fa-arrow-alt-left:before,.fa-left:before{content:"\f355"}.fa-file-word:before{content:"\f1c2"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-arrow-alt-square-down:before,.fa-square-down:before{content:"\f350"}.fa-objects-align-center-vertical:before{content:"\e3bd"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-house-lock:before{content:"\e510"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-wreath:before{content:"\f7e2"}.fa-children:before{content:"\e4e1"}.fa-meter-droplet:before{content:"\e1ea"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-signal-4:before,.fa-signal-strong:before{content:"\f68f"}.fa-lollipop:before,.fa-lollypop:before{content:"\e424"}.fa-list-tree:before{content:"\e1d2"}.fa-envelope-open:before{content:"\f2b6"}.fa-draw-circle:before{content:"\f5ed"}.fa-cat-space:before{content:"\e001"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-rabbit-fast:before,.fa-rabbit-running:before{content:"\f709"}.fa-memo-pad:before{content:"\e1da"}.fa-mattress-pillow:before{content:"\e525"}.fa-alarm-plus:before{content:"\f844"}.fa-alicorn:before{content:"\f6b0"}.fa-comment-question:before{content:"\e14b"}.fa-gingerbread-man:before{content:"\f79d"}.fa-guarani-sign:before{content:"\e19a"}.fa-burger-fries:before{content:"\e0cd"}.fa-mug-tea:before{content:"\f875"}.fa-border-top:before{content:"\f855"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-book-circle:before,.fa-circle-book-open:before{content:"\e0ff"}.fa-arrows-to-dotted-line:before{content:"\e0a6"}.fa-fire-extinguisher:before{content:"\f134"}.fa-garage-open:before{content:"\e00b"}.fa-shelves-empty:before{content:"\e246"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-watch-apple:before{content:"\e2cb"}.fa-watch-calculator:before{content:"\f8f0"}.fa-list-dropdown:before{content:"\e1cf"}.fa-cabinet-filing:before{content:"\f64b"}.fa-burger-soda:before{content:"\f858"}.fa-arrow-square-up:before,.fa-square-arrow-up:before{content:"\f33c"}.fa-greater-than-equal:before{content:"\f532"}.fa-pallet-box:before{content:"\e208"}.fa-face-confounded:before{content:"\e36c"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-truck-plow:before{content:"\f7de"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-virus:before{content:"\e074"}.fa-comment-middle-top:before{content:"\e14a"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-layer-group:before{content:"\f5fd"}.fa-restroom-simple:before{content:"\e23a"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-border-outer:before{content:"\f851"}.fa-hashtag-lock:before{content:"\e415"}.fa-clock-two-thirty:before{content:"\e35b"}.fa-archway:before{content:"\f557"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-heart-half:before{content:"\e1ab"}.fa-comment-check:before{content:"\f4ac"}.fa-square:before{content:"\f0c8"}.fa-memo:before{content:"\e1d8"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-couch:before{content:"\f4b8"}.fa-cedi-sign:before{content:"\e0df"}.fa-italic:before{content:"\f033"}.fa-glass-citrus:before{content:"\f869"}.fa-calendar-lines-pen:before{content:"\e472"}.fa-church:before{content:"\f51d"}.fa-person-snowmobiling:before,.fa-snowmobile:before{content:"\f7d1"}.fa-face-hushed:before{content:"\e37b"}.fa-comments-dollar:before{content:"\f653"}.fa-pickaxe:before{content:"\e5bf"}.fa-link-simple-slash:before{content:"\e1ce"}.fa-democrat:before{content:"\f747"}.fa-face-confused:before{content:"\e36d"}.fa-pinball:before{content:"\e229"}.fa-z:before{content:"\5a"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-deer:before{content:"\f78e"}.fa-input-pipe:before{content:"\e1be"}.fa-road-lock:before{content:"\e567"}.fa-a:before{content:"\41"}.fa-bookmark-slash:before{content:"\e0c2"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-mace:before{content:"\f6f8"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-sausage:before{content:"\f820"}.fa-trash-can-clock:before{content:"\e2aa"}.fa-p:before{content:"\50"}.fa-broom-wide:before{content:"\e5d1"}.fa-snowflake:before{content:"\f2dc"}.fa-stomach:before{content:"\f623"}.fa-newspaper:before{content:"\f1ea"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-guitar-electric:before{content:"\f8be"}.fa-arrow-turn-down-right:before{content:"\e3d6"}.fa-moon-cloud:before{content:"\f754"}.fa-bread-slice-butter:before{content:"\e3e1"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-user-group-crown:before,.fa-users-crown:before{content:"\f6a5"}.fa-circle-i:before{content:"\e111"}.fa-toilet-paper-check:before{content:"\e5b2"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-locust:before{content:"\e520"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-chart-waterfall:before{content:"\e0eb"}.fa-sparkle:before{content:"\e5d6"}.fa-face-party:before{content:"\e383"}.fa-kidneys:before{content:"\f5fb"}.fa-wifi-exclamation:before{content:"\e2cf"}.fa-chart-network:before{content:"\f78a"}.fa-person-dress-burst:before{content:"\e544"}.fa-dice-d4:before{content:"\f6d0"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-vector-square:before{content:"\f5cb"}.fa-bread-slice:before{content:"\f7ec"}.fa-language:before{content:"\f1ab"}.fa-wheat-awn-slash:before{content:"\e338"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-dagger:before{content:"\f6cb"}.fa-podium:before{content:"\f680"}.fa-memo-circle-check:before{content:"\e1d9"}.fa-route-highway:before{content:"\f61a"}.fa-arrow-alt-to-bottom:before,.fa-down-to-line:before{content:"\f34a"}.fa-filter:before{content:"\f0b0"}.fa-square-g:before{content:"\e271"}.fa-circle-phone:before,.fa-phone-circle:before{content:"\e11b"}.fa-clipboard-prescription:before{content:"\f5e8"}.fa-user-nurse-hair:before{content:"\e45d"}.fa-question:before{content:"\3f"}.fa-file-signature:before{content:"\f573"}.fa-toggle-large-on:before{content:"\e5b1"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-dryer-alt:before,.fa-dryer-heat:before{content:"\f862"}.fa-house-chimney-user:before{content:"\e065"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-arrow-up-small-big:before,.fa-sort-size-up-alt:before{content:"\f88f"}.fa-train-track:before{content:"\e453"}.fa-puzzle-piece:before{content:"\f12e"}.fa-money-check:before{content:"\f53c"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-file-exclamation:before{content:"\f31a"}.fa-code:before{content:"\f121"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-moon-stars:before{content:"\f755"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-clothes-hanger:before{content:"\e136"}.fa-mobile-iphone:before,.fa-mobile-notch:before{content:"\e1ee"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-images-user:before{content:"\e1b9"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-image-polaroid-user:before{content:"\e1b6"}.fa-virus-covid:before{content:"\e4a8"}.fa-square-ellipsis:before{content:"\e26e"}.fa-pie:before{content:"\f705"}.fa-chess-knight-alt:before,.fa-chess-knight-piece:before{content:"\f442"}.fa-austral-sign:before{content:"\e0a9"}.fa-cloud-plus:before{content:"\e35e"}.fa-f:before{content:"\46"}.fa-leaf:before{content:"\f06c"}.fa-bed-bunk:before{content:"\f8f8"}.fa-road:before{content:"\f018"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-person-circle-plus:before{content:"\e541"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-clock-eight:before{content:"\e345"}.fa-sack-xmark:before{content:"\e56a"}.fa-file-excel:before{content:"\f1c3"}.fa-file-contract:before{content:"\f56c"}.fa-fish-fins:before{content:"\e4f2"}.fa-circle-q:before{content:"\e11e"}.fa-building-flag:before{content:"\e4d5"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-object-ungroup:before{content:"\f248"}.fa-face-disguise:before{content:"\e370"}.fa-circle-arrow-down-right:before{content:"\e0fa"}.fa-alien-8bit:before,.fa-alien-monster:before{content:"\f8f6"}.fa-hand-point-ribbon:before{content:"\e1a6"}.fa-poop:before{content:"\f619"}.fa-object-exclude:before{content:"\e49c"}.fa-telescope:before{content:"\e03e"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-square-list:before{content:"\e489"}.fa-kaaba:before{content:"\f66b"}.fa-toilet-paper:before{content:"\f71e"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-comment-code:before{content:"\e147"}.fa-sim-cards:before{content:"\e251"}.fa-starship:before{content:"\e039"}.fa-eject:before{content:"\f052"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-plane-circle-check:before{content:"\e555"}.fa-seal:before{content:"\e241"}.fa-user-cowboy:before{content:"\f8ea"}.fa-hexagon-vertical-nft:before{content:"\e505"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-bread-loaf:before{content:"\f7eb"}.fa-rings-wedding:before{content:"\f81b"}.fa-object-group:before{content:"\f247"}.fa-french-fries:before{content:"\f803"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-calendar-arrow-down:before,.fa-calendar-download:before{content:"\e0d0"}.fa-send-back:before{content:"\f87e"}.fa-mask-ventilator:before{content:"\e524"}.fa-signature-lock:before{content:"\e3ca"}.fa-arrow-right:before{content:"\f061"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-octagon-plus:before,.fa-plus-octagon:before{content:"\f301"}.fa-cash-register:before{content:"\f788"}.fa-person-circle-question:before{content:"\e542"}.fa-melon-slice:before{content:"\e311"}.fa-space-station-moon:before{content:"\e033"}.fa-comment-alt-smile:before,.fa-message-smile:before{content:"\f4aa"}.fa-cup-straw:before{content:"\e363"}.fa-arrow-alt-from-right:before,.fa-left-from-line:before{content:"\f348"}.fa-h:before{content:"\48"}.fa-basket-shopping-simple:before,.fa-shopping-basket-alt:before{content:"\e0af"}.fa-hands-heart:before,.fa-hands-holding-heart:before{content:"\f4c3"}.fa-clock-nine:before{content:"\e34c"}.fa-tarp:before{content:"\e57b"}.fa-face-sleepy:before{content:"\e38e"}.fa-hand-horns:before{content:"\e1a9"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-circle-three-quarters:before{content:"\e125"}.fa-trophy-alt:before,.fa-trophy-star:before{content:"\f2eb"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-face-thermometer:before{content:"\e39a"}.fa-shirt-running:before{content:"\e3c8"}.fa-book-circle-arrow-up:before{content:"\e0bd"}.fa-face-nauseated:before{content:"\e381"}.fa-heart:before{content:"\f004"}.fa-file-chart-pie:before{content:"\f65a"}.fa-mars-and-venus:before{content:"\f224"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-circle-arrow-down-left:before{content:"\e0f9"}.fa-dumpster-fire:before{content:"\f794"}.fa-hexagon-minus:before,.fa-minus-hexagon:before{content:"\f307"}.fa-arrow-alt-to-left:before,.fa-left-to-line:before{content:"\f34b"}.fa-house-crack:before{content:"\e3b1"}.fa-paw-alt:before,.fa-paw-simple:before{content:"\f701"}.fa-arrow-left-long-to-line:before{content:"\e3d4"}.fa-brackets-round:before,.fa-parentheses:before{content:"\e0c5"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-user-shakespeare:before{content:"\e2c2"}.fa-arrow-right-to-arc:before{content:"\e4b2"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-bottle-water:before{content:"\e4c5"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-gauge-circle-plus:before{content:"\e498"}.fa-folders:before{content:"\f660"}.fa-angel:before{content:"\f779"}.fa-value-absolute:before{content:"\f6a6"}.fa-rabbit:before{content:"\f708"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-circle-euro:before{content:"\e5ce"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-kitchen-set:before{content:"\e51a"}.fa-diamond-half:before{content:"\e5b7"}.fa-lock-alt:before,.fa-lock-keyhole:before{content:"\f30d"}.fa-r:before{content:"\52"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-info-square:before,.fa-square-info:before{content:"\f30f"}.fa-wifi-slash:before{content:"\f6ac"}.fa-toilet-paper-xmark:before{content:"\e5b3"}.fa-hands-holding-dollar:before,.fa-hands-usd:before{content:"\f4c5"}.fa-cube:before{content:"\f1b2"}.fa-arrow-down-triangle-square:before,.fa-sort-shapes-down:before{content:"\f888"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-shutters:before{content:"\e449"}.fa-shield-dog:before{content:"\e573"}.fa-solar-panel:before{content:"\f5ba"}.fa-lock-open:before{content:"\f3c1"}.fa-table-tree:before{content:"\e293"}.fa-house-chimney-heart:before{content:"\e1b2"}.fa-tally-3:before{content:"\e296"}.fa-elevator:before{content:"\e16d"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-circle:before{content:"\f111"}.fa-cart-circle-exclamation:before{content:"\e3f2"}.fa-sword:before{content:"\f71c"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-recycle:before{content:"\f1b8"}.fa-user-astronaut:before{content:"\f4fb"}.fa-interrobang:before{content:"\e5ba"}.fa-plane-slash:before{content:"\e069"}.fa-circle-dashed:before{content:"\e105"}.fa-trademark:before{content:"\f25c"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-fork-knife:before,.fa-utensils-alt:before{content:"\f2e6"}.fa-satellite-dish:before{content:"\f7c0"}.fa-badge-check:before{content:"\f336"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-slider:before{content:"\e252"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-clock-one-thirty:before{content:"\e34f"}.fa-inbox-arrow-up:before,.fa-inbox-out:before{content:"\f311"}.fa-cloud-slash:before{content:"\e137"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-users-rays:before{content:"\e593"}.fa-wallet:before{content:"\f555"}.fa-octagon-check:before{content:"\e426"}.fa-flatbread-stuffed:before{content:"\e40c"}.fa-clipboard-check:before{content:"\f46c"}.fa-cart-circle-plus:before{content:"\e3f3"}.fa-shipping-timed:before,.fa-truck-clock:before{content:"\f48c"}.fa-pool-8-ball:before{content:"\e3c5"}.fa-file-audio:before{content:"\f1c7"}.fa-turn-down-left:before{content:"\e331"}.fa-lock-hashtag:before{content:"\e423"}.fa-chart-radar:before{content:"\e0e7"}.fa-staff:before{content:"\f71b"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-utility-pole:before{content:"\e2c3"}.fa-transporter-6:before{content:"\e2a7"}.fa-wrench:before{content:"\f0ad"}.fa-bugs:before{content:"\e4d0"}.fa-vector-polygon:before{content:"\e2c7"}.fa-diagram-nested:before{content:"\e157"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-file-image:before{content:"\f1c5"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-image-user:before{content:"\e1b8"}.fa-buoy:before{content:"\e5b5"}.fa-plane-departure:before{content:"\f5b0"}.fa-handshake-slash:before{content:"\e060"}.fa-book-bookmark:before{content:"\e0bb"}.fa-border-center-h:before{content:"\f89c"}.fa-can-food:before{content:"\e3e6"}.fa-typewriter:before{content:"\f8e7"}.fa-arrow-right-from-arc:before{content:"\e4b1"}.fa-circle-k:before{content:"\e113"}.fa-face-hand-over-mouth:before{content:"\e378"}.fa-popcorn:before{content:"\f819"}.fa-house-flood:before,.fa-house-water:before{content:"\f74f"}.fa-object-subtract:before{content:"\e49e"}.fa-code-branch:before{content:"\f126"}.fa-warehouse-alt:before,.fa-warehouse-full:before{content:"\f495"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-bridge:before{content:"\e4c8"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-arrow-down-from-dotted-line:before{content:"\e090"}.fa-square-quarters:before{content:"\e44e"}.fa-truck-front:before{content:"\e2b7"}.fa-cat:before{content:"\f6be"}.fa-trash-xmark:before{content:"\e2b4"}.fa-caret-circle-left:before,.fa-circle-caret-left:before{content:"\f32e"}.fa-files:before{content:"\e178"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-face-clouds:before{content:"\e47d"}.fa-user-crown:before{content:"\f6a4"}.fa-truck-field:before{content:"\e58d"}.fa-route:before{content:"\f4d7"}.fa-cart-circle-check:before{content:"\e3f1"}.fa-clipboard-question:before{content:"\e4e3"}.fa-panorama:before{content:"\e209"}.fa-comment-medical:before{content:"\f7f5"}.fa-teeth-open:before{content:"\f62f"}.fa-user-tie-hair-long:before{content:"\e460"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-head-side-medical:before{content:"\f809"}.fa-tags:before{content:"\f02c"}.fa-wine-glass:before{content:"\f4e3"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-user-robot:before{content:"\e04b"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-card-diamond:before{content:"\e3ea"}.fa-face-zipper:before{content:"\e3a5"}.fa-face-raised-eyebrow:before{content:"\e388"}.fa-house-signal:before{content:"\e012"}.fa-chevron-square-up:before,.fa-square-chevron-up:before{content:"\f32c"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-faucet-drip:before{content:"\e006"}.fa-arrows-to-line:before{content:"\e0a7"}.fa-dolphin:before{content:"\e168"}.fa-arrow-up-right:before{content:"\e09f"}.fa-circle-r:before{content:"\e120"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-circle-sort-up:before,.fa-sort-circle-up:before{content:"\e032"}.fa-terminal:before{content:"\f120"}.fa-mobile-button:before{content:"\f10b"}.fa-house-medical-flag:before{content:"\e514"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-tape:before{content:"\f4db"}.fa-chestnut:before{content:"\e3f6"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-eye:before{content:"\f06e"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-heat:before{content:"\e00c"}.fa-ticket-airline:before{content:"\e29a"}.fa-boot-heeled:before{content:"\e33f"}.fa-arrows-minimize:before,.fa-compress-arrows:before{content:"\e0a5"}.fa-audio-description:before{content:"\f29e"}.fa-person-military-to-person:before{content:"\e54c"}.fa-file-shield:before{content:"\e4f0"}.fa-hexagon:before{content:"\f312"}.fa-manhole:before{content:"\e1d6"}.fa-user-slash:before{content:"\f506"}.fa-pen:before{content:"\f304"}.fa-tower-observation:before{content:"\e586"}.fa-floppy-disks:before{content:"\e183"}.fa-toilet-paper-blank-under:before,.fa-toilet-paper-reverse-alt:before{content:"\e29f"}.fa-file-code:before{content:"\f1c9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-pump:before{content:"\e442"}.fa-bus:before{content:"\f207"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-arrow-up-left-from-circle:before{content:"\e09e"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-window-maximize:before{content:"\f2d0"}.fa-dryer:before{content:"\f861"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-chess-bishop-alt:before,.fa-chess-bishop-piece:before{content:"\f43b"}.fa-shirt-tank-top:before{content:"\e3c9"}.fa-diploma:before,.fa-scroll-ribbon:before{content:"\f5ea"}.fa-screencast:before{content:"\e23e"}.fa-walker:before{content:"\f831"}.fa-prescription:before{content:"\f5b1"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-vihara:before{content:"\f6a7"}.fa-face-kiss-closed-eyes:before{content:"\e37d"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-file-user:before{content:"\f65c"}.fa-user-police-tie:before{content:"\e334"}.fa-face-tongue-money:before{content:"\e39d"}.fa-tennis-ball:before{content:"\f45e"}.fa-square-l:before{content:"\e275"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-calendar-arrow-up:before,.fa-calendar-upload:before{content:"\e0d1"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-plant-wilt:before{content:"\e5aa"}.fa-scarf:before{content:"\f7c1"}.fa-album-circle-plus:before{content:"\e48c"}.fa-user-nurse-hair-long:before{content:"\e45e"}.fa-diamond:before{content:"\f219"}.fa-arrow-alt-square-left:before,.fa-square-left:before{content:"\f351"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-circle-ellipsis-vertical:before{content:"\e10b"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-grid-dividers:before{content:"\e3ad"}.fa-bacterium:before{content:"\e05a"}.fa-hand-pointer:before{content:"\f25a"}.fa-drum-steelpan:before{content:"\f56a"}.fa-hand-scissors:before{content:"\f257"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-face-pensive:before{content:"\e384"}.fa-user-music:before{content:"\f8eb"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-comments-alt-dollar:before,.fa-messages-dollar:before{content:"\f652"}.fa-sensor-on:before{content:"\e02b"}.fa-balloon:before{content:"\e2e3"}.fa-biohazard:before{content:"\f780"}.fa-chess-queen-alt:before,.fa-chess-queen-piece:before{content:"\f446"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-mars-double:before{content:"\f227"}.fa-house-leave:before,.fa-house-person-depart:before,.fa-house-person-leave:before{content:"\e00f"}.fa-ruler-triangle:before{content:"\f61c"}.fa-card-club:before{content:"\e3e9"}.fa-child-dress:before{content:"\e59c"}.fa-users-between-lines:before{content:"\e591"}.fa-lungs-virus:before{content:"\e067"}.fa-spinner-third:before{content:"\f3f4"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-phone:before{content:"\f095"}.fa-computer-mouse-scrollwheel:before,.fa-mouse-alt:before{content:"\f8cd"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-child-reaching:before{content:"\e59d"}.fa-table-layout:before{content:"\e290"}.fa-narwhal:before{content:"\f6fe"}.fa-ramp-loading:before{content:"\f4d4"}.fa-calendar-circle-plus:before{content:"\e470"}.fa-toothbrush:before{content:"\f635"}.fa-border-inner:before{content:"\f84e"}.fa-paw-claws:before{content:"\f702"}.fa-kiwi-fruit:before{content:"\e30c"}.fa-traffic-light-slow:before{content:"\f639"}.fa-rectangle-code:before{content:"\e322"}.fa-head-side-virus:before{content:"\e064"}.fa-keyboard-brightness:before{content:"\e1c0"}.fa-books-medical:before{content:"\f7e8"}.fa-lightbulb-slash:before{content:"\f673"}.fa-home-blank:before,.fa-house-blank:before{content:"\e487"}.fa-square-5:before{content:"\e25a"}.fa-heart-square:before,.fa-square-heart:before{content:"\f4c8"}.fa-puzzle:before{content:"\e443"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-pipe-circle-check:before{content:"\e436"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-octagon-exclamation:before{content:"\e204"}.fa-dial-low:before{content:"\e15d"}.fa-door-closed:before{content:"\f52a"}.fa-laptop-mobile:before,.fa-phone-laptop:before{content:"\f87a"}.fa-conveyor-belt-alt:before,.fa-conveyor-belt-boxes:before{content:"\f46f"}.fa-shield-virus:before{content:"\e06c"}.fa-starfighter-alt-advanced:before,.fa-starfighter-twin-ion-engine-advanced:before{content:"\e28e"}.fa-dice-six:before{content:"\f526"}.fa-starfighter-alt:before,.fa-starfighter-twin-ion-engine:before{content:"\e038"}.fa-rocket-launch:before{content:"\e027"}.fa-mosquito-net:before{content:"\e52c"}.fa-vent-damper:before{content:"\e465"}.fa-bridge-water:before{content:"\e4ce"}.fa-ban-bug:before,.fa-debug:before{content:"\f7f9"}.fa-person-booth:before{content:"\f756"}.fa-text-width:before{content:"\f035"}.fa-garage-car:before{content:"\e00a"}.fa-square-kanban:before{content:"\e488"}.fa-hat-wizard:before{content:"\f6e8"}.fa-pen-fancy:before{content:"\f5ac"}.fa-coffee-pot:before{content:"\e002"}.fa-mouse-field:before{content:"\e5a8"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-shower-alt:before,.fa-shower-down:before{content:"\e24d"}.fa-box-circle-check:before{content:"\e0c4"}.fa-brightness:before{content:"\e0c9"}.fa-car-side-bolt:before{content:"\e344"}.fa-ornament:before{content:"\f7b8"}.fa-phone-arrow-down-left:before,.fa-phone-arrow-down:before,.fa-phone-incoming:before{content:"\e223"}.fa-cloud-word:before{content:"\e138"}.fa-hand-fingers-crossed:before{content:"\e1a3"}.fa-trash:before{content:"\f1f8"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-arrow-down-small-big:before,.fa-sort-size-down-alt:before{content:"\f88d"}.fa-book-medical:before{content:"\f7e6"}.fa-face-melting:before{content:"\e483"}.fa-poo:before{content:"\f2fe"}.fa-pen-alt-slash:before,.fa-pen-clip-slash:before{content:"\e20f"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-scroll-old:before{content:"\f70f"}.fa-guitars:before{content:"\f8bf"}.fa-phone-xmark:before{content:"\e227"}.fa-hose:before{content:"\e419"}.fa-clock-six:before{content:"\e352"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-billboard:before{content:"\e5cd"}.fa-square-r:before{content:"\e27c"}.fa-cubes:before{content:"\f1b3"}.fa-envelope-open-dollar:before{content:"\f657"}.fa-divide:before{content:"\f529"}.fa-sun-cloud:before{content:"\f763"}.fa-lamp-floor:before{content:"\e015"}.fa-square-7:before{content:"\e25c"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-headphones:before{content:"\f025"}.fa-hands-holding:before{content:"\f4c2"}.fa-campfire:before{content:"\f6ba"}.fa-circle-ampersand:before{content:"\e0f8"}.fa-snowflakes:before{content:"\f7cf"}.fa-hands-clapping:before{content:"\e1a8"}.fa-republican:before{content:"\f75e"}.fa-leaf-maple:before{content:"\f6f6"}.fa-arrow-left:before{content:"\f060"}.fa-person-circle-xmark:before{content:"\e543"}.fa-ruler:before{content:"\f545"}.fa-cup-straw-swoosh:before{content:"\e364"}.fa-temperature-hot:before,.fa-temperature-sun:before{content:"\f76a"}.fa-align-left:before{content:"\f036"}.fa-dice-d6:before{content:"\f6d1"}.fa-restroom:before{content:"\f7bd"}.fa-high-definition:before,.fa-rectangle-hd:before{content:"\e1ae"}.fa-j:before{content:"\4a"}.fa-galaxy:before{content:"\e008"}.fa-users-viewfinder:before{content:"\e595"}.fa-file-video:before{content:"\f1c8"}.fa-cherries:before{content:"\e0ec"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-circle-sort:before,.fa-sort-circle:before{content:"\e030"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-file-pdf:before{content:"\f1c1"}.fa-siren:before{content:"\e02d"}.fa-arrow-up-to-dotted-line:before{content:"\e0a1"}.fa-image-landscape:before,.fa-landscape:before{content:"\e1b5"}.fa-tank-water:before{content:"\e452"}.fa-curling-stone:before,.fa-curling:before{content:"\f44a"}.fa-gamepad-alt:before,.fa-gamepad-modern:before{content:"\e5a2"}.fa-messages-question:before{content:"\e1e7"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-o:before{content:"\4f"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-briefcase-arrow-right:before{content:"\e2f2"}.fa-expand-wide:before{content:"\f320"}.fa-clock-eleven-thirty:before{content:"\e348"}.fa-rv:before{content:"\f7be"}.fa-user-secret:before{content:"\f21b"}.fa-otter:before{content:"\f700"}.fa-dreidel:before{content:"\f792"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-comment-dollar:before{content:"\f651"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-flower-tulip:before{content:"\f801"}.fa-people-pants-simple:before{content:"\e21a"}.fa-cloud-drizzle:before{content:"\f738"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-solar-system:before{content:"\e02f"}.fa-seal-question:before{content:"\e243"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-disc-drive:before{content:"\f8b5"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-rows:before,.fa-table-rows:before{content:"\e292"}.fa-location-exclamation:before,.fa-map-marker-exclamation:before{content:"\f608"}.fa-face-fearful:before{content:"\e375"}.fa-clipboard-user:before{content:"\f7f3"}.fa-bus-school:before{content:"\f5dd"}.fa-film-slash:before{content:"\e179"}.fa-square-arrow-down-right:before{content:"\e262"}.fa-book-sparkles:before,.fa-book-spells:before{content:"\f6b8"}.fa-washer:before,.fa-washing-machine:before{content:"\f898"}.fa-child:before{content:"\f1ae"}.fa-lira-sign:before{content:"\f195"}.fa-user-visor:before{content:"\e04c"}.fa-file-plus-minus:before{content:"\e177"}.fa-chess-clock-alt:before,.fa-chess-clock-flip:before{content:"\f43e"}.fa-satellite:before{content:"\f7bf"}.fa-plane-lock:before{content:"\e558"}.fa-steering-wheel:before{content:"\f622"}.fa-tag:before{content:"\f02b"}.fa-stretcher:before{content:"\f825"}.fa-book-law:before,.fa-book-section:before{content:"\e0c1"}.fa-inboxes:before{content:"\e1bb"}.fa-coffee-bean:before{content:"\e13e"}.fa-circle-yen:before{content:"\e5d0"}.fa-brackets-curly:before{content:"\f7ea"}.fa-ellipsis-stroke-vertical:before,.fa-ellipsis-v-alt:before{content:"\f39c"}.fa-comment:before{content:"\f075"}.fa-square-1:before{content:"\e256"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-head-side:before{content:"\f6e9"}.fa-envelope:before{content:"\f0e0"}.fa-dolly-empty:before{content:"\f473"}.fa-face-tissue:before{content:"\e39c"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-paperclip:before{content:"\f0c6"}.fa-chart-line-down:before{content:"\f64d"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-lock-a:before{content:"\e422"}.fa-ribbon:before{content:"\f4d6"}.fa-lungs:before{content:"\f604"}.fa-person-pinball:before{content:"\e21d"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-apple-core:before{content:"\e08f"}.fa-circle-y:before{content:"\e12f"}.fa-h6:before{content:"\e413"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-circle-small:before{content:"\e122"}.fa-border-none:before{content:"\f850"}.fa-arrow-turn-down-left:before{content:"\e2e1"}.fa-circle-nodes:before{content:"\e4e2"}.fa-parachute-box:before{content:"\f4cd"}.fa-comment-alt-medical:before,.fa-message-medical:before{content:"\f7f4"}.fa-rugby-ball:before{content:"\e3c6"}.fa-comment-music:before{content:"\f8b0"}.fa-indent:before{content:"\f03c"}.fa-tree-alt:before,.fa-tree-deciduous:before{content:"\f400"}.fa-puzzle-piece-alt:before,.fa-puzzle-piece-simple:before{content:"\e231"}.fa-truck-field-un:before{content:"\e58e"}.fa-nfc-trash:before{content:"\e1fd"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-mountain:before{content:"\f6fc"}.fa-file-times:before,.fa-file-xmark:before{content:"\f317"}.fa-home-heart:before,.fa-house-heart:before{content:"\f4c9"}.fa-house-chimney-blank:before{content:"\e3b0"}.fa-meter-bolt:before{content:"\e1e9"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-slash-back:before{content:"\5c"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-fishing-rod:before{content:"\e3a8"}.fa-hammer-crash:before{content:"\e414"}.fa-message-heart:before{content:"\e5c9"}.fa-cloud-meatball:before{content:"\f73b"}.fa-camera-polaroid:before{content:"\f8aa"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-square-virus:before{content:"\e578"}.fa-cart-arrow-up:before{content:"\e3ee"}.fa-meteor:before{content:"\f753"}.fa-car-on:before{content:"\e4dd"}.fa-sleigh:before{content:"\f7cc"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-buoy-mooring:before{content:"\e5b6"}.fa-square-4:before{content:"\e259"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-tricycle-adult:before{content:"\e5c4"}.fa-waveform:before{content:"\f8f1"}.fa-water:before{content:"\f773"}.fa-star-sharp-half-alt:before,.fa-star-sharp-half-stroke:before{content:"\e28d"}.fa-nfc-signal:before{content:"\e1fb"}.fa-plane-prop:before{content:"\e22b"}.fa-calendar-check:before{content:"\f274"}.fa-clock-desk:before{content:"\e134"}.fa-calendar-clock:before,.fa-calendar-time:before{content:"\e0d2"}.fa-braille:before{content:"\f2a1"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-plate-utensils:before{content:"\e43b"}.fa-family-pants:before{content:"\e302"}.fa-hose-reel:before{content:"\e41a"}.fa-house-window:before{content:"\e3b3"}.fa-landmark:before{content:"\f66f"}.fa-truck:before{content:"\f0d1"}.fa-crosshairs:before{content:"\f05b"}.fa-cloud-rainbow:before{content:"\f73e"}.fa-person-cane:before{content:"\e53c"}.fa-alien:before{content:"\f8f5"}.fa-tent:before{content:"\e57d"}.fa-vest-patches:before{content:"\e086"}.fa-people-dress-simple:before{content:"\e218"}.fa-check-double:before{content:"\f560"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-bowling-ball-pin:before{content:"\e0c3"}.fa-bell-school-slash:before{content:"\f5d6"}.fa-plus-large:before{content:"\e59e"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-camera-viewfinder:before,.fa-screenshot:before{content:"\e0da"}.fa-comment-alt-music:before,.fa-message-music:before{content:"\f8af"}.fa-car-building:before{content:"\f859"}.fa-border-bottom-right:before,.fa-border-style-alt:before{content:"\f854"}.fa-octagon:before{content:"\f306"}.fa-comment-arrow-up-right:before{content:"\e145"}.fa-octagon-divide:before{content:"\e203"}.fa-cookie:before{content:"\f563"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-tv-music:before{content:"\f8e6"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-reel:before{content:"\e238"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-dumbbell:before{content:"\f44b"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-tarp-droplet:before{content:"\e57c"}.fa-alarm-exclamation:before{content:"\f843"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-traffic-cone:before{content:"\f636"}.fa-grate:before{content:"\e193"}.fa-arrow-down-right:before{content:"\e093"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-calendar-plus:before{content:"\f271"}.fa-person-from-portal:before,.fa-portal-exit:before{content:"\e023"}.fa-plane-arrival:before{content:"\f5af"}.fa-cowbell-circle-plus:before,.fa-cowbell-more:before{content:"\f8b4"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-distribute-spacing-vertical:before{content:"\e366"}.fa-signal-alt-2:before,.fa-signal-bars-fair:before{content:"\f692"}.fa-sportsball:before{content:"\e44b"}.fa-game-console-handheld-crank:before{content:"\e5b9"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-chart-gantt:before{content:"\e0e4"}.fa-face-smile-upside-down:before{content:"\e395"}.fa-ball-pile:before{content:"\f77e"}.fa-badge-dollar:before{content:"\f645"}.fa-money-bills-alt:before,.fa-money-bills-simple:before{content:"\e1f4"}.fa-list-timeline:before{content:"\e1d1"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-keyboard-down:before{content:"\e1c2"}.fa-circle-up-right:before{content:"\e129"}.fa-cloud-bolt-moon:before,.fa-thunderstorm-moon:before{content:"\f76d"}.fa-dna:before{content:"\f471"}.fa-virus-slash:before{content:"\e075"}.fa-bracket-round-right:before{content:"\29"}.fa-circle-sterling:before{content:"\e5cf"}.fa-circle-5:before{content:"\e0f2"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-fire-flame:before,.fa-flame:before{content:"\f6df"}.fa-arrow-alt-to-right:before,.fa-right-to-line:before{content:"\f34c"}.fa-gif:before{content:"\e190"}.fa-chess:before{content:"\f439"}.fa-trash-slash:before{content:"\e2b3"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-plug-circle-check:before{content:"\e55c"}.fa-font-case:before{content:"\f866"}.fa-street-view:before{content:"\f21d"}.fa-arrow-down-left:before{content:"\e091"}.fa-franc-sign:before{content:"\e18f"}.fa-flask-poison:before,.fa-flask-round-poison:before{content:"\f6e0"}.fa-volume-off:before{content:"\f026"}.fa-book-circle-arrow-right:before{content:"\e0bc"}.fa-chart-user:before,.fa-user-chart:before{content:"\f6a3"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-presentation-screen:before,.fa-presentation:before{content:"\f685"}.fa-circle-bolt:before{content:"\e0fe"}.fa-face-smile-halo:before{content:"\e38f"}.fa-cart-circle-arrow-down:before{content:"\e3ef"}.fa-house-person-arrive:before,.fa-house-person-return:before,.fa-house-return:before{content:"\e011"}.fa-comment-alt-times:before,.fa-message-times:before,.fa-message-xmark:before{content:"\f4ab"}.fa-file-award:before,.fa-file-certificate:before{content:"\f5f3"}.fa-user-doctor-hair-long:before{content:"\e459"}.fa-camera-home:before,.fa-camera-security:before{content:"\f8fe"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-book-heart:before{content:"\f499"}.fa-mosque:before{content:"\f678"}.fa-duck:before{content:"\f6d8"}.fa-mosquito:before{content:"\e52b"}.fa-star-of-david:before{content:"\f69a"}.fa-flag-alt:before,.fa-flag-swallowtail:before{content:"\f74c"}.fa-person-military-rifle:before{content:"\e54b"}.fa-car-garage:before{content:"\f5e2"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-book-font:before{content:"\e0bf"}.fa-shield-plus:before{content:"\e24a"}.fa-vials:before{content:"\f493"}.fa-eye-dropper-full:before{content:"\e172"}.fa-distribute-spacing-horizontal:before{content:"\e365"}.fa-tablet-rugged:before{content:"\f48f"}.fa-temperature-frigid:before,.fa-temperature-snow:before{content:"\f768"}.fa-moped:before{content:"\e3b9"}.fa-face-smile-plus:before,.fa-smile-plus:before{content:"\f5b9"}.fa-radio-alt:before,.fa-radio-tuner:before{content:"\f8d8"}.fa-face-swear:before{content:"\e399"}.fa-water-arrow-down:before,.fa-water-lower:before{content:"\f774"}.fa-scanner-touchscreen:before{content:"\f48a"}.fa-circle-7:before{content:"\e0f4"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-person-ski-jumping:before,.fa-ski-jump:before{content:"\f7c7"}.fa-place-of-worship:before{content:"\f67f"}.fa-water-arrow-up:before,.fa-water-rise:before{content:"\f775"}.fa-waveform-lines:before,.fa-waveform-path:before{content:"\f8f2"}.fa-split:before{content:"\e254"}.fa-film-canister:before,.fa-film-cannister:before{content:"\f8b7"}.fa-folder-times:before,.fa-folder-xmark:before{content:"\f65f"}.fa-toilet-paper-alt:before,.fa-toilet-paper-blank:before{content:"\f71f"}.fa-tablet-android-alt:before,.fa-tablet-screen:before{content:"\f3fc"}.fa-hexagon-vertical-nft-slanted:before{content:"\e506"}.fa-folder-music:before{content:"\e18d"}.fa-desktop-medical:before,.fa-display-medical:before{content:"\e166"}.fa-share-all:before{content:"\f367"}.fa-peapod:before{content:"\e31c"}.fa-chess-clock:before{content:"\f43d"}.fa-axe:before{content:"\f6b2"}.fa-square-d:before{content:"\e268"}.fa-grip-vertical:before{content:"\f58e"}.fa-mobile-signal-out:before{content:"\e1f0"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-u:before{content:"\55"}.fa-arrow-up-from-dotted-line:before{content:"\e09b"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-light-switch-on:before{content:"\e019"}.fa-arrow-down-arrow-up:before,.fa-sort-alt:before{content:"\f883"}.fa-raindrops:before{content:"\f75c"}.fa-dash:before,.fa-minus-large:before{content:"\e404"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-input-numeric:before{content:"\e1bd"}.fa-truck-tow:before{content:"\e2b8"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-pallet:before{content:"\f482"}.fa-car-bolt:before{content:"\e341"}.fa-arrows-maximize:before,.fa-expand-arrows:before{content:"\f31d"}.fa-faucet:before{content:"\e005"}.fa-cloud-sleet:before{content:"\f741"}.fa-lamp-street:before{content:"\e1c5"}.fa-list-radio:before{content:"\e1d0"}.fa-pen-nib-slash:before{content:"\e4a1"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-square-up-left:before{content:"\e282"}.fa-overline:before{content:"\f876"}.fa-s:before{content:"\53"}.fa-timeline:before{content:"\e29c"}.fa-keyboard:before{content:"\f11c"}.fa-arrows-from-dotted-line:before{content:"\e0a3"}.fa-usb-drive:before{content:"\f8e9"}.fa-ballot:before{content:"\f732"}.fa-caret-down:before{content:"\f0d7"}.fa-location-dot-slash:before,.fa-map-marker-alt-slash:before{content:"\f605"}.fa-cards:before{content:"\e3ed"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-boxing-glove:before,.fa-glove-boxing:before{content:"\f438"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-bell-school:before{content:"\f5d5"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-plane-up:before{content:"\e22d"}.fa-folder-heart:before{content:"\e189"}.fa-circle-location-arrow:before,.fa-location-circle:before{content:"\f602"}.fa-face-head-bandage:before{content:"\e37a"}.fa-maki-roll:before,.fa-makizushi:before,.fa-sushi-roll:before{content:"\e48b"}.fa-car-bump:before{content:"\f5e0"}.fa-piggy-bank:before{content:"\f4d3"}.fa-racquet:before{content:"\f45a"}.fa-car-mirrors:before{content:"\e343"}.fa-industry-alt:before,.fa-industry-windows:before{content:"\f3b3"}.fa-bolt-auto:before{content:"\e0b6"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-flux-capacitor:before{content:"\f8ba"}.fa-mountain-city:before{content:"\e52e"}.fa-coins:before{content:"\f51e"}.fa-honey-pot:before{content:"\e418"}.fa-olive:before{content:"\e316"}.fa-khanda:before{content:"\f66d"}.fa-filter-list:before{content:"\e17c"}.fa-outlet:before{content:"\e01c"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-cauldron:before{content:"\f6bf"}.fa-people:before{content:"\e216"}.fa-folder-tree:before{content:"\f802"}.fa-network-wired:before{content:"\f6ff"}.fa-croissant:before{content:"\f7f6"}.fa-map-pin:before{content:"\f276"}.fa-hamsa:before{content:"\f665"}.fa-cent-sign:before{content:"\e3f5"}.fa-swords-laser:before{content:"\e03d"}.fa-flask:before{content:"\f0c3"}.fa-person-pregnant:before{content:"\e31e"}.fa-square-u:before{content:"\e281"}.fa-wand-sparkles:before{content:"\f72b"}.fa-router:before{content:"\f8da"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-sword-laser-alt:before{content:"\e03c"}.fa-ticket:before{content:"\f145"}.fa-power-off:before{content:"\f011"}.fa-coin:before{content:"\f85c"}.fa-laptop-slash:before{content:"\e1c7"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-circle-b:before{content:"\e0fd"}.fa-person-dress-simple:before{content:"\e21c"}.fa-pipe-collar:before{content:"\e437"}.fa-lights-holiday:before{content:"\f7b2"}.fa-citrus:before{content:"\e2f4"}.fa-flag-usa:before{content:"\f74d"}.fa-laptop-file:before{content:"\e51d"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-chart-tree-map:before{content:"\e0ea"}.fa-diagram-next:before{content:"\e476"}.fa-person-rifle:before{content:"\e54e"}.fa-clock-five-thirty:before{content:"\e34a"}.fa-pipe-valve:before{content:"\e439"}.fa-arrow-up-from-arc:before{content:"\e4b4"}.fa-face-spiral-eyes:before{content:"\e485"}.fa-compress-wide:before{content:"\f326"}.fa-circle-phone-hangup:before,.fa-phone-circle-down:before{content:"\e11d"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-badminton:before{content:"\e33a"}.fa-closed-captioning:before{content:"\f20a"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-arrow-alt-from-left:before,.fa-right-from-line:before{content:"\f347"}.fa-venus-double:before{content:"\f226"}.fa-images:before{content:"\f302"}.fa-calculator:before{content:"\f1ec"}.fa-shuttlecock:before{content:"\f45b"}.fa-user-hair:before{content:"\e45a"}.fa-eye-evil:before{content:"\f6db"}.fa-people-pulling:before{content:"\e535"}.fa-n:before{content:"\4e"}.fa-garage:before{content:"\e009"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-shovel-snow:before{content:"\f7c3"}.fa-cloud-rain:before{content:"\f73d"}.fa-face-lying:before{content:"\e37e"}.fa-sprinkler:before{content:"\e035"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-person-sledding:before,.fa-sledding:before{content:"\f7cb"}.fa-game-console-handheld:before{content:"\f8bb"}.fa-ship:before{content:"\f21a"}.fa-clock-six-thirty:before{content:"\e353"}.fa-battery-slash:before{content:"\f377"}.fa-tugrik-sign:before{content:"\e2ba"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-download:before{content:"\f019"}.fa-inventory:before,.fa-shelves:before{content:"\f480"}.fa-cloud-snow:before{content:"\f742"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-oven:before{content:"\e01d"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-comment-captions:before{content:"\e146"}.fa-comments-question:before{content:"\e14e"}.fa-scribble:before{content:"\e23f"}.fa-rotate-exclamation:before{content:"\e23c"}.fa-file-circle-check:before{content:"\e5a0"}.fa-glass:before{content:"\f804"}.fa-loader:before{content:"\e1d4"}.fa-forward:before{content:"\f04e"}.fa-user-pilot:before{content:"\e2c0"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-code-pull-request-closed:before{content:"\e3f9"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-align-center:before{content:"\f037"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-face-dotted:before{content:"\e47f"}.fa-face-worried:before{content:"\e3a3"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-vector-circle:before{content:"\e2c6"}.fa-car-circle-bolt:before{content:"\e342"}.fa-calendar-week:before{content:"\f784"}.fa-flying-disc:before{content:"\e3a9"}.fa-laptop-medical:before{content:"\f812"}.fa-square-down-right:before{content:"\e26c"}.fa-b:before{content:"\42"}.fa-seat-airline:before{content:"\e244"}.fa-eclipse-alt:before,.fa-moon-over-sun:before{content:"\f74a"}.fa-pipe:before{content:"\7c"}.fa-file-medical:before{content:"\f477"}.fa-potato:before{content:"\e440"}.fa-dice-one:before{content:"\f525"}.fa-circle-a:before{content:"\e0f7"}.fa-helmet-battle:before{content:"\f6eb"}.fa-butter:before{content:"\e3e4"}.fa-blanket-fire:before{content:"\e3da"}.fa-kiwi-bird:before{content:"\f535"}.fa-castle:before{content:"\e0de"}.fa-golf-club:before{content:"\f451"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-balloons:before{content:"\e2e4"}.fa-mill-sign:before{content:"\e1ed"}.fa-bowl-rice:before{content:"\e2eb"}.fa-timeline-arrow:before{content:"\e29d"}.fa-skull:before{content:"\f54c"}.fa-game-board-alt:before,.fa-game-board-simple:before{content:"\f868"}.fa-circle-video:before,.fa-video-circle:before{content:"\e12b"}.fa-chart-scatter-bubble:before{content:"\e0e9"}.fa-house-turret:before{content:"\e1b4"}.fa-banana:before{content:"\e2e5"}.fa-hand-holding-skull:before{content:"\e1a4"}.fa-people-dress:before{content:"\e217"}.fa-couch-small:before,.fa-loveseat:before{content:"\f4cc"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-truck-pickup:before{content:"\f63c"}.fa-block-quote:before{content:"\e0b5"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-stop:before{content:"\f04d"}.fa-code-merge:before{content:"\f387"}.fa-money-check-dollar-pen:before,.fa-money-check-edit-alt:before{content:"\f873"}.fa-arrow-alt-from-bottom:before,.fa-up-from-line:before{content:"\f346"}.fa-upload:before{content:"\f093"}.fa-hurricane:before{content:"\f751"}.fa-people-pants:before{content:"\e219"}.fa-mound:before{content:"\e52d"}.fa-windsock:before{content:"\f777"}.fa-circle-half:before{content:"\e110"}.fa-brake-warning:before{content:"\e0c7"}.fa-toilet-portable:before{content:"\e583"}.fa-compact-disc:before{content:"\f51f"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-sax-hot:before,.fa-saxophone-fire:before{content:"\f8db"}.fa-camera-web-slash:before,.fa-webcam-slash:before{content:"\f833"}.fa-folder-medical:before{content:"\e18c"}.fa-folder-cog:before,.fa-folder-gear:before{content:"\e187"}.fa-hand-wave:before{content:"\e1a7"}.fa-arrow-up-arrow-down:before,.fa-sort-up-down:before{content:"\e099"}.fa-caravan:before{content:"\f8ff"}.fa-shield-cat:before{content:"\e572"}.fa-comment-alt-slash:before,.fa-message-slash:before{content:"\f4a9"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-trash-can-check:before{content:"\e2a9"}.fa-glass-water:before{content:"\e4f4"}.fa-oil-well:before{content:"\e532"}.fa-person-simple:before{content:"\e220"}.fa-vault:before{content:"\e2c5"}.fa-mars:before{content:"\f222"}.fa-toilet:before{content:"\f7d8"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-notes:before{content:"\e202"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-trash-arrow-turn-left:before,.fa-trash-undo:before{content:"\f895"}.fa-champagne-glass:before,.fa-glass-champagne:before{content:"\f79e"}.fa-objects-align-center-horizontal:before{content:"\e3bc"}.fa-sun:before{content:"\f185"}.fa-trash-alt-slash:before,.fa-trash-can-slash:before{content:"\e2ad"}.fa-screen-users:before,.fa-users-class:before{content:"\f63d"}.fa-guitar:before{content:"\f7a6"}.fa-arrow-square-left:before,.fa-square-arrow-left:before{content:"\f33a"}.fa-square-8:before{content:"\e25d"}.fa-face-smile-hearts:before{content:"\e390"}.fa-brackets-square:before,.fa-brackets:before{content:"\f7e9"}.fa-laptop-arrow-down:before{content:"\e1c6"}.fa-hockey-stick-puck:before{content:"\e3ae"}.fa-house-tree:before{content:"\e1b3"}.fa-signal-2:before,.fa-signal-fair:before{content:"\f68d"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-circle-dollar:before,.fa-dollar-circle:before,.fa-usd-circle:before{content:"\f2e8"}.fa-horse-head:before{content:"\f7ab"}.fa-arrows-repeat:before,.fa-repeat-alt:before{content:"\f364"}.fa-bore-hole:before{content:"\e4c3"}.fa-industry:before{content:"\f275"}.fa-image-polaroid:before{content:"\f8c4"}.fa-wave-triangle:before{content:"\f89a"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-grill:before{content:"\e5a3"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-analytics:before,.fa-chart-mixed:before{content:"\f643"}.fa-florin-sign:before{content:"\e184"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-less-than:before{content:"\3c"}.fa-desktop-code:before,.fa-display-code:before{content:"\e165"}.fa-face-drooling:before{content:"\e372"}.fa-oil-temp:before,.fa-oil-temperature:before{content:"\f614"}.fa-question-square:before,.fa-square-question:before{content:"\f2fd"}.fa-air-conditioner:before{content:"\f8f4"}.fa-angle-down:before{content:"\f107"}.fa-mountains:before{content:"\f6fd"}.fa-omega:before{content:"\f67a"}.fa-car-tunnel:before{content:"\e4de"}.fa-person-dolly-empty:before{content:"\f4d1"}.fa-pan-food:before{content:"\e42b"}.fa-head-side-cough:before{content:"\e061"}.fa-grip-lines:before{content:"\f7a4"}.fa-thumbs-down:before{content:"\f165"}.fa-user-lock:before{content:"\f502"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-tickets-airline:before{content:"\e29b"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-nfc-slash:before{content:"\e1fc"}.fa-chess-pawn:before{content:"\f443"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-grid-2-plus:before{content:"\e197"}.fa-bells:before{content:"\f77f"}.fa-person-through-window:before{content:"\e5a9"}.fa-toolbox:before{content:"\f552"}.fa-envelope-badge:before,.fa-envelope-dot:before{content:"\e16f"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-bug:before{content:"\f188"}.fa-bowl-chopsticks:before{content:"\e2e9"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-circle-s:before{content:"\e121"}.fa-box-ballot:before{content:"\f735"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-user-tie-hair:before{content:"\e45f"}.fa-podium-star:before{content:"\f758"}.fa-business-front:before,.fa-party-back:before,.fa-trian-balbot:before,.fa-user-hair-mullet:before{content:"\e45c"}.fa-microphone-stand:before{content:"\f8cb"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-family-dress:before{content:"\e301"}.fa-circle-x:before{content:"\e12e"}.fa-cabin:before{content:"\e46d"}.fa-mountain-sun:before{content:"\e52f"}.fa-chart-simple-horizontal:before{content:"\e474"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-hand-back-point-left:before{content:"\e19f"}.fa-comment-alt-dots:before,.fa-message-dots:before,.fa-messaging:before{content:"\f4a3"}.fa-file-heart:before{content:"\e176"}.fa-beer-foam:before,.fa-beer-mug:before{content:"\e0b3"}.fa-dice-d20:before{content:"\f6cf"}.fa-drone:before{content:"\f85f"}.fa-truck-droplet:before{content:"\e58c"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-medal:before{content:"\f5a2"}.fa-bed:before{content:"\f236"}.fa-book-copy:before{content:"\e0be"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-square-c:before{content:"\e266"}.fa-clock-two:before{content:"\e35a"}.fa-square-ellipsis-vertical:before{content:"\e26f"}.fa-podcast:before{content:"\f2ce"}.fa-bee:before{content:"\e0b2"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-bell:before{content:"\f0f3"}.fa-candy-bar:before,.fa-chocolate-bar:before{content:"\e3e8"}.fa-xmark-large:before{content:"\e59b"}.fa-pinata:before{content:"\e3c3"}.fa-arrows-from-line:before{content:"\e0a4"}.fa-superscript:before{content:"\f12b"}.fa-bowl-spoon:before{content:"\e3e0"}.fa-hexagon-check:before{content:"\e416"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-star-of-life:before{content:"\f621"}.fa-phone-slash:before{content:"\f3dd"}.fa-traffic-light-stop:before{content:"\f63a"}.fa-paint-roller:before{content:"\f5aa"}.fa-accent-grave:before{content:"\60"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-circle-0:before{content:"\e0ed"}.fa-dial-med-low:before{content:"\e160"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-crab:before{content:"\e3ff"}.fa-box-full:before,.fa-box-open-full:before{content:"\f49c"}.fa-file:before{content:"\f15b"}.fa-greater-than:before{content:"\3e"}.fa-quotes:before{content:"\e234"}.fa-pretzel:before{content:"\e441"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-arrow-down:before{content:"\f063"}.fa-user-robot-xmarks:before{content:"\e4a7"}.fa-comment-alt-quote:before,.fa-message-quote:before{content:"\e1e4"}.fa-candy-corn:before{content:"\f6bd"}.fa-folder-magnifying-glass:before,.fa-folder-search:before{content:"\e18b"}.fa-notebook:before{content:"\e201"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-bullseye-pointer:before{content:"\f649"}.fa-eraser:before{content:"\f12d"}.fa-hexagon-image:before{content:"\e504"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-crate-apple:before{content:"\f6b1"}.fa-apple-crate:before{content:"\f6b1"}.fa-person-burst:before{content:"\e53b"}.fa-game-board:before{content:"\f867"}.fa-hat-chef:before{content:"\f86b"}.fa-hand-back-point-right:before{content:"\e1a1"}.fa-dove:before{content:"\f4ba"}.fa-snowflake-droplets:before{content:"\e5c1"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-grid-4:before{content:"\e198"}.fa-socks:before{content:"\f696"}.fa-face-sunglasses:before{content:"\e398"}.fa-inbox:before{content:"\f01c"}.fa-square-0:before{content:"\e255"}.fa-section:before{content:"\e447"}.fa-box-up:before,.fa-square-this-way-up:before{content:"\f49f"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-square-ampersand:before{content:"\e260"}.fa-envelope-open-text:before{content:"\f658"}.fa-lamp-desk:before{content:"\e014"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-poll-people:before{content:"\f759"}.fa-glass-whiskey-rocks:before,.fa-whiskey-glass-ice:before{content:"\f7a1"}.fa-wine-bottle:before{content:"\f72f"}.fa-chess-rook:before{content:"\f447"}.fa-user-bounty-hunter:before{content:"\e2bf"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-diagram-sankey:before{content:"\e158"}.fa-cloud-hail-mixed:before{content:"\f73a"}.fa-circle-up-left:before{content:"\e128"}.fa-dharmachakra:before{content:"\f655"}.fa-objects-align-left:before{content:"\e3be"}.fa-oil-can-drip:before{content:"\e205"}.fa-face-smiling-hands:before{content:"\e396"}.fa-broccoli:before{content:"\e3e2"}.fa-route-interstate:before{content:"\f61b"}.fa-ear-muffs:before{content:"\f795"}.fa-hotdog:before{content:"\f80f"}.fa-transporter-empty:before{content:"\e046"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-angle-90:before{content:"\e08d"}.fa-rectangle-terminal:before{content:"\e236"}.fa-kite:before{content:"\f6f4"}.fa-drum:before{content:"\f569"}.fa-scrubber:before{content:"\f2f8"}.fa-ice-cream:before{content:"\f810"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-fish-bones:before{content:"\e304"}.fa-deer-rudolph:before{content:"\f78f"}.fa-fax:before{content:"\f1ac"}.fa-paragraph:before{content:"\f1dd"}.fa-head-side-heart:before{content:"\e1aa"}.fa-square-e:before{content:"\e26d"}.fa-meter-fire:before{content:"\e1eb"}.fa-cloud-hail:before{content:"\f739"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-money-from-bracket:before{content:"\e312"}.fa-star-half:before{content:"\f089"}.fa-car-bus:before{content:"\f85a"}.fa-speaker:before{content:"\f8df"}.fa-timer:before{content:"\e29e"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-grill-hot:before{content:"\e5a5"}.fa-ballot-check:before{content:"\f733"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-file-minus:before{content:"\f318"}.fa-tree-city:before{content:"\e587"}.fa-play:before{content:"\f04b"}.fa-font:before{content:"\f031"}.fa-coffee-togo:before,.fa-cup-togo:before{content:"\f6c5"}.fa-square-down-left:before{content:"\e26b"}.fa-burger-lettuce:before{content:"\e3e3"}.fa-rupiah-sign:before{content:"\e23d"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-chevron-double-down:before,.fa-chevrons-down:before{content:"\f322"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-signal-3:before,.fa-signal-good:before{content:"\f68e"}.fa-location-question:before,.fa-map-marker-question:before{content:"\f60b"}.fa-floppy-disk-circle-xmark:before,.fa-floppy-disk-times:before,.fa-save-circle-xmark:before,.fa-save-times:before{content:"\e181"}.fa-naira-sign:before{content:"\e1f6"}.fa-peach:before{content:"\e20b"}.fa-taxi-bus:before{content:"\e298"}.fa-bracket-curly-left:before,.fa-bracket-curly:before{content:"\7b"}.fa-lobster:before{content:"\e421"}.fa-cart-flatbed-empty:before,.fa-dolly-flatbed-empty:before{content:"\f476"}.fa-colon:before{content:"\3a"}.fa-cart-arrow-down:before{content:"\f218"}.fa-wand:before{content:"\f72a"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-receipt:before{content:"\f543"}.fa-table-picnic:before{content:"\e32d"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-circle-microphone-lines:before,.fa-microphone-circle-alt:before{content:"\e117"}.fa-desktop-slash:before,.fa-display-slash:before{content:"\e2fa"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-transporter-2:before{content:"\e044"}.fa-hand-receiving:before,.fa-hands-holding-diamond:before{content:"\f47c"}.fa-money-bill-simple-wave:before{content:"\e1f2"}.fa-chevron-down:before{content:"\f078"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-bell-plus:before{content:"\f849"}.fa-book-arrow-right:before{content:"\e0b9"}.fa-hospitals:before{content:"\f80e"}.fa-club:before{content:"\f327"}.fa-skull-crossbones:before{content:"\f714"}.fa-dewpoint:before,.fa-droplet-degree:before{content:"\f748"}.fa-code-compare:before{content:"\e13a"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-hand-holding-magic:before{content:"\f6e5"}.fa-watermelon-slice:before{content:"\e337"}.fa-circle-ellipsis:before{content:"\e10a"}.fa-school-lock:before{content:"\e56f"}.fa-tower-cell:before{content:"\e585"}.fa-sd-cards:before{content:"\e240"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-envelopes:before{content:"\e170"}.fa-phone-office:before{content:"\f67d"}.fa-ranking-star:before{content:"\e561"}.fa-chess-king:before{content:"\f43f"}.fa-nfc-pen:before{content:"\e1fa"}.fa-person-harassing:before{content:"\e549"}.fa-hat-winter:before{content:"\f7a8"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-bone-break:before{content:"\f5d8"}.fa-arrow-up:before{content:"\f062"}.fa-down-from-dotted-line:before{content:"\e407"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-border-left:before{content:"\f84f"}.fa-circle-divide:before{content:"\e106"}.fa-shrimp:before{content:"\e448"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-diagram-subtask:before{content:"\e479"}.fa-jug-detergent:before{content:"\e519"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-square-y:before{content:"\e287"}.fa-user-doctor-hair:before{content:"\e458"}.fa-planet-ringed:before{content:"\e020"}.fa-mushroom:before{content:"\e425"}.fa-user-shield:before{content:"\f505"}.fa-megaphone:before{content:"\f675"}.fa-wreath-laurel:before{content:"\e5d2"}.fa-circle-exclamation-check:before{content:"\e10d"}.fa-wind:before{content:"\f72e"}.fa-box-dollar:before,.fa-box-usd:before{content:"\f4a0"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-y:before{content:"\59"}.fa-user-headset:before{content:"\f82d"}.fa-arrows-retweet:before,.fa-retweet-alt:before{content:"\f361"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-chevron-square-right:before,.fa-square-chevron-right:before{content:"\f32b"}.fa-lacrosse-stick-ball:before{content:"\e3b6"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-user-magnifying-glass:before{content:"\e5c5"}.fa-star-sharp:before{content:"\e28b"}.fa-comment-heart:before{content:"\e5c8"}.fa-circle-1:before{content:"\e0ee"}.fa-circle-star:before,.fa-star-circle:before{content:"\e123"}.fa-fish:before{content:"\f578"}.fa-cloud-fog:before,.fa-fog:before{content:"\f74e"}.fa-waffle:before{content:"\e466"}.fa-music-alt:before,.fa-music-note:before{content:"\f8cf"}.fa-hexagon-exclamation:before{content:"\e417"}.fa-cart-shopping-fast:before{content:"\e0dc"}.fa-object-union:before{content:"\e49f"}.fa-user-graduate:before{content:"\f501"}.fa-starfighter:before{content:"\e037"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-arrow-right-long-to-line:before{content:"\e3d5"}.fa-arrow-square-down:before,.fa-square-arrow-down:before{content:"\f339"}.fa-diamond-half-stroke:before{content:"\e5b8"}.fa-clapperboard:before{content:"\e131"}.fa-chevron-square-left:before,.fa-square-chevron-left:before{content:"\f32a"}.fa-phone-intercom:before{content:"\e434"}.fa-chain-horizontal:before,.fa-link-horizontal:before{content:"\e1cb"}.fa-mango:before{content:"\e30f"}.fa-music-alt-slash:before,.fa-music-note-slash:before{content:"\f8d0"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-face-tongue-sweat:before{content:"\e39e"}.fa-globe-stand:before{content:"\f5f6"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-circle-p:before{content:"\e11a"}.fa-award-simple:before{content:"\e0ab"}.fa-jet-fighter-up:before{content:"\e518"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-pedestal:before{content:"\e20d"}.fa-chart-pyramid:before{content:"\e0e6"}.fa-sidebar:before{content:"\e24e"}.fa-frosty-head:before,.fa-snowman-head:before{content:"\f79b"}.fa-copy:before{content:"\f0c5"}.fa-burger-glass:before{content:"\e0ce"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-hand-sparkles:before{content:"\e05d"}.fa-bars-filter:before{content:"\e0ad"}.fa-paintbrush-pencil:before{content:"\e206"}.fa-party-bell:before{content:"\e31a"}.fa-user-vneck-hair:before{content:"\e462"}.fa-jack-o-lantern:before{content:"\f30e"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-keynote:before{content:"\f66c"}.fa-child-combatant:before,.fa-child-rifle:before{content:"\e4e0"}.fa-gun:before{content:"\e19b"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-expand:before{content:"\f065"}.fa-computer:before{content:"\e4e5"}.fa-fort:before{content:"\e486"}.fa-cloud-check:before{content:"\e35c"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-face-smirking:before{content:"\e397"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-rhombus:before{content:"\e23b"}.fa-claw-marks:before{content:"\f6c2"}.fa-peso-sign:before{content:"\e222"}.fa-face-smile-tongue:before{content:"\e394"}.fa-cart-circle-xmark:before{content:"\e3f4"}.fa-building-shield:before{content:"\e4d8"}.fa-circle-phone-flip:before,.fa-phone-circle-alt:before{content:"\e11c"}.fa-baby:before{content:"\f77c"}.fa-users-line:before{content:"\e592"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-tractor:before{content:"\f722"}.fa-key-skeleton:before{content:"\f6f3"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-arrow-down-to-bracket:before{content:"\e094"}.fa-lines-leaning:before{content:"\e51e"}.fa-square-q:before{content:"\e27b"}.fa-ruler-combined:before{content:"\f546"}.fa-icons-alt:before,.fa-symbols:before{content:"\f86e"}.fa-copyright:before{content:"\f1f9"}.fa-highlighter-line:before{content:"\e1af"}.fa-bracket-left:before,.fa-bracket-square:before,.fa-bracket:before{content:"\5b"}.fa-island-tree-palm:before,.fa-island-tropical:before{content:"\f811"}.fa-arrow-from-left:before,.fa-arrow-right-from-line:before{content:"\f343"}.fa-h2:before{content:"\f314"}.fa-equals:before{content:"\3d"}.fa-cake-slice:before,.fa-shortcake:before{content:"\e3e5"}.fa-peanut:before{content:"\e430"}.fa-wrench-simple:before{content:"\e2d1"}.fa-blender:before{content:"\f517"}.fa-teeth:before{content:"\f62e"}.fa-tally-2:before{content:"\e295"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-cars:before{content:"\f85b"}.fa-axe-battle:before{content:"\f6b3"}.fa-user-hair-long:before{content:"\e45b"}.fa-map:before{content:"\f279"}.fa-file-circle-info:before{content:"\e493"}.fa-face-disappointed:before{content:"\e36f"}.fa-lasso-sparkles:before{content:"\e1c9"}.fa-clock-eleven:before{content:"\e347"}.fa-rocket:before{content:"\f135"}.fa-siren-on:before{content:"\e02e"}.fa-clock-ten:before{content:"\e354"}.fa-candle-holder:before{content:"\f6bc"}.fa-video-arrow-down-left:before{content:"\e2c8"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-floppy-disk-circle-arrow-right:before,.fa-save-circle-arrow-right:before{content:"\e180"}.fa-folder-minus:before{content:"\f65d"}.fa-planet-moon:before{content:"\e01f"}.fa-face-eyes-xmarks:before{content:"\e374"}.fa-chart-scatter:before{content:"\f7ee"}.fa-display-arrow-down:before{content:"\e164"}.fa-store:before{content:"\f54e"}.fa-arrow-trend-up:before{content:"\e098"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-olive-branch:before{content:"\e317"}.fa-angle:before{content:"\e08c"}.fa-vacuum-robot:before{content:"\e04e"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-square-divide:before{content:"\e26a"}.fa-signal-stream-slash:before{content:"\e250"}.fa-bezier-curve:before{content:"\f55b"}.fa-eye-dropper-half:before{content:"\e173"}.fa-store-lock:before{content:"\e4a6"}.fa-bell-slash:before{content:"\f1f6"}.fa-cloud-bolt-sun:before,.fa-thunderstorm-sun:before{content:"\f76e"}.fa-camera-slash:before{content:"\e0d9"}.fa-comment-quote:before{content:"\e14c"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-school-flag:before{content:"\e56e"}.fa-message-code:before{content:"\e1df"}.fa-glass-half-empty:before,.fa-glass-half-full:before,.fa-glass-half:before{content:"\e192"}.fa-fill:before{content:"\f575"}.fa-comment-alt-minus:before,.fa-message-minus:before{content:"\f4a7"}.fa-angle-up:before{content:"\f106"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-chain-horizontal-slash:before,.fa-link-horizontal-slash:before{content:"\e1cc"}.fa-holly-berry:before{content:"\f7aa"}.fa-nose:before{content:"\e5bd"}.fa-chevron-left:before{content:"\f053"}.fa-bacteria:before{content:"\e059"}.fa-clouds:before{content:"\f744"}.fa-money-bill-simple:before{content:"\e1f1"}.fa-hand-lizard:before{content:"\f258"}.fa-table-pivot:before{content:"\e291"}.fa-filter-slash:before{content:"\e17d"}.fa-trash-can-arrow-turn-left:before,.fa-trash-can-undo:before,.fa-trash-undo-alt:before{content:"\f896"}.fa-notdef:before{content:"\e1fe"}.fa-disease:before{content:"\f7fa"}.fa-person-to-door:before{content:"\e433"}.fa-turntable:before{content:"\f8e4"}.fa-briefcase-medical:before{content:"\f469"}.fa-genderless:before{content:"\f22d"}.fa-chevron-right:before{content:"\f054"}.fa-signal-1:before,.fa-signal-weak:before{content:"\f68c"}.fa-clock-five:before{content:"\e349"}.fa-retweet:before{content:"\f079"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-pump-soap:before{content:"\e06b"}.fa-computer-classic:before{content:"\f8b1"}.fa-frame:before{content:"\e495"}.fa-video-slash:before{content:"\f4e2"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-ellipsis-h-alt:before,.fa-ellipsis-stroke:before{content:"\f39b"}.fa-radio:before{content:"\f8d7"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-face-expressionless:before{content:"\e373"}.fa-down-to-dotted-line:before{content:"\e408"}.fa-cloud-music:before{content:"\f8ae"}.fa-traffic-light:before{content:"\f637"}.fa-cloud-minus:before{content:"\e35d"}.fa-thermometer:before{content:"\f491"}.fa-shield-minus:before{content:"\e249"}.fa-vr-cardboard:before{content:"\f729"}.fa-car-tilt:before{content:"\f5e5"}.fa-gauge-circle-minus:before{content:"\e497"}.fa-brightness-low:before{content:"\e0ca"}.fa-hand-middle-finger:before{content:"\f806"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-truck-moving:before{content:"\f4df"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-conveyor-belt:before{content:"\f46e"}.fa-location-check:before,.fa-map-marker-check:before{content:"\f606"}.fa-coin-vertical:before{content:"\e3fd"}.fa-display:before{content:"\e163"}.fa-person-sign:before{content:"\f757"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-phone-hangup:before{content:"\e225"}.fa-signature-slash:before{content:"\e3cb"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-wheat-slash:before{content:"\e339"}.fa-trophy:before{content:"\f091"}.fa-clouds-sun:before{content:"\f746"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-hammer:before{content:"\f6e3"}.fa-face-vomit:before{content:"\e3a0"}.fa-speakers:before{content:"\f8e0"}.fa-teletype-answer:before,.fa-tty-answer:before{content:"\e2b9"}.fa-mug-tea-saucer:before{content:"\e1f5"}.fa-diagram-lean-canvas:before{content:"\e156"}.fa-alt:before{content:"\e08a"}.fa-dial-med-high:before,.fa-dial:before{content:"\e15b"}.fa-hand-peace:before{content:"\f25b"}.fa-circle-trash:before,.fa-trash-circle:before{content:"\e126"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-circle-quarters:before{content:"\e3f8"}.fa-spinner:before{content:"\f110"}.fa-tower-control:before{content:"\e2a2"}.fa-arrow-up-triangle-square:before,.fa-sort-shapes-up:before{content:"\f88a"}.fa-whale:before{content:"\f72c"}.fa-robot:before{content:"\f544"}.fa-peace:before{content:"\f67c"}.fa-party-horn:before{content:"\e31b"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-sun-alt:before,.fa-sun-bright:before{content:"\e28f"}.fa-warehouse:before{content:"\f494"}.fa-lock-keyhole-open:before,.fa-lock-open-alt:before{content:"\f3c2"}.fa-box-fragile:before,.fa-square-fragile:before,.fa-square-wine-glass-crack:before{content:"\f49b"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-square-n:before{content:"\e277"}.fa-splotch:before{content:"\f5bc"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-meter:before{content:"\e1e8"}.fa-mandolin:before{content:"\f6f9"}.fa-dice-four:before{content:"\f524"}.fa-sim-card:before{content:"\f7c4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-mercury:before{content:"\f223"}.fa-up-from-bracket:before{content:"\e590"}.fa-knife-kitchen:before{content:"\f6f5"}.fa-border-right:before{content:"\f852"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-spade:before{content:"\f2f4"}.fa-card-spade:before{content:"\e3ec"}.fa-line-columns:before{content:"\f870"}.fa-arrow-right-to-line:before,.fa-arrow-to-right:before{content:"\f340"}.fa-person-falling-burst:before{content:"\e547"}.fa-flag-pennant:before,.fa-pennant:before{content:"\f456"}.fa-conveyor-belt-empty:before{content:"\e150"}.fa-award:before{content:"\f559"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-building:before{content:"\f1ad"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-camcorder:before,.fa-video-handheld:before{content:"\f8a8"}.fa-pancakes:before{content:"\e42d"}.fa-album-circle-user:before{content:"\e48d"}.fa-qrcode:before{content:"\f029"}.fa-dice-d10:before{content:"\f6cd"}.fa-fireplace:before{content:"\f79a"}.fa-browser:before{content:"\f37e"}.fa-pen-paintbrush:before,.fa-pencil-paintbrush:before{content:"\f618"}.fa-fish-cooked:before{content:"\f7fe"}.fa-chair-office:before{content:"\f6c1"}.fa-nesting-dolls:before{content:"\e3ba"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-trumpet:before{content:"\f8e3"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-fire-smoke:before{content:"\f74b"}.fa-phone-missed:before{content:"\e226"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-arrows-repeat-1:before,.fa-repeat-1-alt:before{content:"\f366"}.fa-gun-slash:before{content:"\e19c"}.fa-avocado:before{content:"\e0aa"}.fa-binary:before{content:"\e33b"}.fa-glasses-alt:before,.fa-glasses-round:before{content:"\f5f5"}.fa-phone-plus:before{content:"\f4d2"}.fa-ditto:before{content:"\22"}.fa-person-seat:before{content:"\e21e"}.fa-house-medical:before{content:"\e3b2"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-house-chimney-window:before{content:"\e00d"}.fa-scythe:before{content:"\f710"}.fa-pen-nib:before{content:"\f5ad"}.fa-ban-parking:before,.fa-parking-circle-slash:before{content:"\f616"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-face-diagonal-mouth:before{content:"\e47e"}.fa-diagram-cells:before{content:"\e475"}.fa-cricket-bat-ball:before,.fa-cricket:before{content:"\f449"}.fa-tents:before{content:"\e582"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-dog:before{content:"\f6d3"}.fa-pen-line:before{content:"\e212"}.fa-atom-alt:before,.fa-atom-simple:before{content:"\f5d3"}.fa-ampersand:before{content:"\26"}.fa-carrot:before{content:"\f787"}.fa-arrow-from-bottom:before,.fa-arrow-up-from-line:before{content:"\f342"}.fa-moon:before{content:"\f186"}.fa-pen-slash:before{content:"\e213"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-square-star:before{content:"\e27f"}.fa-cheese:before{content:"\f7ef"}.fa-send-backward:before{content:"\f87f"}.fa-yin-yang:before{content:"\f6ad"}.fa-music:before{content:"\f001"}.fa-compass-slash:before{content:"\f5e9"}.fa-clock-one:before{content:"\e34e"}.fa-file-music:before{content:"\f8b6"}.fa-code-commit:before{content:"\f386"}.fa-temperature-low:before{content:"\f76b"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-skeleton:before{content:"\f620"}.fa-circle-g:before{content:"\e10f"}.fa-circle-arrow-up-left:before{content:"\e0fb"}.fa-coin-blank:before{content:"\e3fb"}.fa-broom:before{content:"\f51a"}.fa-vacuum:before{content:"\e04d"}.fa-shield-heart:before{content:"\e574"}.fa-card-heart:before{content:"\e3eb"}.fa-lightbulb-cfl-on:before{content:"\e5a7"}.fa-melon:before{content:"\e310"}.fa-gopuram:before{content:"\f664"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-container-storage:before{content:"\f4b7"}.fa-face-pouting:before{content:"\e387"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-exploding-head:before,.fa-face-explode:before{content:"\e2fe"}.fa-hashtag:before{content:"\23"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-oil-can:before{content:"\f613"}.fa-t:before{content:"\54"}.fa-transformer-bolt:before{content:"\e2a4"}.fa-hippo:before{content:"\f6ed"}.fa-chart-column:before{content:"\e0e3"}.fa-cassette-vhs:before,.fa-vhs:before{content:"\f8ec"}.fa-infinity:before{content:"\f534"}.fa-vial-circle-check:before{content:"\e596"}.fa-chimney:before{content:"\f78b"}.fa-object-intersect:before{content:"\e49d"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-voicemail:before{content:"\f897"}.fa-block-brick:before,.fa-wall-brick:before{content:"\e3db"}.fa-fan:before{content:"\f863"}.fa-bags-shopping:before{content:"\f847"}.fa-paragraph-left:before,.fa-paragraph-rtl:before{content:"\f878"}.fa-person-walking-luggage:before{content:"\e554"}.fa-caravan-alt:before,.fa-caravan-simple:before{content:"\e000"}.fa-turtle:before{content:"\f726"}.fa-pencil-mechanical:before{content:"\e5ca"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-booth-curtain:before{content:"\f734"}.fa-calendar:before{content:"\f133"}.fa-box-heart:before{content:"\f49d"}.fa-trailer:before{content:"\e041"}.fa-user-doctor-message:before,.fa-user-md-chat:before{content:"\f82e"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-amp-guitar:before{content:"\f8a1"}.fa-sd-card:before{content:"\f7c2"}.fa-volume-slash:before{content:"\f2e2"}.fa-border-bottom:before{content:"\f84d"}.fa-wifi-1:before,.fa-wifi-weak:before{content:"\f6aa"}.fa-dragon:before{content:"\f6d5"}.fa-shoe-prints:before{content:"\f54b"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-hand-holding:before{content:"\f4bd"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-clone:before{content:"\f24d"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-tornado:before{content:"\f76f"}.fa-file-circle-plus:before{content:"\e494"}.fa-delete-right:before{content:"\e154"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-circle-quarter:before{content:"\e11f"}.fa-anchor:before{content:"\f13d"}.fa-border-all:before{content:"\f84c"}.fa-function:before{content:"\f661"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-people-simple:before{content:"\e21b"}.fa-cookie-bite:before{content:"\f564"}.fa-arrow-trend-down:before{content:"\e097"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-face-monocle:before{content:"\e380"}.fa-draw-polygon:before{content:"\f5ee"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-calendar-lines:before,.fa-calendar-note:before{content:"\e0d5"}.fa-arrow-down-big-small:before,.fa-sort-size-down:before{content:"\f88c"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-do-not-enter:before{content:"\f5ec"}.fa-shower:before{content:"\f2cc"}.fa-dice-d8:before{content:"\f6d2"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-m:before{content:"\4d"}.fa-grip-dots-vertical:before{content:"\e411"}.fa-face-viewfinder:before{content:"\e2ff"}.fa-creemee:before,.fa-soft-serve:before{content:"\e400"}.fa-h5:before{content:"\e412"}.fa-hand-back-point-down:before{content:"\e19e"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-rectangle-landscape:before,.fa-rectangle:before{content:"\f2fa"}.fa-clipboard-list-check:before{content:"\f737"}.fa-turkey:before{content:"\f725"}.fa-book:before{content:"\f02d"}.fa-user-plus:before{content:"\f234"}.fa-ice-skate:before{content:"\f7ac"}.fa-check:before{content:"\f00c"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-tomato:before{content:"\e330"}.fa-sword-laser:before{content:"\e03b"}.fa-house-circle-check:before{content:"\e509"}.fa-buildings:before{content:"\e0cc"}.fa-angle-left:before{content:"\f104"}.fa-cart-flatbed-boxes:before,.fa-dolly-flatbed-alt:before{content:"\f475"}.fa-diagram-successor:before{content:"\e47a"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-square-w:before{content:"\e285"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-lamp:before{content:"\f4ca"}.fa-airplay:before{content:"\e089"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-shield-quartered:before{content:"\e575"}.fa-slash-forward:before{content:"\2f"}.fa-location-pen:before,.fa-map-marker-edit:before{content:"\f607"}.fa-cloud-moon:before{content:"\f6c3"}.fa-pot-food:before{content:"\e43f"}.fa-briefcase:before{content:"\f0b1"}.fa-person-falling:before{content:"\e546"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-user-tag:before{content:"\f507"}.fa-rug:before{content:"\e569"}.fa-print-slash:before{content:"\f686"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-hand-back-point-ribbon:before{content:"\e1a0"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-tire-rugged:before{content:"\f634"}.fa-lightbulb-dollar:before{content:"\f670"}.fa-cowbell:before{content:"\f8b3"}.fa-baht-sign:before{content:"\e0ac"}.fa-corner:before{content:"\e3fe"}.fa-chevron-double-right:before,.fa-chevrons-right:before{content:"\f324"}.fa-book-open:before{content:"\f518"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-inhaler:before{content:"\f5f9"}.fa-handcuffs:before{content:"\e4f8"}.fa-snake:before{content:"\f716"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-note-medical:before{content:"\e200"}.fa-database:before{content:"\f1c0"}.fa-down-left:before{content:"\e16a"}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-face-thinking:before{content:"\e39b"}.fa-turn-down-right:before{content:"\e455"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-mask-face:before{content:"\e1d7"}.fa-hill-rockslide:before{content:"\e508"}.fa-scanner-keyboard:before{content:"\f489"}.fa-circle-o:before{content:"\e119"}.fa-grid-horizontal:before{content:"\e307"}.fa-comment-alt-dollar:before,.fa-message-dollar:before{content:"\f650"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-columns-3:before{content:"\e361"}.fa-paper-plane:before{content:"\f1d8"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-dungeon:before{content:"\f6d9"}.fa-hand-holding-box:before{content:"\f47b"}.fa-input-text:before{content:"\e1bf"}.fa-window-alt:before,.fa-window-flip:before{content:"\f40f"}.fa-align-right:before{content:"\f038"}.fa-scanner-gun:before,.fa-scanner:before{content:"\f488"}.fa-tire:before{content:"\f631"}.fa-engine:before{content:"\e16e"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-life-ring:before{content:"\f1cd"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-caret-circle-right:before,.fa-circle-caret-right:before{content:"\f330"}.fa-wheat:before{content:"\f72d"}.fa-file-spreadsheet:before{content:"\f65b"}.fa-audio-description-slash:before{content:"\e0a8"}.fa-calendar-day:before{content:"\f783"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-chess-pawn-alt:before,.fa-chess-pawn-piece:before{content:"\f444"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-square-s:before{content:"\e27d"}.fa-barcode-alt:before,.fa-rectangle-barcode:before{content:"\f463"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-dice:before{content:"\f522"}.fa-unicorn:before{content:"\f727"}.fa-bowling-ball:before{content:"\f436"}.fa-pompebled:before{content:"\e43d"}.fa-brain:before{content:"\f5dc"}.fa-watch-smart:before{content:"\e2cc"}.fa-book-user:before{content:"\f7e7"}.fa-sensor-cloud:before,.fa-sensor-smoke:before{content:"\e02c"}.fa-clapperboard-play:before{content:"\e132"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-calendar-minus:before{content:"\f272"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-circle-4:before{content:"\e0f1"}.fa-gifts:before{content:"\f79c"}.fa-album-collection:before{content:"\f8a0"}.fa-hotel:before{content:"\f594"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-thumbs-up:before{content:"\f164"}.fa-cloud-showers:before{content:"\f73f"}.fa-user-clock:before{content:"\f4fd"}.fa-onion:before{content:"\e427"}.fa-clock-twelve-thirty:before{content:"\e359"}.fa-arrow-down-to-dotted-line:before{content:"\e095"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-file-invoice:before{content:"\f570"}.fa-window-minimize:before{content:"\f2d1"}.fa-rectangle-wide:before{content:"\f2fc"}.fa-comment-arrow-up:before{content:"\e144"}.fa-garlic:before{content:"\e40e"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-brush:before{content:"\f55d"}.fa-tree-decorated:before{content:"\f7dc"}.fa-mask:before{content:"\f6fa"}.fa-calendar-heart:before{content:"\e0d3"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-flower:before{content:"\f7ff"}.fa-ruler-vertical:before{content:"\f548"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-starship-freighter:before{content:"\e03a"}.fa-train-tram:before{content:"\e5b4"}.fa-bridge-suspension:before{content:"\e4cd"}.fa-trash-check:before{content:"\e2af"}.fa-user-nurse:before{content:"\f82f"}.fa-boombox:before{content:"\f8a5"}.fa-syringe:before{content:"\f48e"}.fa-cloud-sun:before{content:"\f6c4"}.fa-shield-exclamation:before{content:"\e247"}.fa-stopwatch-20:before{content:"\e06f"}.fa-square-full:before{content:"\f45c"}.fa-grip-dots:before{content:"\e410"}.fa-comment-exclamation:before{content:"\f4af"}.fa-pen-swirl:before{content:"\e214"}.fa-falafel:before{content:"\e40a"}.fa-circle-2:before{content:"\e0ef"}.fa-magnet:before{content:"\f076"}.fa-jar:before{content:"\e516"}.fa-gramophone:before{content:"\f8bd"}.fa-dice-d12:before{content:"\f6ce"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-arrow-alt-down:before,.fa-down:before{content:"\f354"}.fa-100:before,.fa-hundred-points:before{content:"\e41c"}.fa-paperclip-vertical:before{content:"\e3c2"}.fa-wind-circle-exclamation:before,.fa-wind-warning:before{content:"\f776"}.fa-location-pin-slash:before,.fa-map-marker-slash:before{content:"\f60c"}.fa-face-sad-sweat:before{content:"\e38a"}.fa-bug-slash:before{content:"\e490"}.fa-cupcake:before{content:"\e402"}.fa-light-switch-off:before{content:"\e018"}.fa-toggle-large-off:before{content:"\e5b0"}.fa-pen-fancy-slash:before{content:"\e210"}.fa-truck-container:before{content:"\f4dc"}.fa-boot:before{content:"\f782"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-file-check:before{content:"\f316"}.fa-bone:before{content:"\f5d7"}.fa-cards-blank:before{content:"\e4df"}.fa-circle-3:before{content:"\e0f0"}.fa-bench-tree:before{content:"\e2e7"}.fa-keyboard-brightness-low:before{content:"\e1c1"}.fa-ski-boot-ski:before{content:"\e3cd"}.fa-brain-circuit:before{content:"\e0c6"}.fa-user-injured:before{content:"\f728"}.fa-block-brick-fire:before,.fa-firewall:before{content:"\e3dc"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-plane:before{content:"\f072"}.fa-tent-arrows-down:before{content:"\e581"}.fa-exclamation:before{content:"\21"}.fa-arrows-spin:before{content:"\e4bb"}.fa-face-smile-relaxed:before{content:"\e392"}.fa-comment-times:before,.fa-comment-xmark:before{content:"\f4b5"}.fa-print:before{content:"\f02f"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-face-nose-steam:before{content:"\e382"}.fa-circle-waveform-lines:before,.fa-waveform-circle:before{content:"\e12d"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-ferris-wheel:before{content:"\e174"}.fa-computer-speaker:before{content:"\f8b2"}.fa-skull-cow:before{content:"\f8de"}.fa-x:before{content:"\58"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-person-military-pointing:before{content:"\e54a"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-circle-t:before{content:"\e124"}.fa-sack:before{content:"\f81c"}.fa-grid-2:before{content:"\e196"}.fa-camera-cctv:before,.fa-cctv:before{content:"\f8ac"}.fa-umbrella:before{content:"\f0e9"}.fa-trowel:before{content:"\e589"}.fa-horizontal-rule:before{content:"\f86c"}.fa-bed-alt:before,.fa-bed-front:before{content:"\f8f7"}.fa-d:before{content:"\44"}.fa-stapler:before{content:"\e5af"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-kip-sign:before{content:"\e1c4"}.fa-face-woozy:before{content:"\e3a2"}.fa-cloud-question:before{content:"\e492"}.fa-pineapple:before{content:"\e31f"}.fa-hand-point-left:before{content:"\f0a5"}.fa-gallery-thumbnails:before{content:"\e3aa"}.fa-circle-j:before{content:"\e112"}.fa-eyes:before{content:"\e367"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-file-caret-up:before,.fa-page-caret-up:before{content:"\e42a"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-comet:before{content:"\e003"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-shield-keyhole:before{content:"\e248"}.fa-barcode:before{content:"\f02a"}.fa-plus-minus:before{content:"\e43c"}.fa-sliders-v-square:before,.fa-square-sliders-vertical:before{content:"\f3f2"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-comment-middle-alt:before,.fa-message-middle:before{content:"\e1e1"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-person-circle-check:before{content:"\e53e"}.fa-square-z:before{content:"\e288"}.fa-comment-alt-text:before,.fa-message-text:before{content:"\e1e6"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"} -.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0} \ No newline at end of file diff --git a/webshare/static/fontawesome/css/sharp-regular.min.css b/webshare/static/fontawesome/css/sharp-regular.min.css deleted file mode 100644 index cdbbfdc9..00000000 --- a/webshare/static/fontawesome/css/sharp-regular.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license (Commercial License) - * Copyright 2023 Fonticons, Inc. - */ -:host,:root{--fa-style-family-sharp:"Font Awesome 6 Sharp";--fa-font-sharp-regular:normal 400 1em/1 "Font Awesome 6 Sharp"}@font-face{font-family:"Font Awesome 6 Sharp";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-sharp-regular-400.woff2) format("woff2"),url(../webfonts/fa-sharp-regular-400.ttf) format("truetype")}.fa-regular,.fasr{font-weight:400} \ No newline at end of file diff --git a/webshare/static/fontawesome/css/sharp-solid.min.css b/webshare/static/fontawesome/css/sharp-solid.min.css deleted file mode 100644 index 2ad5ed70..00000000 --- a/webshare/static/fontawesome/css/sharp-solid.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license (Commercial License) - * Copyright 2023 Fonticons, Inc. - */ -:host,:root{--fa-style-family-sharp:"Font Awesome 6 Sharp";--fa-font-sharp-solid:normal 900 1em/1 "Font Awesome 6 Sharp"}@font-face{font-family:"Font Awesome 6 Sharp";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-sharp-solid-900.woff2) format("woff2"),url(../webfonts/fa-sharp-solid-900.ttf) format("truetype")}.fa-solid,.fass{font-weight:900} \ No newline at end of file diff --git a/webshare/static/fontawesome/css/solid.min.css b/webshare/static/fontawesome/css/solid.min.css deleted file mode 100644 index 43b79e77..00000000 --- a/webshare/static/fontawesome/css/solid.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license (Commercial License) - * Copyright 2023 Fonticons, Inc. - */ -:host,:root{--fa-style-family-classic:"Font Awesome 6 Pro";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Pro"}@font-face{font-family:"Font Awesome 6 Pro";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")}.fa-solid,.fas{font-weight:900} \ No newline at end of file diff --git a/webshare/static/fontawesome/webfonts/fa-brands-400.woff2 b/webshare/static/fontawesome/webfonts/fa-brands-400.woff2 deleted file mode 100644 index 83e867553153814f50e941ec3416015306e81e46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109100 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