├── .eslintignore ├── .eslintrc.cjs ├── .gitignore ├── .prettierignore ├── .prettierrc ├── README.md ├── package.json ├── pnpm-lock.yaml ├── postcss.config.cjs ├── src ├── app.css ├── app.d.ts ├── app.html ├── assets │ ├── LICENSE.txt │ ├── css │ │ ├── all.css │ │ ├── all.min.css │ │ ├── brands.css │ │ ├── brands.min.css │ │ ├── fontawesome.css │ │ ├── fontawesome.min.css │ │ ├── regular.css │ │ ├── regular.min.css │ │ ├── solid.css │ │ ├── solid.min.css │ │ ├── svg-with-js.css │ │ ├── svg-with-js.min.css │ │ ├── v4-font-face.css │ │ ├── v4-font-face.min.css │ │ ├── v4-shims.css │ │ ├── v4-shims.min.css │ │ ├── v5-font-face.css │ │ └── v5-font-face.min.css │ └── webfonts │ │ ├── fa-brands-400.ttf │ │ ├── fa-brands-400.woff2 │ │ ├── fa-regular-400.ttf │ │ ├── fa-regular-400.woff2 │ │ ├── fa-solid-900.ttf │ │ ├── fa-solid-900.woff2 │ │ ├── fa-v4compatibility.ttf │ │ └── fa-v4compatibility.woff2 ├── canvas-sketch-util.d.ts ├── hooks.server.ts ├── index.test.ts ├── lib │ ├── components │ │ ├── Countdown.svelte │ │ ├── FileLoader.svelte │ │ ├── Legacy │ │ │ └── accordions.svelte │ │ ├── NoMobileTabPage.svelte │ │ ├── RightSideControls │ │ │ ├── ColorRandomizer.svelte │ │ │ └── OpacitySlider.svelte │ │ ├── ScatterPoint.svelte │ │ ├── Scrolly.svelte │ │ └── Title.svelte │ ├── db.ts │ ├── global.css │ ├── toast.ts │ ├── utils.ts │ └── utils │ │ └── time.ts └── routes │ ├── +layout.server.ts │ ├── +layout.svelte │ ├── +page.server.ts │ ├── +page.svelte │ ├── DataPoint.svelte │ └── debug │ └── +page.svelte ├── static ├── datasets │ ├── colors.json │ └── outf.json └── favicon.png ├── svelte.config.js ├── tailwind.config.cjs ├── tsconfig.json └── vite.config.ts /.eslintignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | 10 | # Ignore files for PNPM, NPM and YARN 11 | pnpm-lock.yaml 12 | package-lock.json 13 | yarn.lock 14 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parser: '@typescript-eslint/parser', 4 | extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'], 5 | plugins: ['svelte3', '@typescript-eslint'], 6 | ignorePatterns: ['*.cjs'], 7 | overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }], 8 | settings: { 9 | 'svelte3/typescript': () => require('typescript') 10 | }, 11 | parserOptions: { 12 | sourceType: 'module', 13 | ecmaVersion: 2020 14 | }, 15 | env: { 16 | browser: true, 17 | es2017: true, 18 | node: true 19 | } 20 | }; 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | vite.config.js.timestamp-* 10 | vite.config.ts.timestamp-* 11 | .history -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | 10 | # Ignore files for PNPM, NPM and YARN 11 | pnpm-lock.yaml 12 | package-lock.json 13 | yarn.lock 14 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100, 6 | "plugins": ["prettier-plugin-svelte"], 7 | "pluginSearchDirs": ["."], 8 | "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] 9 | } 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### Todo 2 | 3 | - Clustering X datapoints to one if close enough 4 | - loading indicator 5 | - Snakey lines instead of all straight 6 | - Customize sidebar location 7 | - fullscreen chart option 8 | - Chunked rendering , update n points at a time 9 | - Ghosted count 10 | - Who started the chat and with what message -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wttm", 3 | "version": "1.0.0-ui", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite dev ", 7 | "build": "vite build", 8 | "preview": "vite preview", 9 | "start": "vite preview", 10 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 11 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", 12 | "test:unit": "vitest", 13 | "lint": "prettier --plugin-search-dir . --check . && eslint .", 14 | "format": "prettier --plugin-search-dir . --write ." 15 | }, 16 | "devDependencies": { 17 | "@sveltejs/adapter-auto": "^3.1.0", 18 | "@sveltejs/adapter-node": "^2.0.2", 19 | "@sveltejs/kit": "^2.0.6", 20 | "@types/d3": "^7.4.3", 21 | "@types/lodash-es": "^4.17.12", 22 | "@types/nprogress": "^0.2.3", 23 | "@typescript-eslint/eslint-plugin": "^6.17.0", 24 | "@typescript-eslint/parser": "^6.17.0", 25 | "daisyui": "^4.5.0", 26 | "eslint": "^8.56.0", 27 | "eslint-config-prettier": "^9.1.0", 28 | "prettier": "^3.1.1", 29 | "prettier-plugin-svelte": "^3.1.2", 30 | "svelte": "^4.2.8", 31 | "tailwindcss": "^3.4.1", 32 | "tslib": "^2.6.2", 33 | "typescript": "^5.5.3", 34 | "vite": "^5.0.12" 35 | }, 36 | "type": "module", 37 | "dependencies": { 38 | "@sveltejs/adapter-vercel": "^4.0.4", 39 | "@sveltejs/vite-plugin-svelte": "^3.0.1", 40 | "autoprefixer": "^10.4.16", 41 | "bcrypt": "^5.1.1", 42 | "bits-ui": "^0.21.12", 43 | "canvas-sketch-util": "^1.10.0", 44 | "d3": "^7.8.5", 45 | "dotenv": "^16.3.1", 46 | "lodash-es": "^4.17.21", 47 | "phosphor-svelte": "^1.4.2", 48 | "pretty-ms": "^9.0.0", 49 | "svelte-sequential-preprocessor": "^2.0.1" 50 | }, 51 | "repository": { 52 | "type": "git", 53 | "url": "https://github.com/RobiMez/wttm.git" 54 | } 55 | } -------------------------------------------------------------------------------- /postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {} 5 | } 6 | }; 7 | -------------------------------------------------------------------------------- /src/app.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Lexend:wght@100;200;300;400;500;600;700;800;900&display=swap'); 2 | @tailwind base; 3 | @tailwind components; 4 | @tailwind utilities; 5 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://kit.svelte.dev/docs/types#app 2 | // for information about these interfaces 3 | declare global { 4 | namespace App { 5 | // interface Error {} 6 | interface Locals { 7 | user: { 8 | _id: string; 9 | // Human identifiers 10 | first_name: string; 11 | last_name: string; 12 | // Action timestamp logging 13 | last_login_date: Date; 14 | last_action_time: Date; 15 | // State flags 16 | admin: boolean; 17 | reviewer: boolean; 18 | publisher: boolean; 19 | locked: boolean; 20 | // Uniques 21 | email: string; 22 | userAuthToken: string | null; 23 | }; 24 | } 25 | // interface PageData {} 26 | // interface Platform {} 27 | } 28 | } 29 | 30 | export {}; 31 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Wttm 9 | %sveltekit.head% 10 | 11 | 12 | 13 | 14 |
%sveltekit.body%
15 | 16 | 17 | -------------------------------------------------------------------------------- /src/assets/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Fonticons, Inc. (https://fontawesome.com) 2 | 3 | -------------------------------------------------------------------------------- 4 | 5 | Font Awesome Free License 6 | 7 | Font Awesome Free is free, open source, and GPL friendly. You can use it for 8 | commercial projects, open source projects, or really almost whatever you want. 9 | Full Font Awesome Free license: https://fontawesome.com/license/free. 10 | 11 | -------------------------------------------------------------------------------- 12 | 13 | # Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/) 14 | 15 | The Font Awesome Free download is licensed under a Creative Commons 16 | Attribution 4.0 International License and applies to all icons packaged 17 | as SVG and JS file types. 18 | 19 | -------------------------------------------------------------------------------- 20 | 21 | # Fonts: SIL OFL 1.1 License 22 | 23 | In the Font Awesome Free download, the SIL OFL license applies to all icons 24 | packaged as web and desktop font files. 25 | 26 | Copyright (c) 2022 Fonticons, Inc. (https://fontawesome.com) 27 | with Reserved Font Name: "Font Awesome". 28 | 29 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 30 | This license is copied below, and is also available with a FAQ at: 31 | http://scripts.sil.org/OFL 32 | 33 | SIL OPEN FONT LICENSE 34 | Version 1.1 - 26 February 2007 35 | 36 | PREAMBLE 37 | The goals of the Open Font License (OFL) are to stimulate worldwide 38 | development of collaborative font projects, to support the font creation 39 | efforts of academic and linguistic communities, and to provide a free and 40 | open framework in which fonts may be shared and improved in partnership 41 | with others. 42 | 43 | The OFL allows the licensed fonts to be used, studied, modified and 44 | redistributed freely as long as they are not sold by themselves. The 45 | fonts, including any derivative works, can be bundled, embedded, 46 | redistributed and/or sold with any software provided that any reserved 47 | names are not used by derivative works. The fonts and derivatives, 48 | however, cannot be released under any other type of license. The 49 | requirement for fonts to remain under this license does not apply 50 | to any document created using the fonts or their derivatives. 51 | 52 | DEFINITIONS 53 | "Font Software" refers to the set of files released by the Copyright 54 | Holder(s) under this license and clearly marked as such. This may 55 | include source files, build scripts and documentation. 56 | 57 | "Reserved Font Name" refers to any names specified as such after the 58 | copyright statement(s). 59 | 60 | "Original Version" refers to the collection of Font Software components as 61 | distributed by the Copyright Holder(s). 62 | 63 | "Modified Version" refers to any derivative made by adding to, deleting, 64 | or substituting — in part or in whole — any of the components of the 65 | Original Version, by changing formats or by porting the Font Software to a 66 | new environment. 67 | 68 | "Author" refers to any designer, engineer, programmer, technical 69 | writer or other person who contributed to the Font Software. 70 | 71 | PERMISSION & CONDITIONS 72 | Permission is hereby granted, free of charge, to any person obtaining 73 | a copy of the Font Software, to use, study, copy, merge, embed, modify, 74 | redistribute, and sell modified and unmodified copies of the Font 75 | Software, subject to the following conditions: 76 | 77 | 1) Neither the Font Software nor any of its individual components, 78 | in Original or Modified Versions, may be sold by itself. 79 | 80 | 2) Original or Modified Versions of the Font Software may be bundled, 81 | redistributed and/or sold with any software, provided that each copy 82 | contains the above copyright notice and this license. These can be 83 | included either as stand-alone text files, human-readable headers or 84 | in the appropriate machine-readable metadata fields within text or 85 | binary files as long as those fields can be easily viewed by the user. 86 | 87 | 3) No Modified Version of the Font Software may use the Reserved Font 88 | Name(s) unless explicit written permission is granted by the corresponding 89 | Copyright Holder. This restriction only applies to the primary font name as 90 | presented to the users. 91 | 92 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 93 | Software shall not be used to promote, endorse or advertise any 94 | Modified Version, except to acknowledge the contribution(s) of the 95 | Copyright Holder(s) and the Author(s) or with their explicit written 96 | permission. 97 | 98 | 5) The Font Software, modified or unmodified, in part or in whole, 99 | must be distributed entirely under this license, and must not be 100 | distributed under any other license. The requirement for fonts to 101 | remain under this license does not apply to any document created 102 | using the Font Software. 103 | 104 | TERMINATION 105 | This license becomes null and void if any of the above conditions are 106 | not met. 107 | 108 | DISCLAIMER 109 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 110 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 111 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 112 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 113 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 114 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 115 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 116 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 117 | OTHER DEALINGS IN THE FONT SOFTWARE. 118 | 119 | -------------------------------------------------------------------------------- 120 | 121 | # Code: MIT License (https://opensource.org/licenses/MIT) 122 | 123 | In the Font Awesome Free download, the MIT license applies to all non-font and 124 | non-icon files. 125 | 126 | Copyright 2022 Fonticons, Inc. 127 | 128 | Permission is hereby granted, free of charge, to any person obtaining a copy of 129 | this software and associated documentation files (the "Software"), to deal in the 130 | Software without restriction, including without limitation the rights to use, copy, 131 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, 132 | and to permit persons to whom the Software is furnished to do so, subject to the 133 | following conditions: 134 | 135 | The above copyright notice and this permission notice shall be included in all 136 | copies or substantial portions of the Software. 137 | 138 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 139 | INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 140 | PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 141 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 142 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 143 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 144 | 145 | -------------------------------------------------------------------------------- 146 | 147 | # Attribution 148 | 149 | Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font 150 | Awesome Free files already contain embedded comments with sufficient 151 | attribution, so you shouldn't need to do anything additional when using these 152 | files normally. 153 | 154 | We've kept attribution comments terse, so we ask that you do not actively work 155 | to remove them from files, especially code. They're a great way for folks to 156 | learn about Font Awesome. 157 | 158 | -------------------------------------------------------------------------------- 159 | 160 | # Brand Icons 161 | 162 | All brand icons are trademarks of their respective owners. The use of these 163 | trademarks does not indicate endorsement of the trademark holder by Font 164 | Awesome, nor vice versa. **Please do not use brand logos for any purpose except 165 | to represent the company, product, or service to which they refer.** 166 | -------------------------------------------------------------------------------- /src/assets/css/brands.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | * Copyright 2022 Fonticons, Inc. 5 | */ 6 | :root, 7 | :host { 8 | --fa-style-family-brands: 'Font Awesome 6 Brands'; 9 | --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; 10 | } 11 | 12 | @font-face { 13 | font-family: 'Font Awesome 6 Brands'; 14 | font-style: normal; 15 | font-weight: 400; 16 | font-display: block; 17 | src: url('../webfonts/fa-brands-400.woff2') format('woff2'), 18 | url('../webfonts/fa-brands-400.ttf') format('truetype'); 19 | } 20 | 21 | .fab, 22 | .fa-brands { 23 | font-weight: 400; 24 | } 25 | 26 | .fa-monero:before { 27 | content: '\f3d0'; 28 | } 29 | 30 | .fa-hooli:before { 31 | content: '\f427'; 32 | } 33 | 34 | .fa-yelp:before { 35 | content: '\f1e9'; 36 | } 37 | 38 | .fa-cc-visa:before { 39 | content: '\f1f0'; 40 | } 41 | 42 | .fa-lastfm:before { 43 | content: '\f202'; 44 | } 45 | 46 | .fa-shopware:before { 47 | content: '\f5b5'; 48 | } 49 | 50 | .fa-creative-commons-nc:before { 51 | content: '\f4e8'; 52 | } 53 | 54 | .fa-aws:before { 55 | content: '\f375'; 56 | } 57 | 58 | .fa-redhat:before { 59 | content: '\f7bc'; 60 | } 61 | 62 | .fa-yoast:before { 63 | content: '\f2b1'; 64 | } 65 | 66 | .fa-cloudflare:before { 67 | content: '\e07d'; 68 | } 69 | 70 | .fa-ups:before { 71 | content: '\f7e0'; 72 | } 73 | 74 | .fa-wpexplorer:before { 75 | content: '\f2de'; 76 | } 77 | 78 | .fa-dyalog:before { 79 | content: '\f399'; 80 | } 81 | 82 | .fa-bity:before { 83 | content: '\f37a'; 84 | } 85 | 86 | .fa-stackpath:before { 87 | content: '\f842'; 88 | } 89 | 90 | .fa-buysellads:before { 91 | content: '\f20d'; 92 | } 93 | 94 | .fa-first-order:before { 95 | content: '\f2b0'; 96 | } 97 | 98 | .fa-modx:before { 99 | content: '\f285'; 100 | } 101 | 102 | .fa-guilded:before { 103 | content: '\e07e'; 104 | } 105 | 106 | .fa-vnv:before { 107 | content: '\f40b'; 108 | } 109 | 110 | .fa-square-js:before { 111 | content: '\f3b9'; 112 | } 113 | 114 | .fa-js-square:before { 115 | content: '\f3b9'; 116 | } 117 | 118 | .fa-microsoft:before { 119 | content: '\f3ca'; 120 | } 121 | 122 | .fa-qq:before { 123 | content: '\f1d6'; 124 | } 125 | 126 | .fa-orcid:before { 127 | content: '\f8d2'; 128 | } 129 | 130 | .fa-java:before { 131 | content: '\f4e4'; 132 | } 133 | 134 | .fa-invision:before { 135 | content: '\f7b0'; 136 | } 137 | 138 | .fa-creative-commons-pd-alt:before { 139 | content: '\f4ed'; 140 | } 141 | 142 | .fa-centercode:before { 143 | content: '\f380'; 144 | } 145 | 146 | .fa-glide-g:before { 147 | content: '\f2a6'; 148 | } 149 | 150 | .fa-drupal:before { 151 | content: '\f1a9'; 152 | } 153 | 154 | .fa-hire-a-helper:before { 155 | content: '\f3b0'; 156 | } 157 | 158 | .fa-creative-commons-by:before { 159 | content: '\f4e7'; 160 | } 161 | 162 | .fa-unity:before { 163 | content: '\e049'; 164 | } 165 | 166 | .fa-whmcs:before { 167 | content: '\f40d'; 168 | } 169 | 170 | .fa-rocketchat:before { 171 | content: '\f3e8'; 172 | } 173 | 174 | .fa-vk:before { 175 | content: '\f189'; 176 | } 177 | 178 | .fa-untappd:before { 179 | content: '\f405'; 180 | } 181 | 182 | .fa-mailchimp:before { 183 | content: '\f59e'; 184 | } 185 | 186 | .fa-css3-alt:before { 187 | content: '\f38b'; 188 | } 189 | 190 | .fa-square-reddit:before { 191 | content: '\f1a2'; 192 | } 193 | 194 | .fa-reddit-square:before { 195 | content: '\f1a2'; 196 | } 197 | 198 | .fa-vimeo-v:before { 199 | content: '\f27d'; 200 | } 201 | 202 | .fa-contao:before { 203 | content: '\f26d'; 204 | } 205 | 206 | .fa-square-font-awesome:before { 207 | content: '\e5ad'; 208 | } 209 | 210 | .fa-deskpro:before { 211 | content: '\f38f'; 212 | } 213 | 214 | .fa-sistrix:before { 215 | content: '\f3ee'; 216 | } 217 | 218 | .fa-square-instagram:before { 219 | content: '\e055'; 220 | } 221 | 222 | .fa-instagram-square:before { 223 | content: '\e055'; 224 | } 225 | 226 | .fa-battle-net:before { 227 | content: '\f835'; 228 | } 229 | 230 | .fa-the-red-yeti:before { 231 | content: '\f69d'; 232 | } 233 | 234 | .fa-square-hacker-news:before { 235 | content: '\f3af'; 236 | } 237 | 238 | .fa-hacker-news-square:before { 239 | content: '\f3af'; 240 | } 241 | 242 | .fa-edge:before { 243 | content: '\f282'; 244 | } 245 | 246 | .fa-napster:before { 247 | content: '\f3d2'; 248 | } 249 | 250 | .fa-square-snapchat:before { 251 | content: '\f2ad'; 252 | } 253 | 254 | .fa-snapchat-square:before { 255 | content: '\f2ad'; 256 | } 257 | 258 | .fa-google-plus-g:before { 259 | content: '\f0d5'; 260 | } 261 | 262 | .fa-artstation:before { 263 | content: '\f77a'; 264 | } 265 | 266 | .fa-markdown:before { 267 | content: '\f60f'; 268 | } 269 | 270 | .fa-sourcetree:before { 271 | content: '\f7d3'; 272 | } 273 | 274 | .fa-google-plus:before { 275 | content: '\f2b3'; 276 | } 277 | 278 | .fa-diaspora:before { 279 | content: '\f791'; 280 | } 281 | 282 | .fa-foursquare:before { 283 | content: '\f180'; 284 | } 285 | 286 | .fa-stack-overflow:before { 287 | content: '\f16c'; 288 | } 289 | 290 | .fa-github-alt:before { 291 | content: '\f113'; 292 | } 293 | 294 | .fa-phoenix-squadron:before { 295 | content: '\f511'; 296 | } 297 | 298 | .fa-pagelines:before { 299 | content: '\f18c'; 300 | } 301 | 302 | .fa-algolia:before { 303 | content: '\f36c'; 304 | } 305 | 306 | .fa-red-river:before { 307 | content: '\f3e3'; 308 | } 309 | 310 | .fa-creative-commons-sa:before { 311 | content: '\f4ef'; 312 | } 313 | 314 | .fa-safari:before { 315 | content: '\f267'; 316 | } 317 | 318 | .fa-google:before { 319 | content: '\f1a0'; 320 | } 321 | 322 | .fa-square-font-awesome-stroke:before { 323 | content: '\f35c'; 324 | } 325 | 326 | .fa-font-awesome-alt:before { 327 | content: '\f35c'; 328 | } 329 | 330 | .fa-atlassian:before { 331 | content: '\f77b'; 332 | } 333 | 334 | .fa-linkedin-in:before { 335 | content: '\f0e1'; 336 | } 337 | 338 | .fa-digital-ocean:before { 339 | content: '\f391'; 340 | } 341 | 342 | .fa-nimblr:before { 343 | content: '\f5a8'; 344 | } 345 | 346 | .fa-chromecast:before { 347 | content: '\f838'; 348 | } 349 | 350 | .fa-evernote:before { 351 | content: '\f839'; 352 | } 353 | 354 | .fa-hacker-news:before { 355 | content: '\f1d4'; 356 | } 357 | 358 | .fa-creative-commons-sampling:before { 359 | content: '\f4f0'; 360 | } 361 | 362 | .fa-adversal:before { 363 | content: '\f36a'; 364 | } 365 | 366 | .fa-creative-commons:before { 367 | content: '\f25e'; 368 | } 369 | 370 | .fa-watchman-monitoring:before { 371 | content: '\e087'; 372 | } 373 | 374 | .fa-fonticons:before { 375 | content: '\f280'; 376 | } 377 | 378 | .fa-weixin:before { 379 | content: '\f1d7'; 380 | } 381 | 382 | .fa-shirtsinbulk:before { 383 | content: '\f214'; 384 | } 385 | 386 | .fa-codepen:before { 387 | content: '\f1cb'; 388 | } 389 | 390 | .fa-git-alt:before { 391 | content: '\f841'; 392 | } 393 | 394 | .fa-lyft:before { 395 | content: '\f3c3'; 396 | } 397 | 398 | .fa-rev:before { 399 | content: '\f5b2'; 400 | } 401 | 402 | .fa-windows:before { 403 | content: '\f17a'; 404 | } 405 | 406 | .fa-wizards-of-the-coast:before { 407 | content: '\f730'; 408 | } 409 | 410 | .fa-square-viadeo:before { 411 | content: '\f2aa'; 412 | } 413 | 414 | .fa-viadeo-square:before { 415 | content: '\f2aa'; 416 | } 417 | 418 | .fa-meetup:before { 419 | content: '\f2e0'; 420 | } 421 | 422 | .fa-centos:before { 423 | content: '\f789'; 424 | } 425 | 426 | .fa-adn:before { 427 | content: '\f170'; 428 | } 429 | 430 | .fa-cloudsmith:before { 431 | content: '\f384'; 432 | } 433 | 434 | .fa-pied-piper-alt:before { 435 | content: '\f1a8'; 436 | } 437 | 438 | .fa-square-dribbble:before { 439 | content: '\f397'; 440 | } 441 | 442 | .fa-dribbble-square:before { 443 | content: '\f397'; 444 | } 445 | 446 | .fa-codiepie:before { 447 | content: '\f284'; 448 | } 449 | 450 | .fa-node:before { 451 | content: '\f419'; 452 | } 453 | 454 | .fa-mix:before { 455 | content: '\f3cb'; 456 | } 457 | 458 | .fa-steam:before { 459 | content: '\f1b6'; 460 | } 461 | 462 | .fa-cc-apple-pay:before { 463 | content: '\f416'; 464 | } 465 | 466 | .fa-scribd:before { 467 | content: '\f28a'; 468 | } 469 | 470 | .fa-openid:before { 471 | content: '\f19b'; 472 | } 473 | 474 | .fa-instalod:before { 475 | content: '\e081'; 476 | } 477 | 478 | .fa-expeditedssl:before { 479 | content: '\f23e'; 480 | } 481 | 482 | .fa-sellcast:before { 483 | content: '\f2da'; 484 | } 485 | 486 | .fa-square-twitter:before { 487 | content: '\f081'; 488 | } 489 | 490 | .fa-twitter-square:before { 491 | content: '\f081'; 492 | } 493 | 494 | .fa-r-project:before { 495 | content: '\f4f7'; 496 | } 497 | 498 | .fa-delicious:before { 499 | content: '\f1a5'; 500 | } 501 | 502 | .fa-freebsd:before { 503 | content: '\f3a4'; 504 | } 505 | 506 | .fa-vuejs:before { 507 | content: '\f41f'; 508 | } 509 | 510 | .fa-accusoft:before { 511 | content: '\f369'; 512 | } 513 | 514 | .fa-ioxhost:before { 515 | content: '\f208'; 516 | } 517 | 518 | .fa-fonticons-fi:before { 519 | content: '\f3a2'; 520 | } 521 | 522 | .fa-app-store:before { 523 | content: '\f36f'; 524 | } 525 | 526 | .fa-cc-mastercard:before { 527 | content: '\f1f1'; 528 | } 529 | 530 | .fa-itunes-note:before { 531 | content: '\f3b5'; 532 | } 533 | 534 | .fa-golang:before { 535 | content: '\e40f'; 536 | } 537 | 538 | .fa-kickstarter:before { 539 | content: '\f3bb'; 540 | } 541 | 542 | .fa-grav:before { 543 | content: '\f2d6'; 544 | } 545 | 546 | .fa-weibo:before { 547 | content: '\f18a'; 548 | } 549 | 550 | .fa-uncharted:before { 551 | content: '\e084'; 552 | } 553 | 554 | .fa-firstdraft:before { 555 | content: '\f3a1'; 556 | } 557 | 558 | .fa-square-youtube:before { 559 | content: '\f431'; 560 | } 561 | 562 | .fa-youtube-square:before { 563 | content: '\f431'; 564 | } 565 | 566 | .fa-wikipedia-w:before { 567 | content: '\f266'; 568 | } 569 | 570 | .fa-wpressr:before { 571 | content: '\f3e4'; 572 | } 573 | 574 | .fa-rendact:before { 575 | content: '\f3e4'; 576 | } 577 | 578 | .fa-angellist:before { 579 | content: '\f209'; 580 | } 581 | 582 | .fa-galactic-republic:before { 583 | content: '\f50c'; 584 | } 585 | 586 | .fa-nfc-directional:before { 587 | content: '\e530'; 588 | } 589 | 590 | .fa-skype:before { 591 | content: '\f17e'; 592 | } 593 | 594 | .fa-joget:before { 595 | content: '\f3b7'; 596 | } 597 | 598 | .fa-fedora:before { 599 | content: '\f798'; 600 | } 601 | 602 | .fa-stripe-s:before { 603 | content: '\f42a'; 604 | } 605 | 606 | .fa-meta:before { 607 | content: '\e49b'; 608 | } 609 | 610 | .fa-laravel:before { 611 | content: '\f3bd'; 612 | } 613 | 614 | .fa-hotjar:before { 615 | content: '\f3b1'; 616 | } 617 | 618 | .fa-bluetooth-b:before { 619 | content: '\f294'; 620 | } 621 | 622 | .fa-sticker-mule:before { 623 | content: '\f3f7'; 624 | } 625 | 626 | .fa-creative-commons-zero:before { 627 | content: '\f4f3'; 628 | } 629 | 630 | .fa-hips:before { 631 | content: '\f452'; 632 | } 633 | 634 | .fa-behance:before { 635 | content: '\f1b4'; 636 | } 637 | 638 | .fa-reddit:before { 639 | content: '\f1a1'; 640 | } 641 | 642 | .fa-discord:before { 643 | content: '\f392'; 644 | } 645 | 646 | .fa-chrome:before { 647 | content: '\f268'; 648 | } 649 | 650 | .fa-app-store-ios:before { 651 | content: '\f370'; 652 | } 653 | 654 | .fa-cc-discover:before { 655 | content: '\f1f2'; 656 | } 657 | 658 | .fa-wpbeginner:before { 659 | content: '\f297'; 660 | } 661 | 662 | .fa-confluence:before { 663 | content: '\f78d'; 664 | } 665 | 666 | .fa-mdb:before { 667 | content: '\f8ca'; 668 | } 669 | 670 | .fa-dochub:before { 671 | content: '\f394'; 672 | } 673 | 674 | .fa-accessible-icon:before { 675 | content: '\f368'; 676 | } 677 | 678 | .fa-ebay:before { 679 | content: '\f4f4'; 680 | } 681 | 682 | .fa-amazon:before { 683 | content: '\f270'; 684 | } 685 | 686 | .fa-unsplash:before { 687 | content: '\e07c'; 688 | } 689 | 690 | .fa-yarn:before { 691 | content: '\f7e3'; 692 | } 693 | 694 | .fa-square-steam:before { 695 | content: '\f1b7'; 696 | } 697 | 698 | .fa-steam-square:before { 699 | content: '\f1b7'; 700 | } 701 | 702 | .fa-500px:before { 703 | content: '\f26e'; 704 | } 705 | 706 | .fa-square-vimeo:before { 707 | content: '\f194'; 708 | } 709 | 710 | .fa-vimeo-square:before { 711 | content: '\f194'; 712 | } 713 | 714 | .fa-asymmetrik:before { 715 | content: '\f372'; 716 | } 717 | 718 | .fa-font-awesome:before { 719 | content: '\f2b4'; 720 | } 721 | 722 | .fa-font-awesome-flag:before { 723 | content: '\f2b4'; 724 | } 725 | 726 | .fa-font-awesome-logo-full:before { 727 | content: '\f2b4'; 728 | } 729 | 730 | .fa-gratipay:before { 731 | content: '\f184'; 732 | } 733 | 734 | .fa-apple:before { 735 | content: '\f179'; 736 | } 737 | 738 | .fa-hive:before { 739 | content: '\e07f'; 740 | } 741 | 742 | .fa-gitkraken:before { 743 | content: '\f3a6'; 744 | } 745 | 746 | .fa-keybase:before { 747 | content: '\f4f5'; 748 | } 749 | 750 | .fa-apple-pay:before { 751 | content: '\f415'; 752 | } 753 | 754 | .fa-padlet:before { 755 | content: '\e4a0'; 756 | } 757 | 758 | .fa-amazon-pay:before { 759 | content: '\f42c'; 760 | } 761 | 762 | .fa-square-github:before { 763 | content: '\f092'; 764 | } 765 | 766 | .fa-github-square:before { 767 | content: '\f092'; 768 | } 769 | 770 | .fa-stumbleupon:before { 771 | content: '\f1a4'; 772 | } 773 | 774 | .fa-fedex:before { 775 | content: '\f797'; 776 | } 777 | 778 | .fa-phoenix-framework:before { 779 | content: '\f3dc'; 780 | } 781 | 782 | .fa-shopify:before { 783 | content: '\e057'; 784 | } 785 | 786 | .fa-neos:before { 787 | content: '\f612'; 788 | } 789 | 790 | .fa-hackerrank:before { 791 | content: '\f5f7'; 792 | } 793 | 794 | .fa-researchgate:before { 795 | content: '\f4f8'; 796 | } 797 | 798 | .fa-swift:before { 799 | content: '\f8e1'; 800 | } 801 | 802 | .fa-angular:before { 803 | content: '\f420'; 804 | } 805 | 806 | .fa-speakap:before { 807 | content: '\f3f3'; 808 | } 809 | 810 | .fa-angrycreative:before { 811 | content: '\f36e'; 812 | } 813 | 814 | .fa-y-combinator:before { 815 | content: '\f23b'; 816 | } 817 | 818 | .fa-empire:before { 819 | content: '\f1d1'; 820 | } 821 | 822 | .fa-envira:before { 823 | content: '\f299'; 824 | } 825 | 826 | .fa-square-gitlab:before { 827 | content: '\e5ae'; 828 | } 829 | 830 | .fa-gitlab-square:before { 831 | content: '\e5ae'; 832 | } 833 | 834 | .fa-studiovinari:before { 835 | content: '\f3f8'; 836 | } 837 | 838 | .fa-pied-piper:before { 839 | content: '\f2ae'; 840 | } 841 | 842 | .fa-wordpress:before { 843 | content: '\f19a'; 844 | } 845 | 846 | .fa-product-hunt:before { 847 | content: '\f288'; 848 | } 849 | 850 | .fa-firefox:before { 851 | content: '\f269'; 852 | } 853 | 854 | .fa-linode:before { 855 | content: '\f2b8'; 856 | } 857 | 858 | .fa-goodreads:before { 859 | content: '\f3a8'; 860 | } 861 | 862 | .fa-square-odnoklassniki:before { 863 | content: '\f264'; 864 | } 865 | 866 | .fa-odnoklassniki-square:before { 867 | content: '\f264'; 868 | } 869 | 870 | .fa-jsfiddle:before { 871 | content: '\f1cc'; 872 | } 873 | 874 | .fa-sith:before { 875 | content: '\f512'; 876 | } 877 | 878 | .fa-themeisle:before { 879 | content: '\f2b2'; 880 | } 881 | 882 | .fa-page4:before { 883 | content: '\f3d7'; 884 | } 885 | 886 | .fa-hashnode:before { 887 | content: '\e499'; 888 | } 889 | 890 | .fa-react:before { 891 | content: '\f41b'; 892 | } 893 | 894 | .fa-cc-paypal:before { 895 | content: '\f1f4'; 896 | } 897 | 898 | .fa-squarespace:before { 899 | content: '\f5be'; 900 | } 901 | 902 | .fa-cc-stripe:before { 903 | content: '\f1f5'; 904 | } 905 | 906 | .fa-creative-commons-share:before { 907 | content: '\f4f2'; 908 | } 909 | 910 | .fa-bitcoin:before { 911 | content: '\f379'; 912 | } 913 | 914 | .fa-keycdn:before { 915 | content: '\f3ba'; 916 | } 917 | 918 | .fa-opera:before { 919 | content: '\f26a'; 920 | } 921 | 922 | .fa-itch-io:before { 923 | content: '\f83a'; 924 | } 925 | 926 | .fa-umbraco:before { 927 | content: '\f8e8'; 928 | } 929 | 930 | .fa-galactic-senate:before { 931 | content: '\f50d'; 932 | } 933 | 934 | .fa-ubuntu:before { 935 | content: '\f7df'; 936 | } 937 | 938 | .fa-draft2digital:before { 939 | content: '\f396'; 940 | } 941 | 942 | .fa-stripe:before { 943 | content: '\f429'; 944 | } 945 | 946 | .fa-houzz:before { 947 | content: '\f27c'; 948 | } 949 | 950 | .fa-gg:before { 951 | content: '\f260'; 952 | } 953 | 954 | .fa-dhl:before { 955 | content: '\f790'; 956 | } 957 | 958 | .fa-square-pinterest:before { 959 | content: '\f0d3'; 960 | } 961 | 962 | .fa-pinterest-square:before { 963 | content: '\f0d3'; 964 | } 965 | 966 | .fa-xing:before { 967 | content: '\f168'; 968 | } 969 | 970 | .fa-blackberry:before { 971 | content: '\f37b'; 972 | } 973 | 974 | .fa-creative-commons-pd:before { 975 | content: '\f4ec'; 976 | } 977 | 978 | .fa-playstation:before { 979 | content: '\f3df'; 980 | } 981 | 982 | .fa-quinscape:before { 983 | content: '\f459'; 984 | } 985 | 986 | .fa-less:before { 987 | content: '\f41d'; 988 | } 989 | 990 | .fa-blogger-b:before { 991 | content: '\f37d'; 992 | } 993 | 994 | .fa-opencart:before { 995 | content: '\f23d'; 996 | } 997 | 998 | .fa-vine:before { 999 | content: '\f1ca'; 1000 | } 1001 | 1002 | .fa-paypal:before { 1003 | content: '\f1ed'; 1004 | } 1005 | 1006 | .fa-gitlab:before { 1007 | content: '\f296'; 1008 | } 1009 | 1010 | .fa-typo3:before { 1011 | content: '\f42b'; 1012 | } 1013 | 1014 | .fa-reddit-alien:before { 1015 | content: '\f281'; 1016 | } 1017 | 1018 | .fa-yahoo:before { 1019 | content: '\f19e'; 1020 | } 1021 | 1022 | .fa-dailymotion:before { 1023 | content: '\e052'; 1024 | } 1025 | 1026 | .fa-affiliatetheme:before { 1027 | content: '\f36b'; 1028 | } 1029 | 1030 | .fa-pied-piper-pp:before { 1031 | content: '\f1a7'; 1032 | } 1033 | 1034 | .fa-bootstrap:before { 1035 | content: '\f836'; 1036 | } 1037 | 1038 | .fa-odnoklassniki:before { 1039 | content: '\f263'; 1040 | } 1041 | 1042 | .fa-nfc-symbol:before { 1043 | content: '\e531'; 1044 | } 1045 | 1046 | .fa-ethereum:before { 1047 | content: '\f42e'; 1048 | } 1049 | 1050 | .fa-speaker-deck:before { 1051 | content: '\f83c'; 1052 | } 1053 | 1054 | .fa-creative-commons-nc-eu:before { 1055 | content: '\f4e9'; 1056 | } 1057 | 1058 | .fa-patreon:before { 1059 | content: '\f3d9'; 1060 | } 1061 | 1062 | .fa-avianex:before { 1063 | content: '\f374'; 1064 | } 1065 | 1066 | .fa-ello:before { 1067 | content: '\f5f1'; 1068 | } 1069 | 1070 | .fa-gofore:before { 1071 | content: '\f3a7'; 1072 | } 1073 | 1074 | .fa-bimobject:before { 1075 | content: '\f378'; 1076 | } 1077 | 1078 | .fa-facebook-f:before { 1079 | content: '\f39e'; 1080 | } 1081 | 1082 | .fa-square-google-plus:before { 1083 | content: '\f0d4'; 1084 | } 1085 | 1086 | .fa-google-plus-square:before { 1087 | content: '\f0d4'; 1088 | } 1089 | 1090 | .fa-mandalorian:before { 1091 | content: '\f50f'; 1092 | } 1093 | 1094 | .fa-first-order-alt:before { 1095 | content: '\f50a'; 1096 | } 1097 | 1098 | .fa-osi:before { 1099 | content: '\f41a'; 1100 | } 1101 | 1102 | .fa-google-wallet:before { 1103 | content: '\f1ee'; 1104 | } 1105 | 1106 | .fa-d-and-d-beyond:before { 1107 | content: '\f6ca'; 1108 | } 1109 | 1110 | .fa-periscope:before { 1111 | content: '\f3da'; 1112 | } 1113 | 1114 | .fa-fulcrum:before { 1115 | content: '\f50b'; 1116 | } 1117 | 1118 | .fa-cloudscale:before { 1119 | content: '\f383'; 1120 | } 1121 | 1122 | .fa-forumbee:before { 1123 | content: '\f211'; 1124 | } 1125 | 1126 | .fa-mizuni:before { 1127 | content: '\f3cc'; 1128 | } 1129 | 1130 | .fa-schlix:before { 1131 | content: '\f3ea'; 1132 | } 1133 | 1134 | .fa-square-xing:before { 1135 | content: '\f169'; 1136 | } 1137 | 1138 | .fa-xing-square:before { 1139 | content: '\f169'; 1140 | } 1141 | 1142 | .fa-bandcamp:before { 1143 | content: '\f2d5'; 1144 | } 1145 | 1146 | .fa-wpforms:before { 1147 | content: '\f298'; 1148 | } 1149 | 1150 | .fa-cloudversify:before { 1151 | content: '\f385'; 1152 | } 1153 | 1154 | .fa-usps:before { 1155 | content: '\f7e1'; 1156 | } 1157 | 1158 | .fa-megaport:before { 1159 | content: '\f5a3'; 1160 | } 1161 | 1162 | .fa-magento:before { 1163 | content: '\f3c4'; 1164 | } 1165 | 1166 | .fa-spotify:before { 1167 | content: '\f1bc'; 1168 | } 1169 | 1170 | .fa-optin-monster:before { 1171 | content: '\f23c'; 1172 | } 1173 | 1174 | .fa-fly:before { 1175 | content: '\f417'; 1176 | } 1177 | 1178 | .fa-aviato:before { 1179 | content: '\f421'; 1180 | } 1181 | 1182 | .fa-itunes:before { 1183 | content: '\f3b4'; 1184 | } 1185 | 1186 | .fa-cuttlefish:before { 1187 | content: '\f38c'; 1188 | } 1189 | 1190 | .fa-blogger:before { 1191 | content: '\f37c'; 1192 | } 1193 | 1194 | .fa-flickr:before { 1195 | content: '\f16e'; 1196 | } 1197 | 1198 | .fa-viber:before { 1199 | content: '\f409'; 1200 | } 1201 | 1202 | .fa-soundcloud:before { 1203 | content: '\f1be'; 1204 | } 1205 | 1206 | .fa-digg:before { 1207 | content: '\f1a6'; 1208 | } 1209 | 1210 | .fa-tencent-weibo:before { 1211 | content: '\f1d5'; 1212 | } 1213 | 1214 | .fa-symfony:before { 1215 | content: '\f83d'; 1216 | } 1217 | 1218 | .fa-maxcdn:before { 1219 | content: '\f136'; 1220 | } 1221 | 1222 | .fa-etsy:before { 1223 | content: '\f2d7'; 1224 | } 1225 | 1226 | .fa-facebook-messenger:before { 1227 | content: '\f39f'; 1228 | } 1229 | 1230 | .fa-audible:before { 1231 | content: '\f373'; 1232 | } 1233 | 1234 | .fa-think-peaks:before { 1235 | content: '\f731'; 1236 | } 1237 | 1238 | .fa-bilibili:before { 1239 | content: '\e3d9'; 1240 | } 1241 | 1242 | .fa-erlang:before { 1243 | content: '\f39d'; 1244 | } 1245 | 1246 | .fa-cotton-bureau:before { 1247 | content: '\f89e'; 1248 | } 1249 | 1250 | .fa-dashcube:before { 1251 | content: '\f210'; 1252 | } 1253 | 1254 | .fa-42-group:before { 1255 | content: '\e080'; 1256 | } 1257 | 1258 | .fa-innosoft:before { 1259 | content: '\e080'; 1260 | } 1261 | 1262 | .fa-stack-exchange:before { 1263 | content: '\f18d'; 1264 | } 1265 | 1266 | .fa-elementor:before { 1267 | content: '\f430'; 1268 | } 1269 | 1270 | .fa-square-pied-piper:before { 1271 | content: '\e01e'; 1272 | } 1273 | 1274 | .fa-pied-piper-square:before { 1275 | content: '\e01e'; 1276 | } 1277 | 1278 | .fa-creative-commons-nd:before { 1279 | content: '\f4eb'; 1280 | } 1281 | 1282 | .fa-palfed:before { 1283 | content: '\f3d8'; 1284 | } 1285 | 1286 | .fa-superpowers:before { 1287 | content: '\f2dd'; 1288 | } 1289 | 1290 | .fa-resolving:before { 1291 | content: '\f3e7'; 1292 | } 1293 | 1294 | .fa-xbox:before { 1295 | content: '\f412'; 1296 | } 1297 | 1298 | .fa-searchengin:before { 1299 | content: '\f3eb'; 1300 | } 1301 | 1302 | .fa-tiktok:before { 1303 | content: '\e07b'; 1304 | } 1305 | 1306 | .fa-square-facebook:before { 1307 | content: '\f082'; 1308 | } 1309 | 1310 | .fa-facebook-square:before { 1311 | content: '\f082'; 1312 | } 1313 | 1314 | .fa-renren:before { 1315 | content: '\f18b'; 1316 | } 1317 | 1318 | .fa-linux:before { 1319 | content: '\f17c'; 1320 | } 1321 | 1322 | .fa-glide:before { 1323 | content: '\f2a5'; 1324 | } 1325 | 1326 | .fa-linkedin:before { 1327 | content: '\f08c'; 1328 | } 1329 | 1330 | .fa-hubspot:before { 1331 | content: '\f3b2'; 1332 | } 1333 | 1334 | .fa-deploydog:before { 1335 | content: '\f38e'; 1336 | } 1337 | 1338 | .fa-twitch:before { 1339 | content: '\f1e8'; 1340 | } 1341 | 1342 | .fa-ravelry:before { 1343 | content: '\f2d9'; 1344 | } 1345 | 1346 | .fa-mixer:before { 1347 | content: '\e056'; 1348 | } 1349 | 1350 | .fa-square-lastfm:before { 1351 | content: '\f203'; 1352 | } 1353 | 1354 | .fa-lastfm-square:before { 1355 | content: '\f203'; 1356 | } 1357 | 1358 | .fa-vimeo:before { 1359 | content: '\f40a'; 1360 | } 1361 | 1362 | .fa-mendeley:before { 1363 | content: '\f7b3'; 1364 | } 1365 | 1366 | .fa-uniregistry:before { 1367 | content: '\f404'; 1368 | } 1369 | 1370 | .fa-figma:before { 1371 | content: '\f799'; 1372 | } 1373 | 1374 | .fa-creative-commons-remix:before { 1375 | content: '\f4ee'; 1376 | } 1377 | 1378 | .fa-cc-amazon-pay:before { 1379 | content: '\f42d'; 1380 | } 1381 | 1382 | .fa-dropbox:before { 1383 | content: '\f16b'; 1384 | } 1385 | 1386 | .fa-instagram:before { 1387 | content: '\f16d'; 1388 | } 1389 | 1390 | .fa-cmplid:before { 1391 | content: '\e360'; 1392 | } 1393 | 1394 | .fa-facebook:before { 1395 | content: '\f09a'; 1396 | } 1397 | 1398 | .fa-gripfire:before { 1399 | content: '\f3ac'; 1400 | } 1401 | 1402 | .fa-jedi-order:before { 1403 | content: '\f50e'; 1404 | } 1405 | 1406 | .fa-uikit:before { 1407 | content: '\f403'; 1408 | } 1409 | 1410 | .fa-fort-awesome-alt:before { 1411 | content: '\f3a3'; 1412 | } 1413 | 1414 | .fa-phabricator:before { 1415 | content: '\f3db'; 1416 | } 1417 | 1418 | .fa-ussunnah:before { 1419 | content: '\f407'; 1420 | } 1421 | 1422 | .fa-earlybirds:before { 1423 | content: '\f39a'; 1424 | } 1425 | 1426 | .fa-trade-federation:before { 1427 | content: '\f513'; 1428 | } 1429 | 1430 | .fa-autoprefixer:before { 1431 | content: '\f41c'; 1432 | } 1433 | 1434 | .fa-whatsapp:before { 1435 | content: '\f232'; 1436 | } 1437 | 1438 | .fa-slideshare:before { 1439 | content: '\f1e7'; 1440 | } 1441 | 1442 | .fa-google-play:before { 1443 | content: '\f3ab'; 1444 | } 1445 | 1446 | .fa-viadeo:before { 1447 | content: '\f2a9'; 1448 | } 1449 | 1450 | .fa-line:before { 1451 | content: '\f3c0'; 1452 | } 1453 | 1454 | .fa-google-drive:before { 1455 | content: '\f3aa'; 1456 | } 1457 | 1458 | .fa-servicestack:before { 1459 | content: '\f3ec'; 1460 | } 1461 | 1462 | .fa-simplybuilt:before { 1463 | content: '\f215'; 1464 | } 1465 | 1466 | .fa-bitbucket:before { 1467 | content: '\f171'; 1468 | } 1469 | 1470 | .fa-imdb:before { 1471 | content: '\f2d8'; 1472 | } 1473 | 1474 | .fa-deezer:before { 1475 | content: '\e077'; 1476 | } 1477 | 1478 | .fa-raspberry-pi:before { 1479 | content: '\f7bb'; 1480 | } 1481 | 1482 | .fa-jira:before { 1483 | content: '\f7b1'; 1484 | } 1485 | 1486 | .fa-docker:before { 1487 | content: '\f395'; 1488 | } 1489 | 1490 | .fa-screenpal:before { 1491 | content: '\e570'; 1492 | } 1493 | 1494 | .fa-bluetooth:before { 1495 | content: '\f293'; 1496 | } 1497 | 1498 | .fa-gitter:before { 1499 | content: '\f426'; 1500 | } 1501 | 1502 | .fa-d-and-d:before { 1503 | content: '\f38d'; 1504 | } 1505 | 1506 | .fa-microblog:before { 1507 | content: '\e01a'; 1508 | } 1509 | 1510 | .fa-cc-diners-club:before { 1511 | content: '\f24c'; 1512 | } 1513 | 1514 | .fa-gg-circle:before { 1515 | content: '\f261'; 1516 | } 1517 | 1518 | .fa-pied-piper-hat:before { 1519 | content: '\f4e5'; 1520 | } 1521 | 1522 | .fa-kickstarter-k:before { 1523 | content: '\f3bc'; 1524 | } 1525 | 1526 | .fa-yandex:before { 1527 | content: '\f413'; 1528 | } 1529 | 1530 | .fa-readme:before { 1531 | content: '\f4d5'; 1532 | } 1533 | 1534 | .fa-html5:before { 1535 | content: '\f13b'; 1536 | } 1537 | 1538 | .fa-sellsy:before { 1539 | content: '\f213'; 1540 | } 1541 | 1542 | .fa-sass:before { 1543 | content: '\f41e'; 1544 | } 1545 | 1546 | .fa-wirsindhandwerk:before { 1547 | content: '\e2d0'; 1548 | } 1549 | 1550 | .fa-wsh:before { 1551 | content: '\e2d0'; 1552 | } 1553 | 1554 | .fa-buromobelexperte:before { 1555 | content: '\f37f'; 1556 | } 1557 | 1558 | .fa-salesforce:before { 1559 | content: '\f83b'; 1560 | } 1561 | 1562 | .fa-octopus-deploy:before { 1563 | content: '\e082'; 1564 | } 1565 | 1566 | .fa-medapps:before { 1567 | content: '\f3c6'; 1568 | } 1569 | 1570 | .fa-ns8:before { 1571 | content: '\f3d5'; 1572 | } 1573 | 1574 | .fa-pinterest-p:before { 1575 | content: '\f231'; 1576 | } 1577 | 1578 | .fa-apper:before { 1579 | content: '\f371'; 1580 | } 1581 | 1582 | .fa-fort-awesome:before { 1583 | content: '\f286'; 1584 | } 1585 | 1586 | .fa-waze:before { 1587 | content: '\f83f'; 1588 | } 1589 | 1590 | .fa-cc-jcb:before { 1591 | content: '\f24b'; 1592 | } 1593 | 1594 | .fa-snapchat:before { 1595 | content: '\f2ab'; 1596 | } 1597 | 1598 | .fa-snapchat-ghost:before { 1599 | content: '\f2ab'; 1600 | } 1601 | 1602 | .fa-fantasy-flight-games:before { 1603 | content: '\f6dc'; 1604 | } 1605 | 1606 | .fa-rust:before { 1607 | content: '\e07a'; 1608 | } 1609 | 1610 | .fa-wix:before { 1611 | content: '\f5cf'; 1612 | } 1613 | 1614 | .fa-square-behance:before { 1615 | content: '\f1b5'; 1616 | } 1617 | 1618 | .fa-behance-square:before { 1619 | content: '\f1b5'; 1620 | } 1621 | 1622 | .fa-supple:before { 1623 | content: '\f3f9'; 1624 | } 1625 | 1626 | .fa-rebel:before { 1627 | content: '\f1d0'; 1628 | } 1629 | 1630 | .fa-css3:before { 1631 | content: '\f13c'; 1632 | } 1633 | 1634 | .fa-staylinked:before { 1635 | content: '\f3f5'; 1636 | } 1637 | 1638 | .fa-kaggle:before { 1639 | content: '\f5fa'; 1640 | } 1641 | 1642 | .fa-space-awesome:before { 1643 | content: '\e5ac'; 1644 | } 1645 | 1646 | .fa-deviantart:before { 1647 | content: '\f1bd'; 1648 | } 1649 | 1650 | .fa-cpanel:before { 1651 | content: '\f388'; 1652 | } 1653 | 1654 | .fa-goodreads-g:before { 1655 | content: '\f3a9'; 1656 | } 1657 | 1658 | .fa-square-git:before { 1659 | content: '\f1d2'; 1660 | } 1661 | 1662 | .fa-git-square:before { 1663 | content: '\f1d2'; 1664 | } 1665 | 1666 | .fa-square-tumblr:before { 1667 | content: '\f174'; 1668 | } 1669 | 1670 | .fa-tumblr-square:before { 1671 | content: '\f174'; 1672 | } 1673 | 1674 | .fa-trello:before { 1675 | content: '\f181'; 1676 | } 1677 | 1678 | .fa-creative-commons-nc-jp:before { 1679 | content: '\f4ea'; 1680 | } 1681 | 1682 | .fa-get-pocket:before { 1683 | content: '\f265'; 1684 | } 1685 | 1686 | .fa-perbyte:before { 1687 | content: '\e083'; 1688 | } 1689 | 1690 | .fa-grunt:before { 1691 | content: '\f3ad'; 1692 | } 1693 | 1694 | .fa-weebly:before { 1695 | content: '\f5cc'; 1696 | } 1697 | 1698 | .fa-connectdevelop:before { 1699 | content: '\f20e'; 1700 | } 1701 | 1702 | .fa-leanpub:before { 1703 | content: '\f212'; 1704 | } 1705 | 1706 | .fa-black-tie:before { 1707 | content: '\f27e'; 1708 | } 1709 | 1710 | .fa-themeco:before { 1711 | content: '\f5c6'; 1712 | } 1713 | 1714 | .fa-python:before { 1715 | content: '\f3e2'; 1716 | } 1717 | 1718 | .fa-android:before { 1719 | content: '\f17b'; 1720 | } 1721 | 1722 | .fa-bots:before { 1723 | content: '\e340'; 1724 | } 1725 | 1726 | .fa-free-code-camp:before { 1727 | content: '\f2c5'; 1728 | } 1729 | 1730 | .fa-hornbill:before { 1731 | content: '\f592'; 1732 | } 1733 | 1734 | .fa-js:before { 1735 | content: '\f3b8'; 1736 | } 1737 | 1738 | .fa-ideal:before { 1739 | content: '\e013'; 1740 | } 1741 | 1742 | .fa-git:before { 1743 | content: '\f1d3'; 1744 | } 1745 | 1746 | .fa-dev:before { 1747 | content: '\f6cc'; 1748 | } 1749 | 1750 | .fa-sketch:before { 1751 | content: '\f7c6'; 1752 | } 1753 | 1754 | .fa-yandex-international:before { 1755 | content: '\f414'; 1756 | } 1757 | 1758 | .fa-cc-amex:before { 1759 | content: '\f1f3'; 1760 | } 1761 | 1762 | .fa-uber:before { 1763 | content: '\f402'; 1764 | } 1765 | 1766 | .fa-github:before { 1767 | content: '\f09b'; 1768 | } 1769 | 1770 | .fa-php:before { 1771 | content: '\f457'; 1772 | } 1773 | 1774 | .fa-alipay:before { 1775 | content: '\f642'; 1776 | } 1777 | 1778 | .fa-youtube:before { 1779 | content: '\f167'; 1780 | } 1781 | 1782 | .fa-skyatlas:before { 1783 | content: '\f216'; 1784 | } 1785 | 1786 | .fa-firefox-browser:before { 1787 | content: '\e007'; 1788 | } 1789 | 1790 | .fa-replyd:before { 1791 | content: '\f3e6'; 1792 | } 1793 | 1794 | .fa-suse:before { 1795 | content: '\f7d6'; 1796 | } 1797 | 1798 | .fa-jenkins:before { 1799 | content: '\f3b6'; 1800 | } 1801 | 1802 | .fa-twitter:before { 1803 | content: '\f099'; 1804 | } 1805 | 1806 | .fa-rockrms:before { 1807 | content: '\f3e9'; 1808 | } 1809 | 1810 | .fa-pinterest:before { 1811 | content: '\f0d2'; 1812 | } 1813 | 1814 | .fa-buffer:before { 1815 | content: '\f837'; 1816 | } 1817 | 1818 | .fa-npm:before { 1819 | content: '\f3d4'; 1820 | } 1821 | 1822 | .fa-yammer:before { 1823 | content: '\f840'; 1824 | } 1825 | 1826 | .fa-btc:before { 1827 | content: '\f15a'; 1828 | } 1829 | 1830 | .fa-dribbble:before { 1831 | content: '\f17d'; 1832 | } 1833 | 1834 | .fa-stumbleupon-circle:before { 1835 | content: '\f1a3'; 1836 | } 1837 | 1838 | .fa-internet-explorer:before { 1839 | content: '\f26b'; 1840 | } 1841 | 1842 | .fa-telegram:before { 1843 | content: '\f2c6'; 1844 | } 1845 | 1846 | .fa-telegram-plane:before { 1847 | content: '\f2c6'; 1848 | } 1849 | 1850 | .fa-old-republic:before { 1851 | content: '\f510'; 1852 | } 1853 | 1854 | .fa-square-whatsapp:before { 1855 | content: '\f40c'; 1856 | } 1857 | 1858 | .fa-whatsapp-square:before { 1859 | content: '\f40c'; 1860 | } 1861 | 1862 | .fa-node-js:before { 1863 | content: '\f3d3'; 1864 | } 1865 | 1866 | .fa-edge-legacy:before { 1867 | content: '\e078'; 1868 | } 1869 | 1870 | .fa-slack:before { 1871 | content: '\f198'; 1872 | } 1873 | 1874 | .fa-slack-hash:before { 1875 | content: '\f198'; 1876 | } 1877 | 1878 | .fa-medrt:before { 1879 | content: '\f3c8'; 1880 | } 1881 | 1882 | .fa-usb:before { 1883 | content: '\f287'; 1884 | } 1885 | 1886 | .fa-tumblr:before { 1887 | content: '\f173'; 1888 | } 1889 | 1890 | .fa-vaadin:before { 1891 | content: '\f408'; 1892 | } 1893 | 1894 | .fa-quora:before { 1895 | content: '\f2c4'; 1896 | } 1897 | 1898 | .fa-reacteurope:before { 1899 | content: '\f75d'; 1900 | } 1901 | 1902 | .fa-medium:before { 1903 | content: '\f23a'; 1904 | } 1905 | 1906 | .fa-medium-m:before { 1907 | content: '\f23a'; 1908 | } 1909 | 1910 | .fa-amilia:before { 1911 | content: '\f36d'; 1912 | } 1913 | 1914 | .fa-mixcloud:before { 1915 | content: '\f289'; 1916 | } 1917 | 1918 | .fa-flipboard:before { 1919 | content: '\f44d'; 1920 | } 1921 | 1922 | .fa-viacoin:before { 1923 | content: '\f237'; 1924 | } 1925 | 1926 | .fa-critical-role:before { 1927 | content: '\f6c9'; 1928 | } 1929 | 1930 | .fa-sitrox:before { 1931 | content: '\e44a'; 1932 | } 1933 | 1934 | .fa-discourse:before { 1935 | content: '\f393'; 1936 | } 1937 | 1938 | .fa-joomla:before { 1939 | content: '\f1aa'; 1940 | } 1941 | 1942 | .fa-mastodon:before { 1943 | content: '\f4f6'; 1944 | } 1945 | 1946 | .fa-airbnb:before { 1947 | content: '\f834'; 1948 | } 1949 | 1950 | .fa-wolf-pack-battalion:before { 1951 | content: '\f514'; 1952 | } 1953 | 1954 | .fa-buy-n-large:before { 1955 | content: '\f8a6'; 1956 | } 1957 | 1958 | .fa-gulp:before { 1959 | content: '\f3ae'; 1960 | } 1961 | 1962 | .fa-creative-commons-sampling-plus:before { 1963 | content: '\f4f1'; 1964 | } 1965 | 1966 | .fa-strava:before { 1967 | content: '\f428'; 1968 | } 1969 | 1970 | .fa-ember:before { 1971 | content: '\f423'; 1972 | } 1973 | 1974 | .fa-canadian-maple-leaf:before { 1975 | content: '\f785'; 1976 | } 1977 | 1978 | .fa-teamspeak:before { 1979 | content: '\f4f9'; 1980 | } 1981 | 1982 | .fa-pushed:before { 1983 | content: '\f3e1'; 1984 | } 1985 | 1986 | .fa-wordpress-simple:before { 1987 | content: '\f411'; 1988 | } 1989 | 1990 | .fa-nutritionix:before { 1991 | content: '\f3d6'; 1992 | } 1993 | 1994 | .fa-wodu:before { 1995 | content: '\e088'; 1996 | } 1997 | 1998 | .fa-google-pay:before { 1999 | content: '\e079'; 2000 | } 2001 | 2002 | .fa-intercom:before { 2003 | content: '\f7af'; 2004 | } 2005 | 2006 | .fa-zhihu:before { 2007 | content: '\f63f'; 2008 | } 2009 | 2010 | .fa-korvue:before { 2011 | content: '\f42f'; 2012 | } 2013 | 2014 | .fa-pix:before { 2015 | content: '\e43a'; 2016 | } 2017 | 2018 | .fa-steam-symbol:before { 2019 | content: '\f3f6'; 2020 | } 2021 | -------------------------------------------------------------------------------- /src/assets/css/brands.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | * Copyright 2022 Fonticons, Inc. 5 | */ 6 | :host, 7 | :root { 8 | --fa-style-family-brands: 'Font Awesome 6 Brands'; 9 | --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; 10 | } 11 | @font-face { 12 | font-family: 'Font Awesome 6 Brands'; 13 | font-style: normal; 14 | font-weight: 400; 15 | font-display: block; 16 | src: url(../webfonts/fa-brands-400.woff2) format('woff2'), 17 | url(../webfonts/fa-brands-400.ttf) format('truetype'); 18 | } 19 | .fa-brands, 20 | .fab { 21 | font-weight: 400; 22 | } 23 | .fa-monero:before { 24 | content: '\f3d0'; 25 | } 26 | .fa-hooli:before { 27 | content: '\f427'; 28 | } 29 | .fa-yelp:before { 30 | content: '\f1e9'; 31 | } 32 | .fa-cc-visa:before { 33 | content: '\f1f0'; 34 | } 35 | .fa-lastfm:before { 36 | content: '\f202'; 37 | } 38 | .fa-shopware:before { 39 | content: '\f5b5'; 40 | } 41 | .fa-creative-commons-nc:before { 42 | content: '\f4e8'; 43 | } 44 | .fa-aws:before { 45 | content: '\f375'; 46 | } 47 | .fa-redhat:before { 48 | content: '\f7bc'; 49 | } 50 | .fa-yoast:before { 51 | content: '\f2b1'; 52 | } 53 | .fa-cloudflare:before { 54 | content: '\e07d'; 55 | } 56 | .fa-ups:before { 57 | content: '\f7e0'; 58 | } 59 | .fa-wpexplorer:before { 60 | content: '\f2de'; 61 | } 62 | .fa-dyalog:before { 63 | content: '\f399'; 64 | } 65 | .fa-bity:before { 66 | content: '\f37a'; 67 | } 68 | .fa-stackpath:before { 69 | content: '\f842'; 70 | } 71 | .fa-buysellads:before { 72 | content: '\f20d'; 73 | } 74 | .fa-first-order:before { 75 | content: '\f2b0'; 76 | } 77 | .fa-modx:before { 78 | content: '\f285'; 79 | } 80 | .fa-guilded:before { 81 | content: '\e07e'; 82 | } 83 | .fa-vnv:before { 84 | content: '\f40b'; 85 | } 86 | .fa-js-square:before, 87 | .fa-square-js:before { 88 | content: '\f3b9'; 89 | } 90 | .fa-microsoft:before { 91 | content: '\f3ca'; 92 | } 93 | .fa-qq:before { 94 | content: '\f1d6'; 95 | } 96 | .fa-orcid:before { 97 | content: '\f8d2'; 98 | } 99 | .fa-java:before { 100 | content: '\f4e4'; 101 | } 102 | .fa-invision:before { 103 | content: '\f7b0'; 104 | } 105 | .fa-creative-commons-pd-alt:before { 106 | content: '\f4ed'; 107 | } 108 | .fa-centercode:before { 109 | content: '\f380'; 110 | } 111 | .fa-glide-g:before { 112 | content: '\f2a6'; 113 | } 114 | .fa-drupal:before { 115 | content: '\f1a9'; 116 | } 117 | .fa-hire-a-helper:before { 118 | content: '\f3b0'; 119 | } 120 | .fa-creative-commons-by:before { 121 | content: '\f4e7'; 122 | } 123 | .fa-unity:before { 124 | content: '\e049'; 125 | } 126 | .fa-whmcs:before { 127 | content: '\f40d'; 128 | } 129 | .fa-rocketchat:before { 130 | content: '\f3e8'; 131 | } 132 | .fa-vk:before { 133 | content: '\f189'; 134 | } 135 | .fa-untappd:before { 136 | content: '\f405'; 137 | } 138 | .fa-mailchimp:before { 139 | content: '\f59e'; 140 | } 141 | .fa-css3-alt:before { 142 | content: '\f38b'; 143 | } 144 | .fa-reddit-square:before, 145 | .fa-square-reddit:before { 146 | content: '\f1a2'; 147 | } 148 | .fa-vimeo-v:before { 149 | content: '\f27d'; 150 | } 151 | .fa-contao:before { 152 | content: '\f26d'; 153 | } 154 | .fa-square-font-awesome:before { 155 | content: '\e5ad'; 156 | } 157 | .fa-deskpro:before { 158 | content: '\f38f'; 159 | } 160 | .fa-sistrix:before { 161 | content: '\f3ee'; 162 | } 163 | .fa-instagram-square:before, 164 | .fa-square-instagram:before { 165 | content: '\e055'; 166 | } 167 | .fa-battle-net:before { 168 | content: '\f835'; 169 | } 170 | .fa-the-red-yeti:before { 171 | content: '\f69d'; 172 | } 173 | .fa-hacker-news-square:before, 174 | .fa-square-hacker-news:before { 175 | content: '\f3af'; 176 | } 177 | .fa-edge:before { 178 | content: '\f282'; 179 | } 180 | .fa-napster:before { 181 | content: '\f3d2'; 182 | } 183 | .fa-snapchat-square:before, 184 | .fa-square-snapchat:before { 185 | content: '\f2ad'; 186 | } 187 | .fa-google-plus-g:before { 188 | content: '\f0d5'; 189 | } 190 | .fa-artstation:before { 191 | content: '\f77a'; 192 | } 193 | .fa-markdown:before { 194 | content: '\f60f'; 195 | } 196 | .fa-sourcetree:before { 197 | content: '\f7d3'; 198 | } 199 | .fa-google-plus:before { 200 | content: '\f2b3'; 201 | } 202 | .fa-diaspora:before { 203 | content: '\f791'; 204 | } 205 | .fa-foursquare:before { 206 | content: '\f180'; 207 | } 208 | .fa-stack-overflow:before { 209 | content: '\f16c'; 210 | } 211 | .fa-github-alt:before { 212 | content: '\f113'; 213 | } 214 | .fa-phoenix-squadron:before { 215 | content: '\f511'; 216 | } 217 | .fa-pagelines:before { 218 | content: '\f18c'; 219 | } 220 | .fa-algolia:before { 221 | content: '\f36c'; 222 | } 223 | .fa-red-river:before { 224 | content: '\f3e3'; 225 | } 226 | .fa-creative-commons-sa:before { 227 | content: '\f4ef'; 228 | } 229 | .fa-safari:before { 230 | content: '\f267'; 231 | } 232 | .fa-google:before { 233 | content: '\f1a0'; 234 | } 235 | .fa-font-awesome-alt:before, 236 | .fa-square-font-awesome-stroke:before { 237 | content: '\f35c'; 238 | } 239 | .fa-atlassian:before { 240 | content: '\f77b'; 241 | } 242 | .fa-linkedin-in:before { 243 | content: '\f0e1'; 244 | } 245 | .fa-digital-ocean:before { 246 | content: '\f391'; 247 | } 248 | .fa-nimblr:before { 249 | content: '\f5a8'; 250 | } 251 | .fa-chromecast:before { 252 | content: '\f838'; 253 | } 254 | .fa-evernote:before { 255 | content: '\f839'; 256 | } 257 | .fa-hacker-news:before { 258 | content: '\f1d4'; 259 | } 260 | .fa-creative-commons-sampling:before { 261 | content: '\f4f0'; 262 | } 263 | .fa-adversal:before { 264 | content: '\f36a'; 265 | } 266 | .fa-creative-commons:before { 267 | content: '\f25e'; 268 | } 269 | .fa-watchman-monitoring:before { 270 | content: '\e087'; 271 | } 272 | .fa-fonticons:before { 273 | content: '\f280'; 274 | } 275 | .fa-weixin:before { 276 | content: '\f1d7'; 277 | } 278 | .fa-shirtsinbulk:before { 279 | content: '\f214'; 280 | } 281 | .fa-codepen:before { 282 | content: '\f1cb'; 283 | } 284 | .fa-git-alt:before { 285 | content: '\f841'; 286 | } 287 | .fa-lyft:before { 288 | content: '\f3c3'; 289 | } 290 | .fa-rev:before { 291 | content: '\f5b2'; 292 | } 293 | .fa-windows:before { 294 | content: '\f17a'; 295 | } 296 | .fa-wizards-of-the-coast:before { 297 | content: '\f730'; 298 | } 299 | .fa-square-viadeo:before, 300 | .fa-viadeo-square:before { 301 | content: '\f2aa'; 302 | } 303 | .fa-meetup:before { 304 | content: '\f2e0'; 305 | } 306 | .fa-centos:before { 307 | content: '\f789'; 308 | } 309 | .fa-adn:before { 310 | content: '\f170'; 311 | } 312 | .fa-cloudsmith:before { 313 | content: '\f384'; 314 | } 315 | .fa-pied-piper-alt:before { 316 | content: '\f1a8'; 317 | } 318 | .fa-dribbble-square:before, 319 | .fa-square-dribbble:before { 320 | content: '\f397'; 321 | } 322 | .fa-codiepie:before { 323 | content: '\f284'; 324 | } 325 | .fa-node:before { 326 | content: '\f419'; 327 | } 328 | .fa-mix:before { 329 | content: '\f3cb'; 330 | } 331 | .fa-steam:before { 332 | content: '\f1b6'; 333 | } 334 | .fa-cc-apple-pay:before { 335 | content: '\f416'; 336 | } 337 | .fa-scribd:before { 338 | content: '\f28a'; 339 | } 340 | .fa-openid:before { 341 | content: '\f19b'; 342 | } 343 | .fa-instalod:before { 344 | content: '\e081'; 345 | } 346 | .fa-expeditedssl:before { 347 | content: '\f23e'; 348 | } 349 | .fa-sellcast:before { 350 | content: '\f2da'; 351 | } 352 | .fa-square-twitter:before, 353 | .fa-twitter-square:before { 354 | content: '\f081'; 355 | } 356 | .fa-r-project:before { 357 | content: '\f4f7'; 358 | } 359 | .fa-delicious:before { 360 | content: '\f1a5'; 361 | } 362 | .fa-freebsd:before { 363 | content: '\f3a4'; 364 | } 365 | .fa-vuejs:before { 366 | content: '\f41f'; 367 | } 368 | .fa-accusoft:before { 369 | content: '\f369'; 370 | } 371 | .fa-ioxhost:before { 372 | content: '\f208'; 373 | } 374 | .fa-fonticons-fi:before { 375 | content: '\f3a2'; 376 | } 377 | .fa-app-store:before { 378 | content: '\f36f'; 379 | } 380 | .fa-cc-mastercard:before { 381 | content: '\f1f1'; 382 | } 383 | .fa-itunes-note:before { 384 | content: '\f3b5'; 385 | } 386 | .fa-golang:before { 387 | content: '\e40f'; 388 | } 389 | .fa-kickstarter:before { 390 | content: '\f3bb'; 391 | } 392 | .fa-grav:before { 393 | content: '\f2d6'; 394 | } 395 | .fa-weibo:before { 396 | content: '\f18a'; 397 | } 398 | .fa-uncharted:before { 399 | content: '\e084'; 400 | } 401 | .fa-firstdraft:before { 402 | content: '\f3a1'; 403 | } 404 | .fa-square-youtube:before, 405 | .fa-youtube-square:before { 406 | content: '\f431'; 407 | } 408 | .fa-wikipedia-w:before { 409 | content: '\f266'; 410 | } 411 | .fa-rendact:before, 412 | .fa-wpressr:before { 413 | content: '\f3e4'; 414 | } 415 | .fa-angellist:before { 416 | content: '\f209'; 417 | } 418 | .fa-galactic-republic:before { 419 | content: '\f50c'; 420 | } 421 | .fa-nfc-directional:before { 422 | content: '\e530'; 423 | } 424 | .fa-skype:before { 425 | content: '\f17e'; 426 | } 427 | .fa-joget:before { 428 | content: '\f3b7'; 429 | } 430 | .fa-fedora:before { 431 | content: '\f798'; 432 | } 433 | .fa-stripe-s:before { 434 | content: '\f42a'; 435 | } 436 | .fa-meta:before { 437 | content: '\e49b'; 438 | } 439 | .fa-laravel:before { 440 | content: '\f3bd'; 441 | } 442 | .fa-hotjar:before { 443 | content: '\f3b1'; 444 | } 445 | .fa-bluetooth-b:before { 446 | content: '\f294'; 447 | } 448 | .fa-sticker-mule:before { 449 | content: '\f3f7'; 450 | } 451 | .fa-creative-commons-zero:before { 452 | content: '\f4f3'; 453 | } 454 | .fa-hips:before { 455 | content: '\f452'; 456 | } 457 | .fa-behance:before { 458 | content: '\f1b4'; 459 | } 460 | .fa-reddit:before { 461 | content: '\f1a1'; 462 | } 463 | .fa-discord:before { 464 | content: '\f392'; 465 | } 466 | .fa-chrome:before { 467 | content: '\f268'; 468 | } 469 | .fa-app-store-ios:before { 470 | content: '\f370'; 471 | } 472 | .fa-cc-discover:before { 473 | content: '\f1f2'; 474 | } 475 | .fa-wpbeginner:before { 476 | content: '\f297'; 477 | } 478 | .fa-confluence:before { 479 | content: '\f78d'; 480 | } 481 | .fa-mdb:before { 482 | content: '\f8ca'; 483 | } 484 | .fa-dochub:before { 485 | content: '\f394'; 486 | } 487 | .fa-accessible-icon:before { 488 | content: '\f368'; 489 | } 490 | .fa-ebay:before { 491 | content: '\f4f4'; 492 | } 493 | .fa-amazon:before { 494 | content: '\f270'; 495 | } 496 | .fa-unsplash:before { 497 | content: '\e07c'; 498 | } 499 | .fa-yarn:before { 500 | content: '\f7e3'; 501 | } 502 | .fa-square-steam:before, 503 | .fa-steam-square:before { 504 | content: '\f1b7'; 505 | } 506 | .fa-500px:before { 507 | content: '\f26e'; 508 | } 509 | .fa-square-vimeo:before, 510 | .fa-vimeo-square:before { 511 | content: '\f194'; 512 | } 513 | .fa-asymmetrik:before { 514 | content: '\f372'; 515 | } 516 | .fa-font-awesome-flag:before, 517 | .fa-font-awesome-logo-full:before, 518 | .fa-font-awesome:before { 519 | content: '\f2b4'; 520 | } 521 | .fa-gratipay:before { 522 | content: '\f184'; 523 | } 524 | .fa-apple:before { 525 | content: '\f179'; 526 | } 527 | .fa-hive:before { 528 | content: '\e07f'; 529 | } 530 | .fa-gitkraken:before { 531 | content: '\f3a6'; 532 | } 533 | .fa-keybase:before { 534 | content: '\f4f5'; 535 | } 536 | .fa-apple-pay:before { 537 | content: '\f415'; 538 | } 539 | .fa-padlet:before { 540 | content: '\e4a0'; 541 | } 542 | .fa-amazon-pay:before { 543 | content: '\f42c'; 544 | } 545 | .fa-github-square:before, 546 | .fa-square-github:before { 547 | content: '\f092'; 548 | } 549 | .fa-stumbleupon:before { 550 | content: '\f1a4'; 551 | } 552 | .fa-fedex:before { 553 | content: '\f797'; 554 | } 555 | .fa-phoenix-framework:before { 556 | content: '\f3dc'; 557 | } 558 | .fa-shopify:before { 559 | content: '\e057'; 560 | } 561 | .fa-neos:before { 562 | content: '\f612'; 563 | } 564 | .fa-hackerrank:before { 565 | content: '\f5f7'; 566 | } 567 | .fa-researchgate:before { 568 | content: '\f4f8'; 569 | } 570 | .fa-swift:before { 571 | content: '\f8e1'; 572 | } 573 | .fa-angular:before { 574 | content: '\f420'; 575 | } 576 | .fa-speakap:before { 577 | content: '\f3f3'; 578 | } 579 | .fa-angrycreative:before { 580 | content: '\f36e'; 581 | } 582 | .fa-y-combinator:before { 583 | content: '\f23b'; 584 | } 585 | .fa-empire:before { 586 | content: '\f1d1'; 587 | } 588 | .fa-envira:before { 589 | content: '\f299'; 590 | } 591 | .fa-gitlab-square:before, 592 | .fa-square-gitlab:before { 593 | content: '\e5ae'; 594 | } 595 | .fa-studiovinari:before { 596 | content: '\f3f8'; 597 | } 598 | .fa-pied-piper:before { 599 | content: '\f2ae'; 600 | } 601 | .fa-wordpress:before { 602 | content: '\f19a'; 603 | } 604 | .fa-product-hunt:before { 605 | content: '\f288'; 606 | } 607 | .fa-firefox:before { 608 | content: '\f269'; 609 | } 610 | .fa-linode:before { 611 | content: '\f2b8'; 612 | } 613 | .fa-goodreads:before { 614 | content: '\f3a8'; 615 | } 616 | .fa-odnoklassniki-square:before, 617 | .fa-square-odnoklassniki:before { 618 | content: '\f264'; 619 | } 620 | .fa-jsfiddle:before { 621 | content: '\f1cc'; 622 | } 623 | .fa-sith:before { 624 | content: '\f512'; 625 | } 626 | .fa-themeisle:before { 627 | content: '\f2b2'; 628 | } 629 | .fa-page4:before { 630 | content: '\f3d7'; 631 | } 632 | .fa-hashnode:before { 633 | content: '\e499'; 634 | } 635 | .fa-react:before { 636 | content: '\f41b'; 637 | } 638 | .fa-cc-paypal:before { 639 | content: '\f1f4'; 640 | } 641 | .fa-squarespace:before { 642 | content: '\f5be'; 643 | } 644 | .fa-cc-stripe:before { 645 | content: '\f1f5'; 646 | } 647 | .fa-creative-commons-share:before { 648 | content: '\f4f2'; 649 | } 650 | .fa-bitcoin:before { 651 | content: '\f379'; 652 | } 653 | .fa-keycdn:before { 654 | content: '\f3ba'; 655 | } 656 | .fa-opera:before { 657 | content: '\f26a'; 658 | } 659 | .fa-itch-io:before { 660 | content: '\f83a'; 661 | } 662 | .fa-umbraco:before { 663 | content: '\f8e8'; 664 | } 665 | .fa-galactic-senate:before { 666 | content: '\f50d'; 667 | } 668 | .fa-ubuntu:before { 669 | content: '\f7df'; 670 | } 671 | .fa-draft2digital:before { 672 | content: '\f396'; 673 | } 674 | .fa-stripe:before { 675 | content: '\f429'; 676 | } 677 | .fa-houzz:before { 678 | content: '\f27c'; 679 | } 680 | .fa-gg:before { 681 | content: '\f260'; 682 | } 683 | .fa-dhl:before { 684 | content: '\f790'; 685 | } 686 | .fa-pinterest-square:before, 687 | .fa-square-pinterest:before { 688 | content: '\f0d3'; 689 | } 690 | .fa-xing:before { 691 | content: '\f168'; 692 | } 693 | .fa-blackberry:before { 694 | content: '\f37b'; 695 | } 696 | .fa-creative-commons-pd:before { 697 | content: '\f4ec'; 698 | } 699 | .fa-playstation:before { 700 | content: '\f3df'; 701 | } 702 | .fa-quinscape:before { 703 | content: '\f459'; 704 | } 705 | .fa-less:before { 706 | content: '\f41d'; 707 | } 708 | .fa-blogger-b:before { 709 | content: '\f37d'; 710 | } 711 | .fa-opencart:before { 712 | content: '\f23d'; 713 | } 714 | .fa-vine:before { 715 | content: '\f1ca'; 716 | } 717 | .fa-paypal:before { 718 | content: '\f1ed'; 719 | } 720 | .fa-gitlab:before { 721 | content: '\f296'; 722 | } 723 | .fa-typo3:before { 724 | content: '\f42b'; 725 | } 726 | .fa-reddit-alien:before { 727 | content: '\f281'; 728 | } 729 | .fa-yahoo:before { 730 | content: '\f19e'; 731 | } 732 | .fa-dailymotion:before { 733 | content: '\e052'; 734 | } 735 | .fa-affiliatetheme:before { 736 | content: '\f36b'; 737 | } 738 | .fa-pied-piper-pp:before { 739 | content: '\f1a7'; 740 | } 741 | .fa-bootstrap:before { 742 | content: '\f836'; 743 | } 744 | .fa-odnoklassniki:before { 745 | content: '\f263'; 746 | } 747 | .fa-nfc-symbol:before { 748 | content: '\e531'; 749 | } 750 | .fa-ethereum:before { 751 | content: '\f42e'; 752 | } 753 | .fa-speaker-deck:before { 754 | content: '\f83c'; 755 | } 756 | .fa-creative-commons-nc-eu:before { 757 | content: '\f4e9'; 758 | } 759 | .fa-patreon:before { 760 | content: '\f3d9'; 761 | } 762 | .fa-avianex:before { 763 | content: '\f374'; 764 | } 765 | .fa-ello:before { 766 | content: '\f5f1'; 767 | } 768 | .fa-gofore:before { 769 | content: '\f3a7'; 770 | } 771 | .fa-bimobject:before { 772 | content: '\f378'; 773 | } 774 | .fa-facebook-f:before { 775 | content: '\f39e'; 776 | } 777 | .fa-google-plus-square:before, 778 | .fa-square-google-plus:before { 779 | content: '\f0d4'; 780 | } 781 | .fa-mandalorian:before { 782 | content: '\f50f'; 783 | } 784 | .fa-first-order-alt:before { 785 | content: '\f50a'; 786 | } 787 | .fa-osi:before { 788 | content: '\f41a'; 789 | } 790 | .fa-google-wallet:before { 791 | content: '\f1ee'; 792 | } 793 | .fa-d-and-d-beyond:before { 794 | content: '\f6ca'; 795 | } 796 | .fa-periscope:before { 797 | content: '\f3da'; 798 | } 799 | .fa-fulcrum:before { 800 | content: '\f50b'; 801 | } 802 | .fa-cloudscale:before { 803 | content: '\f383'; 804 | } 805 | .fa-forumbee:before { 806 | content: '\f211'; 807 | } 808 | .fa-mizuni:before { 809 | content: '\f3cc'; 810 | } 811 | .fa-schlix:before { 812 | content: '\f3ea'; 813 | } 814 | .fa-square-xing:before, 815 | .fa-xing-square:before { 816 | content: '\f169'; 817 | } 818 | .fa-bandcamp:before { 819 | content: '\f2d5'; 820 | } 821 | .fa-wpforms:before { 822 | content: '\f298'; 823 | } 824 | .fa-cloudversify:before { 825 | content: '\f385'; 826 | } 827 | .fa-usps:before { 828 | content: '\f7e1'; 829 | } 830 | .fa-megaport:before { 831 | content: '\f5a3'; 832 | } 833 | .fa-magento:before { 834 | content: '\f3c4'; 835 | } 836 | .fa-spotify:before { 837 | content: '\f1bc'; 838 | } 839 | .fa-optin-monster:before { 840 | content: '\f23c'; 841 | } 842 | .fa-fly:before { 843 | content: '\f417'; 844 | } 845 | .fa-aviato:before { 846 | content: '\f421'; 847 | } 848 | .fa-itunes:before { 849 | content: '\f3b4'; 850 | } 851 | .fa-cuttlefish:before { 852 | content: '\f38c'; 853 | } 854 | .fa-blogger:before { 855 | content: '\f37c'; 856 | } 857 | .fa-flickr:before { 858 | content: '\f16e'; 859 | } 860 | .fa-viber:before { 861 | content: '\f409'; 862 | } 863 | .fa-soundcloud:before { 864 | content: '\f1be'; 865 | } 866 | .fa-digg:before { 867 | content: '\f1a6'; 868 | } 869 | .fa-tencent-weibo:before { 870 | content: '\f1d5'; 871 | } 872 | .fa-symfony:before { 873 | content: '\f83d'; 874 | } 875 | .fa-maxcdn:before { 876 | content: '\f136'; 877 | } 878 | .fa-etsy:before { 879 | content: '\f2d7'; 880 | } 881 | .fa-facebook-messenger:before { 882 | content: '\f39f'; 883 | } 884 | .fa-audible:before { 885 | content: '\f373'; 886 | } 887 | .fa-think-peaks:before { 888 | content: '\f731'; 889 | } 890 | .fa-bilibili:before { 891 | content: '\e3d9'; 892 | } 893 | .fa-erlang:before { 894 | content: '\f39d'; 895 | } 896 | .fa-cotton-bureau:before { 897 | content: '\f89e'; 898 | } 899 | .fa-dashcube:before { 900 | content: '\f210'; 901 | } 902 | .fa-42-group:before, 903 | .fa-innosoft:before { 904 | content: '\e080'; 905 | } 906 | .fa-stack-exchange:before { 907 | content: '\f18d'; 908 | } 909 | .fa-elementor:before { 910 | content: '\f430'; 911 | } 912 | .fa-pied-piper-square:before, 913 | .fa-square-pied-piper:before { 914 | content: '\e01e'; 915 | } 916 | .fa-creative-commons-nd:before { 917 | content: '\f4eb'; 918 | } 919 | .fa-palfed:before { 920 | content: '\f3d8'; 921 | } 922 | .fa-superpowers:before { 923 | content: '\f2dd'; 924 | } 925 | .fa-resolving:before { 926 | content: '\f3e7'; 927 | } 928 | .fa-xbox:before { 929 | content: '\f412'; 930 | } 931 | .fa-searchengin:before { 932 | content: '\f3eb'; 933 | } 934 | .fa-tiktok:before { 935 | content: '\e07b'; 936 | } 937 | .fa-facebook-square:before, 938 | .fa-square-facebook:before { 939 | content: '\f082'; 940 | } 941 | .fa-renren:before { 942 | content: '\f18b'; 943 | } 944 | .fa-linux:before { 945 | content: '\f17c'; 946 | } 947 | .fa-glide:before { 948 | content: '\f2a5'; 949 | } 950 | .fa-linkedin:before { 951 | content: '\f08c'; 952 | } 953 | .fa-hubspot:before { 954 | content: '\f3b2'; 955 | } 956 | .fa-deploydog:before { 957 | content: '\f38e'; 958 | } 959 | .fa-twitch:before { 960 | content: '\f1e8'; 961 | } 962 | .fa-ravelry:before { 963 | content: '\f2d9'; 964 | } 965 | .fa-mixer:before { 966 | content: '\e056'; 967 | } 968 | .fa-lastfm-square:before, 969 | .fa-square-lastfm:before { 970 | content: '\f203'; 971 | } 972 | .fa-vimeo:before { 973 | content: '\f40a'; 974 | } 975 | .fa-mendeley:before { 976 | content: '\f7b3'; 977 | } 978 | .fa-uniregistry:before { 979 | content: '\f404'; 980 | } 981 | .fa-figma:before { 982 | content: '\f799'; 983 | } 984 | .fa-creative-commons-remix:before { 985 | content: '\f4ee'; 986 | } 987 | .fa-cc-amazon-pay:before { 988 | content: '\f42d'; 989 | } 990 | .fa-dropbox:before { 991 | content: '\f16b'; 992 | } 993 | .fa-instagram:before { 994 | content: '\f16d'; 995 | } 996 | .fa-cmplid:before { 997 | content: '\e360'; 998 | } 999 | .fa-facebook:before { 1000 | content: '\f09a'; 1001 | } 1002 | .fa-gripfire:before { 1003 | content: '\f3ac'; 1004 | } 1005 | .fa-jedi-order:before { 1006 | content: '\f50e'; 1007 | } 1008 | .fa-uikit:before { 1009 | content: '\f403'; 1010 | } 1011 | .fa-fort-awesome-alt:before { 1012 | content: '\f3a3'; 1013 | } 1014 | .fa-phabricator:before { 1015 | content: '\f3db'; 1016 | } 1017 | .fa-ussunnah:before { 1018 | content: '\f407'; 1019 | } 1020 | .fa-earlybirds:before { 1021 | content: '\f39a'; 1022 | } 1023 | .fa-trade-federation:before { 1024 | content: '\f513'; 1025 | } 1026 | .fa-autoprefixer:before { 1027 | content: '\f41c'; 1028 | } 1029 | .fa-whatsapp:before { 1030 | content: '\f232'; 1031 | } 1032 | .fa-slideshare:before { 1033 | content: '\f1e7'; 1034 | } 1035 | .fa-google-play:before { 1036 | content: '\f3ab'; 1037 | } 1038 | .fa-viadeo:before { 1039 | content: '\f2a9'; 1040 | } 1041 | .fa-line:before { 1042 | content: '\f3c0'; 1043 | } 1044 | .fa-google-drive:before { 1045 | content: '\f3aa'; 1046 | } 1047 | .fa-servicestack:before { 1048 | content: '\f3ec'; 1049 | } 1050 | .fa-simplybuilt:before { 1051 | content: '\f215'; 1052 | } 1053 | .fa-bitbucket:before { 1054 | content: '\f171'; 1055 | } 1056 | .fa-imdb:before { 1057 | content: '\f2d8'; 1058 | } 1059 | .fa-deezer:before { 1060 | content: '\e077'; 1061 | } 1062 | .fa-raspberry-pi:before { 1063 | content: '\f7bb'; 1064 | } 1065 | .fa-jira:before { 1066 | content: '\f7b1'; 1067 | } 1068 | .fa-docker:before { 1069 | content: '\f395'; 1070 | } 1071 | .fa-screenpal:before { 1072 | content: '\e570'; 1073 | } 1074 | .fa-bluetooth:before { 1075 | content: '\f293'; 1076 | } 1077 | .fa-gitter:before { 1078 | content: '\f426'; 1079 | } 1080 | .fa-d-and-d:before { 1081 | content: '\f38d'; 1082 | } 1083 | .fa-microblog:before { 1084 | content: '\e01a'; 1085 | } 1086 | .fa-cc-diners-club:before { 1087 | content: '\f24c'; 1088 | } 1089 | .fa-gg-circle:before { 1090 | content: '\f261'; 1091 | } 1092 | .fa-pied-piper-hat:before { 1093 | content: '\f4e5'; 1094 | } 1095 | .fa-kickstarter-k:before { 1096 | content: '\f3bc'; 1097 | } 1098 | .fa-yandex:before { 1099 | content: '\f413'; 1100 | } 1101 | .fa-readme:before { 1102 | content: '\f4d5'; 1103 | } 1104 | .fa-html5:before { 1105 | content: '\f13b'; 1106 | } 1107 | .fa-sellsy:before { 1108 | content: '\f213'; 1109 | } 1110 | .fa-sass:before { 1111 | content: '\f41e'; 1112 | } 1113 | .fa-wirsindhandwerk:before, 1114 | .fa-wsh:before { 1115 | content: '\e2d0'; 1116 | } 1117 | .fa-buromobelexperte:before { 1118 | content: '\f37f'; 1119 | } 1120 | .fa-salesforce:before { 1121 | content: '\f83b'; 1122 | } 1123 | .fa-octopus-deploy:before { 1124 | content: '\e082'; 1125 | } 1126 | .fa-medapps:before { 1127 | content: '\f3c6'; 1128 | } 1129 | .fa-ns8:before { 1130 | content: '\f3d5'; 1131 | } 1132 | .fa-pinterest-p:before { 1133 | content: '\f231'; 1134 | } 1135 | .fa-apper:before { 1136 | content: '\f371'; 1137 | } 1138 | .fa-fort-awesome:before { 1139 | content: '\f286'; 1140 | } 1141 | .fa-waze:before { 1142 | content: '\f83f'; 1143 | } 1144 | .fa-cc-jcb:before { 1145 | content: '\f24b'; 1146 | } 1147 | .fa-snapchat-ghost:before, 1148 | .fa-snapchat:before { 1149 | content: '\f2ab'; 1150 | } 1151 | .fa-fantasy-flight-games:before { 1152 | content: '\f6dc'; 1153 | } 1154 | .fa-rust:before { 1155 | content: '\e07a'; 1156 | } 1157 | .fa-wix:before { 1158 | content: '\f5cf'; 1159 | } 1160 | .fa-behance-square:before, 1161 | .fa-square-behance:before { 1162 | content: '\f1b5'; 1163 | } 1164 | .fa-supple:before { 1165 | content: '\f3f9'; 1166 | } 1167 | .fa-rebel:before { 1168 | content: '\f1d0'; 1169 | } 1170 | .fa-css3:before { 1171 | content: '\f13c'; 1172 | } 1173 | .fa-staylinked:before { 1174 | content: '\f3f5'; 1175 | } 1176 | .fa-kaggle:before { 1177 | content: '\f5fa'; 1178 | } 1179 | .fa-space-awesome:before { 1180 | content: '\e5ac'; 1181 | } 1182 | .fa-deviantart:before { 1183 | content: '\f1bd'; 1184 | } 1185 | .fa-cpanel:before { 1186 | content: '\f388'; 1187 | } 1188 | .fa-goodreads-g:before { 1189 | content: '\f3a9'; 1190 | } 1191 | .fa-git-square:before, 1192 | .fa-square-git:before { 1193 | content: '\f1d2'; 1194 | } 1195 | .fa-square-tumblr:before, 1196 | .fa-tumblr-square:before { 1197 | content: '\f174'; 1198 | } 1199 | .fa-trello:before { 1200 | content: '\f181'; 1201 | } 1202 | .fa-creative-commons-nc-jp:before { 1203 | content: '\f4ea'; 1204 | } 1205 | .fa-get-pocket:before { 1206 | content: '\f265'; 1207 | } 1208 | .fa-perbyte:before { 1209 | content: '\e083'; 1210 | } 1211 | .fa-grunt:before { 1212 | content: '\f3ad'; 1213 | } 1214 | .fa-weebly:before { 1215 | content: '\f5cc'; 1216 | } 1217 | .fa-connectdevelop:before { 1218 | content: '\f20e'; 1219 | } 1220 | .fa-leanpub:before { 1221 | content: '\f212'; 1222 | } 1223 | .fa-black-tie:before { 1224 | content: '\f27e'; 1225 | } 1226 | .fa-themeco:before { 1227 | content: '\f5c6'; 1228 | } 1229 | .fa-python:before { 1230 | content: '\f3e2'; 1231 | } 1232 | .fa-android:before { 1233 | content: '\f17b'; 1234 | } 1235 | .fa-bots:before { 1236 | content: '\e340'; 1237 | } 1238 | .fa-free-code-camp:before { 1239 | content: '\f2c5'; 1240 | } 1241 | .fa-hornbill:before { 1242 | content: '\f592'; 1243 | } 1244 | .fa-js:before { 1245 | content: '\f3b8'; 1246 | } 1247 | .fa-ideal:before { 1248 | content: '\e013'; 1249 | } 1250 | .fa-git:before { 1251 | content: '\f1d3'; 1252 | } 1253 | .fa-dev:before { 1254 | content: '\f6cc'; 1255 | } 1256 | .fa-sketch:before { 1257 | content: '\f7c6'; 1258 | } 1259 | .fa-yandex-international:before { 1260 | content: '\f414'; 1261 | } 1262 | .fa-cc-amex:before { 1263 | content: '\f1f3'; 1264 | } 1265 | .fa-uber:before { 1266 | content: '\f402'; 1267 | } 1268 | .fa-github:before { 1269 | content: '\f09b'; 1270 | } 1271 | .fa-php:before { 1272 | content: '\f457'; 1273 | } 1274 | .fa-alipay:before { 1275 | content: '\f642'; 1276 | } 1277 | .fa-youtube:before { 1278 | content: '\f167'; 1279 | } 1280 | .fa-skyatlas:before { 1281 | content: '\f216'; 1282 | } 1283 | .fa-firefox-browser:before { 1284 | content: '\e007'; 1285 | } 1286 | .fa-replyd:before { 1287 | content: '\f3e6'; 1288 | } 1289 | .fa-suse:before { 1290 | content: '\f7d6'; 1291 | } 1292 | .fa-jenkins:before { 1293 | content: '\f3b6'; 1294 | } 1295 | .fa-twitter:before { 1296 | content: '\f099'; 1297 | } 1298 | .fa-rockrms:before { 1299 | content: '\f3e9'; 1300 | } 1301 | .fa-pinterest:before { 1302 | content: '\f0d2'; 1303 | } 1304 | .fa-buffer:before { 1305 | content: '\f837'; 1306 | } 1307 | .fa-npm:before { 1308 | content: '\f3d4'; 1309 | } 1310 | .fa-yammer:before { 1311 | content: '\f840'; 1312 | } 1313 | .fa-btc:before { 1314 | content: '\f15a'; 1315 | } 1316 | .fa-dribbble:before { 1317 | content: '\f17d'; 1318 | } 1319 | .fa-stumbleupon-circle:before { 1320 | content: '\f1a3'; 1321 | } 1322 | .fa-internet-explorer:before { 1323 | content: '\f26b'; 1324 | } 1325 | .fa-telegram-plane:before, 1326 | .fa-telegram:before { 1327 | content: '\f2c6'; 1328 | } 1329 | .fa-old-republic:before { 1330 | content: '\f510'; 1331 | } 1332 | .fa-square-whatsapp:before, 1333 | .fa-whatsapp-square:before { 1334 | content: '\f40c'; 1335 | } 1336 | .fa-node-js:before { 1337 | content: '\f3d3'; 1338 | } 1339 | .fa-edge-legacy:before { 1340 | content: '\e078'; 1341 | } 1342 | .fa-slack-hash:before, 1343 | .fa-slack:before { 1344 | content: '\f198'; 1345 | } 1346 | .fa-medrt:before { 1347 | content: '\f3c8'; 1348 | } 1349 | .fa-usb:before { 1350 | content: '\f287'; 1351 | } 1352 | .fa-tumblr:before { 1353 | content: '\f173'; 1354 | } 1355 | .fa-vaadin:before { 1356 | content: '\f408'; 1357 | } 1358 | .fa-quora:before { 1359 | content: '\f2c4'; 1360 | } 1361 | .fa-reacteurope:before { 1362 | content: '\f75d'; 1363 | } 1364 | .fa-medium-m:before, 1365 | .fa-medium:before { 1366 | content: '\f23a'; 1367 | } 1368 | .fa-amilia:before { 1369 | content: '\f36d'; 1370 | } 1371 | .fa-mixcloud:before { 1372 | content: '\f289'; 1373 | } 1374 | .fa-flipboard:before { 1375 | content: '\f44d'; 1376 | } 1377 | .fa-viacoin:before { 1378 | content: '\f237'; 1379 | } 1380 | .fa-critical-role:before { 1381 | content: '\f6c9'; 1382 | } 1383 | .fa-sitrox:before { 1384 | content: '\e44a'; 1385 | } 1386 | .fa-discourse:before { 1387 | content: '\f393'; 1388 | } 1389 | .fa-joomla:before { 1390 | content: '\f1aa'; 1391 | } 1392 | .fa-mastodon:before { 1393 | content: '\f4f6'; 1394 | } 1395 | .fa-airbnb:before { 1396 | content: '\f834'; 1397 | } 1398 | .fa-wolf-pack-battalion:before { 1399 | content: '\f514'; 1400 | } 1401 | .fa-buy-n-large:before { 1402 | content: '\f8a6'; 1403 | } 1404 | .fa-gulp:before { 1405 | content: '\f3ae'; 1406 | } 1407 | .fa-creative-commons-sampling-plus:before { 1408 | content: '\f4f1'; 1409 | } 1410 | .fa-strava:before { 1411 | content: '\f428'; 1412 | } 1413 | .fa-ember:before { 1414 | content: '\f423'; 1415 | } 1416 | .fa-canadian-maple-leaf:before { 1417 | content: '\f785'; 1418 | } 1419 | .fa-teamspeak:before { 1420 | content: '\f4f9'; 1421 | } 1422 | .fa-pushed:before { 1423 | content: '\f3e1'; 1424 | } 1425 | .fa-wordpress-simple:before { 1426 | content: '\f411'; 1427 | } 1428 | .fa-nutritionix:before { 1429 | content: '\f3d6'; 1430 | } 1431 | .fa-wodu:before { 1432 | content: '\e088'; 1433 | } 1434 | .fa-google-pay:before { 1435 | content: '\e079'; 1436 | } 1437 | .fa-intercom:before { 1438 | content: '\f7af'; 1439 | } 1440 | .fa-zhihu:before { 1441 | content: '\f63f'; 1442 | } 1443 | .fa-korvue:before { 1444 | content: '\f42f'; 1445 | } 1446 | .fa-pix:before { 1447 | content: '\e43a'; 1448 | } 1449 | .fa-steam-symbol:before { 1450 | content: '\f3f6'; 1451 | } 1452 | -------------------------------------------------------------------------------- /src/assets/css/regular.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | * Copyright 2022 Fonticons, Inc. 5 | */ 6 | :root, 7 | :host { 8 | --fa-style-family-classic: 'Font Awesome 6 Free'; 9 | --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; 10 | } 11 | 12 | @font-face { 13 | font-family: 'Font Awesome 6 Free'; 14 | font-style: normal; 15 | font-weight: 400; 16 | font-display: block; 17 | src: url('../webfonts/fa-regular-400.woff2') format('woff2'), 18 | url('../webfonts/fa-regular-400.ttf') format('truetype'); 19 | } 20 | 21 | .far, 22 | .fa-regular { 23 | font-weight: 400; 24 | } 25 | -------------------------------------------------------------------------------- /src/assets/css/regular.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | * Copyright 2022 Fonticons, Inc. 5 | */ 6 | :host, 7 | :root { 8 | --fa-style-family-classic: 'Font Awesome 6 Free'; 9 | --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; 10 | } 11 | @font-face { 12 | font-family: 'Font Awesome 6 Free'; 13 | font-style: normal; 14 | font-weight: 400; 15 | font-display: block; 16 | src: url(../webfonts/fa-regular-400.woff2) format('woff2'), 17 | url(../webfonts/fa-regular-400.ttf) format('truetype'); 18 | } 19 | .fa-regular, 20 | .far { 21 | font-weight: 400; 22 | } 23 | -------------------------------------------------------------------------------- /src/assets/css/solid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | * Copyright 2022 Fonticons, Inc. 5 | */ 6 | :root, 7 | :host { 8 | --fa-style-family-classic: 'Font Awesome 6 Free'; 9 | --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; 10 | } 11 | 12 | @font-face { 13 | font-family: 'Font Awesome 6 Free'; 14 | font-style: normal; 15 | font-weight: 900; 16 | font-display: block; 17 | src: url('../webfonts/fa-solid-900.woff2') format('woff2'), 18 | url('../webfonts/fa-solid-900.ttf') format('truetype'); 19 | } 20 | 21 | .fas, 22 | .fa-solid { 23 | font-weight: 900; 24 | } 25 | -------------------------------------------------------------------------------- /src/assets/css/solid.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | * Copyright 2022 Fonticons, Inc. 5 | */ 6 | :host, 7 | :root { 8 | --fa-style-family-classic: 'Font Awesome 6 Free'; 9 | --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; 10 | } 11 | @font-face { 12 | font-family: 'Font Awesome 6 Free'; 13 | font-style: normal; 14 | font-weight: 900; 15 | font-display: block; 16 | src: url(../webfonts/fa-solid-900.woff2) format('woff2'), 17 | url(../webfonts/fa-solid-900.ttf) format('truetype'); 18 | } 19 | .fa-solid, 20 | .fas { 21 | font-weight: 900; 22 | } 23 | -------------------------------------------------------------------------------- /src/assets/css/svg-with-js.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | * Copyright 2022 Fonticons, Inc. 5 | */ 6 | :root, 7 | :host { 8 | --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Solid'; 9 | --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Regular'; 10 | --fa-font-light: normal 300 1em/1 'Font Awesome 6 Light'; 11 | --fa-font-thin: normal 100 1em/1 'Font Awesome 6 Thin'; 12 | --fa-font-duotone: normal 900 1em/1 'Font Awesome 6 Duotone'; 13 | --fa-font-sharp-solid: normal 900 1em/1 'Font Awesome 6 Sharp'; 14 | --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; 15 | } 16 | 17 | svg:not(:root).svg-inline--fa, 18 | svg:not(:host).svg-inline--fa { 19 | overflow: visible; 20 | box-sizing: content-box; 21 | } 22 | 23 | .svg-inline--fa { 24 | display: var(--fa-display, inline-block); 25 | height: 1em; 26 | overflow: visible; 27 | vertical-align: -0.125em; 28 | } 29 | .svg-inline--fa.fa-2xs { 30 | vertical-align: 0.1em; 31 | } 32 | .svg-inline--fa.fa-xs { 33 | vertical-align: 0em; 34 | } 35 | .svg-inline--fa.fa-sm { 36 | vertical-align: -0.07143em; 37 | } 38 | .svg-inline--fa.fa-lg { 39 | vertical-align: -0.2em; 40 | } 41 | .svg-inline--fa.fa-xl { 42 | vertical-align: -0.25em; 43 | } 44 | .svg-inline--fa.fa-2xl { 45 | vertical-align: -0.3125em; 46 | } 47 | .svg-inline--fa.fa-pull-left { 48 | margin-right: var(--fa-pull-margin, 0.3em); 49 | width: auto; 50 | } 51 | .svg-inline--fa.fa-pull-right { 52 | margin-left: var(--fa-pull-margin, 0.3em); 53 | width: auto; 54 | } 55 | .svg-inline--fa.fa-li { 56 | width: var(--fa-li-width, 2em); 57 | top: 0.25em; 58 | } 59 | .svg-inline--fa.fa-fw { 60 | width: var(--fa-fw-width, 1.25em); 61 | } 62 | 63 | .fa-layers svg.svg-inline--fa { 64 | bottom: 0; 65 | left: 0; 66 | margin: auto; 67 | position: absolute; 68 | right: 0; 69 | top: 0; 70 | } 71 | 72 | .fa-layers-text, 73 | .fa-layers-counter { 74 | display: inline-block; 75 | position: absolute; 76 | text-align: center; 77 | } 78 | 79 | .fa-layers { 80 | display: inline-block; 81 | height: 1em; 82 | position: relative; 83 | text-align: center; 84 | vertical-align: -0.125em; 85 | width: 1em; 86 | } 87 | .fa-layers svg.svg-inline--fa { 88 | -webkit-transform-origin: center center; 89 | transform-origin: center center; 90 | } 91 | 92 | .fa-layers-text { 93 | left: 50%; 94 | top: 50%; 95 | -webkit-transform: translate(-50%, -50%); 96 | transform: translate(-50%, -50%); 97 | -webkit-transform-origin: center center; 98 | transform-origin: center center; 99 | } 100 | 101 | .fa-layers-counter { 102 | background-color: var(--fa-counter-background-color, #ff253a); 103 | border-radius: var(--fa-counter-border-radius, 1em); 104 | box-sizing: border-box; 105 | color: var(--fa-inverse, #fff); 106 | line-height: var(--fa-counter-line-height, 1); 107 | max-width: var(--fa-counter-max-width, 5em); 108 | min-width: var(--fa-counter-min-width, 1.5em); 109 | overflow: hidden; 110 | padding: var(--fa-counter-padding, 0.25em 0.5em); 111 | right: var(--fa-right, 0); 112 | text-overflow: ellipsis; 113 | top: var(--fa-top, 0); 114 | -webkit-transform: scale(var(--fa-counter-scale, 0.25)); 115 | transform: scale(var(--fa-counter-scale, 0.25)); 116 | -webkit-transform-origin: top right; 117 | transform-origin: top right; 118 | } 119 | 120 | .fa-layers-bottom-right { 121 | bottom: var(--fa-bottom, 0); 122 | right: var(--fa-right, 0); 123 | top: auto; 124 | -webkit-transform: scale(var(--fa-layers-scale, 0.25)); 125 | transform: scale(var(--fa-layers-scale, 0.25)); 126 | -webkit-transform-origin: bottom right; 127 | transform-origin: bottom right; 128 | } 129 | 130 | .fa-layers-bottom-left { 131 | bottom: var(--fa-bottom, 0); 132 | left: var(--fa-left, 0); 133 | right: auto; 134 | top: auto; 135 | -webkit-transform: scale(var(--fa-layers-scale, 0.25)); 136 | transform: scale(var(--fa-layers-scale, 0.25)); 137 | -webkit-transform-origin: bottom left; 138 | transform-origin: bottom left; 139 | } 140 | 141 | .fa-layers-top-right { 142 | top: var(--fa-top, 0); 143 | right: var(--fa-right, 0); 144 | -webkit-transform: scale(var(--fa-layers-scale, 0.25)); 145 | transform: scale(var(--fa-layers-scale, 0.25)); 146 | -webkit-transform-origin: top right; 147 | transform-origin: top right; 148 | } 149 | 150 | .fa-layers-top-left { 151 | left: var(--fa-left, 0); 152 | right: auto; 153 | top: var(--fa-top, 0); 154 | -webkit-transform: scale(var(--fa-layers-scale, 0.25)); 155 | transform: scale(var(--fa-layers-scale, 0.25)); 156 | -webkit-transform-origin: top left; 157 | transform-origin: top left; 158 | } 159 | 160 | .fa-1x { 161 | font-size: 1em; 162 | } 163 | 164 | .fa-2x { 165 | font-size: 2em; 166 | } 167 | 168 | .fa-3x { 169 | font-size: 3em; 170 | } 171 | 172 | .fa-4x { 173 | font-size: 4em; 174 | } 175 | 176 | .fa-5x { 177 | font-size: 5em; 178 | } 179 | 180 | .fa-6x { 181 | font-size: 6em; 182 | } 183 | 184 | .fa-7x { 185 | font-size: 7em; 186 | } 187 | 188 | .fa-8x { 189 | font-size: 8em; 190 | } 191 | 192 | .fa-9x { 193 | font-size: 9em; 194 | } 195 | 196 | .fa-10x { 197 | font-size: 10em; 198 | } 199 | 200 | .fa-2xs { 201 | font-size: 0.625em; 202 | line-height: 0.1em; 203 | vertical-align: 0.225em; 204 | } 205 | 206 | .fa-xs { 207 | font-size: 0.75em; 208 | line-height: 0.08333em; 209 | vertical-align: 0.125em; 210 | } 211 | 212 | .fa-sm { 213 | font-size: 0.875em; 214 | line-height: 0.07143em; 215 | vertical-align: 0.05357em; 216 | } 217 | 218 | .fa-lg { 219 | font-size: 1.25em; 220 | line-height: 0.05em; 221 | vertical-align: -0.075em; 222 | } 223 | 224 | .fa-xl { 225 | font-size: 1.5em; 226 | line-height: 0.04167em; 227 | vertical-align: -0.125em; 228 | } 229 | 230 | .fa-2xl { 231 | font-size: 2em; 232 | line-height: 0.03125em; 233 | vertical-align: -0.1875em; 234 | } 235 | 236 | .fa-fw { 237 | text-align: center; 238 | width: 1.25em; 239 | } 240 | 241 | .fa-ul { 242 | list-style-type: none; 243 | margin-left: var(--fa-li-margin, 2.5em); 244 | padding-left: 0; 245 | } 246 | .fa-ul > li { 247 | position: relative; 248 | } 249 | 250 | .fa-li { 251 | left: calc(var(--fa-li-width, 2em) * -1); 252 | position: absolute; 253 | text-align: center; 254 | width: var(--fa-li-width, 2em); 255 | line-height: inherit; 256 | } 257 | 258 | .fa-border { 259 | border-color: var(--fa-border-color, #eee); 260 | border-radius: var(--fa-border-radius, 0.1em); 261 | border-style: var(--fa-border-style, solid); 262 | border-width: var(--fa-border-width, 0.08em); 263 | padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); 264 | } 265 | 266 | .fa-pull-left { 267 | float: left; 268 | margin-right: var(--fa-pull-margin, 0.3em); 269 | } 270 | 271 | .fa-pull-right { 272 | float: right; 273 | margin-left: var(--fa-pull-margin, 0.3em); 274 | } 275 | 276 | .fa-beat { 277 | -webkit-animation-name: fa-beat; 278 | animation-name: fa-beat; 279 | -webkit-animation-delay: var(--fa-animation-delay, 0s); 280 | animation-delay: var(--fa-animation-delay, 0s); 281 | -webkit-animation-direction: var(--fa-animation-direction, normal); 282 | animation-direction: var(--fa-animation-direction, normal); 283 | -webkit-animation-duration: var(--fa-animation-duration, 1s); 284 | animation-duration: var(--fa-animation-duration, 1s); 285 | -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); 286 | animation-iteration-count: var(--fa-animation-iteration-count, infinite); 287 | -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); 288 | animation-timing-function: var(--fa-animation-timing, ease-in-out); 289 | } 290 | 291 | .fa-bounce { 292 | -webkit-animation-name: fa-bounce; 293 | animation-name: fa-bounce; 294 | -webkit-animation-delay: var(--fa-animation-delay, 0s); 295 | animation-delay: var(--fa-animation-delay, 0s); 296 | -webkit-animation-direction: var(--fa-animation-direction, normal); 297 | animation-direction: var(--fa-animation-direction, normal); 298 | -webkit-animation-duration: var(--fa-animation-duration, 1s); 299 | animation-duration: var(--fa-animation-duration, 1s); 300 | -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); 301 | animation-iteration-count: var(--fa-animation-iteration-count, infinite); 302 | -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); 303 | animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); 304 | } 305 | 306 | .fa-fade { 307 | -webkit-animation-name: fa-fade; 308 | animation-name: fa-fade; 309 | -webkit-animation-delay: var(--fa-animation-delay, 0s); 310 | animation-delay: var(--fa-animation-delay, 0s); 311 | -webkit-animation-direction: var(--fa-animation-direction, normal); 312 | animation-direction: var(--fa-animation-direction, normal); 313 | -webkit-animation-duration: var(--fa-animation-duration, 1s); 314 | animation-duration: var(--fa-animation-duration, 1s); 315 | -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); 316 | animation-iteration-count: var(--fa-animation-iteration-count, infinite); 317 | -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); 318 | animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); 319 | } 320 | 321 | .fa-beat-fade { 322 | -webkit-animation-name: fa-beat-fade; 323 | animation-name: fa-beat-fade; 324 | -webkit-animation-delay: var(--fa-animation-delay, 0s); 325 | animation-delay: var(--fa-animation-delay, 0s); 326 | -webkit-animation-direction: var(--fa-animation-direction, normal); 327 | animation-direction: var(--fa-animation-direction, normal); 328 | -webkit-animation-duration: var(--fa-animation-duration, 1s); 329 | animation-duration: var(--fa-animation-duration, 1s); 330 | -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); 331 | animation-iteration-count: var(--fa-animation-iteration-count, infinite); 332 | -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); 333 | animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); 334 | } 335 | 336 | .fa-flip { 337 | -webkit-animation-name: fa-flip; 338 | animation-name: fa-flip; 339 | -webkit-animation-delay: var(--fa-animation-delay, 0s); 340 | animation-delay: var(--fa-animation-delay, 0s); 341 | -webkit-animation-direction: var(--fa-animation-direction, normal); 342 | animation-direction: var(--fa-animation-direction, normal); 343 | -webkit-animation-duration: var(--fa-animation-duration, 1s); 344 | animation-duration: var(--fa-animation-duration, 1s); 345 | -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); 346 | animation-iteration-count: var(--fa-animation-iteration-count, infinite); 347 | -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); 348 | animation-timing-function: var(--fa-animation-timing, ease-in-out); 349 | } 350 | 351 | .fa-shake { 352 | -webkit-animation-name: fa-shake; 353 | animation-name: fa-shake; 354 | -webkit-animation-delay: var(--fa-animation-delay, 0s); 355 | animation-delay: var(--fa-animation-delay, 0s); 356 | -webkit-animation-direction: var(--fa-animation-direction, normal); 357 | animation-direction: var(--fa-animation-direction, normal); 358 | -webkit-animation-duration: var(--fa-animation-duration, 1s); 359 | animation-duration: var(--fa-animation-duration, 1s); 360 | -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); 361 | animation-iteration-count: var(--fa-animation-iteration-count, infinite); 362 | -webkit-animation-timing-function: var(--fa-animation-timing, linear); 363 | animation-timing-function: var(--fa-animation-timing, linear); 364 | } 365 | 366 | .fa-spin { 367 | -webkit-animation-name: fa-spin; 368 | animation-name: fa-spin; 369 | -webkit-animation-delay: var(--fa-animation-delay, 0s); 370 | animation-delay: var(--fa-animation-delay, 0s); 371 | -webkit-animation-direction: var(--fa-animation-direction, normal); 372 | animation-direction: var(--fa-animation-direction, normal); 373 | -webkit-animation-duration: var(--fa-animation-duration, 2s); 374 | animation-duration: var(--fa-animation-duration, 2s); 375 | -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); 376 | animation-iteration-count: var(--fa-animation-iteration-count, infinite); 377 | -webkit-animation-timing-function: var(--fa-animation-timing, linear); 378 | animation-timing-function: var(--fa-animation-timing, linear); 379 | } 380 | 381 | .fa-spin-reverse { 382 | --fa-animation-direction: reverse; 383 | } 384 | 385 | .fa-pulse, 386 | .fa-spin-pulse { 387 | -webkit-animation-name: fa-spin; 388 | animation-name: fa-spin; 389 | -webkit-animation-direction: var(--fa-animation-direction, normal); 390 | animation-direction: var(--fa-animation-direction, normal); 391 | -webkit-animation-duration: var(--fa-animation-duration, 1s); 392 | animation-duration: var(--fa-animation-duration, 1s); 393 | -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); 394 | animation-iteration-count: var(--fa-animation-iteration-count, infinite); 395 | -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); 396 | animation-timing-function: var(--fa-animation-timing, steps(8)); 397 | } 398 | 399 | @media (prefers-reduced-motion: reduce) { 400 | .fa-beat, 401 | .fa-bounce, 402 | .fa-fade, 403 | .fa-beat-fade, 404 | .fa-flip, 405 | .fa-pulse, 406 | .fa-shake, 407 | .fa-spin, 408 | .fa-spin-pulse { 409 | -webkit-animation-delay: -1ms; 410 | animation-delay: -1ms; 411 | -webkit-animation-duration: 1ms; 412 | animation-duration: 1ms; 413 | -webkit-animation-iteration-count: 1; 414 | animation-iteration-count: 1; 415 | transition-delay: 0s; 416 | transition-duration: 0s; 417 | } 418 | } 419 | 420 | @-webkit-keyframes fa-beat { 421 | 0%, 422 | 90% { 423 | -webkit-transform: scale(1); 424 | transform: scale(1); 425 | } 426 | 45% { 427 | -webkit-transform: scale(var(--fa-beat-scale, 1.25)); 428 | transform: scale(var(--fa-beat-scale, 1.25)); 429 | } 430 | } 431 | 432 | @keyframes fa-beat { 433 | 0%, 434 | 90% { 435 | -webkit-transform: scale(1); 436 | transform: scale(1); 437 | } 438 | 45% { 439 | -webkit-transform: scale(var(--fa-beat-scale, 1.25)); 440 | transform: scale(var(--fa-beat-scale, 1.25)); 441 | } 442 | } 443 | 444 | @-webkit-keyframes fa-bounce { 445 | 0% { 446 | -webkit-transform: scale(1, 1) translateY(0); 447 | transform: scale(1, 1) translateY(0); 448 | } 449 | 10% { 450 | -webkit-transform: scale( 451 | var(--fa-bounce-start-scale-x, 1.1), 452 | var(--fa-bounce-start-scale-y, 0.9) 453 | ) 454 | translateY(0); 455 | transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) 456 | translateY(0); 457 | } 458 | 30% { 459 | -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) 460 | translateY(var(--fa-bounce-height, -0.5em)); 461 | transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) 462 | translateY(var(--fa-bounce-height, -0.5em)); 463 | } 464 | 50% { 465 | -webkit-transform: scale( 466 | var(--fa-bounce-land-scale-x, 1.05), 467 | var(--fa-bounce-land-scale-y, 0.95) 468 | ) 469 | translateY(0); 470 | transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) 471 | translateY(0); 472 | } 473 | 57% { 474 | -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); 475 | transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); 476 | } 477 | 64% { 478 | -webkit-transform: scale(1, 1) translateY(0); 479 | transform: scale(1, 1) translateY(0); 480 | } 481 | 100% { 482 | -webkit-transform: scale(1, 1) translateY(0); 483 | transform: scale(1, 1) translateY(0); 484 | } 485 | } 486 | 487 | @keyframes fa-bounce { 488 | 0% { 489 | -webkit-transform: scale(1, 1) translateY(0); 490 | transform: scale(1, 1) translateY(0); 491 | } 492 | 10% { 493 | -webkit-transform: scale( 494 | var(--fa-bounce-start-scale-x, 1.1), 495 | var(--fa-bounce-start-scale-y, 0.9) 496 | ) 497 | translateY(0); 498 | transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) 499 | translateY(0); 500 | } 501 | 30% { 502 | -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) 503 | translateY(var(--fa-bounce-height, -0.5em)); 504 | transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) 505 | translateY(var(--fa-bounce-height, -0.5em)); 506 | } 507 | 50% { 508 | -webkit-transform: scale( 509 | var(--fa-bounce-land-scale-x, 1.05), 510 | var(--fa-bounce-land-scale-y, 0.95) 511 | ) 512 | translateY(0); 513 | transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) 514 | translateY(0); 515 | } 516 | 57% { 517 | -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); 518 | transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); 519 | } 520 | 64% { 521 | -webkit-transform: scale(1, 1) translateY(0); 522 | transform: scale(1, 1) translateY(0); 523 | } 524 | 100% { 525 | -webkit-transform: scale(1, 1) translateY(0); 526 | transform: scale(1, 1) translateY(0); 527 | } 528 | } 529 | 530 | @-webkit-keyframes fa-fade { 531 | 50% { 532 | opacity: var(--fa-fade-opacity, 0.4); 533 | } 534 | } 535 | 536 | @keyframes fa-fade { 537 | 50% { 538 | opacity: var(--fa-fade-opacity, 0.4); 539 | } 540 | } 541 | 542 | @-webkit-keyframes fa-beat-fade { 543 | 0%, 544 | 100% { 545 | opacity: var(--fa-beat-fade-opacity, 0.4); 546 | -webkit-transform: scale(1); 547 | transform: scale(1); 548 | } 549 | 50% { 550 | opacity: 1; 551 | -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); 552 | transform: scale(var(--fa-beat-fade-scale, 1.125)); 553 | } 554 | } 555 | 556 | @keyframes fa-beat-fade { 557 | 0%, 558 | 100% { 559 | opacity: var(--fa-beat-fade-opacity, 0.4); 560 | -webkit-transform: scale(1); 561 | transform: scale(1); 562 | } 563 | 50% { 564 | opacity: 1; 565 | -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); 566 | transform: scale(var(--fa-beat-fade-scale, 1.125)); 567 | } 568 | } 569 | 570 | @-webkit-keyframes fa-flip { 571 | 50% { 572 | -webkit-transform: rotate3d( 573 | var(--fa-flip-x, 0), 574 | var(--fa-flip-y, 1), 575 | var(--fa-flip-z, 0), 576 | var(--fa-flip-angle, -180deg) 577 | ); 578 | transform: rotate3d( 579 | var(--fa-flip-x, 0), 580 | var(--fa-flip-y, 1), 581 | var(--fa-flip-z, 0), 582 | var(--fa-flip-angle, -180deg) 583 | ); 584 | } 585 | } 586 | 587 | @keyframes fa-flip { 588 | 50% { 589 | -webkit-transform: rotate3d( 590 | var(--fa-flip-x, 0), 591 | var(--fa-flip-y, 1), 592 | var(--fa-flip-z, 0), 593 | var(--fa-flip-angle, -180deg) 594 | ); 595 | transform: rotate3d( 596 | var(--fa-flip-x, 0), 597 | var(--fa-flip-y, 1), 598 | var(--fa-flip-z, 0), 599 | var(--fa-flip-angle, -180deg) 600 | ); 601 | } 602 | } 603 | 604 | @-webkit-keyframes fa-shake { 605 | 0% { 606 | -webkit-transform: rotate(-15deg); 607 | transform: rotate(-15deg); 608 | } 609 | 4% { 610 | -webkit-transform: rotate(15deg); 611 | transform: rotate(15deg); 612 | } 613 | 8%, 614 | 24% { 615 | -webkit-transform: rotate(-18deg); 616 | transform: rotate(-18deg); 617 | } 618 | 12%, 619 | 28% { 620 | -webkit-transform: rotate(18deg); 621 | transform: rotate(18deg); 622 | } 623 | 16% { 624 | -webkit-transform: rotate(-22deg); 625 | transform: rotate(-22deg); 626 | } 627 | 20% { 628 | -webkit-transform: rotate(22deg); 629 | transform: rotate(22deg); 630 | } 631 | 32% { 632 | -webkit-transform: rotate(-12deg); 633 | transform: rotate(-12deg); 634 | } 635 | 36% { 636 | -webkit-transform: rotate(12deg); 637 | transform: rotate(12deg); 638 | } 639 | 40%, 640 | 100% { 641 | -webkit-transform: rotate(0deg); 642 | transform: rotate(0deg); 643 | } 644 | } 645 | 646 | @keyframes fa-shake { 647 | 0% { 648 | -webkit-transform: rotate(-15deg); 649 | transform: rotate(-15deg); 650 | } 651 | 4% { 652 | -webkit-transform: rotate(15deg); 653 | transform: rotate(15deg); 654 | } 655 | 8%, 656 | 24% { 657 | -webkit-transform: rotate(-18deg); 658 | transform: rotate(-18deg); 659 | } 660 | 12%, 661 | 28% { 662 | -webkit-transform: rotate(18deg); 663 | transform: rotate(18deg); 664 | } 665 | 16% { 666 | -webkit-transform: rotate(-22deg); 667 | transform: rotate(-22deg); 668 | } 669 | 20% { 670 | -webkit-transform: rotate(22deg); 671 | transform: rotate(22deg); 672 | } 673 | 32% { 674 | -webkit-transform: rotate(-12deg); 675 | transform: rotate(-12deg); 676 | } 677 | 36% { 678 | -webkit-transform: rotate(12deg); 679 | transform: rotate(12deg); 680 | } 681 | 40%, 682 | 100% { 683 | -webkit-transform: rotate(0deg); 684 | transform: rotate(0deg); 685 | } 686 | } 687 | 688 | @-webkit-keyframes fa-spin { 689 | 0% { 690 | -webkit-transform: rotate(0deg); 691 | transform: rotate(0deg); 692 | } 693 | 100% { 694 | -webkit-transform: rotate(360deg); 695 | transform: rotate(360deg); 696 | } 697 | } 698 | 699 | @keyframes fa-spin { 700 | 0% { 701 | -webkit-transform: rotate(0deg); 702 | transform: rotate(0deg); 703 | } 704 | 100% { 705 | -webkit-transform: rotate(360deg); 706 | transform: rotate(360deg); 707 | } 708 | } 709 | 710 | .fa-rotate-90 { 711 | -webkit-transform: rotate(90deg); 712 | transform: rotate(90deg); 713 | } 714 | 715 | .fa-rotate-180 { 716 | -webkit-transform: rotate(180deg); 717 | transform: rotate(180deg); 718 | } 719 | 720 | .fa-rotate-270 { 721 | -webkit-transform: rotate(270deg); 722 | transform: rotate(270deg); 723 | } 724 | 725 | .fa-flip-horizontal { 726 | -webkit-transform: scale(-1, 1); 727 | transform: scale(-1, 1); 728 | } 729 | 730 | .fa-flip-vertical { 731 | -webkit-transform: scale(1, -1); 732 | transform: scale(1, -1); 733 | } 734 | 735 | .fa-flip-both, 736 | .fa-flip-horizontal.fa-flip-vertical { 737 | -webkit-transform: scale(-1, -1); 738 | transform: scale(-1, -1); 739 | } 740 | 741 | .fa-rotate-by { 742 | -webkit-transform: rotate(var(--fa-rotate-angle, none)); 743 | transform: rotate(var(--fa-rotate-angle, none)); 744 | } 745 | 746 | .fa-stack { 747 | display: inline-block; 748 | vertical-align: middle; 749 | height: 2em; 750 | position: relative; 751 | width: 2.5em; 752 | } 753 | 754 | .fa-stack-1x, 755 | .fa-stack-2x { 756 | bottom: 0; 757 | left: 0; 758 | margin: auto; 759 | position: absolute; 760 | right: 0; 761 | top: 0; 762 | z-index: var(--fa-stack-z-index, auto); 763 | } 764 | 765 | .svg-inline--fa.fa-stack-1x { 766 | height: 1em; 767 | width: 1.25em; 768 | } 769 | 770 | .svg-inline--fa.fa-stack-2x { 771 | height: 2em; 772 | width: 2.5em; 773 | } 774 | 775 | .fa-inverse { 776 | color: var(--fa-inverse, #fff); 777 | } 778 | 779 | .sr-only, 780 | .fa-sr-only { 781 | position: absolute; 782 | width: 1px; 783 | height: 1px; 784 | padding: 0; 785 | margin: -1px; 786 | overflow: hidden; 787 | clip: rect(0, 0, 0, 0); 788 | white-space: nowrap; 789 | border-width: 0; 790 | } 791 | 792 | .sr-only-focusable:not(:focus), 793 | .fa-sr-only-focusable:not(:focus) { 794 | position: absolute; 795 | width: 1px; 796 | height: 1px; 797 | padding: 0; 798 | margin: -1px; 799 | overflow: hidden; 800 | clip: rect(0, 0, 0, 0); 801 | white-space: nowrap; 802 | border-width: 0; 803 | } 804 | 805 | .svg-inline--fa .fa-primary { 806 | fill: var(--fa-primary-color, currentColor); 807 | opacity: var(--fa-primary-opacity, 1); 808 | } 809 | 810 | .svg-inline--fa .fa-secondary { 811 | fill: var(--fa-secondary-color, currentColor); 812 | opacity: var(--fa-secondary-opacity, 0.4); 813 | } 814 | 815 | .svg-inline--fa.fa-swap-opacity .fa-primary { 816 | opacity: var(--fa-secondary-opacity, 0.4); 817 | } 818 | 819 | .svg-inline--fa.fa-swap-opacity .fa-secondary { 820 | opacity: var(--fa-primary-opacity, 1); 821 | } 822 | 823 | .svg-inline--fa mask .fa-primary, 824 | .svg-inline--fa mask .fa-secondary { 825 | fill: black; 826 | } 827 | 828 | .fad.fa-inverse, 829 | .fa-duotone.fa-inverse { 830 | color: var(--fa-inverse, #fff); 831 | } 832 | -------------------------------------------------------------------------------- /src/assets/css/svg-with-js.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | * Copyright 2022 Fonticons, Inc. 5 | */ 6 | :host, 7 | :root { 8 | --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Solid'; 9 | --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Regular'; 10 | --fa-font-light: normal 300 1em/1 'Font Awesome 6 Light'; 11 | --fa-font-thin: normal 100 1em/1 'Font Awesome 6 Thin'; 12 | --fa-font-duotone: normal 900 1em/1 'Font Awesome 6 Duotone'; 13 | --fa-font-sharp-solid: normal 900 1em/1 'Font Awesome 6 Sharp'; 14 | --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; 15 | } 16 | svg:not(:host).svg-inline--fa, 17 | svg:not(:root).svg-inline--fa { 18 | overflow: visible; 19 | box-sizing: content-box; 20 | } 21 | .svg-inline--fa { 22 | display: var(--fa-display, inline-block); 23 | height: 1em; 24 | overflow: visible; 25 | vertical-align: -0.125em; 26 | } 27 | .svg-inline--fa.fa-2xs { 28 | vertical-align: 0.1em; 29 | } 30 | .svg-inline--fa.fa-xs { 31 | vertical-align: 0; 32 | } 33 | .svg-inline--fa.fa-sm { 34 | vertical-align: -0.07143em; 35 | } 36 | .svg-inline--fa.fa-lg { 37 | vertical-align: -0.2em; 38 | } 39 | .svg-inline--fa.fa-xl { 40 | vertical-align: -0.25em; 41 | } 42 | .svg-inline--fa.fa-2xl { 43 | vertical-align: -0.3125em; 44 | } 45 | .svg-inline--fa.fa-pull-left { 46 | margin-right: var(--fa-pull-margin, 0.3em); 47 | width: auto; 48 | } 49 | .svg-inline--fa.fa-pull-right { 50 | margin-left: var(--fa-pull-margin, 0.3em); 51 | width: auto; 52 | } 53 | .svg-inline--fa.fa-li { 54 | width: var(--fa-li-width, 2em); 55 | top: 0.25em; 56 | } 57 | .svg-inline--fa.fa-fw { 58 | width: var(--fa-fw-width, 1.25em); 59 | } 60 | .fa-layers svg.svg-inline--fa { 61 | bottom: 0; 62 | left: 0; 63 | margin: auto; 64 | position: absolute; 65 | right: 0; 66 | top: 0; 67 | } 68 | .fa-layers-counter, 69 | .fa-layers-text { 70 | display: inline-block; 71 | position: absolute; 72 | text-align: center; 73 | } 74 | .fa-layers { 75 | display: inline-block; 76 | height: 1em; 77 | position: relative; 78 | text-align: center; 79 | vertical-align: -0.125em; 80 | width: 1em; 81 | } 82 | .fa-layers svg.svg-inline--fa { 83 | -webkit-transform-origin: center center; 84 | transform-origin: center center; 85 | } 86 | .fa-layers-text { 87 | left: 50%; 88 | top: 50%; 89 | -webkit-transform: translate(-50%, -50%); 90 | transform: translate(-50%, -50%); 91 | -webkit-transform-origin: center center; 92 | transform-origin: center center; 93 | } 94 | .fa-layers-counter { 95 | background-color: var(--fa-counter-background-color, #ff253a); 96 | border-radius: var(--fa-counter-border-radius, 1em); 97 | box-sizing: border-box; 98 | color: var(--fa-inverse, #fff); 99 | line-height: var(--fa-counter-line-height, 1); 100 | max-width: var(--fa-counter-max-width, 5em); 101 | min-width: var(--fa-counter-min-width, 1.5em); 102 | overflow: hidden; 103 | padding: var(--fa-counter-padding, 0.25em 0.5em); 104 | right: var(--fa-right, 0); 105 | text-overflow: ellipsis; 106 | top: var(--fa-top, 0); 107 | -webkit-transform: scale(var(--fa-counter-scale, 0.25)); 108 | transform: scale(var(--fa-counter-scale, 0.25)); 109 | -webkit-transform-origin: top right; 110 | transform-origin: top right; 111 | } 112 | .fa-layers-bottom-right { 113 | bottom: var(--fa-bottom, 0); 114 | right: var(--fa-right, 0); 115 | top: auto; 116 | -webkit-transform: scale(var(--fa-layers-scale, 0.25)); 117 | transform: scale(var(--fa-layers-scale, 0.25)); 118 | -webkit-transform-origin: bottom right; 119 | transform-origin: bottom right; 120 | } 121 | .fa-layers-bottom-left { 122 | bottom: var(--fa-bottom, 0); 123 | left: var(--fa-left, 0); 124 | right: auto; 125 | top: auto; 126 | -webkit-transform: scale(var(--fa-layers-scale, 0.25)); 127 | transform: scale(var(--fa-layers-scale, 0.25)); 128 | -webkit-transform-origin: bottom left; 129 | transform-origin: bottom left; 130 | } 131 | .fa-layers-top-right { 132 | top: var(--fa-top, 0); 133 | right: var(--fa-right, 0); 134 | -webkit-transform: scale(var(--fa-layers-scale, 0.25)); 135 | transform: scale(var(--fa-layers-scale, 0.25)); 136 | -webkit-transform-origin: top right; 137 | transform-origin: top right; 138 | } 139 | .fa-layers-top-left { 140 | left: var(--fa-left, 0); 141 | right: auto; 142 | top: var(--fa-top, 0); 143 | -webkit-transform: scale(var(--fa-layers-scale, 0.25)); 144 | transform: scale(var(--fa-layers-scale, 0.25)); 145 | -webkit-transform-origin: top left; 146 | transform-origin: top left; 147 | } 148 | .fa-1x { 149 | font-size: 1em; 150 | } 151 | .fa-2x { 152 | font-size: 2em; 153 | } 154 | .fa-3x { 155 | font-size: 3em; 156 | } 157 | .fa-4x { 158 | font-size: 4em; 159 | } 160 | .fa-5x { 161 | font-size: 5em; 162 | } 163 | .fa-6x { 164 | font-size: 6em; 165 | } 166 | .fa-7x { 167 | font-size: 7em; 168 | } 169 | .fa-8x { 170 | font-size: 8em; 171 | } 172 | .fa-9x { 173 | font-size: 9em; 174 | } 175 | .fa-10x { 176 | font-size: 10em; 177 | } 178 | .fa-2xs { 179 | font-size: 0.625em; 180 | line-height: 0.1em; 181 | vertical-align: 0.225em; 182 | } 183 | .fa-xs { 184 | font-size: 0.75em; 185 | line-height: 0.08333em; 186 | vertical-align: 0.125em; 187 | } 188 | .fa-sm { 189 | font-size: 0.875em; 190 | line-height: 0.07143em; 191 | vertical-align: 0.05357em; 192 | } 193 | .fa-lg { 194 | font-size: 1.25em; 195 | line-height: 0.05em; 196 | vertical-align: -0.075em; 197 | } 198 | .fa-xl { 199 | font-size: 1.5em; 200 | line-height: 0.04167em; 201 | vertical-align: -0.125em; 202 | } 203 | .fa-2xl { 204 | font-size: 2em; 205 | line-height: 0.03125em; 206 | vertical-align: -0.1875em; 207 | } 208 | .fa-fw { 209 | text-align: center; 210 | width: 1.25em; 211 | } 212 | .fa-ul { 213 | list-style-type: none; 214 | margin-left: var(--fa-li-margin, 2.5em); 215 | padding-left: 0; 216 | } 217 | .fa-ul > li { 218 | position: relative; 219 | } 220 | .fa-li { 221 | left: calc(var(--fa-li-width, 2em) * -1); 222 | position: absolute; 223 | text-align: center; 224 | width: var(--fa-li-width, 2em); 225 | line-height: inherit; 226 | } 227 | .fa-border { 228 | border-radius: var(--fa-border-radius, 0.1em); 229 | border: var(--fa-border-width, 0.08em) var(--fa-border-style, solid) var(--fa-border-color, #eee); 230 | padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); 231 | } 232 | .fa-pull-left { 233 | float: left; 234 | margin-right: var(--fa-pull-margin, 0.3em); 235 | } 236 | .fa-pull-right { 237 | float: right; 238 | margin-left: var(--fa-pull-margin, 0.3em); 239 | } 240 | .fa-beat { 241 | -webkit-animation-name: fa-beat; 242 | animation-name: fa-beat; 243 | -webkit-animation-delay: var(--fa-animation-delay, 0s); 244 | animation-delay: var(--fa-animation-delay, 0s); 245 | -webkit-animation-direction: var(--fa-animation-direction, normal); 246 | animation-direction: var(--fa-animation-direction, normal); 247 | -webkit-animation-duration: var(--fa-animation-duration, 1s); 248 | animation-duration: var(--fa-animation-duration, 1s); 249 | -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); 250 | animation-iteration-count: var(--fa-animation-iteration-count, infinite); 251 | -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); 252 | animation-timing-function: var(--fa-animation-timing, ease-in-out); 253 | } 254 | .fa-bounce { 255 | -webkit-animation-name: fa-bounce; 256 | animation-name: fa-bounce; 257 | -webkit-animation-delay: var(--fa-animation-delay, 0s); 258 | animation-delay: var(--fa-animation-delay, 0s); 259 | -webkit-animation-direction: var(--fa-animation-direction, normal); 260 | animation-direction: var(--fa-animation-direction, normal); 261 | -webkit-animation-duration: var(--fa-animation-duration, 1s); 262 | animation-duration: var(--fa-animation-duration, 1s); 263 | -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); 264 | animation-iteration-count: var(--fa-animation-iteration-count, infinite); 265 | -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); 266 | animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); 267 | } 268 | .fa-fade { 269 | -webkit-animation-name: fa-fade; 270 | animation-name: fa-fade; 271 | -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); 272 | animation-iteration-count: var(--fa-animation-iteration-count, infinite); 273 | -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); 274 | animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); 275 | } 276 | .fa-beat-fade, 277 | .fa-fade { 278 | -webkit-animation-delay: var(--fa-animation-delay, 0s); 279 | animation-delay: var(--fa-animation-delay, 0s); 280 | -webkit-animation-direction: var(--fa-animation-direction, normal); 281 | animation-direction: var(--fa-animation-direction, normal); 282 | -webkit-animation-duration: var(--fa-animation-duration, 1s); 283 | animation-duration: var(--fa-animation-duration, 1s); 284 | } 285 | .fa-beat-fade { 286 | -webkit-animation-name: fa-beat-fade; 287 | animation-name: fa-beat-fade; 288 | -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); 289 | animation-iteration-count: var(--fa-animation-iteration-count, infinite); 290 | -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); 291 | animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); 292 | } 293 | .fa-flip { 294 | -webkit-animation-name: fa-flip; 295 | animation-name: fa-flip; 296 | -webkit-animation-delay: var(--fa-animation-delay, 0s); 297 | animation-delay: var(--fa-animation-delay, 0s); 298 | -webkit-animation-direction: var(--fa-animation-direction, normal); 299 | animation-direction: var(--fa-animation-direction, normal); 300 | -webkit-animation-duration: var(--fa-animation-duration, 1s); 301 | animation-duration: var(--fa-animation-duration, 1s); 302 | -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); 303 | animation-iteration-count: var(--fa-animation-iteration-count, infinite); 304 | -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); 305 | animation-timing-function: var(--fa-animation-timing, ease-in-out); 306 | } 307 | .fa-shake { 308 | -webkit-animation-name: fa-shake; 309 | animation-name: fa-shake; 310 | -webkit-animation-duration: var(--fa-animation-duration, 1s); 311 | animation-duration: var(--fa-animation-duration, 1s); 312 | -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); 313 | animation-iteration-count: var(--fa-animation-iteration-count, infinite); 314 | -webkit-animation-timing-function: var(--fa-animation-timing, linear); 315 | animation-timing-function: var(--fa-animation-timing, linear); 316 | } 317 | .fa-shake, 318 | .fa-spin { 319 | -webkit-animation-delay: var(--fa-animation-delay, 0s); 320 | animation-delay: var(--fa-animation-delay, 0s); 321 | -webkit-animation-direction: var(--fa-animation-direction, normal); 322 | animation-direction: var(--fa-animation-direction, normal); 323 | } 324 | .fa-spin { 325 | -webkit-animation-name: fa-spin; 326 | animation-name: fa-spin; 327 | -webkit-animation-duration: var(--fa-animation-duration, 2s); 328 | animation-duration: var(--fa-animation-duration, 2s); 329 | -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); 330 | animation-iteration-count: var(--fa-animation-iteration-count, infinite); 331 | -webkit-animation-timing-function: var(--fa-animation-timing, linear); 332 | animation-timing-function: var(--fa-animation-timing, linear); 333 | } 334 | .fa-spin-reverse { 335 | --fa-animation-direction: reverse; 336 | } 337 | .fa-pulse, 338 | .fa-spin-pulse { 339 | -webkit-animation-name: fa-spin; 340 | animation-name: fa-spin; 341 | -webkit-animation-direction: var(--fa-animation-direction, normal); 342 | animation-direction: var(--fa-animation-direction, normal); 343 | -webkit-animation-duration: var(--fa-animation-duration, 1s); 344 | animation-duration: var(--fa-animation-duration, 1s); 345 | -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); 346 | animation-iteration-count: var(--fa-animation-iteration-count, infinite); 347 | -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); 348 | animation-timing-function: var(--fa-animation-timing, steps(8)); 349 | } 350 | @media (prefers-reduced-motion: reduce) { 351 | .fa-beat, 352 | .fa-beat-fade, 353 | .fa-bounce, 354 | .fa-fade, 355 | .fa-flip, 356 | .fa-pulse, 357 | .fa-shake, 358 | .fa-spin, 359 | .fa-spin-pulse { 360 | -webkit-animation-delay: -1ms; 361 | animation-delay: -1ms; 362 | -webkit-animation-duration: 1ms; 363 | animation-duration: 1ms; 364 | -webkit-animation-iteration-count: 1; 365 | animation-iteration-count: 1; 366 | transition-delay: 0s; 367 | transition-duration: 0s; 368 | } 369 | } 370 | @-webkit-keyframes fa-beat { 371 | 0%, 372 | 90% { 373 | -webkit-transform: scale(1); 374 | transform: scale(1); 375 | } 376 | 45% { 377 | -webkit-transform: scale(var(--fa-beat-scale, 1.25)); 378 | transform: scale(var(--fa-beat-scale, 1.25)); 379 | } 380 | } 381 | @keyframes fa-beat { 382 | 0%, 383 | 90% { 384 | -webkit-transform: scale(1); 385 | transform: scale(1); 386 | } 387 | 45% { 388 | -webkit-transform: scale(var(--fa-beat-scale, 1.25)); 389 | transform: scale(var(--fa-beat-scale, 1.25)); 390 | } 391 | } 392 | @-webkit-keyframes fa-bounce { 393 | 0% { 394 | -webkit-transform: scale(1) translateY(0); 395 | transform: scale(1) translateY(0); 396 | } 397 | 10% { 398 | -webkit-transform: scale( 399 | var(--fa-bounce-start-scale-x, 1.1), 400 | var(--fa-bounce-start-scale-y, 0.9) 401 | ) 402 | translateY(0); 403 | transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) 404 | translateY(0); 405 | } 406 | 30% { 407 | -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) 408 | translateY(var(--fa-bounce-height, -0.5em)); 409 | transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) 410 | translateY(var(--fa-bounce-height, -0.5em)); 411 | } 412 | 50% { 413 | -webkit-transform: scale( 414 | var(--fa-bounce-land-scale-x, 1.05), 415 | var(--fa-bounce-land-scale-y, 0.95) 416 | ) 417 | translateY(0); 418 | transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) 419 | translateY(0); 420 | } 421 | 57% { 422 | -webkit-transform: scale(1) translateY(var(--fa-bounce-rebound, -0.125em)); 423 | transform: scale(1) translateY(var(--fa-bounce-rebound, -0.125em)); 424 | } 425 | 64% { 426 | -webkit-transform: scale(1) translateY(0); 427 | transform: scale(1) translateY(0); 428 | } 429 | to { 430 | -webkit-transform: scale(1) translateY(0); 431 | transform: scale(1) translateY(0); 432 | } 433 | } 434 | @keyframes fa-bounce { 435 | 0% { 436 | -webkit-transform: scale(1) translateY(0); 437 | transform: scale(1) translateY(0); 438 | } 439 | 10% { 440 | -webkit-transform: scale( 441 | var(--fa-bounce-start-scale-x, 1.1), 442 | var(--fa-bounce-start-scale-y, 0.9) 443 | ) 444 | translateY(0); 445 | transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) 446 | translateY(0); 447 | } 448 | 30% { 449 | -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) 450 | translateY(var(--fa-bounce-height, -0.5em)); 451 | transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) 452 | translateY(var(--fa-bounce-height, -0.5em)); 453 | } 454 | 50% { 455 | -webkit-transform: scale( 456 | var(--fa-bounce-land-scale-x, 1.05), 457 | var(--fa-bounce-land-scale-y, 0.95) 458 | ) 459 | translateY(0); 460 | transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) 461 | translateY(0); 462 | } 463 | 57% { 464 | -webkit-transform: scale(1) translateY(var(--fa-bounce-rebound, -0.125em)); 465 | transform: scale(1) translateY(var(--fa-bounce-rebound, -0.125em)); 466 | } 467 | 64% { 468 | -webkit-transform: scale(1) translateY(0); 469 | transform: scale(1) translateY(0); 470 | } 471 | to { 472 | -webkit-transform: scale(1) translateY(0); 473 | transform: scale(1) translateY(0); 474 | } 475 | } 476 | @-webkit-keyframes fa-fade { 477 | 50% { 478 | opacity: var(--fa-fade-opacity, 0.4); 479 | } 480 | } 481 | @keyframes fa-fade { 482 | 50% { 483 | opacity: var(--fa-fade-opacity, 0.4); 484 | } 485 | } 486 | @-webkit-keyframes fa-beat-fade { 487 | 0%, 488 | to { 489 | opacity: var(--fa-beat-fade-opacity, 0.4); 490 | -webkit-transform: scale(1); 491 | transform: scale(1); 492 | } 493 | 50% { 494 | opacity: 1; 495 | -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); 496 | transform: scale(var(--fa-beat-fade-scale, 1.125)); 497 | } 498 | } 499 | @keyframes fa-beat-fade { 500 | 0%, 501 | to { 502 | opacity: var(--fa-beat-fade-opacity, 0.4); 503 | -webkit-transform: scale(1); 504 | transform: scale(1); 505 | } 506 | 50% { 507 | opacity: 1; 508 | -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); 509 | transform: scale(var(--fa-beat-fade-scale, 1.125)); 510 | } 511 | } 512 | @-webkit-keyframes fa-flip { 513 | 50% { 514 | -webkit-transform: rotate3d( 515 | var(--fa-flip-x, 0), 516 | var(--fa-flip-y, 1), 517 | var(--fa-flip-z, 0), 518 | var(--fa-flip-angle, -180deg) 519 | ); 520 | transform: rotate3d( 521 | var(--fa-flip-x, 0), 522 | var(--fa-flip-y, 1), 523 | var(--fa-flip-z, 0), 524 | var(--fa-flip-angle, -180deg) 525 | ); 526 | } 527 | } 528 | @keyframes fa-flip { 529 | 50% { 530 | -webkit-transform: rotate3d( 531 | var(--fa-flip-x, 0), 532 | var(--fa-flip-y, 1), 533 | var(--fa-flip-z, 0), 534 | var(--fa-flip-angle, -180deg) 535 | ); 536 | transform: rotate3d( 537 | var(--fa-flip-x, 0), 538 | var(--fa-flip-y, 1), 539 | var(--fa-flip-z, 0), 540 | var(--fa-flip-angle, -180deg) 541 | ); 542 | } 543 | } 544 | @-webkit-keyframes fa-shake { 545 | 0% { 546 | -webkit-transform: rotate(-15deg); 547 | transform: rotate(-15deg); 548 | } 549 | 4% { 550 | -webkit-transform: rotate(15deg); 551 | transform: rotate(15deg); 552 | } 553 | 8%, 554 | 24% { 555 | -webkit-transform: rotate(-18deg); 556 | transform: rotate(-18deg); 557 | } 558 | 12%, 559 | 28% { 560 | -webkit-transform: rotate(18deg); 561 | transform: rotate(18deg); 562 | } 563 | 16% { 564 | -webkit-transform: rotate(-22deg); 565 | transform: rotate(-22deg); 566 | } 567 | 20% { 568 | -webkit-transform: rotate(22deg); 569 | transform: rotate(22deg); 570 | } 571 | 32% { 572 | -webkit-transform: rotate(-12deg); 573 | transform: rotate(-12deg); 574 | } 575 | 36% { 576 | -webkit-transform: rotate(12deg); 577 | transform: rotate(12deg); 578 | } 579 | 40%, 580 | to { 581 | -webkit-transform: rotate(0deg); 582 | transform: rotate(0deg); 583 | } 584 | } 585 | @keyframes fa-shake { 586 | 0% { 587 | -webkit-transform: rotate(-15deg); 588 | transform: rotate(-15deg); 589 | } 590 | 4% { 591 | -webkit-transform: rotate(15deg); 592 | transform: rotate(15deg); 593 | } 594 | 8%, 595 | 24% { 596 | -webkit-transform: rotate(-18deg); 597 | transform: rotate(-18deg); 598 | } 599 | 12%, 600 | 28% { 601 | -webkit-transform: rotate(18deg); 602 | transform: rotate(18deg); 603 | } 604 | 16% { 605 | -webkit-transform: rotate(-22deg); 606 | transform: rotate(-22deg); 607 | } 608 | 20% { 609 | -webkit-transform: rotate(22deg); 610 | transform: rotate(22deg); 611 | } 612 | 32% { 613 | -webkit-transform: rotate(-12deg); 614 | transform: rotate(-12deg); 615 | } 616 | 36% { 617 | -webkit-transform: rotate(12deg); 618 | transform: rotate(12deg); 619 | } 620 | 40%, 621 | to { 622 | -webkit-transform: rotate(0deg); 623 | transform: rotate(0deg); 624 | } 625 | } 626 | @-webkit-keyframes fa-spin { 627 | 0% { 628 | -webkit-transform: rotate(0deg); 629 | transform: rotate(0deg); 630 | } 631 | to { 632 | -webkit-transform: rotate(1turn); 633 | transform: rotate(1turn); 634 | } 635 | } 636 | @keyframes fa-spin { 637 | 0% { 638 | -webkit-transform: rotate(0deg); 639 | transform: rotate(0deg); 640 | } 641 | to { 642 | -webkit-transform: rotate(1turn); 643 | transform: rotate(1turn); 644 | } 645 | } 646 | .fa-rotate-90 { 647 | -webkit-transform: rotate(90deg); 648 | transform: rotate(90deg); 649 | } 650 | .fa-rotate-180 { 651 | -webkit-transform: rotate(180deg); 652 | transform: rotate(180deg); 653 | } 654 | .fa-rotate-270 { 655 | -webkit-transform: rotate(270deg); 656 | transform: rotate(270deg); 657 | } 658 | .fa-flip-horizontal { 659 | -webkit-transform: scaleX(-1); 660 | transform: scaleX(-1); 661 | } 662 | .fa-flip-vertical { 663 | -webkit-transform: scaleY(-1); 664 | transform: scaleY(-1); 665 | } 666 | .fa-flip-both, 667 | .fa-flip-horizontal.fa-flip-vertical { 668 | -webkit-transform: scale(-1); 669 | transform: scale(-1); 670 | } 671 | .fa-rotate-by { 672 | -webkit-transform: rotate(var(--fa-rotate-angle, none)); 673 | transform: rotate(var(--fa-rotate-angle, none)); 674 | } 675 | .fa-stack { 676 | display: inline-block; 677 | vertical-align: middle; 678 | height: 2em; 679 | position: relative; 680 | width: 2.5em; 681 | } 682 | .fa-stack-1x, 683 | .fa-stack-2x { 684 | bottom: 0; 685 | left: 0; 686 | margin: auto; 687 | position: absolute; 688 | right: 0; 689 | top: 0; 690 | z-index: var(--fa-stack-z-index, auto); 691 | } 692 | .svg-inline--fa.fa-stack-1x { 693 | height: 1em; 694 | width: 1.25em; 695 | } 696 | .svg-inline--fa.fa-stack-2x { 697 | height: 2em; 698 | width: 2.5em; 699 | } 700 | .fa-inverse { 701 | color: var(--fa-inverse, #fff); 702 | } 703 | .fa-sr-only, 704 | .fa-sr-only-focusable:not(:focus), 705 | .sr-only, 706 | .sr-only-focusable:not(:focus) { 707 | position: absolute; 708 | width: 1px; 709 | height: 1px; 710 | padding: 0; 711 | margin: -1px; 712 | overflow: hidden; 713 | clip: rect(0, 0, 0, 0); 714 | white-space: nowrap; 715 | border-width: 0; 716 | } 717 | .svg-inline--fa .fa-primary { 718 | fill: var(--fa-primary-color, currentColor); 719 | opacity: var(--fa-primary-opacity, 1); 720 | } 721 | .svg-inline--fa .fa-secondary { 722 | fill: var(--fa-secondary-color, currentColor); 723 | } 724 | .svg-inline--fa .fa-secondary, 725 | .svg-inline--fa.fa-swap-opacity .fa-primary { 726 | opacity: var(--fa-secondary-opacity, 0.4); 727 | } 728 | .svg-inline--fa.fa-swap-opacity .fa-secondary { 729 | opacity: var(--fa-primary-opacity, 1); 730 | } 731 | .svg-inline--fa mask .fa-primary, 732 | .svg-inline--fa mask .fa-secondary { 733 | fill: #000; 734 | } 735 | .fa-duotone.fa-inverse, 736 | .fad.fa-inverse { 737 | color: var(--fa-inverse, #fff); 738 | } 739 | -------------------------------------------------------------------------------- /src/assets/css/v4-font-face.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | * Copyright 2022 Fonticons, Inc. 5 | */ 6 | @font-face { 7 | font-family: 'FontAwesome'; 8 | font-display: block; 9 | src: url('../webfonts/fa-solid-900.woff2') format('woff2'), 10 | url('../webfonts/fa-solid-900.ttf') format('truetype'); 11 | } 12 | 13 | @font-face { 14 | font-family: 'FontAwesome'; 15 | font-display: block; 16 | src: url('../webfonts/fa-brands-400.woff2') format('woff2'), 17 | url('../webfonts/fa-brands-400.ttf') format('truetype'); 18 | } 19 | 20 | @font-face { 21 | font-family: 'FontAwesome'; 22 | font-display: block; 23 | src: url('../webfonts/fa-regular-400.woff2') format('woff2'), 24 | url('../webfonts/fa-regular-400.ttf') format('truetype'); 25 | unicode-range: U+F003, U+F006, U+F014, U+F016-F017, U+F01A-F01B, U+F01D, U+F022, U+F03E, U+F044, 26 | U+F046, U+F05C-F05D, U+F06E, U+F070, U+F087-F088, U+F08A, U+F094, U+F096-F097, U+F09D, U+F0A0, 27 | U+F0A2, U+F0A4-F0A7, U+F0C5, U+F0C7, U+F0E5-F0E6, U+F0EB, U+F0F6-F0F8, U+F10C, U+F114-F115, 28 | U+F118-F11A, U+F11C-F11D, U+F133, U+F147, U+F14E, U+F150-F152, U+F185-F186, U+F18E, U+F190-F192, 29 | U+F196, U+F1C1-F1C9, U+F1D9, U+F1DB, U+F1E3, U+F1EA, U+F1F7, U+F1F9, U+F20A, U+F247-F248, U+F24A, 30 | U+F24D, U+F255-F25B, U+F25D, U+F271-F274, U+F278, U+F27B, U+F28C, U+F28E, U+F29C, U+F2B5, U+F2B7, 31 | U+F2BA, U+F2BC, U+F2BE, U+F2C0-F2C1, U+F2C3, U+F2D0, U+F2D2, U+F2D4, U+F2DC; 32 | } 33 | 34 | @font-face { 35 | font-family: 'FontAwesome'; 36 | font-display: block; 37 | src: url('../webfonts/fa-v4compatibility.woff2') format('woff2'), 38 | url('../webfonts/fa-v4compatibility.ttf') format('truetype'); 39 | unicode-range: U+F041, U+F047, U+F065-F066, U+F07D-F07E, U+F080, U+F08B, U+F08E, U+F090, U+F09A, 40 | U+F0AC, U+F0AE, U+F0B2, U+F0D0, U+F0D6, U+F0E4, U+F0EC, U+F10A-F10B, U+F123, U+F13E, U+F148-F149, 41 | U+F14C, U+F156, U+F15E, U+F160-F161, U+F163, U+F175-F178, U+F195, U+F1F8, U+F219, U+F27A; 42 | } 43 | -------------------------------------------------------------------------------- /src/assets/css/v4-font-face.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | * Copyright 2022 Fonticons, Inc. 5 | */ 6 | @font-face { 7 | font-family: 'FontAwesome'; 8 | font-display: block; 9 | src: url(../webfonts/fa-solid-900.woff2) format('woff2'), 10 | url(../webfonts/fa-solid-900.ttf) format('truetype'); 11 | } 12 | @font-face { 13 | font-family: 'FontAwesome'; 14 | font-display: block; 15 | src: url(../webfonts/fa-brands-400.woff2) format('woff2'), 16 | url(../webfonts/fa-brands-400.ttf) format('truetype'); 17 | } 18 | @font-face { 19 | font-family: 'FontAwesome'; 20 | font-display: block; 21 | src: url(../webfonts/fa-regular-400.woff2) format('woff2'), 22 | url(../webfonts/fa-regular-400.ttf) format('truetype'); 23 | unicode-range: u+f003, u+f006, u+f014, u+f016-f017, u+f01a-f01b, u+f01d, u+f022, u+f03e, u+f044, 24 | u+f046, u+f05c-f05d, u+f06e, u+f070, u+f087-f088, u+f08a, u+f094, u+f096-f097, u+f09d, u+f0a0, 25 | u+f0a2, u+f0a4-f0a7, u+f0c5, u+f0c7, u+f0e5-f0e6, u+f0eb, u+f0f6-f0f8, u+f10c, u+f114-f115, 26 | u+f118-f11a, u+f11c-f11d, u+f133, u+f147, u+f14e, u+f150-f152, u+f185-f186, u+f18e, u+f190-f192, 27 | u+f196, u+f1c1-f1c9, u+f1d9, u+f1db, u+f1e3, u+f1ea, u+f1f7, u+f1f9, u+f20a, u+f247-f248, u+f24a, 28 | u+f24d, u+f255-f25b, u+f25d, u+f271-f274, u+f278, u+f27b, u+f28c, u+f28e, u+f29c, u+f2b5, u+f2b7, 29 | u+f2ba, u+f2bc, u+f2be, u+f2c0-f2c1, u+f2c3, u+f2d0, u+f2d2, u+f2d4, u+f2dc; 30 | } 31 | @font-face { 32 | font-family: 'FontAwesome'; 33 | font-display: block; 34 | src: url(../webfonts/fa-v4compatibility.woff2) format('woff2'), 35 | url(../webfonts/fa-v4compatibility.ttf) format('truetype'); 36 | unicode-range: u+f041, u+f047, u+f065-f066, u+f07d-f07e, u+f080, u+f08b, u+f08e, u+f090, u+f09a, 37 | u+f0ac, u+f0ae, u+f0b2, u+f0d0, u+f0d6, u+f0e4, u+f0ec, u+f10a-f10b, u+f123, u+f13e, u+f148-f149, 38 | u+f14c, u+f156, u+f15e, u+f160-f161, u+f163, u+f175-f178, u+f195, u+f1f8, u+f219, u+f27a; 39 | } 40 | -------------------------------------------------------------------------------- /src/assets/css/v5-font-face.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | * Copyright 2022 Fonticons, Inc. 5 | */ 6 | @font-face { 7 | font-family: 'Font Awesome 5 Brands'; 8 | font-display: block; 9 | font-weight: 400; 10 | src: url('../webfonts/fa-brands-400.woff2') format('woff2'), 11 | url('../webfonts/fa-brands-400.ttf') format('truetype'); 12 | } 13 | 14 | @font-face { 15 | font-family: 'Font Awesome 5 Free'; 16 | font-display: block; 17 | font-weight: 900; 18 | src: url('../webfonts/fa-solid-900.woff2') format('woff2'), 19 | url('../webfonts/fa-solid-900.ttf') format('truetype'); 20 | } 21 | 22 | @font-face { 23 | font-family: 'Font Awesome 5 Free'; 24 | font-display: block; 25 | font-weight: 400; 26 | src: url('../webfonts/fa-regular-400.woff2') format('woff2'), 27 | url('../webfonts/fa-regular-400.ttf') format('truetype'); 28 | } 29 | -------------------------------------------------------------------------------- /src/assets/css/v5-font-face.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | * Copyright 2022 Fonticons, Inc. 5 | */ 6 | @font-face { 7 | font-family: 'Font Awesome 5 Brands'; 8 | font-display: block; 9 | font-weight: 400; 10 | src: url(../webfonts/fa-brands-400.woff2) format('woff2'), 11 | url(../webfonts/fa-brands-400.ttf) format('truetype'); 12 | } 13 | @font-face { 14 | font-family: 'Font Awesome 5 Free'; 15 | font-display: block; 16 | font-weight: 900; 17 | src: url(../webfonts/fa-solid-900.woff2) format('woff2'), 18 | url(../webfonts/fa-solid-900.ttf) format('truetype'); 19 | } 20 | @font-face { 21 | font-family: 'Font Awesome 5 Free'; 22 | font-display: block; 23 | font-weight: 400; 24 | src: url(../webfonts/fa-regular-400.woff2) format('woff2'), 25 | url(../webfonts/fa-regular-400.ttf) format('truetype'); 26 | } 27 | -------------------------------------------------------------------------------- /src/assets/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobiMez/wttm/8b57fa454a1f81abbd36a70da29097fadb11d332/src/assets/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /src/assets/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobiMez/wttm/8b57fa454a1f81abbd36a70da29097fadb11d332/src/assets/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /src/assets/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobiMez/wttm/8b57fa454a1f81abbd36a70da29097fadb11d332/src/assets/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /src/assets/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobiMez/wttm/8b57fa454a1f81abbd36a70da29097fadb11d332/src/assets/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /src/assets/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobiMez/wttm/8b57fa454a1f81abbd36a70da29097fadb11d332/src/assets/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /src/assets/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobiMez/wttm/8b57fa454a1f81abbd36a70da29097fadb11d332/src/assets/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /src/assets/webfonts/fa-v4compatibility.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobiMez/wttm/8b57fa454a1f81abbd36a70da29097fadb11d332/src/assets/webfonts/fa-v4compatibility.ttf -------------------------------------------------------------------------------- /src/assets/webfonts/fa-v4compatibility.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobiMez/wttm/8b57fa454a1f81abbd36a70da29097fadb11d332/src/assets/webfonts/fa-v4compatibility.woff2 -------------------------------------------------------------------------------- /src/canvas-sketch-util.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'canvas-sketch-util/color' 2 | declare module 'canvas-sketch-util/random' -------------------------------------------------------------------------------- /src/hooks.server.ts: -------------------------------------------------------------------------------- 1 | import type { Handle } from '@sveltejs/kit'; 2 | 3 | export const handle: Handle = async ({ resolve, event }) => { 4 | // Required for CORS to work 5 | if (event.request.method === 'OPTIONS') { 6 | console.log("tesst"); 7 | 8 | return new Response(null, { 9 | headers: { 10 | 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, PATCH, OPTIONS', 11 | 'Access-Control-Allow-Origin': '*', 12 | 'Access-Control-Allow-Headers': '*', 13 | } 14 | }); 15 | } 16 | 17 | const response = await resolve(event); 18 | response.headers.append('Access-Control-Allow-Origin', `*`); 19 | 20 | return response; 21 | }; 22 | -------------------------------------------------------------------------------- /src/index.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect } from 'vitest'; 2 | 3 | describe('sum test', () => { 4 | it('adds 1 + 2 to equal 3', () => { 5 | expect(1 + 2).toBe(3); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /src/lib/components/Countdown.svelte: -------------------------------------------------------------------------------- 1 | 35 | 36 | 37 | {#each chunkedData as chunk} 38 | 39 | {/each} 40 | 41 | -------------------------------------------------------------------------------- /src/lib/components/FileLoader.svelte: -------------------------------------------------------------------------------- 1 | 133 | 134 |
{ 150 | if (e.key === 'Enter') { 151 | const fileInput = document.getElementById('recipients_file'); 152 | if (fileInput) { 153 | fileInput.click(); 154 | } 155 | } 156 | }} 157 | on:click={() => { 158 | const fileInput = document.getElementById('recipients_file'); 159 | if (fileInput) { 160 | fileInput.click(); 161 | } 162 | }} 163 | > 164 | handleFileChange(e)} 169 | multiple={false} 170 | class=" hidden" 171 | /> 172 | {#key userA} 173 | {#if dataCount > 0 && stagedData} 174 | 183 | 187 | 188 | 192 | 193 |

Load {Math.round($dataCountTween)} Items ?

194 | {#if ptaivAsTelegramExport} 195 | Valid Convo 196 | {userText} 197 | 198 | 209 | {/if} 210 |
211 | {:else} 212 | 213 |

Drop your results.json here

214 | Or click to browse 215 | {#if parsedTextAreaInput == 'invalid'} 216 | Invalid File 217 | {:else if parsedTextAreaInput == 'invalidExport'} 218 | Export Invalid 219 | {/if} 220 |
221 | {/if} 222 | {/key} 223 |
224 | 225 | 230 | -------------------------------------------------------------------------------- /src/lib/components/Legacy/accordions.svelte: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/lib/components/NoMobileTabPage.svelte: -------------------------------------------------------------------------------- 1 | 60 | 61 |
62 | 63 | {#each circles as circle} 64 | 72 | {/each} 73 | 74 | 75 |
76 |
77 |

78 | This site is not designed for mobile and tablet. 79 |

80 | 81 | Generating Telegram exports and loading them is done from the PC client. 82 |
So this site is, 83 | by design, not usable for sizes below 1225 px wide. 84 |
85 |
86 | Back to Portfolio 87 | 100 |
101 | 102 | {#if clicks > 0} 103 | {#key clicks} 104 | 110 | {#if quirkyMessageLookup[clicks]} 111 | {quirkyMessageLookup[clicks]} 112 | {:else} 113 | You have clicked the button {clicks} times. 114 | {/if} 115 | 116 | {/key} 117 | {/if} 118 | 119 |
120 |
121 |
122 | 123 | 131 | -------------------------------------------------------------------------------- /src/lib/components/RightSideControls/ColorRandomizer.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 | 10 | {p1c} 11 | 12 | 16 | 17 | {p2c} 18 | 19 |
20 | -------------------------------------------------------------------------------- /src/lib/components/RightSideControls/OpacitySlider.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | Opacity {opa}% 7 | 8 | 9 | Fully transparent 10 | Opaque 11 | 12 |
13 | -------------------------------------------------------------------------------- /src/lib/components/ScatterPoint.svelte: -------------------------------------------------------------------------------- 1 | 17 | 18 | {#each data as d, i (keyAccessor(d) || i)} 19 | 26 | {#if d.reply_to_message_id} 27 | {#each [findReplyDataPoint(d.reply_to_message_id)] as replyData} 28 | 38 | {/each} 39 | {/if} 40 | {/each} 41 | 42 | 47 | -------------------------------------------------------------------------------- /src/lib/components/Scrolly.svelte: -------------------------------------------------------------------------------- 1 | 81 | 82 |
83 | 84 |
85 | -------------------------------------------------------------------------------- /src/lib/components/Title.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |

(hoveredOn = true)} 9 | on:focus={() => (hoveredOn = true)} 10 | on:mouseout={() => (hoveredOn = false)} 11 | on:blur={() => (hoveredOn = false)} 12 | > 13 | Who 14 | Talks 15 | The 16 | Most ? 17 |

18 | -------------------------------------------------------------------------------- /src/lib/db.ts: -------------------------------------------------------------------------------- 1 | import mongoose from 'mongoose'; 2 | import { config } from 'dotenv'; 3 | 4 | config(); 5 | 6 | export let database: mongoose.mongo.Db ; 7 | 8 | export const connect = async () => { 9 | if (mongoose.connection.readyState === 0) { 10 | const LOCAL_URI = 'mongodb://127.0.0.1:27017/ss'; 11 | const remoteUri = process.env.CONN_URL; 12 | // Connect with env as priority then local if no env 13 | const uri = remoteUri ?? LOCAL_URI; 14 | 15 | if (remoteUri && !uri.includes('127.0.0.1')) { 16 | console.log('Attempting to connect to remote MongoDB URL specified in .env'); 17 | } else { 18 | console.log('No remote MongoDB URL found in .env, attempting to connect to local database'); 19 | } 20 | 21 | try { 22 | await mongoose.connect(uri); 23 | console.log(`Mongoose has connected to MongoDB database at ${uri}`); 24 | database = mongoose.connection.db; 25 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 26 | } catch (err: any) { 27 | if (err.code === 'ECONNREFUSED') { 28 | console.error('Connection to remote MongoDB URL refused, attempting local database'); 29 | await mongoose.connect(LOCAL_URI); 30 | console.log( 31 | `Mongoose has connected to MongoDB database at ${LOCAL_URI} after remote refuse` 32 | ); 33 | } else { 34 | console.error(err); 35 | } 36 | } 37 | 38 | mongoose.connection.on('error', (err) => { 39 | console.error('Mongoose connection error:', err); 40 | }); 41 | 42 | return mongoose.connection; 43 | } else { 44 | return mongoose.connection; 45 | } 46 | }; 47 | 48 | await connect(); 49 | 50 | // TODO: This can be refactored by using the toJSON: { virtuals: true }, option 51 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 52 | export const pojoify = (nonpojo: any) => { 53 | return JSON.parse(JSON.stringify(nonpojo)); 54 | }; 55 | -------------------------------------------------------------------------------- /src/lib/global.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Lexend:wght@100;200;300;400;500;600;700;800;900&display=swap'); 2 | @tailwind base; 3 | @tailwind components; 4 | @tailwind utilities; 5 | 6 | #nprogress .bar { 7 | background-color: #202936; 8 | height: 4px; 9 | } 10 | #nprogress .peg { 11 | display: block; 12 | position: absolute; 13 | right: 0px; 14 | width: 100px; 15 | height: 100%; 16 | box-shadow: 0 0 10px #667994, 0 0 5px #667994; 17 | opacity: 1; 18 | 19 | -webkit-transform: rotate(3deg) translate(0px, -4px); 20 | -ms-transform: rotate(3deg) translate(0px, -4px); 21 | transform: rotate(3deg) translate(0px, -4px); 22 | } 23 | -------------------------------------------------------------------------------- /src/lib/toast.ts: -------------------------------------------------------------------------------- 1 | import { toast } from '@zerodevx/svelte-toast'; 2 | 3 | export const success = (m: string) => 4 | toast.push(m, { 5 | theme: { 6 | '--toastBackground': '#48BB78', 7 | '--toastBarBackground': '#2F855A' 8 | }, 9 | duration: 1000 10 | }); 11 | 12 | export const warning = (m: string) => 13 | toast.push(m, { 14 | theme: { 15 | '--toastBackground': '#FFC107', 16 | '--toastBarBackground': '#FFA000' 17 | } 18 | }); 19 | 20 | export const error = (m: string) => 21 | toast.push(m, { 22 | theme: { 23 | '--toastBackground': '#F56565', 24 | '--toastBarBackground': '#C53030' 25 | } 26 | }); 27 | -------------------------------------------------------------------------------- /src/lib/utils.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/ban-ts-comment */ 2 | //@ts-nocheck 3 | 4 | export const doAPIPost = async (route, body, logResp = false) => { 5 | const response = await fetch(route, { 6 | method: 'POST', 7 | headers: { 8 | 'Content-Type': 'application/json' 9 | }, 10 | body: JSON.stringify(body) 11 | }); 12 | const responseJson = await response.json(); 13 | 14 | if (logResp) { 15 | console.log('POST RESP -> ', responseJson); 16 | } 17 | return responseJson; 18 | }; 19 | 20 | 21 | export const chunkArray = (array: Array, size: number) => { 22 | if (!array) return []; 23 | return Array.from({ length: Math.ceil(array.length / size) }, (v, i) => 24 | array.slice(i * size, i * size + size) 25 | ); 26 | }; -------------------------------------------------------------------------------- /src/lib/utils/time.ts: -------------------------------------------------------------------------------- 1 | export const formatTimedelta = (td: number) => { 2 | td = Math.floor(td / 1000); // Convert milliseconds to seconds 3 | const hours = Math.floor(td / 3600); 4 | const minutes = Math.floor((td % 3600) / 60); 5 | const seconds = Math.floor(td % 60); 6 | 7 | return `${hours} hr, ${minutes} m, ${seconds} s`; 8 | }; 9 | -------------------------------------------------------------------------------- /src/routes/+layout.server.ts: -------------------------------------------------------------------------------- 1 | import { redirect } from '@sveltejs/kit'; 2 | import type { LayoutServerLoad } from './$types'; 3 | 4 | export const load: LayoutServerLoad = async ({ locals, url }) => { 5 | 6 | return { 7 | }; 8 | 9 | }; 10 | -------------------------------------------------------------------------------- /src/routes/+layout.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |
13 |
14 | 15 |
16 |
17 | -------------------------------------------------------------------------------- /src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 | 402 | 403 | 404 | 405 | {#if isTabletSizeOrSmaller} 406 | 409 | {:else} 410 |
415 |
416 |
421 | {#key hoveredDatapoint} 422 | {#if hoveredDatapoint} 423 |
424 | {hoveredDatapoint.type} , #{hoveredDatapointIndex} 425 |
426 |

427 | {hoveredDatapoint.from} 428 | 429 | {hoveredDatapoint.text} 430 | 431 |

432 | 433 |

434 | {new Date(hoveredDatapoint.date).toLocaleString('default', { 435 | day: '2-digit', 436 | month: 'short', 437 | year: '2-digit' 438 | })} 439 |

440 |

441 | Replied in 442 | {prettyMilliseconds(hoveredDatapoint.timeDelta)} 443 |

444 |
445 | {/if} 446 | {/key} 447 |
448 |
449 | 450 | 456 | 457 | {#if xScale} 458 | 459 | {#each xScale.ticks() as tick} 460 | 467 | 474 | {new Date(tick).toLocaleString('default', { 475 | day: '2-digit', 476 | month: 'short', 477 | year: '2-digit' 478 | })} 479 | 480 | {/each} 481 | 482 | {/if} 483 | 484 | {#if xScale && yScale && xTicks && yTicks} 485 | 486 | 487 | {#each displayedData as d, i (d.id)} 488 | { 491 | hoveredDatapoint = d; 492 | hoveredDatapointIndex = i; 493 | }} 494 | /> 495 | {/each} 496 | {/if} 497 | 498 |
499 | 500 |
501 |
502 | Current Story Step : {currentStep ?? 'loading'} 503 | Dataset size : {datas ? datas.length : 'loading'} 504 | Staged Data : {stagedData ? stagedData.length : 'empty'} 505 |
506 | 507 |
508 |
509 | 510 | 511 | {#if yScale} 512 | <div class="text-md font-semibold text-stone-500 flex flex-col"> 513 | <div class="flex flex-row gap-2 items-baseline justify-start"> 514 | <span> Between </span> 515 | <span class="kbd kbd-md relative" style="color: {p2c}"> 516 | {#if !wttm} 517 | <span 518 | transition:slide|global={{ delay: 300, duration: 700 }} 519 | class="absolute -top-3 backdrop-blur-sm p-1 rounded-full" 520 | > 521 | <Crown weight="duotone" size={16} /> 522 | </span> 523 | {/if} 524 | {yScale.domain()[1]} 525 | </span> 526 | & 527 | <span class="kbd kbd-md relative" style="color: {p1c}"> 528 | {#if wttm} 529 | <span 530 | transition:slide|global={{ delay: 300, duration: 700 }} 531 | class="absolute -top-3 backdrop-blur-sm p-1 rounded-full" 532 | > 533 | <Crown weight="duotone" size={16} /> 534 | </span> 535 | {/if} 536 | {yScale.domain()[0]} 537 | </span> 538 | </div> 539 | 540 | <small class="text-xs py-2"> 541 | We have 542 | <Countdown digits={`${datas.length}`} /> 543 | total messages of which <br /> 544 | <span style="color: {p1c}"> 545 | <Countdown digits={`${tally[yScale.domain()[0]]['count']}`} color={p1c} /> 546 | were sent by {yScale.domain()[0]} 547 | </span> 548 | and 549 | <span style="color: {p2c}"> 550 | <Countdown digits={`${tally[yScale.domain()[1]]['count']}`} color={p2c} /> 551 | were sent by {yScale.domain()[1]} 552 | </span> 553 | </small> 554 | </div> 555 | <div class="flex flex-col gap-1"> 556 | <p class="text-xs font-normal text-stone-800"> 557 | <b class="text-stone-600 pb-1">Average response time </b> 558 | <span class="flex flex-row gap-2"> 559 | <span style="color: {p1c}"> 560 | {yScale.domain()[0]}: <b>{tally[yScale.domain()[0]]['meanText']}</b> 561 | </span> 562 | <span style="color: {p2c}"> 563 | {yScale.domain()[1]}: <b>{tally[yScale.domain()[1]]['meanText']}</b> 564 | </span> 565 | </span> 566 | </p> 567 | <p class="text-xs font-normal text-stone-800"> 568 | <b class="text-stone-600 pb-1"> Voice messages , Pictures , etc : </b> 569 | <span class="flex flex-row gap-2"> 570 | <span style="color: {p1c}"> 571 | {yScale.domain()[0]} : 572 | <b> 573 | {tally[yScale.domain()[0]]['memecount']} 574 | </b> 575 | </span> 576 | <span style="color: {p2c}"> 577 | {yScale.domain()[1]}: 578 | <b> 579 | {tally[yScale.domain()[1]]['memecount']} 580 | </b> 581 | </span> 582 | </span> 583 | </p> 584 | <p class="text-xs font-normal text-stone-800"> 585 | <b class="text-stone-600 pb-1"> Stickers </b> 586 | <span class="flex flex-row gap-2"> 587 | <span style="color: {p1c}"> 588 | {yScale.domain()[0]} : 589 | <b> 590 | {tally[yScale.domain()[0]]['stickercount']} 591 | </b> 592 | </span> 593 | <span style="color: {p2c}"> 594 | {yScale.domain()[1]}: 595 | <b> 596 | {tally[yScale.domain()[1]]['stickercount']} 597 | </b> 598 | </span> 599 | </span> 600 | </p> 601 | <p class="text-xs font-normal text-stone-800"> 602 | <b class="text-stone-600 pb-1">Text messages: </b> 603 | <span class="flex flex-row gap-2"> 604 | <span style="color: {p1c}"> 605 | {yScale.domain()[0]} : 606 | <b> 607 | {tally[yScale.domain()[0]]['count'] - tally[yScale.domain()[0]]['memecount']} 608 | </b> 609 | </span> 610 | <span style="color: {p2c}"> 611 | {yScale.domain()[1]}: 612 | <b> 613 | {tally[yScale.domain()[1]]['count'] - tally[yScale.domain()[1]]['memecount']} 614 | </b> 615 | </span> 616 | </span> 617 | </p> 618 | </div> 619 | {/if} 620 | 621 | <h5 class="text-stone-400 pt-5">How to read the graph</h5> 622 | <p class="text-stone-500 text-xs font-light flex flex-col"> 623 | <span> 624 | The Graph on the left is a Scatter Plot of your messages ( Dots ) , going from 625 | leftmost (Past) to rightmost (Present) 626 | </span> 627 | <span> 628 | Each of your messages are separated by color, with lines in between each dot 629 | representing replies to that message ( The bolder the line , The more back and forth 630 | happening )</span 631 | > 632 | <span> 633 | and non text messages are modelled as <b>small purple dots.</b> 634 | </span> 635 | <span 636 | >The Size of the circle corresponds to <b>speed of reply.</b> ( with delays larger than 637 | 3 days considered in the same light ) 638 | </span> 639 | 640 | <span class="py-3"> 641 | <FileLoader 642 | bind:stagedData 643 | on:load={() => { 644 | if (stagedData) { 645 | renderCanvas([...stagedData]); 646 | } 647 | }} 648 | /> 649 | </span> 650 | 651 | <span class="bg-base-300 p-3 rounded-md mt-2"> 652 | <span class="font-semibold block"> Customize the chart </span> 653 | <div class="flex flex-col justify-center items-center gap-4 p-4"> 654 | <ColorRandomizer {p1c} {p2c} {rerollColors} /> 655 | <OpacitySlider bind:opa /> 656 | </div> 657 | </span> 658 | </p> 659 | </div> 660 | </div> 661 | <div class="h-[100vh] p-10 flex place-items-center justify-center mt-24"></div> 662 | </Scrolly> 663 | </div> 664 | {/if} 665 | -------------------------------------------------------------------------------- /src/routes/DataPoint.svelte: -------------------------------------------------------------------------------- 1 | <script lang="ts "> 2 | // WARNING: Editing this file causes an HMR hiccup and the page to lag indefinitely 3 | export let d; 4 | </script> 5 | 6 | <circle 7 | role="button" 8 | tabindex="0" 9 | on:mouseover 10 | on:mouseleave 11 | on:focus 12 | on:blur 13 | class=" hover:opacity-100 hover:z-50 " 14 | cx={d.cx} 15 | cy={d.cy} 16 | r={d.r } 17 | opacity={d.o} 18 | fill={d.f} 19 | /> 20 | 21 | {#if d.reply_to_message_id} 22 | <path d={d.m} fill="none" opacity={d.o} stroke-linecap="round" stroke-width={2} stroke={d.s} /> 23 | {/if} 24 | 25 | <style> 26 | circle { 27 | transition-property: all; 28 | transition-duration: 0.3s; 29 | transition-timing-function: ease; 30 | transition-property: color none; 31 | } 32 | </style> 33 | -------------------------------------------------------------------------------- /src/routes/debug/+page.svelte: -------------------------------------------------------------------------------- 1 | <script lang="ts"> 2 | import FileLoader from '$lib/components/FileLoader.svelte'; 3 | 4 | export let stagedData: any; 5 | </script> 6 | 7 | <FileLoader bind:stagedData /> 8 | 9 | <div class="p-12"> 10 | <h2>stagedData</h2> 11 | <pre> 12 | {JSON.stringify(stagedData, null, 2)} 13 | </pre> 14 | </div> 15 | 16 | <style lang="postcss"> 17 | pre { 18 | @apply p-4 bg-base-200 rounded-lg text-xs; 19 | background-color: #f4f4f4; 20 | padding: 10px; 21 | border-radius: 5px; 22 | height: 20vh; 23 | overflow: scroll; 24 | } 25 | h2 { 26 | margin-top: 20px; 27 | } 28 | </style> 29 | -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobiMez/wttm/8b57fa454a1f81abbd36a70da29097fadb11d332/static/favicon.png -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-vercel'; 2 | import seqPreprocessor from 'svelte-sequential-preprocessor'; 3 | 4 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; 5 | 6 | /** @type {import('@sveltejs/kit').Config} */ 7 | const config = { 8 | // Consult https://kit.svelte.dev/docs/integrations#preprocessors 9 | // for more information about preprocessors 10 | preprocess: seqPreprocessor([vitePreprocess()]), 11 | 12 | kit: { 13 | adapter: adapter(), 14 | csrf: { 15 | checkOrigin: false 16 | } 17 | 18 | }, 19 | 20 | vite: { 21 | optimizeDeps: { 22 | include: ['lodash.get', 'lodash.isequal', 'lodash.clonedeep'] 23 | } 24 | }, 25 | 26 | }; 27 | 28 | export default config; 29 | -------------------------------------------------------------------------------- /tailwind.config.cjs: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: ['./src/**/*.{html,js,svelte,ts}'], 4 | 5 | daisyui: { 6 | logs: false, 7 | themes: [ 8 | { 9 | mytheme: { 10 | primary: '#101828', 11 | secondary: '#667085', 12 | accent: '#44403c', 13 | neutral: '#1C2630', 14 | info: '#354f52', 15 | success: '#344e41', 16 | warning: '#f6bd60', 17 | error: '#bc4749', 18 | 'base-100': '#ffffff', 19 | 'base-200': '#f6f6f6', 20 | '--rounded-box': '1.6rem', 21 | '--rounded-btn': '0.6rem', 22 | '--rounded-badge': '1.9rem', 23 | '--animation-btn': '0.25s', 24 | '--animation-input': '0.2s', 25 | '--btn-text-case': 'uppercase', 26 | '--btn-focus-scale': '1', 27 | '--border-btn': '1px' 28 | } 29 | } 30 | ] 31 | }, 32 | theme: { 33 | fontFamily: { 34 | sans: ['Lexend', 'sans-serif'] 35 | }, 36 | }, 37 | plugins: [require('daisyui')] 38 | }; 39 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true 12 | } 13 | // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias 14 | // 15 | // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes 16 | // from the referenced tsconfig.json - TypeScript does not merge them in 17 | } 18 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/ban-ts-comment */ 2 | //@ts-nocheck 3 | 4 | import { sveltekit } from '@sveltejs/kit/vite'; 5 | 6 | export default { 7 | plugins: [sveltekit()], 8 | ssr: { 9 | noExternal: ['three', 'troika-three-text'] 10 | } 11 | }; 12 | --------------------------------------------------------------------------------