Spaces:
Runtime error
Runtime error
EmanueleCosenza
commited on
Commit
·
d896bd4
1
Parent(s):
78c4bb2
Working version
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .gitattributes +1 -0
- .gitignore +160 -0
- Dockerfile +13 -0
- app.py +53 -0
- constants.py +60 -0
- data.py +271 -0
- download_models.py +30 -0
- download_soundfont.sh +67 -0
- generate.py +284 -0
- generation_config.py +19 -0
- generation_config.yaml +18 -0
- model.py +678 -0
- models/.gitattributes +37 -0
- models/LMD2/checkpoint +3 -0
- models/LMD2/configuration +0 -0
- models/README.md +16 -0
- plots.py +147 -0
- preprocess.py +294 -0
- requirements.txt +25 -0
- soundfonts/FluidR3_GM.sf2 +3 -0
- static/0/generated.mid +0 -0
- static/0/structure.json +1 -0
- static/0/z +0 -0
- static/assets/FontAwesome/LICENSE.txt +165 -0
- static/assets/FontAwesome/css/brands.css +1537 -0
- static/assets/FontAwesome/css/brands.min.css +6 -0
- static/assets/FontAwesome/css/fontawesome.css +0 -0
- static/assets/FontAwesome/css/fontawesome.min.css +9 -0
- static/assets/FontAwesome/css/solid.css +19 -0
- static/assets/FontAwesome/css/solid.min.css +6 -0
- static/assets/FontAwesome/css/svg-with-js.css +639 -0
- static/assets/FontAwesome/css/svg-with-js.min.css +6 -0
- static/assets/FontAwesome/css/v4-font-face.css +26 -0
- static/assets/FontAwesome/css/v4-font-face.min.css +6 -0
- static/assets/FontAwesome/css/v4-shims.css +2194 -0
- static/assets/FontAwesome/css/v4-shims.min.css +6 -0
- static/assets/FontAwesome/css/v5-font-face.css +22 -0
- static/assets/FontAwesome/css/v5-font-face.min.css +6 -0
- static/assets/FontAwesome/js/all.js +0 -0
- static/assets/FontAwesome/js/all.min.js +0 -0
- static/assets/FontAwesome/js/brands.js +0 -0
- static/assets/FontAwesome/js/brands.min.js +0 -0
- static/assets/FontAwesome/js/conflict-detection.js +1138 -0
- static/assets/FontAwesome/js/conflict-detection.min.js +6 -0
- static/assets/FontAwesome/js/fontawesome.js +0 -0
- static/assets/FontAwesome/js/fontawesome.min.js +6 -0
- static/assets/FontAwesome/js/regular.js +0 -0
- static/assets/FontAwesome/js/regular.min.js +0 -0
- static/assets/FontAwesome/js/solid.js +0 -0
- static/assets/FontAwesome/js/solid.min.js +0 -0
.gitattributes
CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
+
soundfonts/FluidR3_GM.sf2 filter=lfs diff=lfs merge=lfs -text
|
.gitignore
ADDED
@@ -0,0 +1,160 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Byte-compiled / optimized / DLL files
|
2 |
+
__pycache__/
|
3 |
+
*.py[cod]
|
4 |
+
*$py.class
|
5 |
+
|
6 |
+
# C extensions
|
7 |
+
*.so
|
8 |
+
|
9 |
+
# Distribution / packaging
|
10 |
+
.Python
|
11 |
+
build/
|
12 |
+
develop-eggs/
|
13 |
+
dist/
|
14 |
+
downloads/
|
15 |
+
eggs/
|
16 |
+
.eggs/
|
17 |
+
lib/
|
18 |
+
lib64/
|
19 |
+
parts/
|
20 |
+
sdist/
|
21 |
+
var/
|
22 |
+
wheels/
|
23 |
+
share/python-wheels/
|
24 |
+
*.egg-info/
|
25 |
+
.installed.cfg
|
26 |
+
*.egg
|
27 |
+
MANIFEST
|
28 |
+
|
29 |
+
# PyInstaller
|
30 |
+
# Usually these files are written by a python script from a template
|
31 |
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
32 |
+
*.manifest
|
33 |
+
*.spec
|
34 |
+
|
35 |
+
# Installer logs
|
36 |
+
pip-log.txt
|
37 |
+
pip-delete-this-directory.txt
|
38 |
+
|
39 |
+
# Unit test / coverage reports
|
40 |
+
htmlcov/
|
41 |
+
.tox/
|
42 |
+
.nox/
|
43 |
+
.coverage
|
44 |
+
.coverage.*
|
45 |
+
.cache
|
46 |
+
nosetests.xml
|
47 |
+
coverage.xml
|
48 |
+
*.cover
|
49 |
+
*.py,cover
|
50 |
+
.hypothesis/
|
51 |
+
.pytest_cache/
|
52 |
+
cover/
|
53 |
+
|
54 |
+
# Translations
|
55 |
+
*.mo
|
56 |
+
*.pot
|
57 |
+
|
58 |
+
# Django stuff:
|
59 |
+
*.log
|
60 |
+
local_settings.py
|
61 |
+
db.sqlite3
|
62 |
+
db.sqlite3-journal
|
63 |
+
|
64 |
+
# Flask stuff:
|
65 |
+
instance/
|
66 |
+
.webassets-cache
|
67 |
+
|
68 |
+
# Scrapy stuff:
|
69 |
+
.scrapy
|
70 |
+
|
71 |
+
# Sphinx documentation
|
72 |
+
docs/_build/
|
73 |
+
|
74 |
+
# PyBuilder
|
75 |
+
.pybuilder/
|
76 |
+
target/
|
77 |
+
|
78 |
+
# Jupyter Notebook
|
79 |
+
.ipynb_checkpoints
|
80 |
+
|
81 |
+
# IPython
|
82 |
+
profile_default/
|
83 |
+
ipython_config.py
|
84 |
+
|
85 |
+
# pyenv
|
86 |
+
# For a library or package, you might want to ignore these files since the code is
|
87 |
+
# intended to run in multiple environments; otherwise, check them in:
|
88 |
+
# .python-version
|
89 |
+
|
90 |
+
# pipenv
|
91 |
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
92 |
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
93 |
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
94 |
+
# install all needed dependencies.
|
95 |
+
#Pipfile.lock
|
96 |
+
|
97 |
+
# poetry
|
98 |
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
99 |
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
100 |
+
# commonly ignored for libraries.
|
101 |
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
102 |
+
#poetry.lock
|
103 |
+
|
104 |
+
# pdm
|
105 |
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
106 |
+
#pdm.lock
|
107 |
+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
108 |
+
# in version control.
|
109 |
+
# https://pdm.fming.dev/#use-with-ide
|
110 |
+
.pdm.toml
|
111 |
+
|
112 |
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
113 |
+
__pypackages__/
|
114 |
+
|
115 |
+
# Celery stuff
|
116 |
+
celerybeat-schedule
|
117 |
+
celerybeat.pid
|
118 |
+
|
119 |
+
# SageMath parsed files
|
120 |
+
*.sage.py
|
121 |
+
|
122 |
+
# Environments
|
123 |
+
.env
|
124 |
+
.venv
|
125 |
+
env/
|
126 |
+
venv/
|
127 |
+
ENV/
|
128 |
+
env.bak/
|
129 |
+
venv.bak/
|
130 |
+
|
131 |
+
# Spyder project settings
|
132 |
+
.spyderproject
|
133 |
+
.spyproject
|
134 |
+
|
135 |
+
# Rope project settings
|
136 |
+
.ropeproject
|
137 |
+
|
138 |
+
# mkdocs documentation
|
139 |
+
/site
|
140 |
+
|
141 |
+
# mypy
|
142 |
+
.mypy_cache/
|
143 |
+
.dmypy.json
|
144 |
+
dmypy.json
|
145 |
+
|
146 |
+
# Pyre type checker
|
147 |
+
.pyre/
|
148 |
+
|
149 |
+
# pytype static type analyzer
|
150 |
+
.pytype/
|
151 |
+
|
152 |
+
# Cython debug symbols
|
153 |
+
cython_debug/
|
154 |
+
|
155 |
+
# PyCharm
|
156 |
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
157 |
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
158 |
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
159 |
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
160 |
+
#.idea/
|
Dockerfile
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
FROM python:3.7
|
2 |
+
|
3 |
+
RUN useradd -m -u 1000 user
|
4 |
+
USER user
|
5 |
+
ENV HOME=/home/user \
|
6 |
+
PATH=/home/user/.local/bin:$PATH
|
7 |
+
|
8 |
+
WORKDIR $HOME/app
|
9 |
+
COPY --chown=user . $HOME/app
|
10 |
+
|
11 |
+
RUN pip install --no-cache-dir --upgrade -r $HOME/app/requirements.txt
|
12 |
+
|
13 |
+
CMD ["flask", "run", "--host=0.0.0.0", "--port=7860"]
|
app.py
ADDED
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from flask import Flask, render_template, jsonify, request
|
2 |
+
import json
|
3 |
+
import subprocess
|
4 |
+
|
5 |
+
app = Flask(__name__)
|
6 |
+
|
7 |
+
|
8 |
+
@app.route('/')
|
9 |
+
def index():
|
10 |
+
return render_template('index.html')
|
11 |
+
|
12 |
+
|
13 |
+
@app.route('/generate_midi', methods=['POST'])
|
14 |
+
def generate_midi():
|
15 |
+
data = request.json
|
16 |
+
keep_tonality = data.get('keepTonality', False)
|
17 |
+
use_grid = data.get('useGrid', True)
|
18 |
+
|
19 |
+
arguments = ['python3', 'generate.py', 'models/LMD2/', 'static/',
|
20 |
+
'--n', '1', '--no_audio']
|
21 |
+
|
22 |
+
if keep_tonality:
|
23 |
+
arguments.extend(['--z_file', 'static/0/z'])
|
24 |
+
|
25 |
+
if use_grid:
|
26 |
+
arguments.extend(['--s_file', 'static/0/structure.json'])
|
27 |
+
|
28 |
+
subprocess.run(arguments, capture_output=True, text=True)
|
29 |
+
|
30 |
+
filename = "generated.mid"
|
31 |
+
return jsonify({"filename": filename})
|
32 |
+
|
33 |
+
|
34 |
+
@app.route('/save_json', methods=['POST'])
|
35 |
+
def save_json():
|
36 |
+
data = request.json
|
37 |
+
filepath = 'static/0/structure.json'
|
38 |
+
|
39 |
+
with open(filepath, 'w') as file:
|
40 |
+
json.dump(data, file)
|
41 |
+
|
42 |
+
return jsonify(message="JSON saved successfully!")
|
43 |
+
|
44 |
+
|
45 |
+
@app.route('/load_grid')
|
46 |
+
def load_grid():
|
47 |
+
with open('static/0/structure.json', 'r') as file:
|
48 |
+
data = json.load(file)
|
49 |
+
return jsonify(data)
|
50 |
+
|
51 |
+
|
52 |
+
if __name__ == '__main__':
|
53 |
+
app.run(debug=True)
|
constants.py
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from enum import Enum
|
2 |
+
|
3 |
+
|
4 |
+
N_TRACKS = 4
|
5 |
+
TRACKS = ['Drums', 'Bass', 'Guitar', 'Strings']
|
6 |
+
|
7 |
+
# These defaults, which should not be changed, are set when the related
|
8 |
+
# variables in the YAML config file are not set.
|
9 |
+
DEFAULT_MIDI_PROGRAMS = {
|
10 |
+
'Drums': -1,
|
11 |
+
'Bass': 34,
|
12 |
+
'Guitar': 1,
|
13 |
+
'Strings': 83,
|
14 |
+
}
|
15 |
+
DEFAULT_SOUNDFONT_PATH = '/usr/share/soundfonts/FluidR3_GM.sf2'
|
16 |
+
|
17 |
+
|
18 |
+
# Pitch tokens have values in the range [0, 130]. Tokens from 0 to 127 represent
|
19 |
+
# MIDI pitches. Token 60 represents middle C (C4).
|
20 |
+
# See https://www.inspiredacoustics.com/en/MIDI_note_numbers_and_center_frequencies
|
21 |
+
# for the complete list of MIDI pitches.
|
22 |
+
class PitchToken(Enum):
|
23 |
+
SOS = 128
|
24 |
+
EOS = 129
|
25 |
+
PAD = 130
|
26 |
+
|
27 |
+
|
28 |
+
N_PITCH_TOKENS = 131
|
29 |
+
MAX_PITCH_TOKEN = 127
|
30 |
+
|
31 |
+
|
32 |
+
# Duration tokens have values in the range [0, 98]. Tokens from 0 to 95 have to
|
33 |
+
# be interpreted as durations from 1 to 96 timesteps.
|
34 |
+
class DurationToken(Enum):
|
35 |
+
SOS = 96
|
36 |
+
EOS = 97
|
37 |
+
PAD = 98
|
38 |
+
|
39 |
+
|
40 |
+
N_DUR_TOKENS = 99
|
41 |
+
MAX_DUR_TOKEN = 95
|
42 |
+
|
43 |
+
|
44 |
+
# Dimension of (pitch, duration) token pair
|
45 |
+
D_TOKEN_PAIR = N_PITCH_TOKENS + N_DUR_TOKENS
|
46 |
+
|
47 |
+
# Number of maximum tokens stored in each timestep (14 + SOS and EOS)
|
48 |
+
MAX_SIMU_TOKENS = 16
|
49 |
+
|
50 |
+
|
51 |
+
# This enum contains edge type indices for each edge type
|
52 |
+
class EdgeTypes(Enum):
|
53 |
+
TRACK = 0 # This has to be interpreted as the starting index
|
54 |
+
ONSET = N_TRACKS
|
55 |
+
NEXT = N_TRACKS + 1
|
56 |
+
|
57 |
+
# N_TRACKS track types + 1 onset edge type + 1 next edge type
|
58 |
+
N_EDGE_TYPES = N_TRACKS + 2
|
59 |
+
|
60 |
+
|
data.py
ADDED
@@ -0,0 +1,271 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import itertools
|
2 |
+
import os
|
3 |
+
|
4 |
+
import torch
|
5 |
+
import numpy as np
|
6 |
+
from torch_geometric.data import Dataset
|
7 |
+
from torch_geometric.data import Data
|
8 |
+
from torch_geometric.data.collate import collate
|
9 |
+
|
10 |
+
import constants
|
11 |
+
from constants import EdgeTypes
|
12 |
+
|
13 |
+
|
14 |
+
def get_node_labels(s_tensor, ones_idxs):
|
15 |
+
# Build a tensor which has node labels in place of each activation in the
|
16 |
+
# stucture tensor
|
17 |
+
labels = torch.zeros_like(s_tensor, dtype=torch.long,
|
18 |
+
device=s_tensor.device)
|
19 |
+
n_nodes = len(ones_idxs[0])
|
20 |
+
labels[ones_idxs] = torch.arange(n_nodes, device=s_tensor.device)
|
21 |
+
return labels
|
22 |
+
|
23 |
+
|
24 |
+
def get_track_edges(s_tensor, ones_idxs=None, node_labels=None):
|
25 |
+
|
26 |
+
track_edges = []
|
27 |
+
|
28 |
+
if ones_idxs is None:
|
29 |
+
# Indices where the binary structure tensor is active
|
30 |
+
ones_idxs = torch.nonzero(s_tensor, as_tuple=True)
|
31 |
+
|
32 |
+
if node_labels is None:
|
33 |
+
node_labels = get_node_labels(s_tensor, ones_idxs)
|
34 |
+
|
35 |
+
# For each track, add direct and inverse edges between consecutive nodes
|
36 |
+
for track in range(s_tensor.size(0)):
|
37 |
+
# List of active timesteps in the current track
|
38 |
+
tss = list(ones_idxs[1][ones_idxs[0] == track])
|
39 |
+
edge_type = EdgeTypes.TRACK.value + track
|
40 |
+
edges = [
|
41 |
+
# Edge tuple: (u, v, type, ts_distance). Zip is used to obtain
|
42 |
+
# consecutive active timesteps. Edges in different tracks have
|
43 |
+
# different types.
|
44 |
+
(node_labels[track, t1],
|
45 |
+
node_labels[track, t2], edge_type, t2 - t1)
|
46 |
+
for t1, t2 in zip(tss[:-1], tss[1:])
|
47 |
+
]
|
48 |
+
inverse_edges = [(u, v, t, d) for (v, u, t, d) in edges]
|
49 |
+
track_edges.extend(edges + inverse_edges)
|
50 |
+
|
51 |
+
return torch.tensor(track_edges, dtype=torch.long)
|
52 |
+
|
53 |
+
|
54 |
+
def get_onset_edges(s_tensor, ones_idxs=None, node_labels=None):
|
55 |
+
|
56 |
+
onset_edges = []
|
57 |
+
edge_type = EdgeTypes.ONSET.value
|
58 |
+
|
59 |
+
if ones_idxs is None:
|
60 |
+
# Indices where the binary structure tensor is active
|
61 |
+
ones_idxs = torch.nonzero(s_tensor, as_tuple=True)
|
62 |
+
|
63 |
+
if node_labels is None:
|
64 |
+
node_labels = get_node_labels(s_tensor, ones_idxs)
|
65 |
+
|
66 |
+
# Add direct and inverse edges between nodes played in the same timestep
|
67 |
+
for ts in range(s_tensor.size(1)):
|
68 |
+
# List of active tracks in the current timestep
|
69 |
+
tracks = list(ones_idxs[0][ones_idxs[1] == ts])
|
70 |
+
# Obtain all possible pairwise combinations of active tracks
|
71 |
+
combinations = list(itertools.combinations(tracks, 2))
|
72 |
+
edges = [
|
73 |
+
# Edge tuple: (u, v, type, ts_distance(=0)).
|
74 |
+
(node_labels[track1, ts], node_labels[track2, ts], edge_type, 0)
|
75 |
+
for track1, track2 in combinations
|
76 |
+
]
|
77 |
+
inverse_edges = [(u, v, t, d) for (v, u, t, d) in edges]
|
78 |
+
onset_edges.extend(edges + inverse_edges)
|
79 |
+
|
80 |
+
return torch.tensor(onset_edges, dtype=torch.long)
|
81 |
+
|
82 |
+
|
83 |
+
def get_next_edges(s_tensor, ones_idxs=None, node_labels=None):
|
84 |
+
|
85 |
+
next_edges = []
|
86 |
+
edge_type = EdgeTypes.NEXT.value
|
87 |
+
|
88 |
+
if ones_idxs is None:
|
89 |
+
# Indices where the binary structure tensor is active
|
90 |
+
ones_idxs = torch.nonzero(s_tensor, as_tuple=True)
|
91 |
+
|
92 |
+
if node_labels is None:
|
93 |
+
node_labels = get_node_labels(s_tensor, ones_idxs)
|
94 |
+
|
95 |
+
# List of active timesteps
|
96 |
+
tss = torch.nonzero(torch.any(s_tensor.bool(), dim=0)).squeeze()
|
97 |
+
if tss.dim() == 0:
|
98 |
+
return torch.tensor([], dtype=torch.long)
|
99 |
+
|
100 |
+
for i in range(tss.size(0)-1):
|
101 |
+
# Get consecutive active timesteps
|
102 |
+
t1, t2 = tss[i], tss[i+1]
|
103 |
+
# Get all the active tracks in the two timesteps
|
104 |
+
t1_tracks = ones_idxs[0][ones_idxs[1] == t1]
|
105 |
+
t2_tracks = ones_idxs[0][ones_idxs[1] == t2]
|
106 |
+
|
107 |
+
# Combine the source and destination tracks, removing combinations with
|
108 |
+
# the same source and destination track (since these represent track
|
109 |
+
# edges).
|
110 |
+
tracks_product = list(itertools.product(t1_tracks, t2_tracks))
|
111 |
+
tracks_product = [(track1, track2)
|
112 |
+
for (track1, track2) in tracks_product
|
113 |
+
if track1 != track2]
|
114 |
+
# Edge tuple: (u, v, type, ts_distance).
|
115 |
+
edges = [(node_labels[track1, t1], node_labels[track2, t2],
|
116 |
+
edge_type, t2 - t1)
|
117 |
+
for track1, track2 in tracks_product]
|
118 |
+
|
119 |
+
next_edges.extend(edges)
|
120 |
+
|
121 |
+
return torch.tensor(next_edges, dtype=torch.long)
|
122 |
+
|
123 |
+
|
124 |
+
def get_track_features(s_tensor):
|
125 |
+
|
126 |
+
# Indices where the binary structure tensor is active
|
127 |
+
ones_idxs = torch.nonzero(s_tensor)
|
128 |
+
|
129 |
+
n_nodes = len(ones_idxs)
|
130 |
+
tracks = ones_idxs[:, 0]
|
131 |
+
n_tracks = s_tensor.size(0)
|
132 |
+
|
133 |
+
# The feature n_nodes x n_tracks tensor contains one-hot tracks
|
134 |
+
# representations for each node
|
135 |
+
features = torch.zeros((n_nodes, n_tracks))
|
136 |
+
features[torch.arange(n_nodes), tracks] = 1
|
137 |
+
|
138 |
+
return features
|
139 |
+
|
140 |
+
|
141 |
+
def graph_from_tensor(s_tensor):
|
142 |
+
|
143 |
+
bars = []
|
144 |
+
|
145 |
+
# Iterate over bars and construct a graph for each bar
|
146 |
+
for i in range(s_tensor.size(0)):
|
147 |
+
|
148 |
+
bar = s_tensor[i]
|
149 |
+
|
150 |
+
# If the bar contains no activations, add a fake one to avoid having
|
151 |
+
# to deal with empty graphs
|
152 |
+
if not torch.any(bar):
|
153 |
+
bar[0, 0] = 1
|
154 |
+
|
155 |
+
# Get edges from boolean activations
|
156 |
+
track_edges = get_track_edges(bar)
|
157 |
+
onset_edges = get_onset_edges(bar)
|
158 |
+
next_edges = get_next_edges(bar)
|
159 |
+
edges = [track_edges, onset_edges, next_edges]
|
160 |
+
|
161 |
+
# Concatenate edge tensors (N x 4) (if any)
|
162 |
+
is_edgeless = (len(track_edges) == 0 and
|
163 |
+
len(onset_edges) == 0 and
|
164 |
+
len(next_edges) == 0)
|
165 |
+
if not is_edgeless:
|
166 |
+
edge_list = torch.cat([x for x in edges
|
167 |
+
if torch.numel(x) > 0])
|
168 |
+
|
169 |
+
# Adapt tensor to torch_geometric's Data
|
170 |
+
# If no edges, add fake self-edge
|
171 |
+
# edge_list[:, :2] contains source and destination node labels
|
172 |
+
# edge_list[:, 2:] contains edge types and timestep distances
|
173 |
+
edge_index = (edge_list[:, :2].t().contiguous() if not is_edgeless else
|
174 |
+
torch.LongTensor([[0], [0]]))
|
175 |
+
attrs = (edge_list[:, 2:] if not is_edgeless else
|
176 |
+
torch.Tensor([[0, 0]]))
|
177 |
+
|
178 |
+
# Add one hot timestep distance to edge attributes
|
179 |
+
edge_attrs = torch.zeros(attrs.size(0), s_tensor.shape[-1] + 1)
|
180 |
+
edge_attrs[:, 0] = attrs[:, 0]
|
181 |
+
edge_attrs[torch.arange(edge_attrs.size(0)),
|
182 |
+
attrs.long()[:, 1] + 1] = 1
|
183 |
+
|
184 |
+
node_features = get_track_features(bar)
|
185 |
+
is_drum = node_features[:, 0].bool()
|
186 |
+
num_nodes = torch.sum(bar, dtype=torch.long)
|
187 |
+
|
188 |
+
bars.append(Data(edge_index=edge_index, edge_attrs=edge_attrs,
|
189 |
+
num_nodes=num_nodes, node_features=node_features,
|
190 |
+
is_drum=is_drum).to(s_tensor.device))
|
191 |
+
|
192 |
+
# Merge the graphs corresponding to different bars into a single big graph
|
193 |
+
graph, _, _ = collate(
|
194 |
+
Data,
|
195 |
+
data_list=bars,
|
196 |
+
increment=True,
|
197 |
+
add_batch=True
|
198 |
+
)
|
199 |
+
|
200 |
+
# Change bars assignment vector name (otherwise, Dataloader's collate
|
201 |
+
# would overwrite graphs.batch)
|
202 |
+
graph.bars = graph.batch
|
203 |
+
|
204 |
+
return graph
|
205 |
+
|
206 |
+
|
207 |
+
class PolyphemusDataset(Dataset):
|
208 |
+
|
209 |
+
def __init__(self, dir, n_bars=2):
|
210 |
+
self.dir = dir
|
211 |
+
self.files = list(os.scandir(self.dir))
|
212 |
+
self.len = len(self.files)
|
213 |
+
self.n_bars = n_bars
|
214 |
+
|
215 |
+
def __len__(self):
|
216 |
+
return self.len
|
217 |
+
|
218 |
+
def __getitem__(self, idx):
|
219 |
+
|
220 |
+
# Load tensors
|
221 |
+
sample_path = os.path.join(self.dir, self.files[idx].name)
|
222 |
+
data = np.load(sample_path)
|
223 |
+
c_tensor = torch.tensor(data["c_tensor"], dtype=torch.long)
|
224 |
+
s_tensor = torch.tensor(data["s_tensor"], dtype=torch.bool)
|
225 |
+
|
226 |
+
# From (n_tracks x n_timesteps x ...)
|
227 |
+
# to (n_bars x n_tracks x n_timesteps x ...)
|
228 |
+
c_tensor = c_tensor.reshape(c_tensor.shape[0], self.n_bars, -1,
|
229 |
+
c_tensor.shape[2], c_tensor.shape[3])
|
230 |
+
c_tensor = c_tensor.permute(1, 0, 2, 3, 4)
|
231 |
+
s_tensor = s_tensor.reshape(s_tensor.shape[0], self.n_bars, -1)
|
232 |
+
s_tensor = s_tensor.permute(1, 0, 2)
|
233 |
+
|
234 |
+
# From decimals to onehot (pitches)
|
235 |
+
pitches = c_tensor[..., 0]
|
236 |
+
onehot_p = torch.zeros(
|
237 |
+
(pitches.shape[0]*pitches.shape[1]*pitches.shape[2]*pitches.shape[3],
|
238 |
+
constants.N_PITCH_TOKENS),
|
239 |
+
dtype=torch.float32
|
240 |
+
)
|
241 |
+
onehot_p[torch.arange(0, onehot_p.shape[0]), pitches.reshape(-1)] = 1.
|
242 |
+
onehot_p = onehot_p.reshape(pitches.shape[0], pitches.shape[1],
|
243 |
+
pitches.shape[2], pitches.shape[3],
|
244 |
+
constants.N_PITCH_TOKENS)
|
245 |
+
|
246 |
+
# From decimals to onehot (durations)
|
247 |
+
durs = c_tensor[..., 1]
|
248 |
+
onehot_d = torch.zeros(
|
249 |
+
(durs.shape[0]*durs.shape[1]*durs.shape[2]*durs.shape[3],
|
250 |
+
constants.N_DUR_TOKENS),
|
251 |
+
dtype=torch.float32
|
252 |
+
)
|
253 |
+
onehot_d[torch.arange(0, onehot_d.shape[0]), durs.reshape(-1)] = 1.
|
254 |
+
onehot_d = onehot_d.reshape(durs.shape[0], durs.shape[1],
|
255 |
+
durs.shape[2], durs.shape[3],
|
256 |
+
constants.N_DUR_TOKENS)
|
257 |
+
|
258 |
+
# Concatenate pitches and durations
|
259 |
+
c_tensor = torch.cat((onehot_p, onehot_d), dim=-1)
|
260 |
+
|
261 |
+
# Build graph structure from structure tensor
|
262 |
+
graph = graph_from_tensor(s_tensor)
|
263 |
+
|
264 |
+
# Filter silences in order to get a sparse representation
|
265 |
+
c_tensor = c_tensor.reshape(-1, c_tensor.shape[-2], c_tensor.shape[-1])
|
266 |
+
c_tensor = c_tensor[s_tensor.reshape(-1).bool()]
|
267 |
+
|
268 |
+
graph.c_tensor = c_tensor
|
269 |
+
graph.s_tensor = s_tensor.float()
|
270 |
+
|
271 |
+
return graph
|
download_models.py
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import argparse
|
2 |
+
import os
|
3 |
+
|
4 |
+
from huggingface_hub import snapshot_download
|
5 |
+
|
6 |
+
|
7 |
+
def main():
|
8 |
+
parser = argparse.ArgumentParser(
|
9 |
+
description="Downloads Polyphemus' pretrained models from Hugging "
|
10 |
+
"Face."
|
11 |
+
)
|
12 |
+
parser.add_argument(
|
13 |
+
'models_dir',
|
14 |
+
type=str, help='Directory to store the pretrained models.'
|
15 |
+
)
|
16 |
+
|
17 |
+
args = parser.parse_args()
|
18 |
+
|
19 |
+
repo_id = 'EmanueleCosenza/polyphemus'
|
20 |
+
|
21 |
+
r = snapshot_download(
|
22 |
+
repo_id=repo_id,
|
23 |
+
local_dir=args.models_dir,
|
24 |
+
local_dir_use_symlinks=False
|
25 |
+
)
|
26 |
+
print("Models successfully downloaded in {}".format(r))
|
27 |
+
|
28 |
+
|
29 |
+
if __name__ == '__main__':
|
30 |
+
main()
|
download_soundfont.sh
ADDED
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/bash
|
2 |
+
|
3 |
+
# Check if the target directory is specified
|
4 |
+
if [ "$#" -ne 1 ]; then
|
5 |
+
echo "Usage: $0 <target_directory>"
|
6 |
+
exit 1
|
7 |
+
fi
|
8 |
+
|
9 |
+
# Set the target directory
|
10 |
+
TARGET_DIR="$1"
|
11 |
+
|
12 |
+
# Check if the target directory exists. If not, create it.
|
13 |
+
if [ ! -d "$TARGET_DIR" ]; then
|
14 |
+
echo "Target directory $TARGET_DIR does not exist. Creating..."
|
15 |
+
mkdir -p "$TARGET_DIR"
|
16 |
+
if [ $? -ne 0 ]; then
|
17 |
+
echo "Error creating target directory $TARGET_DIR"
|
18 |
+
exit 1
|
19 |
+
fi
|
20 |
+
fi
|
21 |
+
|
22 |
+
# Check https://packages.ubuntu.com/jammy/all/fluid-soundfont-gm/download for a
|
23 |
+
# complete list of mirrors
|
24 |
+
URL="http://mirrors.kernel.org/ubuntu/pool/universe/f/fluid-soundfont/fluid-soundfont-gm_3.1-5.3_all.deb"
|
25 |
+
|
26 |
+
# Download the deb package
|
27 |
+
echo "Downloading the deb package..."
|
28 |
+
wget -q $URL -O fluid-soundfont-gm.deb
|
29 |
+
|
30 |
+
if [ $? -ne 0 ]; then
|
31 |
+
echo "Error downloading the deb package"
|
32 |
+
exit 1
|
33 |
+
fi
|
34 |
+
|
35 |
+
# Create a temporary directory
|
36 |
+
TMP_DIR=$(mktemp -d)
|
37 |
+
|
38 |
+
# Extract the data.tar.zst component from the deb package using ar
|
39 |
+
echo "Extracting the data.tar.zst from the deb package..."
|
40 |
+
ar -p fluid-soundfont-gm.deb data.tar.zst > $TMP_DIR/data.tar.zst
|
41 |
+
|
42 |
+
if [ $? -ne 0 ]; then
|
43 |
+
echo "Error extracting the data.tar.zst component from the deb package"
|
44 |
+
rm -rf $TMP_DIR
|
45 |
+
exit 1
|
46 |
+
fi
|
47 |
+
|
48 |
+
echo "Extracting the contents of data.tar.zst..."
|
49 |
+
unzstd -o $TMP_DIR/data.tar $TMP_DIR/data.tar.zst
|
50 |
+
tar -xf $TMP_DIR/data.tar -C $TMP_DIR
|
51 |
+
|
52 |
+
if [ $? -ne 0 ]; then
|
53 |
+
echo "Error extracting the contents of data.tar.zst"
|
54 |
+
rm -rf $TMP_DIR
|
55 |
+
exit 1
|
56 |
+
fi
|
57 |
+
|
58 |
+
# Find the .sf2 file and move it to the target directory
|
59 |
+
echo "Moving the .sf2 file to $TARGET_DIR"
|
60 |
+
find $TMP_DIR -type f -name '*.sf2' -exec mv {} $TARGET_DIR \;
|
61 |
+
|
62 |
+
# Clean up
|
63 |
+
rm -rf $TMP_DIR
|
64 |
+
rm fluid-soundfont-gm.deb
|
65 |
+
|
66 |
+
echo "Done."
|
67 |
+
|
generate.py
ADDED
@@ -0,0 +1,284 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import argparse
|
2 |
+
import os
|
3 |
+
import json
|
4 |
+
import time
|
5 |
+
import math
|
6 |
+
|
7 |
+
import torch
|
8 |
+
import os
|
9 |
+
from matplotlib import pyplot as plt
|
10 |
+
|
11 |
+
import generation_config
|
12 |
+
import constants
|
13 |
+
from model import VAE
|
14 |
+
from utils import set_seed
|
15 |
+
from utils import mtp_from_logits, muspy_from_mtp, set_seed
|
16 |
+
from utils import print_divider
|
17 |
+
from utils import loop_muspy_music, save_midi, save_audio
|
18 |
+
from plots import plot_pianoroll, plot_structure
|
19 |
+
|
20 |
+
|
21 |
+
def generate_music(vae, z, s_cond=None, s_tensor_cond=None):
|
22 |
+
|
23 |
+
# Decoder pass to get structure and content logits
|
24 |
+
s_logits, c_logits = vae.decoder(z, s_cond)
|
25 |
+
|
26 |
+
if s_tensor_cond is not None:
|
27 |
+
s_tensor = s_tensor_cond
|
28 |
+
else:
|
29 |
+
# Compute binary structure tensor from logits
|
30 |
+
s_tensor = vae.decoder._binary_from_logits(s_logits)
|
31 |
+
|
32 |
+
# Build (n_batches x n_bars x n_tracks x n_timesteps x Sigma x d_token)
|
33 |
+
# multitrack pianoroll tensor containing logits for each activation and
|
34 |
+
# hard silences elsewhere
|
35 |
+
mtp = mtp_from_logits(c_logits, s_tensor)
|
36 |
+
|
37 |
+
return mtp, s_tensor
|
38 |
+
|
39 |
+
|
40 |
+
def save(mtp, dir, s_tensor=None, n_loops=1, audio=True, z=None,
|
41 |
+
looped_only=False, plot_proll=False, plot_struct=False):
|
42 |
+
|
43 |
+
n_bars = mtp.size(1)
|
44 |
+
resolution = mtp.size(3) // 4
|
45 |
+
# Clear matplotlib cache (this solves formatting problems with first plot)
|
46 |
+
plt.clf()
|
47 |
+
|
48 |
+
# Iterate over batches
|
49 |
+
for i in range(mtp.size(0)):
|
50 |
+
|
51 |
+
# Create the directory if it does not exist
|
52 |
+
save_dir = os.path.join(dir, str(i))
|
53 |
+
os.makedirs(save_dir, exist_ok=True)
|
54 |
+
|
55 |
+
if not looped_only:
|
56 |
+
# Generate MIDI song from multitrack pianoroll and save
|
57 |
+
muspy_song = muspy_from_mtp(mtp[i])
|
58 |
+
print("Saving MIDI sequence {} in {}...".format(str(i + 1),
|
59 |
+
save_dir))
|
60 |
+
save_midi(muspy_song, save_dir, name='generated')
|
61 |
+
if audio:
|
62 |
+
print("Saving audio sequence {} in {}...".format(str(i + 1),
|
63 |
+
save_dir))
|
64 |
+
save_audio(muspy_song, save_dir, name='generated')
|
65 |
+
|
66 |
+
if plot_proll:
|
67 |
+
plot_pianoroll(muspy_song, save_dir)
|
68 |
+
|
69 |
+
if plot_struct:
|
70 |
+
plot_structure(s_tensor[i].cpu(), save_dir)
|
71 |
+
|
72 |
+
if n_loops > 1:
|
73 |
+
# Copy the generated sequence n_loops times and save the looped
|
74 |
+
# MIDI and audio files
|
75 |
+
print("Saving MIDI sequence "
|
76 |
+
"{} looped {} times in {}...".format(str(i + 1), n_loops,
|
77 |
+
save_dir))
|
78 |
+
extended = loop_muspy_music(muspy_song, n_loops,
|
79 |
+
n_bars, resolution)
|
80 |
+
save_midi(extended, save_dir, name='extended')
|
81 |
+
if audio:
|
82 |
+
print("Saving audio sequence "
|
83 |
+
"{} looped {} times in {}...".format(str(i + 1), n_loops,
|
84 |
+
save_dir))
|
85 |
+
save_audio(extended, save_dir, name='extended')
|
86 |
+
|
87 |
+
# Save structure
|
88 |
+
with open(os.path.join(save_dir, 'structure.json'), 'wb') as file:
|
89 |
+
file.write(json.dumps(s_tensor[i].tolist()).encode('utf-8'))
|
90 |
+
|
91 |
+
# Save z
|
92 |
+
if z[i] is not None:
|
93 |
+
torch.save(z[i], os.path.join(save_dir, 'z'))
|
94 |
+
|
95 |
+
print()
|
96 |
+
|
97 |
+
|
98 |
+
def generate_z(bs, d_model, device):
|
99 |
+
shape = (bs, d_model)
|
100 |
+
|
101 |
+
z_norm = torch.normal(
|
102 |
+
torch.zeros(shape, device=device),
|
103 |
+
torch.ones(shape, device=device)
|
104 |
+
)
|
105 |
+
|
106 |
+
return z_norm
|
107 |
+
|
108 |
+
|
109 |
+
def load_model(model_dir, device):
|
110 |
+
|
111 |
+
checkpoint = torch.load(os.path.join(model_dir, 'checkpoint'),
|
112 |
+
map_location='cpu')
|
113 |
+
configuration = torch.load(os.path.join(model_dir, 'configuration'),
|
114 |
+
map_location='cpu')
|
115 |
+
|
116 |
+
state_dict = checkpoint['model_state_dict']
|
117 |
+
|
118 |
+
model = VAE(**configuration['model'], device=device).to(device)
|
119 |
+
model.load_state_dict(state_dict)
|
120 |
+
model.eval()
|
121 |
+
|
122 |
+
return model, configuration
|
123 |
+
|
124 |
+
|
125 |
+
def main():
|
126 |
+
|
127 |
+
parser = argparse.ArgumentParser(
|
128 |
+
description='Generates MIDI music with a trained model.'
|
129 |
+
)
|
130 |
+
parser.add_argument(
|
131 |
+
'model_dir',
|
132 |
+
type=str, help='Directory of the model.'
|
133 |
+
)
|
134 |
+
parser.add_argument(
|
135 |
+
'output_dir',
|
136 |
+
type=str,
|
137 |
+
help='Directory to save the generated MIDI files.'
|
138 |
+
)
|
139 |
+
parser.add_argument(
|
140 |
+
'--n',
|
141 |
+
type=int,
|
142 |
+
default=5,
|
143 |
+
help='Number of sequences to be generated. Default is 5.'
|
144 |
+
)
|
145 |
+
parser.add_argument(
|
146 |
+
'--n_loops',
|
147 |
+
type=int,
|
148 |
+
default=1,
|
149 |
+
help="If greater than 1, outputs an additional MIDI file containing "
|
150 |
+
"the sequence looped n_loops times."
|
151 |
+
)
|
152 |
+
parser.add_argument(
|
153 |
+
'--no_audio',
|
154 |
+
action='store_true',
|
155 |
+
default=False,
|
156 |
+
help="Flag to disable audio files generation."
|
157 |
+
)
|
158 |
+
parser.add_argument(
|
159 |
+
'--s_file',
|
160 |
+
type=str,
|
161 |
+
help='Path to the JSON file containing the binary structure tensor.'
|
162 |
+
)
|
163 |
+
parser.add_argument(
|
164 |
+
'--z_file',
|
165 |
+
type=str,
|
166 |
+
help=''
|
167 |
+
)
|
168 |
+
parser.add_argument(
|
169 |
+
'--z_change',
|
170 |
+
action='store_true',
|
171 |
+
default=False,
|
172 |
+
help=''
|
173 |
+
)
|
174 |
+
parser.add_argument(
|
175 |
+
'--use_gpu',
|
176 |
+
action='store_true',
|
177 |
+
default=False,
|
178 |
+
help='Flag to enable GPU usage.'
|
179 |
+
)
|
180 |
+
parser.add_argument(
|
181 |
+
'--gpu_id',
|
182 |
+
type=int,
|
183 |
+
default='0',
|
184 |
+
help='Index of the GPU to be used. Default is 0.'
|
185 |
+
)
|
186 |
+
parser.add_argument(
|
187 |
+
'--seed',
|
188 |
+
type=int
|
189 |
+
)
|
190 |
+
|
191 |
+
args = parser.parse_args()
|
192 |
+
|
193 |
+
if args.seed is not None:
|
194 |
+
set_seed(args.seed)
|
195 |
+
|
196 |
+
audio = not args.no_audio
|
197 |
+
|
198 |
+
device = torch.device("cuda") if args.use_gpu else torch.device("cpu")
|
199 |
+
if args.use_gpu:
|
200 |
+
torch.cuda.set_device(args.gpu_id)
|
201 |
+
|
202 |
+
print_divider()
|
203 |
+
print("Loading the model on {} device...".format(device))
|
204 |
+
|
205 |
+
model, configuration = load_model(args.model_dir, device)
|
206 |
+
|
207 |
+
d_model = configuration['model']['d']
|
208 |
+
n_bars = configuration['model']['n_bars']
|
209 |
+
n_tracks = constants.N_TRACKS
|
210 |
+
n_timesteps = 4 * configuration['model']['resolution']
|
211 |
+
output_dir = args.output_dir
|
212 |
+
|
213 |
+
s, s_tensor = None, None
|
214 |
+
|
215 |
+
if args.s_file is not None:
|
216 |
+
|
217 |
+
print("Loading the structure tensor "
|
218 |
+
"from {}...".format(args.model_dir))
|
219 |
+
|
220 |
+
# Load structure tensor from file
|
221 |
+
with open(args.s_file, 'r') as f:
|
222 |
+
s_tensor = json.load(f)
|
223 |
+
|
224 |
+
s_tensor = torch.tensor(s_tensor, dtype=bool)
|
225 |
+
|
226 |
+
# Check structure dimensions
|
227 |
+
dims = list(s_tensor.size())
|
228 |
+
expected = [n_bars, n_tracks, n_timesteps]
|
229 |
+
if dims != expected:
|
230 |
+
if (len(dims) != len(expected) or dims[1:] != expected[1:]
|
231 |
+
or dims[0] > n_bars):
|
232 |
+
raise ValueError(f"Loaded structure tensor dimensions {dims} "
|
233 |
+
f"do not match expected dimensions {expected}")
|
234 |
+
elif dims[0] > n_bars:
|
235 |
+
raise ValueError(f"First structure tensor dimension {dims[0]} "
|
236 |
+
f"is higher than {n_bars}")
|
237 |
+
else:
|
238 |
+
# Repeat partial structure tensor
|
239 |
+
r = math.ceil(n_bars / dims[0])
|
240 |
+
s_tensor = s_tensor.repeat(r, 1, 1)
|
241 |
+
s_tensor = s_tensor[:n_bars, ...]
|
242 |
+
|
243 |
+
# Avoid empty bars by creating a fake activation for each empty
|
244 |
+
# (n_tracks x n_timesteps) bar matrix in position [0, 0]
|
245 |
+
empty_mask = ~s_tensor.any(dim=-1).any(dim=-1)
|
246 |
+
if empty_mask.any():
|
247 |
+
print("The provided structure tensor contains empty bars. Fake "
|
248 |
+
"track activations will be created to avoid processing "
|
249 |
+
"empty bars.")
|
250 |
+
idxs = torch.nonzero(empty_mask, as_tuple=True)
|
251 |
+
s_tensor[idxs + (0, 0)] = True
|
252 |
+
|
253 |
+
# Repeat structure along new batch dimension
|
254 |
+
s_tensor = s_tensor.unsqueeze(0).repeat(args.n, 1, 1, 1)
|
255 |
+
|
256 |
+
s = model.decoder._structure_from_binary(s_tensor)
|
257 |
+
|
258 |
+
print()
|
259 |
+
if args.z_file is not None:
|
260 |
+
print("Loading z...")
|
261 |
+
z = torch.load(args.z_file)
|
262 |
+
z = z.unsqueeze(0)
|
263 |
+
if args.z_change:
|
264 |
+
#e = 0.5
|
265 |
+
e = 0.5
|
266 |
+
z = z + e*(torch.rand(list(z.size())) - 0.5)
|
267 |
+
else:
|
268 |
+
print("Generating z...")
|
269 |
+
z = generate_z(args.n, d_model, device)
|
270 |
+
|
271 |
+
print("Generating music with the model...")
|
272 |
+
s_t = time.time()
|
273 |
+
mtp, s_tensor = generate_music(model, z, s, s_tensor)
|
274 |
+
print("Inference time: {:.3f} s".format(time.time() - s_t))
|
275 |
+
|
276 |
+
print()
|
277 |
+
print("Saving MIDI files in {}...\n".format(output_dir))
|
278 |
+
save(mtp, output_dir, s_tensor, args.n_loops, audio, z)
|
279 |
+
print("Finished saving MIDI files.")
|
280 |
+
print_divider()
|
281 |
+
|
282 |
+
|
283 |
+
if __name__ == '__main__':
|
284 |
+
main()
|
generation_config.py
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import yaml
|
2 |
+
from constants import DEFAULT_MIDI_PROGRAMS, DEFAULT_SOUNDFONT_PATH
|
3 |
+
|
4 |
+
|
5 |
+
CONFIG_FILENAME = 'generation_config.yaml'
|
6 |
+
|
7 |
+
|
8 |
+
def load_config(filename):
|
9 |
+
with open(filename, 'r') as f:
|
10 |
+
config = yaml.safe_load(f)
|
11 |
+
|
12 |
+
return config
|
13 |
+
|
14 |
+
|
15 |
+
config = load_config(CONFIG_FILENAME)
|
16 |
+
|
17 |
+
|
18 |
+
MIDI_PROGRAMS = config.get('MIDI_PROGRAMS', DEFAULT_MIDI_PROGRAMS)
|
19 |
+
SOUNDFONT_PATH = config.get('SOUNDFONT_PATH', DEFAULT_SOUNDFONT_PATH)
|
generation_config.yaml
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
# These values indicate the MIDI programs used for each track.
|
3 |
+
# Possible values: [0, 127]
|
4 |
+
# Check https://en.wikipedia.org/wiki/General_MIDI for a complete list
|
5 |
+
# of MIDI programs (remember to map values to the [0, 127] range).
|
6 |
+
# The `drums` value is ignored (drums have a dedicated MIDI channel and each
|
7 |
+
# program corresponds to a different drum sound). The guitar track typically
|
8 |
+
# plays accompaniment chords and it can also be intepreted as a
|
9 |
+
# piano/accompaniment track. The strings track typically contains a
|
10 |
+
# lead melody.
|
11 |
+
MIDI_PROGRAMS:
|
12 |
+
Drums: -1
|
13 |
+
Bass: 34 # Electric Bass (picked)
|
14 |
+
Guitar: 4 # Electric Piano 1
|
15 |
+
Strings: 54 # Synth Voice
|
16 |
+
|
17 |
+
# The path of the soundfont file needed to convert MIDI to audio
|
18 |
+
SOUNDFONT_PATH: "soundfonts/FluidR3_GM.sf2"
|
model.py
ADDED
@@ -0,0 +1,678 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from typing import Union, Tuple
|
2 |
+
|
3 |
+
import torch
|
4 |
+
import torch.nn.functional as F
|
5 |
+
from torch import nn, Tensor
|
6 |
+
from torch_sparse import SparseTensor, masked_select_nnz
|
7 |
+
from torch_geometric.typing import OptTensor, Adj
|
8 |
+
from torch_geometric.nn.inits import reset
|
9 |
+
from torch_geometric.nn.norm import BatchNorm
|
10 |
+
from torch_geometric.nn.glob import GlobalAttention
|
11 |
+
from torch_geometric.data import Batch
|
12 |
+
from torch_geometric.nn.conv import RGCNConv
|
13 |
+
|
14 |
+
import constants
|
15 |
+
from data import graph_from_tensor
|
16 |
+
|
17 |
+
|
18 |
+
@torch.jit._overload
|
19 |
+
def masked_edge_index(edge_index, edge_mask):
|
20 |
+
# type: (Tensor, Tensor) -> Tensor
|
21 |
+
pass
|
22 |
+
|
23 |
+
|
24 |
+
@torch.jit._overload
|
25 |
+
def masked_edge_index(edge_index, edge_mask):
|
26 |
+
# type: (SparseTensor, Tensor) -> SparseTensor
|
27 |
+
pass
|
28 |
+
|
29 |
+
|
30 |
+
def masked_edge_index(edge_index, edge_mask):
|
31 |
+
if isinstance(edge_index, Tensor):
|
32 |
+
return edge_index[:, edge_mask]
|
33 |
+
else:
|
34 |
+
return masked_select_nnz(edge_index, edge_mask, layout='coo')
|
35 |
+
|
36 |
+
|
37 |
+
def masked_edge_attrs(edge_attrs, edge_mask):
|
38 |
+
return edge_attrs[edge_mask, :]
|
39 |
+
|
40 |
+
|
41 |
+
class GCL(RGCNConv):
|
42 |
+
|
43 |
+
def __init__(self, in_channels, out_channels, num_relations, nn,
|
44 |
+
dropout=0.1, **kwargs):
|
45 |
+
super().__init__(in_channels=in_channels, out_channels=out_channels,
|
46 |
+
num_relations=num_relations, **kwargs)
|
47 |
+
self.nn = nn
|
48 |
+
self.dropout = dropout
|
49 |
+
|
50 |
+
self.reset_edge_nn()
|
51 |
+
|
52 |
+
def reset_edge_nn(self):
|
53 |
+
reset(self.nn)
|
54 |
+
|
55 |
+
def forward(self, x: Union[OptTensor, Tuple[OptTensor, Tensor]],
|
56 |
+
edge_index: Adj, edge_type: OptTensor = None,
|
57 |
+
edge_attr: OptTensor = None):
|
58 |
+
|
59 |
+
# Convert input features to a pair of node features or node indices.
|
60 |
+
x_l: OptTensor = None
|
61 |
+
if isinstance(x, tuple):
|
62 |
+
x_l = x[0]
|
63 |
+
else:
|
64 |
+
x_l = x
|
65 |
+
if x_l is None:
|
66 |
+
x_l = torch.arange(self.in_channels_l, device=self.weight.device)
|
67 |
+
|
68 |
+
x_r: Tensor = x_l
|
69 |
+
if isinstance(x, tuple):
|
70 |
+
x_r = x[1]
|
71 |
+
|
72 |
+
size = (x_l.size(0), x_r.size(0))
|
73 |
+
|
74 |
+
if isinstance(edge_index, SparseTensor):
|
75 |
+
edge_type = edge_index.storage.value()
|
76 |
+
assert edge_type is not None
|
77 |
+
|
78 |
+
# propagate_type: (x: Tensor)
|
79 |
+
out = torch.zeros(x_r.size(0), self.out_channels, device=x_r.device)
|
80 |
+
weight = self.weight
|
81 |
+
|
82 |
+
# Basis-decomposition
|
83 |
+
if self.num_bases is not None:
|
84 |
+
weight = (self.comp @ weight.view(self.num_bases, -1)).view(
|
85 |
+
self.num_relations, self.in_channels_l, self.out_channels)
|
86 |
+
|
87 |
+
# Block-diagonal-decomposition
|
88 |
+
if self.num_blocks is not None:
|
89 |
+
|
90 |
+
if x_l.dtype == torch.long and self.num_blocks is not None:
|
91 |
+
raise ValueError('Block-diagonal decomposition not supported '
|
92 |
+
'for non-continuous input features.')
|
93 |
+
|
94 |
+
for i in range(self.num_relations):
|
95 |
+
tmp = masked_edge_index(edge_index, edge_type == i)
|
96 |
+
h = self.propagate(tmp, x=x_l, size=size)
|
97 |
+
h = h.view(-1, weight.size(1), weight.size(2))
|
98 |
+
h = torch.einsum('abc,bcd->abd', h, weight[i])
|
99 |
+
out += h.contiguous().view(-1, self.out_channels)
|
100 |
+
|
101 |
+
else:
|
102 |
+
# No regularization/Basis-decomposition
|
103 |
+
for i in range(self.num_relations):
|
104 |
+
tmp = masked_edge_index(edge_index, edge_type == i)
|
105 |
+
attr = masked_edge_attrs(edge_attr, edge_type == i)
|
106 |
+
|
107 |
+
if x_l.dtype == torch.long:
|
108 |
+
out += self.propagate(tmp, x=weight[i, x_l], size=size)
|
109 |
+
else:
|
110 |
+
h = self.propagate(tmp, x=x_l, size=size,
|
111 |
+
edge_attr=attr)
|
112 |
+
out = out + (h @ weight[i])
|
113 |
+
|
114 |
+
root = self.root
|
115 |
+
if root is not None:
|
116 |
+
out += root[x_r] if x_r.dtype == torch.long else x_r @ root
|
117 |
+
|
118 |
+
if self.bias is not None:
|
119 |
+
out += self.bias
|
120 |
+
|
121 |
+
return out
|
122 |
+
|
123 |
+
def message(self, x_j: Tensor, edge_attr: Tensor) -> Tensor:
|
124 |
+
|
125 |
+
# Use edge nn to compute weight tensor from edge attributes
|
126 |
+
# (=onehot timestep distances between nodes)
|
127 |
+
weights = self.nn(edge_attr)
|
128 |
+
weights = weights[..., :self.in_channels_l]
|
129 |
+
weights = weights.view(-1, self.in_channels_l)
|
130 |
+
|
131 |
+
out = x_j * weights
|
132 |
+
out = F.relu(out)
|
133 |
+
out = F.dropout(out, p=self.dropout, training=self.training)
|
134 |
+
|
135 |
+
return out
|
136 |
+
|
137 |
+
|
138 |
+
class MLP(nn.Module):
|
139 |
+
|
140 |
+
def __init__(self, input_dim=256, hidden_dim=256, output_dim=256,
|
141 |
+
num_layers=2, activation=True, dropout=0.1):
|
142 |
+
super().__init__()
|
143 |
+
|
144 |
+
self.layers = nn.ModuleList()
|
145 |
+
|
146 |
+
if num_layers == 1:
|
147 |
+
self.layers.append(nn.Linear(input_dim, output_dim))
|
148 |
+
else:
|
149 |
+
# Input layer (1) + Intermediate layers (n-2) + Output layer (1)
|
150 |
+
self.layers.append(nn.Linear(input_dim, hidden_dim))
|
151 |
+
for _ in range(num_layers - 2):
|
152 |
+
self.layers.append(nn.Linear(hidden_dim, hidden_dim))
|
153 |
+
self.layers.append(nn.Linear(hidden_dim, output_dim))
|
154 |
+
|
155 |
+
self.activation = activation
|
156 |
+
self.p = dropout
|
157 |
+
|
158 |
+
def forward(self, x):
|
159 |
+
for layer in self.layers:
|
160 |
+
x = F.dropout(x, p=self.p, training=self.training)
|
161 |
+
x = layer(x)
|
162 |
+
if self.activation:
|
163 |
+
x = F.relu(x)
|
164 |
+
return x
|
165 |
+
|
166 |
+
|
167 |
+
class GCN(nn.Module):
|
168 |
+
|
169 |
+
def __init__(self, input_dim=256, hidden_dim=256, n_layers=3,
|
170 |
+
num_relations=3, num_dists=32, batch_norm=False, dropout=0.1):
|
171 |
+
super().__init__()
|
172 |
+
|
173 |
+
self.layers = nn.ModuleList()
|
174 |
+
self.norm_layers = nn.ModuleList()
|
175 |
+
edge_nn = nn.Linear(num_dists, input_dim)
|
176 |
+
self.batch_norm = batch_norm
|
177 |
+
|
178 |
+
self.layers.append(GCL(input_dim, hidden_dim, num_relations, edge_nn))
|
179 |
+
if self.batch_norm:
|
180 |
+
self.norm_layers.append(BatchNorm(hidden_dim))
|
181 |
+
|
182 |
+
for i in range(n_layers-1):
|
183 |
+
self.layers.append(GCL(hidden_dim, hidden_dim,
|
184 |
+
num_relations, edge_nn))
|
185 |
+
if self.batch_norm:
|
186 |
+
self.norm_layers.append(BatchNorm(hidden_dim))
|
187 |
+
|
188 |
+
self.p = dropout
|
189 |
+
|
190 |
+
def forward(self, data):
|
191 |
+
|
192 |
+
x, edge_index, edge_attrs = data.x, data.edge_index, data.edge_attrs
|
193 |
+
edge_type = edge_attrs[:, 0]
|
194 |
+
edge_attr = edge_attrs[:, 1:]
|
195 |
+
|
196 |
+
for i in range(len(self.layers)):
|
197 |
+
|
198 |
+
residual = x
|
199 |
+
x = F.dropout(x, p=self.p, training=self.training)
|
200 |
+
x = self.layers[i](x, edge_index, edge_type, edge_attr)
|
201 |
+
|
202 |
+
if self.batch_norm:
|
203 |
+
x = self.norm_layers[i](x)
|
204 |
+
|
205 |
+
x = F.relu(x)
|
206 |
+
x = residual + x
|
207 |
+
|
208 |
+
return x
|
209 |
+
|
210 |
+
|
211 |
+
class CNNEncoder(nn.Module):
|
212 |
+
|
213 |
+
def __init__(self, output_dim=256, dense_dim=256, batch_norm=False,
|
214 |
+
dropout=0.1):
|
215 |
+
super().__init__()
|
216 |
+
|
217 |
+
# Convolutional layers
|
218 |
+
if batch_norm:
|
219 |
+
self.conv = nn.Sequential(
|
220 |
+
# From (4 x 32) to (8 x 4 x 32)
|
221 |
+
nn.Conv2d(1, 8, 3, padding=1),
|
222 |
+
nn.BatchNorm2d(8),
|
223 |
+
nn.ReLU(True),
|
224 |
+
# From (8 x 4 x 32) to (8 x 4 x 8)
|
225 |
+
nn.MaxPool2d((1, 4), stride=(1, 4)),
|
226 |
+
# From (8 x 4 x 8) to (16 x 4 x 8)
|
227 |
+
nn.Conv2d(8, 16, 3, padding=1),
|
228 |
+
nn.BatchNorm2d(16),
|
229 |
+
nn.ReLU(True)
|
230 |
+
)
|
231 |
+
else:
|
232 |
+
self.conv = nn.Sequential(
|
233 |
+
nn.Conv2d(1, 8, 3, padding=1),
|
234 |
+
nn.ReLU(True),
|
235 |
+
nn.MaxPool2d((1, 4), stride=(1, 4)),
|
236 |
+
nn.Conv2d(8, 16, 3, padding=1),
|
237 |
+
nn.ReLU(True)
|
238 |
+
)
|
239 |
+
|
240 |
+
self.flatten = nn.Flatten(start_dim=1)
|
241 |
+
|
242 |
+
# Linear layers
|
243 |
+
self.lin = nn.Sequential(
|
244 |
+
nn.Dropout(dropout),
|
245 |
+
nn.Linear(16 * 4 * 8, dense_dim),
|
246 |
+
nn.ReLU(True),
|
247 |
+
nn.Dropout(dropout),
|
248 |
+
nn.Linear(dense_dim, output_dim)
|
249 |
+
)
|
250 |
+
|
251 |
+
def forward(self, x):
|
252 |
+
x = x.unsqueeze(1)
|
253 |
+
x = self.conv(x)
|
254 |
+
x = self.flatten(x)
|
255 |
+
x = self.lin(x)
|
256 |
+
return x
|
257 |
+
|
258 |
+
|
259 |
+
class CNNDecoder(nn.Module):
|
260 |
+
|
261 |
+
def __init__(self, input_dim=256, dense_dim=256, batch_norm=False,
|
262 |
+
dropout=0.1):
|
263 |
+
super().__init__()
|
264 |
+
|
265 |
+
# Linear decompressors
|
266 |
+
self.lin = nn.Sequential(
|
267 |
+
nn.Dropout(dropout),
|
268 |
+
nn.Linear(input_dim, dense_dim),
|
269 |
+
nn.ReLU(True),
|
270 |
+
nn.Dropout(dropout),
|
271 |
+
nn.Linear(dense_dim, 16 * 4 * 8),
|
272 |
+
nn.ReLU(True)
|
273 |
+
)
|
274 |
+
|
275 |
+
self.unflatten = nn.Unflatten(dim=1, unflattened_size=(16, 4, 8))
|
276 |
+
|
277 |
+
# Upsample and convolutional layers
|
278 |
+
if batch_norm:
|
279 |
+
self.conv = nn.Sequential(
|
280 |
+
nn.Upsample(scale_factor=(1, 4), mode='nearest'),
|
281 |
+
nn.Conv2d(16, 8, 3, padding=1),
|
282 |
+
nn.BatchNorm2d(8),
|
283 |
+
nn.ReLU(True),
|
284 |
+
nn.Conv2d(8, 1, 3, padding=1)
|
285 |
+
)
|
286 |
+
else:
|
287 |
+
self.conv = nn.Sequential(
|
288 |
+
nn.Upsample(scale_factor=(1, 4), mode='nearest'),
|
289 |
+
nn.Conv2d(16, 8, 3, padding=1),
|
290 |
+
nn.ReLU(True),
|
291 |
+
nn.Conv2d(8, 1, 3, padding=1)
|
292 |
+
)
|
293 |
+
|
294 |
+
def forward(self, x):
|
295 |
+
x = self.lin(x)
|
296 |
+
x = self.unflatten(x)
|
297 |
+
x = self.conv(x)
|
298 |
+
x = x.unsqueeze(1)
|
299 |
+
return x
|
300 |
+
|
301 |
+
|
302 |
+
class ContentEncoder(nn.Module):
|
303 |
+
|
304 |
+
def __init__(self, **kwargs):
|
305 |
+
super().__init__()
|
306 |
+
self.__dict__.update(kwargs)
|
307 |
+
|
308 |
+
self.dropout_layer = nn.Dropout(p=self.dropout)
|
309 |
+
|
310 |
+
# Pitch and duration embedding layers (separate layers for drums
|
311 |
+
# and non drums)
|
312 |
+
self.non_drums_pitch_emb = nn.Linear(constants.N_PITCH_TOKENS,
|
313 |
+
self.d//2)
|
314 |
+
self.drums_pitch_emb = nn.Linear(constants.N_PITCH_TOKENS, self.d//2)
|
315 |
+
self.dur_emb = nn.Linear(constants.N_DUR_TOKENS, self.d//2)
|
316 |
+
|
317 |
+
# Batch norm layers
|
318 |
+
self.bn_non_drums = nn.BatchNorm1d(num_features=self.d//2)
|
319 |
+
self.bn_drums = nn.BatchNorm1d(num_features=self.d//2)
|
320 |
+
self.bn_dur = nn.BatchNorm1d(num_features=self.d//2)
|
321 |
+
|
322 |
+
self.chord_encoder = nn.Linear(
|
323 |
+
self.d * (constants.MAX_SIMU_TOKENS-1), self.d)
|
324 |
+
|
325 |
+
self.graph_encoder = GCN(
|
326 |
+
dropout=self.dropout,
|
327 |
+
input_dim=self.d,
|
328 |
+
hidden_dim=self.d,
|
329 |
+
n_layers=self.gnn_n_layers,
|
330 |
+
num_relations=constants.N_EDGE_TYPES,
|
331 |
+
batch_norm=self.batch_norm
|
332 |
+
)
|
333 |
+
|
334 |
+
# Soft attention node-aggregation layer
|
335 |
+
gate_nn = nn.Sequential(
|
336 |
+
MLP(input_dim=self.d, output_dim=1, num_layers=1,
|
337 |
+
activation=False, dropout=self.dropout),
|
338 |
+
nn.BatchNorm1d(1)
|
339 |
+
)
|
340 |
+
self.graph_attention = GlobalAttention(gate_nn)
|
341 |
+
|
342 |
+
self.bars_encoder = nn.Linear(self.n_bars * self.d, self.d)
|
343 |
+
|
344 |
+
def forward(self, graph):
|
345 |
+
|
346 |
+
c_tensor = graph.c_tensor
|
347 |
+
|
348 |
+
# Discard SOS token
|
349 |
+
c_tensor = c_tensor[:, 1:, :]
|
350 |
+
|
351 |
+
# Get drums and non drums tensors
|
352 |
+
drums = c_tensor[graph.is_drum]
|
353 |
+
non_drums = c_tensor[torch.logical_not(graph.is_drum)]
|
354 |
+
|
355 |
+
# Compute drums embeddings
|
356 |
+
sz = drums.size()
|
357 |
+
drums_pitch = self.drums_pitch_emb(
|
358 |
+
drums[..., :constants.N_PITCH_TOKENS])
|
359 |
+
drums_pitch = self.bn_drums(drums_pitch.view(-1, self.d//2))
|
360 |
+
drums_pitch = drums_pitch.view(sz[0], sz[1], self.d//2)
|
361 |
+
drums_dur = self.dur_emb(drums[..., constants.N_PITCH_TOKENS:])
|
362 |
+
drums_dur = self.bn_dur(drums_dur.view(-1, self.d//2))
|
363 |
+
drums_dur = drums_dur.view(sz[0], sz[1], self.d//2)
|
364 |
+
drums = torch.cat((drums_pitch, drums_dur), dim=-1)
|
365 |
+
# n_nodes x MAX_SIMU_TOKENS x d
|
366 |
+
|
367 |
+
# Compute non drums embeddings
|
368 |
+
sz = non_drums.size()
|
369 |
+
non_drums_pitch = self.non_drums_pitch_emb(
|
370 |
+
non_drums[..., :constants.N_PITCH_TOKENS]
|
371 |
+
)
|
372 |
+
non_drums_pitch = self.bn_non_drums(non_drums_pitch.view(-1, self.d//2))
|
373 |
+
non_drums_pitch = non_drums_pitch.view(sz[0], sz[1], self.d//2)
|
374 |
+
non_drums_dur = self.dur_emb(non_drums[..., constants.N_PITCH_TOKENS:])
|
375 |
+
non_drums_dur = self.bn_dur(non_drums_dur.view(-1, self.d//2))
|
376 |
+
non_drums_dur = non_drums_dur.view(sz[0], sz[1], self.d//2)
|
377 |
+
non_drums = torch.cat((non_drums_pitch, non_drums_dur), dim=-1)
|
378 |
+
# n_nodes x MAX_SIMU_TOKENS x d
|
379 |
+
|
380 |
+
# Compute chord embeddings (drums and non drums)
|
381 |
+
drums = self.chord_encoder(
|
382 |
+
drums.view(-1, self.d * (constants.MAX_SIMU_TOKENS-1))
|
383 |
+
)
|
384 |
+
non_drums = self.chord_encoder(
|
385 |
+
non_drums.view(-1, self.d * (constants.MAX_SIMU_TOKENS-1))
|
386 |
+
)
|
387 |
+
drums = F.relu(drums)
|
388 |
+
non_drums = F.relu(non_drums)
|
389 |
+
drums = self.dropout_layer(drums)
|
390 |
+
non_drums = self.dropout_layer(non_drums)
|
391 |
+
# n_nodes x d
|
392 |
+
|
393 |
+
# Merge drums and non drums
|
394 |
+
out = torch.zeros((c_tensor.size(0), self.d), device=self.device,
|
395 |
+
dtype=drums.dtype)
|
396 |
+
out[graph.is_drum] = drums
|
397 |
+
out[torch.logical_not(graph.is_drum)] = non_drums
|
398 |
+
# n_nodes x d
|
399 |
+
|
400 |
+
# Set initial graph node states to intermediate chord representations
|
401 |
+
# and pass through GCN
|
402 |
+
graph.x = out
|
403 |
+
graph.distinct_bars = graph.bars + self.n_bars*graph.batch
|
404 |
+
out = self.graph_encoder(graph)
|
405 |
+
# n_nodes x d
|
406 |
+
|
407 |
+
# Aggregate final node states into bar encodings with soft attention
|
408 |
+
with torch.cuda.amp.autocast(enabled=False):
|
409 |
+
out = self.graph_attention(out, batch=graph.distinct_bars)
|
410 |
+
# bs x n_bars x d
|
411 |
+
|
412 |
+
out = out.view(-1, self.n_bars * self.d)
|
413 |
+
# bs x (n_bars*d)
|
414 |
+
z_c = self.bars_encoder(out)
|
415 |
+
# bs x d
|
416 |
+
|
417 |
+
return z_c
|
418 |
+
|
419 |
+
|
420 |
+
class StructureEncoder(nn.Module):
|
421 |
+
|
422 |
+
def __init__(self, **kwargs):
|
423 |
+
super().__init__()
|
424 |
+
self.__dict__.update(kwargs)
|
425 |
+
|
426 |
+
self.cnn_encoder = CNNEncoder(
|
427 |
+
dense_dim=self.d,
|
428 |
+
output_dim=self.d,
|
429 |
+
dropout=self.dropout,
|
430 |
+
batch_norm=self.batch_norm
|
431 |
+
)
|
432 |
+
self.bars_encoder = nn.Linear(self.n_bars * self.d, self.d)
|
433 |
+
|
434 |
+
def forward(self, graph):
|
435 |
+
|
436 |
+
s_tensor = graph.s_tensor
|
437 |
+
out = self.cnn_encoder(s_tensor.view(-1, constants.N_TRACKS,
|
438 |
+
self.resolution * 4))
|
439 |
+
# (bs*n_bars) x d
|
440 |
+
out = out.view(-1, self.n_bars * self.d)
|
441 |
+
# bs x (n_bars*d)
|
442 |
+
z_s = self.bars_encoder(out)
|
443 |
+
# bs x d
|
444 |
+
|
445 |
+
return z_s
|
446 |
+
|
447 |
+
|
448 |
+
class Encoder(nn.Module):
|
449 |
+
|
450 |
+
def __init__(self, **kwargs):
|
451 |
+
super().__init__()
|
452 |
+
self.__dict__.update(kwargs)
|
453 |
+
|
454 |
+
self.s_encoder = StructureEncoder(**kwargs)
|
455 |
+
self.c_encoder = ContentEncoder(**kwargs)
|
456 |
+
|
457 |
+
self.dropout_layer = nn.Dropout(p=self.dropout)
|
458 |
+
|
459 |
+
# Linear layer that merges content and structure representations
|
460 |
+
self.linear_merge = nn.Linear(2*self.d, self.d)
|
461 |
+
self.bn_linear_merge = nn.BatchNorm1d(num_features=self.d)
|
462 |
+
|
463 |
+
self.linear_mu = nn.Linear(self.d, self.d)
|
464 |
+
self.linear_log_var = nn.Linear(self.d, self.d)
|
465 |
+
|
466 |
+
def forward(self, graph):
|
467 |
+
|
468 |
+
z_s = self.s_encoder(graph)
|
469 |
+
z_c = self.c_encoder(graph)
|
470 |
+
|
471 |
+
# Merge content and structure representations
|
472 |
+
z_g = torch.cat((z_c, z_s), dim=1)
|
473 |
+
z_g = self.dropout_layer(z_g)
|
474 |
+
z_g = self.linear_merge(z_g)
|
475 |
+
z_g = self.bn_linear_merge(z_g)
|
476 |
+
z_g = F.relu(z_g)
|
477 |
+
|
478 |
+
# Compute mu and log(std^2)
|
479 |
+
z_g = self.dropout_layer(z_g)
|
480 |
+
mu = self.linear_mu(z_g)
|
481 |
+
log_var = self.linear_log_var(z_g)
|
482 |
+
|
483 |
+
return mu, log_var
|
484 |
+
|
485 |
+
|
486 |
+
class StructureDecoder(nn.Module):
|
487 |
+
|
488 |
+
def __init__(self, **kwargs):
|
489 |
+
super().__init__()
|
490 |
+
self.__dict__.update(kwargs)
|
491 |
+
|
492 |
+
self.bars_decoder = nn.Linear(self.d, self.d * self.n_bars)
|
493 |
+
self.cnn_decoder = CNNDecoder(
|
494 |
+
input_dim=self.d,
|
495 |
+
dense_dim=self.d,
|
496 |
+
dropout=self.dropout,
|
497 |
+
batch_norm=self.batch_norm
|
498 |
+
)
|
499 |
+
|
500 |
+
def forward(self, z_s):
|
501 |
+
# z_s: bs x d
|
502 |
+
out = self.bars_decoder(z_s) # bs x (n_bars*d)
|
503 |
+
out = self.cnn_decoder(out.reshape(-1, self.d))
|
504 |
+
out = out.view(z_s.size(0), self.n_bars, constants.N_TRACKS, -1)
|
505 |
+
return out
|
506 |
+
|
507 |
+
|
508 |
+
class ContentDecoder(nn.Module):
|
509 |
+
|
510 |
+
def __init__(self, **kwargs):
|
511 |
+
super().__init__()
|
512 |
+
self.__dict__.update(kwargs)
|
513 |
+
|
514 |
+
self.bars_decoder = nn.Linear(self.d, self.d * self.n_bars)
|
515 |
+
|
516 |
+
self.graph_decoder = GCN(
|
517 |
+
dropout=self.dropout,
|
518 |
+
input_dim=self.d,
|
519 |
+
hidden_dim=self.d,
|
520 |
+
n_layers=self.gnn_n_layers,
|
521 |
+
num_relations=constants.N_EDGE_TYPES,
|
522 |
+
batch_norm=self.batch_norm
|
523 |
+
)
|
524 |
+
|
525 |
+
self.chord_decoder = nn.Linear(
|
526 |
+
self.d, self.d*(constants.MAX_SIMU_TOKENS-1))
|
527 |
+
|
528 |
+
# Pitch and duration (un)embedding linear layers
|
529 |
+
self.drums_pitch_emb = nn.Linear(self.d//2, constants.N_PITCH_TOKENS)
|
530 |
+
self.non_drums_pitch_emb = nn.Linear(
|
531 |
+
self.d//2, constants.N_PITCH_TOKENS)
|
532 |
+
self.dur_emb = nn.Linear(self.d//2, constants.N_DUR_TOKENS)
|
533 |
+
|
534 |
+
self.dropout_layer = nn.Dropout(p=self.dropout)
|
535 |
+
|
536 |
+
def forward(self, z_c, s):
|
537 |
+
|
538 |
+
out = self.bars_decoder(z_c) # bs x (n_bars*d)
|
539 |
+
|
540 |
+
# Initialize node features with corresponding z_bar
|
541 |
+
# and propagate with GNN
|
542 |
+
s.distinct_bars = s.bars + self.n_bars*s.batch
|
543 |
+
_, counts = torch.unique(s.distinct_bars, return_counts=True)
|
544 |
+
out = out.view(-1, self.d)
|
545 |
+
out = torch.repeat_interleave(out, counts, axis=0) # n_nodes x d
|
546 |
+
s.x = out
|
547 |
+
out = self.graph_decoder(s) # n_nodes x d
|
548 |
+
|
549 |
+
out = self.chord_decoder(out) # n_nodes x (MAX_SIMU_TOKENS*d)
|
550 |
+
out = out.view(-1, constants.MAX_SIMU_TOKENS-1, self.d)
|
551 |
+
|
552 |
+
drums = out[s.is_drum] # n_nodes_drums x MAX_SIMU_TOKENS x d
|
553 |
+
non_drums = out[torch.logical_not(s.is_drum)]
|
554 |
+
# n_nodes_non_drums x MAX_SIMU_TOKENS x d
|
555 |
+
|
556 |
+
# Obtain final pitch and dur logits (softmax will be applied
|
557 |
+
# outside forward)
|
558 |
+
non_drums = self.dropout_layer(non_drums)
|
559 |
+
drums = self.dropout_layer(drums)
|
560 |
+
|
561 |
+
drums_pitch = self.drums_pitch_emb(drums[..., :self.d//2])
|
562 |
+
drums_dur = self.dur_emb(drums[..., self.d//2:])
|
563 |
+
drums = torch.cat((drums_pitch, drums_dur), dim=-1)
|
564 |
+
# n_nodes_drums x MAX_SIMU_TOKENS x d_token
|
565 |
+
|
566 |
+
non_drums_pitch = self.non_drums_pitch_emb(non_drums[..., :self.d//2])
|
567 |
+
non_drums_dur = self.dur_emb(non_drums[..., self.d//2:])
|
568 |
+
non_drums = torch.cat((non_drums_pitch, non_drums_dur), dim=-1)
|
569 |
+
# n_nodes_non_drums x MAX_SIMU_TOKENS x d_token
|
570 |
+
|
571 |
+
# Merge drums and non-drums in the final output tensor
|
572 |
+
d_token = constants.D_TOKEN_PAIR
|
573 |
+
out = torch.zeros((s.num_nodes, constants.MAX_SIMU_TOKENS-1, d_token),
|
574 |
+
device=self.device, dtype=drums.dtype)
|
575 |
+
out[s.is_drum] = drums
|
576 |
+
out[torch.logical_not(s.is_drum)] = non_drums
|
577 |
+
|
578 |
+
return out
|
579 |
+
|
580 |
+
|
581 |
+
class Decoder(nn.Module):
|
582 |
+
|
583 |
+
def __init__(self, **kwargs):
|
584 |
+
super().__init__()
|
585 |
+
self.__dict__.update(kwargs)
|
586 |
+
|
587 |
+
self.lin_decoder = nn.Linear(self.d, 2 * self.d)
|
588 |
+
self.batch_norm = nn.BatchNorm1d(num_features=2*self.d)
|
589 |
+
self.dropout = nn.Dropout(p=self.dropout)
|
590 |
+
|
591 |
+
self.s_decoder = StructureDecoder(**kwargs)
|
592 |
+
self.c_decoder = ContentDecoder(**kwargs)
|
593 |
+
|
594 |
+
self.sigmoid_thresh = 0.5
|
595 |
+
|
596 |
+
def _structure_from_binary(self, s_tensor):
|
597 |
+
|
598 |
+
# Create graph structures for each batch
|
599 |
+
s = []
|
600 |
+
for i in range(s_tensor.size(0)):
|
601 |
+
s.append(graph_from_tensor(s_tensor[i]))
|
602 |
+
|
603 |
+
# Create batch of graphs from single graphs
|
604 |
+
s = Batch.from_data_list(s, exclude_keys=['batch'])
|
605 |
+
s = s.to(next(self.parameters()).device)
|
606 |
+
|
607 |
+
return s
|
608 |
+
|
609 |
+
def _binary_from_logits(self, s_logits):
|
610 |
+
|
611 |
+
# Hard threshold instead of sampling gives more pleasant results
|
612 |
+
s_tensor = torch.sigmoid(s_logits)
|
613 |
+
s_tensor[s_tensor >= self.sigmoid_thresh] = 1
|
614 |
+
s_tensor[s_tensor < self.sigmoid_thresh] = 0
|
615 |
+
s_tensor = s_tensor.bool()
|
616 |
+
|
617 |
+
# Avoid empty bars by creating a fake activation for each empty
|
618 |
+
# (n_tracks x n_timesteps) bar matrix in position [0, 0]
|
619 |
+
empty_mask = ~s_tensor.any(dim=-1).any(dim=-1)
|
620 |
+
idxs = torch.nonzero(empty_mask, as_tuple=True)
|
621 |
+
s_tensor[idxs + (0, 0)] = True
|
622 |
+
|
623 |
+
return s_tensor
|
624 |
+
|
625 |
+
def _structure_from_logits(self, s_logits):
|
626 |
+
|
627 |
+
# Compute binary structure tensor from logits and build torch geometric
|
628 |
+
# structure from binary tensor
|
629 |
+
s_tensor = self._binary_from_logits(s_logits)
|
630 |
+
s = self._structure_from_binary(s_tensor)
|
631 |
+
|
632 |
+
return s
|
633 |
+
|
634 |
+
def forward(self, z, s=None):
|
635 |
+
|
636 |
+
# Obtain z_s and z_c from z
|
637 |
+
z = self.lin_decoder(z)
|
638 |
+
z = self.batch_norm(z)
|
639 |
+
z = F.relu(z)
|
640 |
+
z = self.dropout(z) # bs x (2*d)
|
641 |
+
z_s, z_c = z[:, :self.d], z[:, self.d:]
|
642 |
+
|
643 |
+
# Obtain the tensor containing structure logits
|
644 |
+
s_logits = self.s_decoder(z_s)
|
645 |
+
|
646 |
+
if s is None:
|
647 |
+
# Build torch geometric graph structure from structure logits.
|
648 |
+
# This step involves non differentiable operations.
|
649 |
+
# No gradients pass through here.
|
650 |
+
s = self._structure_from_logits(s_logits.detach())
|
651 |
+
|
652 |
+
# Obtain the tensor containing content logits
|
653 |
+
c_logits = self.c_decoder(z_c, s)
|
654 |
+
|
655 |
+
return s_logits, c_logits
|
656 |
+
|
657 |
+
|
658 |
+
class VAE(nn.Module):
|
659 |
+
|
660 |
+
def __init__(self, **kwargs):
|
661 |
+
super().__init__()
|
662 |
+
self.encoder = Encoder(**kwargs)
|
663 |
+
self.decoder = Decoder(**kwargs)
|
664 |
+
|
665 |
+
def forward(self, graph):
|
666 |
+
|
667 |
+
# Encoder pass
|
668 |
+
mu, log_var = self.encoder(graph)
|
669 |
+
|
670 |
+
# Reparameterization trick
|
671 |
+
z = torch.exp(0.5 * log_var)
|
672 |
+
z = z * torch.randn_like(z)
|
673 |
+
z = z + mu
|
674 |
+
|
675 |
+
# Decoder pass
|
676 |
+
out = self.decoder(z, graph)
|
677 |
+
|
678 |
+
return out, mu, log_var
|
models/.gitattributes
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
+
LMD16/checkpoint filter=lfs diff=lfs merge=lfs -text
|
37 |
+
LMD2/checkpoint filter=lfs diff=lfs merge=lfs -text
|
models/LMD2/checkpoint
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:657b1de2d4de3a4dc94c63616784bd9142ee55db1e5f33912d0ea263c2aa973e
|
3 |
+
size 661667674
|
models/LMD2/configuration
ADDED
Binary file (879 Bytes). View file
|
|
models/README.md
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
license: mit
|
3 |
+
tags:
|
4 |
+
- music
|
5 |
+
- generation
|
6 |
+
- symbolic music
|
7 |
+
---
|
8 |
+
|
9 |
+
# polyphemus
|
10 |
+
|
11 |
+
A graph-based deep MIDI music generator. Official model repository of the [paper](https://arxiv.org/abs/2307.14928) "Graph-based Polyphonic Multitrack Music Generation".
|
12 |
+
|
13 |
+
You can listen to the samples generated in the experimental phase in the dedicated [site](https://emanuelecosenza.github.io/polyphemus/).
|
14 |
+
|
15 |
+
The repository contains two models: `LMD2`, a model that generates short 2-bar of music, and `LMD16`, a model that generates longer 16-bar sequences.
|
16 |
+
Refer to the GitHub [repo](https://github.com/EmanueleCosenza/polyphemus) for instructions on how to use these models.
|
plots.py
ADDED
@@ -0,0 +1,147 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
|
3 |
+
from matplotlib import pyplot as plt
|
4 |
+
import matplotlib as mpl
|
5 |
+
import muspy
|
6 |
+
import torch
|
7 |
+
|
8 |
+
import constants
|
9 |
+
|
10 |
+
|
11 |
+
def plot_pianoroll(muspy_song, save_dir=None, name='pianoroll'):
|
12 |
+
|
13 |
+
lines_linewidth = 4
|
14 |
+
axes_linewidth = 4
|
15 |
+
font_size = 34
|
16 |
+
fformat = 'png'
|
17 |
+
xticklabel = False
|
18 |
+
label = 'y'
|
19 |
+
figsize = (20, 10)
|
20 |
+
dpi = 200
|
21 |
+
|
22 |
+
with mpl.rc_context({'lines.linewidth': lines_linewidth,
|
23 |
+
'axes.linewidth': axes_linewidth,
|
24 |
+
'font.size': font_size}):
|
25 |
+
|
26 |
+
fig, axs_ = plt.subplots(constants.N_TRACKS, sharex=True,
|
27 |
+
figsize=figsize)
|
28 |
+
fig.subplots_adjust(hspace=0)
|
29 |
+
axs = axs_.tolist()
|
30 |
+
muspy.show_pianoroll(music=muspy_song, yticklabel='off', xtick='off',
|
31 |
+
label=label, xticklabel=xticklabel,
|
32 |
+
grid_axis='off', axs=axs, preset='full')
|
33 |
+
|
34 |
+
if save_dir:
|
35 |
+
plt.savefig(os.path.join(save_dir, name + "." + fformat),
|
36 |
+
format=fformat, dpi=dpi)
|
37 |
+
|
38 |
+
|
39 |
+
def plot_structure(s_tensor, save_dir=None, name='structure'):
|
40 |
+
|
41 |
+
lines_linewidth = 1
|
42 |
+
axes_linewidth = 1
|
43 |
+
font_size = 14
|
44 |
+
fformat = 'svg'
|
45 |
+
dpi = 200
|
46 |
+
|
47 |
+
n_bars = s_tensor.shape[0]
|
48 |
+
figsize = (3 * n_bars, 3)
|
49 |
+
|
50 |
+
n_timesteps = s_tensor.size(2)
|
51 |
+
resolution = n_timesteps // 4
|
52 |
+
s_tensor = s_tensor.permute(1, 0, 2)
|
53 |
+
s_tensor = s_tensor.reshape(s_tensor.shape[0], -1)
|
54 |
+
|
55 |
+
with mpl.rc_context({'lines.linewidth': lines_linewidth,
|
56 |
+
'axes.linewidth': axes_linewidth,
|
57 |
+
'font.size': font_size}):
|
58 |
+
|
59 |
+
plt.figure(figsize=figsize)
|
60 |
+
plt.pcolormesh(s_tensor, edgecolors='k', linewidth=1)
|
61 |
+
ax = plt.gca()
|
62 |
+
|
63 |
+
plt.xticks(range(0, s_tensor.shape[1], resolution),
|
64 |
+
range(1, 4*n_bars + 1))
|
65 |
+
plt.yticks(range(0, s_tensor.shape[0]), constants.TRACKS)
|
66 |
+
|
67 |
+
ax.invert_yaxis()
|
68 |
+
|
69 |
+
if save_dir:
|
70 |
+
plt.savefig(os.path.join(save_dir, name + "." + fformat),
|
71 |
+
format=fformat, dpi=dpi)
|
72 |
+
|
73 |
+
|
74 |
+
def plot_stats(stat_names, stats_tr, stats_val=None, eval_every=None,
|
75 |
+
labels=None, rx=None, ry=None):
|
76 |
+
|
77 |
+
for i, stat in enumerate(stat_names):
|
78 |
+
|
79 |
+
label = stat if not labels else labels[i]
|
80 |
+
|
81 |
+
plt.plot(range(1, len(stats_tr[stat])+1), stats_tr[stat],
|
82 |
+
label=label+' (TR)')
|
83 |
+
|
84 |
+
if stats_val:
|
85 |
+
plt.plot(range(eval_every, len(stats_tr[stat])+1, eval_every),
|
86 |
+
stats_val[stat], '.', label=label+' (VL)')
|
87 |
+
|
88 |
+
plt.grid()
|
89 |
+
|
90 |
+
plt.ylim(ry) if ry else plt.ylim(0)
|
91 |
+
plt.xlim(rx) if rx else plt.xlim(0)
|
92 |
+
|
93 |
+
plt.legend()
|
94 |
+
|
95 |
+
|
96 |
+
# Dictionary that maps loss statistic name to plot label
|
97 |
+
loss_labels = {
|
98 |
+
'tot': 'Total Loss',
|
99 |
+
'structure': 'Structure',
|
100 |
+
'pitch': 'Pitches',
|
101 |
+
'dur': 'Duration',
|
102 |
+
'reconstruction': 'Reconstruction Term',
|
103 |
+
'kld': 'KLD',
|
104 |
+
'beta*kld': 'beta * KLD'
|
105 |
+
}
|
106 |
+
|
107 |
+
|
108 |
+
def plot_losses(model_dir, losses, plot_val=False):
|
109 |
+
|
110 |
+
checkpoint_path = os.path.join(model_dir, 'checkpoint')
|
111 |
+
checkpoint = torch.load(checkpoint_path, map_location='cpu')
|
112 |
+
labels = [loss_labels[loss] for loss in losses]
|
113 |
+
|
114 |
+
tr_losses = checkpoint['tr_losses']
|
115 |
+
val_losses = checkpoint['val_losses'] if plot_val == True else None
|
116 |
+
eval_every = checkpoint['eval_every'] if plot_val == True else None
|
117 |
+
|
118 |
+
plot_stats(losses, tr_losses, stats_val=val_losses,
|
119 |
+
eval_every=eval_every, labels=labels, rx=(0))
|
120 |
+
|
121 |
+
|
122 |
+
# Dictionary that maps accuracy statistic name to plot label
|
123 |
+
accuracy_labels = {
|
124 |
+
's_acc': 'Struct. Accuracy',
|
125 |
+
's_precision': 'Struct. Precision',
|
126 |
+
's_recall': 'Struct. Recall',
|
127 |
+
's_f1': 'Struct. F1',
|
128 |
+
'pitch': 'Pitch Accuracy',
|
129 |
+
'pitch_drums': 'Pitch Accuracy (Drums)',
|
130 |
+
'pitch_non_drums': 'Pitch Accuracy (Non Drums)',
|
131 |
+
'dur': 'Duration Accuracy',
|
132 |
+
'note': 'Note Accuracy'
|
133 |
+
}
|
134 |
+
|
135 |
+
|
136 |
+
def plot_accuracies(model_dir, accuracies, plot_val=False):
|
137 |
+
|
138 |
+
checkpoint_path = os.path.join(model_dir, 'checkpoint')
|
139 |
+
checkpoint = torch.load(checkpoint_path, map_location='cpu')
|
140 |
+
labels = [accuracy_labels[accuracy] for accuracy in accuracies]
|
141 |
+
|
142 |
+
tr_accuracies = checkpoint['tr_accuracies']
|
143 |
+
val_accuracies = checkpoint['val_accuracies'] if plot_val == True else None
|
144 |
+
eval_every = checkpoint['eval_every'] if plot_val == True else None
|
145 |
+
|
146 |
+
plot_stats(accuracies, tr_accuracies, stats_val=val_accuracies,
|
147 |
+
eval_every=eval_every, labels=labels, ry=(0, 1))
|
preprocess.py
ADDED
@@ -0,0 +1,294 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import time
|
3 |
+
import sys
|
4 |
+
import multiprocessing
|
5 |
+
import itertools
|
6 |
+
import argparse
|
7 |
+
from itertools import product
|
8 |
+
|
9 |
+
import numpy as np
|
10 |
+
import tqdm
|
11 |
+
import pypianoroll as pproll
|
12 |
+
import muspy
|
13 |
+
|
14 |
+
import constants
|
15 |
+
from constants import PitchToken, DurationToken
|
16 |
+
|
17 |
+
|
18 |
+
def preprocess_midi_file(filepath, dest_dir, n_bars, resolution):
|
19 |
+
|
20 |
+
print("Preprocessing file {}".format(filepath))
|
21 |
+
|
22 |
+
filename = os.path.basename(filepath)
|
23 |
+
saved_samples = 0
|
24 |
+
|
25 |
+
# Load the file both as a pypianoroll song and a muspy song
|
26 |
+
# (Need to load both since muspy.to_pypianoroll() is expensive)
|
27 |
+
try:
|
28 |
+
pproll_song = pproll.read(filepath, resolution=resolution)
|
29 |
+
muspy_song = muspy.read(filepath)
|
30 |
+
except Exception as e:
|
31 |
+
print("Song skipped (Invalid song format)")
|
32 |
+
return 0
|
33 |
+
|
34 |
+
# Only accept songs that have a time signature of 4/4 and no time changes
|
35 |
+
for t in muspy_song.time_signatures:
|
36 |
+
if t.numerator != 4 or t.denominator != 4:
|
37 |
+
print("Song skipped ({}/{} time signature)".
|
38 |
+
format(t.numerator, t.denominator))
|
39 |
+
return 0
|
40 |
+
|
41 |
+
# Gather tracks of pypianoroll song based on MIDI program number
|
42 |
+
drum_tracks = []
|
43 |
+
bass_tracks = []
|
44 |
+
guitar_tracks = []
|
45 |
+
strings_tracks = []
|
46 |
+
|
47 |
+
for track in pproll_song.tracks:
|
48 |
+
if track.is_drum:
|
49 |
+
track.name = 'Drums'
|
50 |
+
drum_tracks.append(track)
|
51 |
+
elif 0 <= track.program <= 31:
|
52 |
+
track.name = 'Guitar'
|
53 |
+
guitar_tracks.append(track)
|
54 |
+
elif 32 <= track.program <= 39:
|
55 |
+
track.name = 'Bass'
|
56 |
+
bass_tracks.append(track)
|
57 |
+
else:
|
58 |
+
# Tracks with program > 39 are all considered as strings tracks
|
59 |
+
# and will be merged into a single track later on
|
60 |
+
strings_tracks.append(track)
|
61 |
+
|
62 |
+
# Filter song if it does not contain drum, guitar, bass or strings tracks
|
63 |
+
# if not guitar_tracks \
|
64 |
+
if not drum_tracks or not guitar_tracks \
|
65 |
+
or not bass_tracks or not strings_tracks:
|
66 |
+
print("Song skipped (does not contain drum or "
|
67 |
+
"guitar or bass or strings tracks)")
|
68 |
+
return 0
|
69 |
+
|
70 |
+
# Merge strings tracks into a single pypianoroll track
|
71 |
+
strings = pproll.Multitrack(tracks=strings_tracks)
|
72 |
+
strings_track = pproll.Track(pianoroll=strings.blend(mode='max'),
|
73 |
+
program=48, name='Strings')
|
74 |
+
|
75 |
+
combinations = list(product(drum_tracks, bass_tracks, guitar_tracks))
|
76 |
+
|
77 |
+
# Single instruments can have multiple tracks.
|
78 |
+
# Consider all possible combinations of drum, bass, and guitar tracks
|
79 |
+
for i, combination in enumerate(combinations):
|
80 |
+
|
81 |
+
print("Processing combination {} of {}".format(i + 1,
|
82 |
+
len(combinations)))
|
83 |
+
|
84 |
+
# Process combination (called 'subsong' from now on)
|
85 |
+
drum_track, bass_track, guitar_track = combination
|
86 |
+
tracks = [drum_track, bass_track, guitar_track, strings_track]
|
87 |
+
|
88 |
+
pproll_subsong = pproll.Multitrack(
|
89 |
+
tracks=tracks,
|
90 |
+
tempo=pproll_song.tempo,
|
91 |
+
resolution=resolution
|
92 |
+
)
|
93 |
+
muspy_subsong = muspy.from_pypianoroll(pproll_subsong)
|
94 |
+
|
95 |
+
tracks_notes = [track.notes for track in muspy_subsong.tracks]
|
96 |
+
|
97 |
+
# Obtain length of subsong (maximum of each track's length)
|
98 |
+
length = 0
|
99 |
+
for notes in tracks_notes:
|
100 |
+
track_length = max(note.end for note in notes) if notes else 0
|
101 |
+
length = max(length, track_length)
|
102 |
+
length += 1
|
103 |
+
|
104 |
+
# Add timesteps until length is a multiple of resolution
|
105 |
+
length = length if length % (4*resolution) == 0 \
|
106 |
+
else length + (4*resolution-(length % (4*resolution)))
|
107 |
+
|
108 |
+
tracks_content = []
|
109 |
+
tracks_structure = []
|
110 |
+
|
111 |
+
for notes in tracks_notes:
|
112 |
+
|
113 |
+
# track_content: length x MAX_SIMU_TOKENS x 2
|
114 |
+
# This is used as a basis to build the final content tensors for
|
115 |
+
# each sequence.
|
116 |
+
# The last dimension contains pitches and durations. int16 is enough
|
117 |
+
# to encode small to medium duration values.
|
118 |
+
track_content = np.zeros((length, constants.MAX_SIMU_TOKENS, 2),
|
119 |
+
np.int16)
|
120 |
+
|
121 |
+
track_content[:, :, 0] = PitchToken.PAD.value
|
122 |
+
track_content[:, 0, 0] = PitchToken.SOS.value
|
123 |
+
track_content[:, :, 1] = DurationToken.PAD.value
|
124 |
+
track_content[:, 0, 1] = DurationToken.SOS.value
|
125 |
+
|
126 |
+
# Keeps track of how many notes have been stored in each timestep
|
127 |
+
# (int8 imposes MAX_SIMU_TOKENS < 256)
|
128 |
+
notes_counter = np.ones(length, dtype=np.int8)
|
129 |
+
|
130 |
+
# Todo: np.put_along_axis?
|
131 |
+
for note in notes:
|
132 |
+
# Insert note in the lowest position available in the timestep
|
133 |
+
|
134 |
+
t = note.time
|
135 |
+
|
136 |
+
if notes_counter[t] >= constants.MAX_SIMU_TOKENS-1:
|
137 |
+
# Skip note if there is no more space
|
138 |
+
continue
|
139 |
+
|
140 |
+
pitch = max(min(note.pitch, constants.MAX_PITCH_TOKEN), 0)
|
141 |
+
track_content[t, notes_counter[t], 0] = pitch
|
142 |
+
dur = max(min(note.duration, constants.MAX_DUR_TOKEN + 1), 1)
|
143 |
+
track_content[t, notes_counter[t], 1] = dur-1
|
144 |
+
notes_counter[t] += 1
|
145 |
+
|
146 |
+
# Add EOS token
|
147 |
+
t_range = np.arange(0, length)
|
148 |
+
track_content[t_range, notes_counter, 0] = PitchToken.EOS.value
|
149 |
+
track_content[t_range, notes_counter, 1] = DurationToken.EOS.value
|
150 |
+
|
151 |
+
# Get track activations, a boolean tensor indicating whether notes
|
152 |
+
# are being played in a timestep (sustain does not count)
|
153 |
+
# (needed for graph rep.)
|
154 |
+
activations = np.array(notes_counter-1, dtype=bool)
|
155 |
+
|
156 |
+
tracks_content.append(track_content)
|
157 |
+
tracks_structure.append(activations)
|
158 |
+
|
159 |
+
# n_tracks x length x MAX_SIMU_TOKENS x 2
|
160 |
+
subsong_content = np.stack(tracks_content, axis=0)
|
161 |
+
|
162 |
+
# n_tracks x length
|
163 |
+
subsong_structure = np.stack(tracks_structure, axis=0)
|
164 |
+
|
165 |
+
# Slide window over 'subsong_content' and 'subsong_structure' along the
|
166 |
+
# time axis (2nd dimension) with the stride of a bar
|
167 |
+
# Todo: np.lib.stride_tricks.as_strided(song_proll)?
|
168 |
+
for i in range(0, length-n_bars*4*resolution+1, 4*resolution):
|
169 |
+
|
170 |
+
# Get the content and structure tensors of a single sequence
|
171 |
+
c_tensor = subsong_content[:, i:i+n_bars*4*resolution, :]
|
172 |
+
s_tensor = subsong_structure[:, i:i+n_bars*4*resolution]
|
173 |
+
c_tensor = np.copy(c_tensor)
|
174 |
+
s_tensor = np.copy(s_tensor)
|
175 |
+
|
176 |
+
if n_bars > 1:
|
177 |
+
# Skip sequence if it contains more than one bar of consecutive
|
178 |
+
# silence in at least one track
|
179 |
+
bars = s_tensor.reshape(s_tensor.shape[0], n_bars, -1)
|
180 |
+
bars_acts = np.any(bars, axis=2)
|
181 |
+
|
182 |
+
if 1 in np.diff(np.where(bars_acts == 0)[1]):
|
183 |
+
continue
|
184 |
+
|
185 |
+
# Skip sequence if it contains one bar of complete silence
|
186 |
+
silences = np.logical_not(np.any(bars_acts, axis=0))
|
187 |
+
if np.any(silences):
|
188 |
+
continue
|
189 |
+
|
190 |
+
else:
|
191 |
+
# Skip if all tracks are silenced
|
192 |
+
bar_acts = np.any(s_tensor, axis=1)
|
193 |
+
if not np.any(bar_acts):
|
194 |
+
continue
|
195 |
+
|
196 |
+
# Randomly transpose the pitches of the sequence (-5 to 6 semitones)
|
197 |
+
# Not considering SOS, EOS or PAD tokens. Not transposing drums.
|
198 |
+
shift = np.random.choice(np.arange(-5, 7), 1)
|
199 |
+
cond = (c_tensor[1:, :, :, 0] != PitchToken.PAD.value) & \
|
200 |
+
(c_tensor[1:, :, :, 0] != PitchToken.SOS.value) & \
|
201 |
+
(c_tensor[1:, :, :, 0] != PitchToken.EOS.value)
|
202 |
+
non_drums = c_tensor[1:, ...]
|
203 |
+
non_drums[cond, 0] += shift
|
204 |
+
non_drums[cond, 0] = np.clip(non_drums[cond, 0], a_min=0,
|
205 |
+
a_max=constants.MAX_PITCH_TOKEN)
|
206 |
+
|
207 |
+
# Save sample (content and structure) to file
|
208 |
+
sample_filepath = os.path.join(
|
209 |
+
dest_dir, filename+str(saved_samples))
|
210 |
+
np.savez(sample_filepath, c_tensor=c_tensor, s_tensor=s_tensor)
|
211 |
+
|
212 |
+
saved_samples += 1
|
213 |
+
|
214 |
+
|
215 |
+
def preprocess_midi_dataset(midi_dataset_dir, preprocessed_dir, n_bars,
|
216 |
+
resolution, n_files=None, n_workers=1):
|
217 |
+
|
218 |
+
print("Starting preprocessing")
|
219 |
+
start = time.time()
|
220 |
+
|
221 |
+
# Visit recursively the directories inside the dataset directory
|
222 |
+
with multiprocessing.Pool(n_workers) as pool:
|
223 |
+
|
224 |
+
walk = os.walk(midi_dataset_dir)
|
225 |
+
fn_gen = itertools.chain.from_iterable(
|
226 |
+
((os.path.join(dirpath, file), preprocessed_dir, n_bars, resolution)
|
227 |
+
for file in files)
|
228 |
+
for dirpath, dirs, files in walk
|
229 |
+
)
|
230 |
+
|
231 |
+
r = list(tqdm.tqdm(pool.starmap(preprocess_midi_file, fn_gen),
|
232 |
+
total=n_files))
|
233 |
+
|
234 |
+
end = time.time()
|
235 |
+
hours, rem = divmod(end-start, 3600)
|
236 |
+
minutes, seconds = divmod(rem, 60)
|
237 |
+
print("Preprocessing completed in (h:m:s): {:0>2}:{:0>2}:{:05.2f}"
|
238 |
+
.format(int(hours), int(minutes), seconds))
|
239 |
+
|
240 |
+
|
241 |
+
if __name__ == "__main__":
|
242 |
+
|
243 |
+
parser = argparse.ArgumentParser(
|
244 |
+
description="Preprocesses a MIDI dataset. MIDI files can be arranged "
|
245 |
+
"hierarchically in subdirectories, similarly to the Lakh MIDI "
|
246 |
+
"Dataset (lmd_matched) and the MetaMIDI Dataset."
|
247 |
+
)
|
248 |
+
parser.add_argument(
|
249 |
+
'midi_dataset_dir',
|
250 |
+
type=str,
|
251 |
+
help='Directory of the MIDI dataset.'
|
252 |
+
)
|
253 |
+
parser.add_argument(
|
254 |
+
'preprocessed_dir',
|
255 |
+
type=str,
|
256 |
+
help='Directory to save the preprocessed dataset.'
|
257 |
+
)
|
258 |
+
parser.add_argument(
|
259 |
+
'--n_bars',
|
260 |
+
type=int,
|
261 |
+
default=2,
|
262 |
+
help="Number of bars for each sequence of the resulting preprocessed "
|
263 |
+
"dataset. Defaults to 2 bars."
|
264 |
+
)
|
265 |
+
parser.add_argument(
|
266 |
+
'--resolution',
|
267 |
+
type=int,
|
268 |
+
default=8,
|
269 |
+
help="Number of timesteps per beat. When set to r, given that only "
|
270 |
+
"4/4 songs are preprocessed, there will be 4*r timesteps in a bar. "
|
271 |
+
"Defaults to 8."
|
272 |
+
)
|
273 |
+
parser.add_argument(
|
274 |
+
'--n_files',
|
275 |
+
type=int,
|
276 |
+
help="Number of files in the MIDI dataset. If set, the script "
|
277 |
+
"will provide statistics on the time remaining."
|
278 |
+
)
|
279 |
+
parser.add_argument(
|
280 |
+
'--n_workers',
|
281 |
+
type=int,
|
282 |
+
default=1,
|
283 |
+
help="Number of parallel workers. Defaults to 1."
|
284 |
+
)
|
285 |
+
|
286 |
+
args = parser.parse_args()
|
287 |
+
|
288 |
+
# Create the output directory if it does not exist
|
289 |
+
if not os.path.exists(args.preprocessed_dir):
|
290 |
+
os.makedirs(args.preprocessed_dir)
|
291 |
+
|
292 |
+
preprocess_midi_dataset(args.midi_dataset_dir, args.preprocessed_dir,
|
293 |
+
args.n_bars, args.resolution, args.n_files,
|
294 |
+
n_workers=args.n_workers)
|
requirements.txt
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
--find-links https://download.pytorch.org/whl/torch_stable.html
|
2 |
+
--find-links https://data.pyg.org/whl/torch-1.7.0+cu101.html
|
3 |
+
|
4 |
+
# PyTorch related
|
5 |
+
torch==1.7.0+cu101
|
6 |
+
torchvision==0.8.0
|
7 |
+
torch-geometric==2.0.2
|
8 |
+
torch-cluster==1.5.9
|
9 |
+
torch-scatter==2.0.7
|
10 |
+
torch-sparse==0.6.9
|
11 |
+
torch-spline-conv==1.2.1
|
12 |
+
|
13 |
+
# Music packages
|
14 |
+
pretty-midi==0.2.9
|
15 |
+
muspy==0.4.0
|
16 |
+
pypianoroll==1.0.4
|
17 |
+
|
18 |
+
# Various
|
19 |
+
prettytable==2.4.0
|
20 |
+
tqdm==4.62.3
|
21 |
+
huggingface-hub==0.16.4
|
22 |
+
|
23 |
+
# Hugging Face
|
24 |
+
flask==2.1.*
|
25 |
+
requests==2.27.*
|
soundfonts/FluidR3_GM.sf2
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:74594e8f4250680adf590507a306655a299935343583256f3b722c48a1bc1cb0
|
3 |
+
size 148398306
|
static/0/generated.mid
ADDED
Binary file (542 Bytes). View file
|
|
static/0/structure.json
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
[[[true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, true, false, true, false, false, false], [true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false], [true, false, false, false, true, false, false, false, true, false, false, false, false, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false], [true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]], [[true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, true, false, true, false, false, false], [true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false], [true, false, false, false, true, false, false, false, true, false, false, false, false, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false], [true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]]]
|
static/0/z
ADDED
Binary file (2.8 kB). View file
|
|
static/assets/FontAwesome/LICENSE.txt
ADDED
@@ -0,0 +1,165 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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) 2023 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 2023 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.**
|
static/assets/FontAwesome/css/brands.css
ADDED
@@ -0,0 +1,1537 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Font Awesome Free 6.4.2 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 2023 Fonticons, Inc.
|
5 |
+
*/
|
6 |
+
:root, :host {
|
7 |
+
--fa-style-family-brands: 'Font Awesome 6 Brands';
|
8 |
+
--fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; }
|
9 |
+
|
10 |
+
@font-face {
|
11 |
+
font-family: 'Font Awesome 6 Brands';
|
12 |
+
font-style: normal;
|
13 |
+
font-weight: 400;
|
14 |
+
font-display: block;
|
15 |
+
src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
|
16 |
+
|
17 |
+
.fab,
|
18 |
+
.fa-brands {
|
19 |
+
font-weight: 400; }
|
20 |
+
|
21 |
+
.fa-monero:before {
|
22 |
+
content: "\f3d0"; }
|
23 |
+
|
24 |
+
.fa-hooli:before {
|
25 |
+
content: "\f427"; }
|
26 |
+
|
27 |
+
.fa-yelp:before {
|
28 |
+
content: "\f1e9"; }
|
29 |
+
|
30 |
+
.fa-cc-visa:before {
|
31 |
+
content: "\f1f0"; }
|
32 |
+
|
33 |
+
.fa-lastfm:before {
|
34 |
+
content: "\f202"; }
|
35 |
+
|
36 |
+
.fa-shopware:before {
|
37 |
+
content: "\f5b5"; }
|
38 |
+
|
39 |
+
.fa-creative-commons-nc:before {
|
40 |
+
content: "\f4e8"; }
|
41 |
+
|
42 |
+
.fa-aws:before {
|
43 |
+
content: "\f375"; }
|
44 |
+
|
45 |
+
.fa-redhat:before {
|
46 |
+
content: "\f7bc"; }
|
47 |
+
|
48 |
+
.fa-yoast:before {
|
49 |
+
content: "\f2b1"; }
|
50 |
+
|
51 |
+
.fa-cloudflare:before {
|
52 |
+
content: "\e07d"; }
|
53 |
+
|
54 |
+
.fa-ups:before {
|
55 |
+
content: "\f7e0"; }
|
56 |
+
|
57 |
+
.fa-wpexplorer:before {
|
58 |
+
content: "\f2de"; }
|
59 |
+
|
60 |
+
.fa-dyalog:before {
|
61 |
+
content: "\f399"; }
|
62 |
+
|
63 |
+
.fa-bity:before {
|
64 |
+
content: "\f37a"; }
|
65 |
+
|
66 |
+
.fa-stackpath:before {
|
67 |
+
content: "\f842"; }
|
68 |
+
|
69 |
+
.fa-buysellads:before {
|
70 |
+
content: "\f20d"; }
|
71 |
+
|
72 |
+
.fa-first-order:before {
|
73 |
+
content: "\f2b0"; }
|
74 |
+
|
75 |
+
.fa-modx:before {
|
76 |
+
content: "\f285"; }
|
77 |
+
|
78 |
+
.fa-guilded:before {
|
79 |
+
content: "\e07e"; }
|
80 |
+
|
81 |
+
.fa-vnv:before {
|
82 |
+
content: "\f40b"; }
|
83 |
+
|
84 |
+
.fa-square-js:before {
|
85 |
+
content: "\f3b9"; }
|
86 |
+
|
87 |
+
.fa-js-square: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-square-reddit:before {
|
145 |
+
content: "\f1a2"; }
|
146 |
+
|
147 |
+
.fa-reddit-square:before {
|
148 |
+
content: "\f1a2"; }
|
149 |
+
|
150 |
+
.fa-vimeo-v:before {
|
151 |
+
content: "\f27d"; }
|
152 |
+
|
153 |
+
.fa-contao:before {
|
154 |
+
content: "\f26d"; }
|
155 |
+
|
156 |
+
.fa-square-font-awesome:before {
|
157 |
+
content: "\e5ad"; }
|
158 |
+
|
159 |
+
.fa-deskpro:before {
|
160 |
+
content: "\f38f"; }
|
161 |
+
|
162 |
+
.fa-sistrix:before {
|
163 |
+
content: "\f3ee"; }
|
164 |
+
|
165 |
+
.fa-square-instagram:before {
|
166 |
+
content: "\e055"; }
|
167 |
+
|
168 |
+
.fa-instagram-square:before {
|
169 |
+
content: "\e055"; }
|
170 |
+
|
171 |
+
.fa-battle-net:before {
|
172 |
+
content: "\f835"; }
|
173 |
+
|
174 |
+
.fa-the-red-yeti:before {
|
175 |
+
content: "\f69d"; }
|
176 |
+
|
177 |
+
.fa-square-hacker-news:before {
|
178 |
+
content: "\f3af"; }
|
179 |
+
|
180 |
+
.fa-hacker-news-square:before {
|
181 |
+
content: "\f3af"; }
|
182 |
+
|
183 |
+
.fa-edge:before {
|
184 |
+
content: "\f282"; }
|
185 |
+
|
186 |
+
.fa-threads:before {
|
187 |
+
content: "\e618"; }
|
188 |
+
|
189 |
+
.fa-napster:before {
|
190 |
+
content: "\f3d2"; }
|
191 |
+
|
192 |
+
.fa-square-snapchat:before {
|
193 |
+
content: "\f2ad"; }
|
194 |
+
|
195 |
+
.fa-snapchat-square:before {
|
196 |
+
content: "\f2ad"; }
|
197 |
+
|
198 |
+
.fa-google-plus-g:before {
|
199 |
+
content: "\f0d5"; }
|
200 |
+
|
201 |
+
.fa-artstation:before {
|
202 |
+
content: "\f77a"; }
|
203 |
+
|
204 |
+
.fa-markdown:before {
|
205 |
+
content: "\f60f"; }
|
206 |
+
|
207 |
+
.fa-sourcetree:before {
|
208 |
+
content: "\f7d3"; }
|
209 |
+
|
210 |
+
.fa-google-plus:before {
|
211 |
+
content: "\f2b3"; }
|
212 |
+
|
213 |
+
.fa-diaspora:before {
|
214 |
+
content: "\f791"; }
|
215 |
+
|
216 |
+
.fa-foursquare:before {
|
217 |
+
content: "\f180"; }
|
218 |
+
|
219 |
+
.fa-stack-overflow:before {
|
220 |
+
content: "\f16c"; }
|
221 |
+
|
222 |
+
.fa-github-alt:before {
|
223 |
+
content: "\f113"; }
|
224 |
+
|
225 |
+
.fa-phoenix-squadron:before {
|
226 |
+
content: "\f511"; }
|
227 |
+
|
228 |
+
.fa-pagelines:before {
|
229 |
+
content: "\f18c"; }
|
230 |
+
|
231 |
+
.fa-algolia:before {
|
232 |
+
content: "\f36c"; }
|
233 |
+
|
234 |
+
.fa-red-river:before {
|
235 |
+
content: "\f3e3"; }
|
236 |
+
|
237 |
+
.fa-creative-commons-sa:before {
|
238 |
+
content: "\f4ef"; }
|
239 |
+
|
240 |
+
.fa-safari:before {
|
241 |
+
content: "\f267"; }
|
242 |
+
|
243 |
+
.fa-google:before {
|
244 |
+
content: "\f1a0"; }
|
245 |
+
|
246 |
+
.fa-square-font-awesome-stroke:before {
|
247 |
+
content: "\f35c"; }
|
248 |
+
|
249 |
+
.fa-font-awesome-alt:before {
|
250 |
+
content: "\f35c"; }
|
251 |
+
|
252 |
+
.fa-atlassian:before {
|
253 |
+
content: "\f77b"; }
|
254 |
+
|
255 |
+
.fa-linkedin-in:before {
|
256 |
+
content: "\f0e1"; }
|
257 |
+
|
258 |
+
.fa-digital-ocean:before {
|
259 |
+
content: "\f391"; }
|
260 |
+
|
261 |
+
.fa-nimblr:before {
|
262 |
+
content: "\f5a8"; }
|
263 |
+
|
264 |
+
.fa-chromecast:before {
|
265 |
+
content: "\f838"; }
|
266 |
+
|
267 |
+
.fa-evernote:before {
|
268 |
+
content: "\f839"; }
|
269 |
+
|
270 |
+
.fa-hacker-news:before {
|
271 |
+
content: "\f1d4"; }
|
272 |
+
|
273 |
+
.fa-creative-commons-sampling:before {
|
274 |
+
content: "\f4f0"; }
|
275 |
+
|
276 |
+
.fa-adversal:before {
|
277 |
+
content: "\f36a"; }
|
278 |
+
|
279 |
+
.fa-creative-commons:before {
|
280 |
+
content: "\f25e"; }
|
281 |
+
|
282 |
+
.fa-watchman-monitoring:before {
|
283 |
+
content: "\e087"; }
|
284 |
+
|
285 |
+
.fa-fonticons:before {
|
286 |
+
content: "\f280"; }
|
287 |
+
|
288 |
+
.fa-weixin:before {
|
289 |
+
content: "\f1d7"; }
|
290 |
+
|
291 |
+
.fa-shirtsinbulk:before {
|
292 |
+
content: "\f214"; }
|
293 |
+
|
294 |
+
.fa-codepen:before {
|
295 |
+
content: "\f1cb"; }
|
296 |
+
|
297 |
+
.fa-git-alt:before {
|
298 |
+
content: "\f841"; }
|
299 |
+
|
300 |
+
.fa-lyft:before {
|
301 |
+
content: "\f3c3"; }
|
302 |
+
|
303 |
+
.fa-rev:before {
|
304 |
+
content: "\f5b2"; }
|
305 |
+
|
306 |
+
.fa-windows:before {
|
307 |
+
content: "\f17a"; }
|
308 |
+
|
309 |
+
.fa-wizards-of-the-coast:before {
|
310 |
+
content: "\f730"; }
|
311 |
+
|
312 |
+
.fa-square-viadeo:before {
|
313 |
+
content: "\f2aa"; }
|
314 |
+
|
315 |
+
.fa-viadeo-square:before {
|
316 |
+
content: "\f2aa"; }
|
317 |
+
|
318 |
+
.fa-meetup:before {
|
319 |
+
content: "\f2e0"; }
|
320 |
+
|
321 |
+
.fa-centos:before {
|
322 |
+
content: "\f789"; }
|
323 |
+
|
324 |
+
.fa-adn:before {
|
325 |
+
content: "\f170"; }
|
326 |
+
|
327 |
+
.fa-cloudsmith:before {
|
328 |
+
content: "\f384"; }
|
329 |
+
|
330 |
+
.fa-pied-piper-alt:before {
|
331 |
+
content: "\f1a8"; }
|
332 |
+
|
333 |
+
.fa-square-dribbble:before {
|
334 |
+
content: "\f397"; }
|
335 |
+
|
336 |
+
.fa-dribbble-square:before {
|
337 |
+
content: "\f397"; }
|
338 |
+
|
339 |
+
.fa-codiepie:before {
|
340 |
+
content: "\f284"; }
|
341 |
+
|
342 |
+
.fa-node:before {
|
343 |
+
content: "\f419"; }
|
344 |
+
|
345 |
+
.fa-mix:before {
|
346 |
+
content: "\f3cb"; }
|
347 |
+
|
348 |
+
.fa-steam:before {
|
349 |
+
content: "\f1b6"; }
|
350 |
+
|
351 |
+
.fa-cc-apple-pay:before {
|
352 |
+
content: "\f416"; }
|
353 |
+
|
354 |
+
.fa-scribd:before {
|
355 |
+
content: "\f28a"; }
|
356 |
+
|
357 |
+
.fa-debian:before {
|
358 |
+
content: "\e60b"; }
|
359 |
+
|
360 |
+
.fa-openid:before {
|
361 |
+
content: "\f19b"; }
|
362 |
+
|
363 |
+
.fa-instalod:before {
|
364 |
+
content: "\e081"; }
|
365 |
+
|
366 |
+
.fa-expeditedssl:before {
|
367 |
+
content: "\f23e"; }
|
368 |
+
|
369 |
+
.fa-sellcast:before {
|
370 |
+
content: "\f2da"; }
|
371 |
+
|
372 |
+
.fa-square-twitter:before {
|
373 |
+
content: "\f081"; }
|
374 |
+
|
375 |
+
.fa-twitter-square:before {
|
376 |
+
content: "\f081"; }
|
377 |
+
|
378 |
+
.fa-r-project:before {
|
379 |
+
content: "\f4f7"; }
|
380 |
+
|
381 |
+
.fa-delicious:before {
|
382 |
+
content: "\f1a5"; }
|
383 |
+
|
384 |
+
.fa-freebsd:before {
|
385 |
+
content: "\f3a4"; }
|
386 |
+
|
387 |
+
.fa-vuejs:before {
|
388 |
+
content: "\f41f"; }
|
389 |
+
|
390 |
+
.fa-accusoft:before {
|
391 |
+
content: "\f369"; }
|
392 |
+
|
393 |
+
.fa-ioxhost:before {
|
394 |
+
content: "\f208"; }
|
395 |
+
|
396 |
+
.fa-fonticons-fi:before {
|
397 |
+
content: "\f3a2"; }
|
398 |
+
|
399 |
+
.fa-app-store:before {
|
400 |
+
content: "\f36f"; }
|
401 |
+
|
402 |
+
.fa-cc-mastercard:before {
|
403 |
+
content: "\f1f1"; }
|
404 |
+
|
405 |
+
.fa-itunes-note:before {
|
406 |
+
content: "\f3b5"; }
|
407 |
+
|
408 |
+
.fa-golang:before {
|
409 |
+
content: "\e40f"; }
|
410 |
+
|
411 |
+
.fa-kickstarter:before {
|
412 |
+
content: "\f3bb"; }
|
413 |
+
|
414 |
+
.fa-grav:before {
|
415 |
+
content: "\f2d6"; }
|
416 |
+
|
417 |
+
.fa-weibo:before {
|
418 |
+
content: "\f18a"; }
|
419 |
+
|
420 |
+
.fa-uncharted:before {
|
421 |
+
content: "\e084"; }
|
422 |
+
|
423 |
+
.fa-firstdraft:before {
|
424 |
+
content: "\f3a1"; }
|
425 |
+
|
426 |
+
.fa-square-youtube:before {
|
427 |
+
content: "\f431"; }
|
428 |
+
|
429 |
+
.fa-youtube-square:before {
|
430 |
+
content: "\f431"; }
|
431 |
+
|
432 |
+
.fa-wikipedia-w:before {
|
433 |
+
content: "\f266"; }
|
434 |
+
|
435 |
+
.fa-wpressr:before {
|
436 |
+
content: "\f3e4"; }
|
437 |
+
|
438 |
+
.fa-rendact:before {
|
439 |
+
content: "\f3e4"; }
|
440 |
+
|
441 |
+
.fa-angellist:before {
|
442 |
+
content: "\f209"; }
|
443 |
+
|
444 |
+
.fa-galactic-republic:before {
|
445 |
+
content: "\f50c"; }
|
446 |
+
|
447 |
+
.fa-nfc-directional:before {
|
448 |
+
content: "\e530"; }
|
449 |
+
|
450 |
+
.fa-skype:before {
|
451 |
+
content: "\f17e"; }
|
452 |
+
|
453 |
+
.fa-joget:before {
|
454 |
+
content: "\f3b7"; }
|
455 |
+
|
456 |
+
.fa-fedora:before {
|
457 |
+
content: "\f798"; }
|
458 |
+
|
459 |
+
.fa-stripe-s:before {
|
460 |
+
content: "\f42a"; }
|
461 |
+
|
462 |
+
.fa-meta:before {
|
463 |
+
content: "\e49b"; }
|
464 |
+
|
465 |
+
.fa-laravel:before {
|
466 |
+
content: "\f3bd"; }
|
467 |
+
|
468 |
+
.fa-hotjar:before {
|
469 |
+
content: "\f3b1"; }
|
470 |
+
|
471 |
+
.fa-bluetooth-b:before {
|
472 |
+
content: "\f294"; }
|
473 |
+
|
474 |
+
.fa-sticker-mule:before {
|
475 |
+
content: "\f3f7"; }
|
476 |
+
|
477 |
+
.fa-creative-commons-zero:before {
|
478 |
+
content: "\f4f3"; }
|
479 |
+
|
480 |
+
.fa-hips:before {
|
481 |
+
content: "\f452"; }
|
482 |
+
|
483 |
+
.fa-behance:before {
|
484 |
+
content: "\f1b4"; }
|
485 |
+
|
486 |
+
.fa-reddit:before {
|
487 |
+
content: "\f1a1"; }
|
488 |
+
|
489 |
+
.fa-discord:before {
|
490 |
+
content: "\f392"; }
|
491 |
+
|
492 |
+
.fa-chrome:before {
|
493 |
+
content: "\f268"; }
|
494 |
+
|
495 |
+
.fa-app-store-ios:before {
|
496 |
+
content: "\f370"; }
|
497 |
+
|
498 |
+
.fa-cc-discover:before {
|
499 |
+
content: "\f1f2"; }
|
500 |
+
|
501 |
+
.fa-wpbeginner:before {
|
502 |
+
content: "\f297"; }
|
503 |
+
|
504 |
+
.fa-confluence:before {
|
505 |
+
content: "\f78d"; }
|
506 |
+
|
507 |
+
.fa-mdb:before {
|
508 |
+
content: "\f8ca"; }
|
509 |
+
|
510 |
+
.fa-dochub:before {
|
511 |
+
content: "\f394"; }
|
512 |
+
|
513 |
+
.fa-accessible-icon:before {
|
514 |
+
content: "\f368"; }
|
515 |
+
|
516 |
+
.fa-ebay:before {
|
517 |
+
content: "\f4f4"; }
|
518 |
+
|
519 |
+
.fa-amazon:before {
|
520 |
+
content: "\f270"; }
|
521 |
+
|
522 |
+
.fa-unsplash:before {
|
523 |
+
content: "\e07c"; }
|
524 |
+
|
525 |
+
.fa-yarn:before {
|
526 |
+
content: "\f7e3"; }
|
527 |
+
|
528 |
+
.fa-square-steam:before {
|
529 |
+
content: "\f1b7"; }
|
530 |
+
|
531 |
+
.fa-steam-square:before {
|
532 |
+
content: "\f1b7"; }
|
533 |
+
|
534 |
+
.fa-500px:before {
|
535 |
+
content: "\f26e"; }
|
536 |
+
|
537 |
+
.fa-square-vimeo:before {
|
538 |
+
content: "\f194"; }
|
539 |
+
|
540 |
+
.fa-vimeo-square:before {
|
541 |
+
content: "\f194"; }
|
542 |
+
|
543 |
+
.fa-asymmetrik:before {
|
544 |
+
content: "\f372"; }
|
545 |
+
|
546 |
+
.fa-font-awesome:before {
|
547 |
+
content: "\f2b4"; }
|
548 |
+
|
549 |
+
.fa-font-awesome-flag:before {
|
550 |
+
content: "\f2b4"; }
|
551 |
+
|
552 |
+
.fa-font-awesome-logo-full:before {
|
553 |
+
content: "\f2b4"; }
|
554 |
+
|
555 |
+
.fa-gratipay:before {
|
556 |
+
content: "\f184"; }
|
557 |
+
|
558 |
+
.fa-apple:before {
|
559 |
+
content: "\f179"; }
|
560 |
+
|
561 |
+
.fa-hive:before {
|
562 |
+
content: "\e07f"; }
|
563 |
+
|
564 |
+
.fa-gitkraken:before {
|
565 |
+
content: "\f3a6"; }
|
566 |
+
|
567 |
+
.fa-keybase:before {
|
568 |
+
content: "\f4f5"; }
|
569 |
+
|
570 |
+
.fa-apple-pay:before {
|
571 |
+
content: "\f415"; }
|
572 |
+
|
573 |
+
.fa-padlet:before {
|
574 |
+
content: "\e4a0"; }
|
575 |
+
|
576 |
+
.fa-amazon-pay:before {
|
577 |
+
content: "\f42c"; }
|
578 |
+
|
579 |
+
.fa-square-github:before {
|
580 |
+
content: "\f092"; }
|
581 |
+
|
582 |
+
.fa-github-square:before {
|
583 |
+
content: "\f092"; }
|
584 |
+
|
585 |
+
.fa-stumbleupon:before {
|
586 |
+
content: "\f1a4"; }
|
587 |
+
|
588 |
+
.fa-fedex:before {
|
589 |
+
content: "\f797"; }
|
590 |
+
|
591 |
+
.fa-phoenix-framework:before {
|
592 |
+
content: "\f3dc"; }
|
593 |
+
|
594 |
+
.fa-shopify:before {
|
595 |
+
content: "\e057"; }
|
596 |
+
|
597 |
+
.fa-neos:before {
|
598 |
+
content: "\f612"; }
|
599 |
+
|
600 |
+
.fa-square-threads:before {
|
601 |
+
content: "\e619"; }
|
602 |
+
|
603 |
+
.fa-hackerrank:before {
|
604 |
+
content: "\f5f7"; }
|
605 |
+
|
606 |
+
.fa-researchgate:before {
|
607 |
+
content: "\f4f8"; }
|
608 |
+
|
609 |
+
.fa-swift:before {
|
610 |
+
content: "\f8e1"; }
|
611 |
+
|
612 |
+
.fa-angular:before {
|
613 |
+
content: "\f420"; }
|
614 |
+
|
615 |
+
.fa-speakap:before {
|
616 |
+
content: "\f3f3"; }
|
617 |
+
|
618 |
+
.fa-angrycreative:before {
|
619 |
+
content: "\f36e"; }
|
620 |
+
|
621 |
+
.fa-y-combinator:before {
|
622 |
+
content: "\f23b"; }
|
623 |
+
|
624 |
+
.fa-empire:before {
|
625 |
+
content: "\f1d1"; }
|
626 |
+
|
627 |
+
.fa-envira:before {
|
628 |
+
content: "\f299"; }
|
629 |
+
|
630 |
+
.fa-square-gitlab:before {
|
631 |
+
content: "\e5ae"; }
|
632 |
+
|
633 |
+
.fa-gitlab-square:before {
|
634 |
+
content: "\e5ae"; }
|
635 |
+
|
636 |
+
.fa-studiovinari:before {
|
637 |
+
content: "\f3f8"; }
|
638 |
+
|
639 |
+
.fa-pied-piper:before {
|
640 |
+
content: "\f2ae"; }
|
641 |
+
|
642 |
+
.fa-wordpress:before {
|
643 |
+
content: "\f19a"; }
|
644 |
+
|
645 |
+
.fa-product-hunt:before {
|
646 |
+
content: "\f288"; }
|
647 |
+
|
648 |
+
.fa-firefox:before {
|
649 |
+
content: "\f269"; }
|
650 |
+
|
651 |
+
.fa-linode:before {
|
652 |
+
content: "\f2b8"; }
|
653 |
+
|
654 |
+
.fa-goodreads:before {
|
655 |
+
content: "\f3a8"; }
|
656 |
+
|
657 |
+
.fa-square-odnoklassniki:before {
|
658 |
+
content: "\f264"; }
|
659 |
+
|
660 |
+
.fa-odnoklassniki-square:before {
|
661 |
+
content: "\f264"; }
|
662 |
+
|
663 |
+
.fa-jsfiddle:before {
|
664 |
+
content: "\f1cc"; }
|
665 |
+
|
666 |
+
.fa-sith:before {
|
667 |
+
content: "\f512"; }
|
668 |
+
|
669 |
+
.fa-themeisle:before {
|
670 |
+
content: "\f2b2"; }
|
671 |
+
|
672 |
+
.fa-page4:before {
|
673 |
+
content: "\f3d7"; }
|
674 |
+
|
675 |
+
.fa-hashnode:before {
|
676 |
+
content: "\e499"; }
|
677 |
+
|
678 |
+
.fa-react:before {
|
679 |
+
content: "\f41b"; }
|
680 |
+
|
681 |
+
.fa-cc-paypal:before {
|
682 |
+
content: "\f1f4"; }
|
683 |
+
|
684 |
+
.fa-squarespace:before {
|
685 |
+
content: "\f5be"; }
|
686 |
+
|
687 |
+
.fa-cc-stripe:before {
|
688 |
+
content: "\f1f5"; }
|
689 |
+
|
690 |
+
.fa-creative-commons-share:before {
|
691 |
+
content: "\f4f2"; }
|
692 |
+
|
693 |
+
.fa-bitcoin:before {
|
694 |
+
content: "\f379"; }
|
695 |
+
|
696 |
+
.fa-keycdn:before {
|
697 |
+
content: "\f3ba"; }
|
698 |
+
|
699 |
+
.fa-opera:before {
|
700 |
+
content: "\f26a"; }
|
701 |
+
|
702 |
+
.fa-itch-io:before {
|
703 |
+
content: "\f83a"; }
|
704 |
+
|
705 |
+
.fa-umbraco:before {
|
706 |
+
content: "\f8e8"; }
|
707 |
+
|
708 |
+
.fa-galactic-senate:before {
|
709 |
+
content: "\f50d"; }
|
710 |
+
|
711 |
+
.fa-ubuntu:before {
|
712 |
+
content: "\f7df"; }
|
713 |
+
|
714 |
+
.fa-draft2digital:before {
|
715 |
+
content: "\f396"; }
|
716 |
+
|
717 |
+
.fa-stripe:before {
|
718 |
+
content: "\f429"; }
|
719 |
+
|
720 |
+
.fa-houzz:before {
|
721 |
+
content: "\f27c"; }
|
722 |
+
|
723 |
+
.fa-gg:before {
|
724 |
+
content: "\f260"; }
|
725 |
+
|
726 |
+
.fa-dhl:before {
|
727 |
+
content: "\f790"; }
|
728 |
+
|
729 |
+
.fa-square-pinterest:before {
|
730 |
+
content: "\f0d3"; }
|
731 |
+
|
732 |
+
.fa-pinterest-square:before {
|
733 |
+
content: "\f0d3"; }
|
734 |
+
|
735 |
+
.fa-xing:before {
|
736 |
+
content: "\f168"; }
|
737 |
+
|
738 |
+
.fa-blackberry:before {
|
739 |
+
content: "\f37b"; }
|
740 |
+
|
741 |
+
.fa-creative-commons-pd:before {
|
742 |
+
content: "\f4ec"; }
|
743 |
+
|
744 |
+
.fa-playstation:before {
|
745 |
+
content: "\f3df"; }
|
746 |
+
|
747 |
+
.fa-quinscape:before {
|
748 |
+
content: "\f459"; }
|
749 |
+
|
750 |
+
.fa-less:before {
|
751 |
+
content: "\f41d"; }
|
752 |
+
|
753 |
+
.fa-blogger-b:before {
|
754 |
+
content: "\f37d"; }
|
755 |
+
|
756 |
+
.fa-opencart:before {
|
757 |
+
content: "\f23d"; }
|
758 |
+
|
759 |
+
.fa-vine:before {
|
760 |
+
content: "\f1ca"; }
|
761 |
+
|
762 |
+
.fa-paypal:before {
|
763 |
+
content: "\f1ed"; }
|
764 |
+
|
765 |
+
.fa-gitlab:before {
|
766 |
+
content: "\f296"; }
|
767 |
+
|
768 |
+
.fa-typo3:before {
|
769 |
+
content: "\f42b"; }
|
770 |
+
|
771 |
+
.fa-reddit-alien:before {
|
772 |
+
content: "\f281"; }
|
773 |
+
|
774 |
+
.fa-yahoo:before {
|
775 |
+
content: "\f19e"; }
|
776 |
+
|
777 |
+
.fa-dailymotion:before {
|
778 |
+
content: "\e052"; }
|
779 |
+
|
780 |
+
.fa-affiliatetheme:before {
|
781 |
+
content: "\f36b"; }
|
782 |
+
|
783 |
+
.fa-pied-piper-pp:before {
|
784 |
+
content: "\f1a7"; }
|
785 |
+
|
786 |
+
.fa-bootstrap:before {
|
787 |
+
content: "\f836"; }
|
788 |
+
|
789 |
+
.fa-odnoklassniki:before {
|
790 |
+
content: "\f263"; }
|
791 |
+
|
792 |
+
.fa-nfc-symbol:before {
|
793 |
+
content: "\e531"; }
|
794 |
+
|
795 |
+
.fa-ethereum:before {
|
796 |
+
content: "\f42e"; }
|
797 |
+
|
798 |
+
.fa-speaker-deck:before {
|
799 |
+
content: "\f83c"; }
|
800 |
+
|
801 |
+
.fa-creative-commons-nc-eu:before {
|
802 |
+
content: "\f4e9"; }
|
803 |
+
|
804 |
+
.fa-patreon:before {
|
805 |
+
content: "\f3d9"; }
|
806 |
+
|
807 |
+
.fa-avianex:before {
|
808 |
+
content: "\f374"; }
|
809 |
+
|
810 |
+
.fa-ello:before {
|
811 |
+
content: "\f5f1"; }
|
812 |
+
|
813 |
+
.fa-gofore:before {
|
814 |
+
content: "\f3a7"; }
|
815 |
+
|
816 |
+
.fa-bimobject:before {
|
817 |
+
content: "\f378"; }
|
818 |
+
|
819 |
+
.fa-facebook-f:before {
|
820 |
+
content: "\f39e"; }
|
821 |
+
|
822 |
+
.fa-square-google-plus:before {
|
823 |
+
content: "\f0d4"; }
|
824 |
+
|
825 |
+
.fa-google-plus-square:before {
|
826 |
+
content: "\f0d4"; }
|
827 |
+
|
828 |
+
.fa-mandalorian:before {
|
829 |
+
content: "\f50f"; }
|
830 |
+
|
831 |
+
.fa-first-order-alt:before {
|
832 |
+
content: "\f50a"; }
|
833 |
+
|
834 |
+
.fa-osi:before {
|
835 |
+
content: "\f41a"; }
|
836 |
+
|
837 |
+
.fa-google-wallet:before {
|
838 |
+
content: "\f1ee"; }
|
839 |
+
|
840 |
+
.fa-d-and-d-beyond:before {
|
841 |
+
content: "\f6ca"; }
|
842 |
+
|
843 |
+
.fa-periscope:before {
|
844 |
+
content: "\f3da"; }
|
845 |
+
|
846 |
+
.fa-fulcrum:before {
|
847 |
+
content: "\f50b"; }
|
848 |
+
|
849 |
+
.fa-cloudscale:before {
|
850 |
+
content: "\f383"; }
|
851 |
+
|
852 |
+
.fa-forumbee:before {
|
853 |
+
content: "\f211"; }
|
854 |
+
|
855 |
+
.fa-mizuni:before {
|
856 |
+
content: "\f3cc"; }
|
857 |
+
|
858 |
+
.fa-schlix:before {
|
859 |
+
content: "\f3ea"; }
|
860 |
+
|
861 |
+
.fa-square-xing:before {
|
862 |
+
content: "\f169"; }
|
863 |
+
|
864 |
+
.fa-xing-square:before {
|
865 |
+
content: "\f169"; }
|
866 |
+
|
867 |
+
.fa-bandcamp:before {
|
868 |
+
content: "\f2d5"; }
|
869 |
+
|
870 |
+
.fa-wpforms:before {
|
871 |
+
content: "\f298"; }
|
872 |
+
|
873 |
+
.fa-cloudversify:before {
|
874 |
+
content: "\f385"; }
|
875 |
+
|
876 |
+
.fa-usps:before {
|
877 |
+
content: "\f7e1"; }
|
878 |
+
|
879 |
+
.fa-megaport:before {
|
880 |
+
content: "\f5a3"; }
|
881 |
+
|
882 |
+
.fa-magento:before {
|
883 |
+
content: "\f3c4"; }
|
884 |
+
|
885 |
+
.fa-spotify:before {
|
886 |
+
content: "\f1bc"; }
|
887 |
+
|
888 |
+
.fa-optin-monster:before {
|
889 |
+
content: "\f23c"; }
|
890 |
+
|
891 |
+
.fa-fly:before {
|
892 |
+
content: "\f417"; }
|
893 |
+
|
894 |
+
.fa-aviato:before {
|
895 |
+
content: "\f421"; }
|
896 |
+
|
897 |
+
.fa-itunes:before {
|
898 |
+
content: "\f3b4"; }
|
899 |
+
|
900 |
+
.fa-cuttlefish:before {
|
901 |
+
content: "\f38c"; }
|
902 |
+
|
903 |
+
.fa-blogger:before {
|
904 |
+
content: "\f37c"; }
|
905 |
+
|
906 |
+
.fa-flickr:before {
|
907 |
+
content: "\f16e"; }
|
908 |
+
|
909 |
+
.fa-viber:before {
|
910 |
+
content: "\f409"; }
|
911 |
+
|
912 |
+
.fa-soundcloud:before {
|
913 |
+
content: "\f1be"; }
|
914 |
+
|
915 |
+
.fa-digg:before {
|
916 |
+
content: "\f1a6"; }
|
917 |
+
|
918 |
+
.fa-tencent-weibo:before {
|
919 |
+
content: "\f1d5"; }
|
920 |
+
|
921 |
+
.fa-symfony:before {
|
922 |
+
content: "\f83d"; }
|
923 |
+
|
924 |
+
.fa-maxcdn:before {
|
925 |
+
content: "\f136"; }
|
926 |
+
|
927 |
+
.fa-etsy:before {
|
928 |
+
content: "\f2d7"; }
|
929 |
+
|
930 |
+
.fa-facebook-messenger:before {
|
931 |
+
content: "\f39f"; }
|
932 |
+
|
933 |
+
.fa-audible:before {
|
934 |
+
content: "\f373"; }
|
935 |
+
|
936 |
+
.fa-think-peaks:before {
|
937 |
+
content: "\f731"; }
|
938 |
+
|
939 |
+
.fa-bilibili:before {
|
940 |
+
content: "\e3d9"; }
|
941 |
+
|
942 |
+
.fa-erlang:before {
|
943 |
+
content: "\f39d"; }
|
944 |
+
|
945 |
+
.fa-x-twitter:before {
|
946 |
+
content: "\e61b"; }
|
947 |
+
|
948 |
+
.fa-cotton-bureau:before {
|
949 |
+
content: "\f89e"; }
|
950 |
+
|
951 |
+
.fa-dashcube:before {
|
952 |
+
content: "\f210"; }
|
953 |
+
|
954 |
+
.fa-42-group:before {
|
955 |
+
content: "\e080"; }
|
956 |
+
|
957 |
+
.fa-innosoft:before {
|
958 |
+
content: "\e080"; }
|
959 |
+
|
960 |
+
.fa-stack-exchange:before {
|
961 |
+
content: "\f18d"; }
|
962 |
+
|
963 |
+
.fa-elementor:before {
|
964 |
+
content: "\f430"; }
|
965 |
+
|
966 |
+
.fa-square-pied-piper:before {
|
967 |
+
content: "\e01e"; }
|
968 |
+
|
969 |
+
.fa-pied-piper-square:before {
|
970 |
+
content: "\e01e"; }
|
971 |
+
|
972 |
+
.fa-creative-commons-nd:before {
|
973 |
+
content: "\f4eb"; }
|
974 |
+
|
975 |
+
.fa-palfed:before {
|
976 |
+
content: "\f3d8"; }
|
977 |
+
|
978 |
+
.fa-superpowers:before {
|
979 |
+
content: "\f2dd"; }
|
980 |
+
|
981 |
+
.fa-resolving:before {
|
982 |
+
content: "\f3e7"; }
|
983 |
+
|
984 |
+
.fa-xbox:before {
|
985 |
+
content: "\f412"; }
|
986 |
+
|
987 |
+
.fa-searchengin:before {
|
988 |
+
content: "\f3eb"; }
|
989 |
+
|
990 |
+
.fa-tiktok:before {
|
991 |
+
content: "\e07b"; }
|
992 |
+
|
993 |
+
.fa-square-facebook:before {
|
994 |
+
content: "\f082"; }
|
995 |
+
|
996 |
+
.fa-facebook-square:before {
|
997 |
+
content: "\f082"; }
|
998 |
+
|
999 |
+
.fa-renren:before {
|
1000 |
+
content: "\f18b"; }
|
1001 |
+
|
1002 |
+
.fa-linux:before {
|
1003 |
+
content: "\f17c"; }
|
1004 |
+
|
1005 |
+
.fa-glide:before {
|
1006 |
+
content: "\f2a5"; }
|
1007 |
+
|
1008 |
+
.fa-linkedin:before {
|
1009 |
+
content: "\f08c"; }
|
1010 |
+
|
1011 |
+
.fa-hubspot:before {
|
1012 |
+
content: "\f3b2"; }
|
1013 |
+
|
1014 |
+
.fa-deploydog:before {
|
1015 |
+
content: "\f38e"; }
|
1016 |
+
|
1017 |
+
.fa-twitch:before {
|
1018 |
+
content: "\f1e8"; }
|
1019 |
+
|
1020 |
+
.fa-ravelry:before {
|
1021 |
+
content: "\f2d9"; }
|
1022 |
+
|
1023 |
+
.fa-mixer:before {
|
1024 |
+
content: "\e056"; }
|
1025 |
+
|
1026 |
+
.fa-square-lastfm:before {
|
1027 |
+
content: "\f203"; }
|
1028 |
+
|
1029 |
+
.fa-lastfm-square:before {
|
1030 |
+
content: "\f203"; }
|
1031 |
+
|
1032 |
+
.fa-vimeo:before {
|
1033 |
+
content: "\f40a"; }
|
1034 |
+
|
1035 |
+
.fa-mendeley:before {
|
1036 |
+
content: "\f7b3"; }
|
1037 |
+
|
1038 |
+
.fa-uniregistry:before {
|
1039 |
+
content: "\f404"; }
|
1040 |
+
|
1041 |
+
.fa-figma:before {
|
1042 |
+
content: "\f799"; }
|
1043 |
+
|
1044 |
+
.fa-creative-commons-remix:before {
|
1045 |
+
content: "\f4ee"; }
|
1046 |
+
|
1047 |
+
.fa-cc-amazon-pay:before {
|
1048 |
+
content: "\f42d"; }
|
1049 |
+
|
1050 |
+
.fa-dropbox:before {
|
1051 |
+
content: "\f16b"; }
|
1052 |
+
|
1053 |
+
.fa-instagram:before {
|
1054 |
+
content: "\f16d"; }
|
1055 |
+
|
1056 |
+
.fa-cmplid:before {
|
1057 |
+
content: "\e360"; }
|
1058 |
+
|
1059 |
+
.fa-facebook:before {
|
1060 |
+
content: "\f09a"; }
|
1061 |
+
|
1062 |
+
.fa-gripfire:before {
|
1063 |
+
content: "\f3ac"; }
|
1064 |
+
|
1065 |
+
.fa-jedi-order:before {
|
1066 |
+
content: "\f50e"; }
|
1067 |
+
|
1068 |
+
.fa-uikit:before {
|
1069 |
+
content: "\f403"; }
|
1070 |
+
|
1071 |
+
.fa-fort-awesome-alt:before {
|
1072 |
+
content: "\f3a3"; }
|
1073 |
+
|
1074 |
+
.fa-phabricator:before {
|
1075 |
+
content: "\f3db"; }
|
1076 |
+
|
1077 |
+
.fa-ussunnah:before {
|
1078 |
+
content: "\f407"; }
|
1079 |
+
|
1080 |
+
.fa-earlybirds:before {
|
1081 |
+
content: "\f39a"; }
|
1082 |
+
|
1083 |
+
.fa-trade-federation:before {
|
1084 |
+
content: "\f513"; }
|
1085 |
+
|
1086 |
+
.fa-autoprefixer:before {
|
1087 |
+
content: "\f41c"; }
|
1088 |
+
|
1089 |
+
.fa-whatsapp:before {
|
1090 |
+
content: "\f232"; }
|
1091 |
+
|
1092 |
+
.fa-slideshare:before {
|
1093 |
+
content: "\f1e7"; }
|
1094 |
+
|
1095 |
+
.fa-google-play:before {
|
1096 |
+
content: "\f3ab"; }
|
1097 |
+
|
1098 |
+
.fa-viadeo:before {
|
1099 |
+
content: "\f2a9"; }
|
1100 |
+
|
1101 |
+
.fa-line:before {
|
1102 |
+
content: "\f3c0"; }
|
1103 |
+
|
1104 |
+
.fa-google-drive:before {
|
1105 |
+
content: "\f3aa"; }
|
1106 |
+
|
1107 |
+
.fa-servicestack:before {
|
1108 |
+
content: "\f3ec"; }
|
1109 |
+
|
1110 |
+
.fa-simplybuilt:before {
|
1111 |
+
content: "\f215"; }
|
1112 |
+
|
1113 |
+
.fa-bitbucket:before {
|
1114 |
+
content: "\f171"; }
|
1115 |
+
|
1116 |
+
.fa-imdb:before {
|
1117 |
+
content: "\f2d8"; }
|
1118 |
+
|
1119 |
+
.fa-deezer:before {
|
1120 |
+
content: "\e077"; }
|
1121 |
+
|
1122 |
+
.fa-raspberry-pi:before {
|
1123 |
+
content: "\f7bb"; }
|
1124 |
+
|
1125 |
+
.fa-jira:before {
|
1126 |
+
content: "\f7b1"; }
|
1127 |
+
|
1128 |
+
.fa-docker:before {
|
1129 |
+
content: "\f395"; }
|
1130 |
+
|
1131 |
+
.fa-screenpal:before {
|
1132 |
+
content: "\e570"; }
|
1133 |
+
|
1134 |
+
.fa-bluetooth:before {
|
1135 |
+
content: "\f293"; }
|
1136 |
+
|
1137 |
+
.fa-gitter:before {
|
1138 |
+
content: "\f426"; }
|
1139 |
+
|
1140 |
+
.fa-d-and-d:before {
|
1141 |
+
content: "\f38d"; }
|
1142 |
+
|
1143 |
+
.fa-microblog:before {
|
1144 |
+
content: "\e01a"; }
|
1145 |
+
|
1146 |
+
.fa-cc-diners-club:before {
|
1147 |
+
content: "\f24c"; }
|
1148 |
+
|
1149 |
+
.fa-gg-circle:before {
|
1150 |
+
content: "\f261"; }
|
1151 |
+
|
1152 |
+
.fa-pied-piper-hat:before {
|
1153 |
+
content: "\f4e5"; }
|
1154 |
+
|
1155 |
+
.fa-kickstarter-k:before {
|
1156 |
+
content: "\f3bc"; }
|
1157 |
+
|
1158 |
+
.fa-yandex:before {
|
1159 |
+
content: "\f413"; }
|
1160 |
+
|
1161 |
+
.fa-readme:before {
|
1162 |
+
content: "\f4d5"; }
|
1163 |
+
|
1164 |
+
.fa-html5:before {
|
1165 |
+
content: "\f13b"; }
|
1166 |
+
|
1167 |
+
.fa-sellsy:before {
|
1168 |
+
content: "\f213"; }
|
1169 |
+
|
1170 |
+
.fa-sass:before {
|
1171 |
+
content: "\f41e"; }
|
1172 |
+
|
1173 |
+
.fa-wirsindhandwerk:before {
|
1174 |
+
content: "\e2d0"; }
|
1175 |
+
|
1176 |
+
.fa-wsh:before {
|
1177 |
+
content: "\e2d0"; }
|
1178 |
+
|
1179 |
+
.fa-buromobelexperte:before {
|
1180 |
+
content: "\f37f"; }
|
1181 |
+
|
1182 |
+
.fa-salesforce:before {
|
1183 |
+
content: "\f83b"; }
|
1184 |
+
|
1185 |
+
.fa-octopus-deploy:before {
|
1186 |
+
content: "\e082"; }
|
1187 |
+
|
1188 |
+
.fa-medapps:before {
|
1189 |
+
content: "\f3c6"; }
|
1190 |
+
|
1191 |
+
.fa-ns8:before {
|
1192 |
+
content: "\f3d5"; }
|
1193 |
+
|
1194 |
+
.fa-pinterest-p:before {
|
1195 |
+
content: "\f231"; }
|
1196 |
+
|
1197 |
+
.fa-apper:before {
|
1198 |
+
content: "\f371"; }
|
1199 |
+
|
1200 |
+
.fa-fort-awesome:before {
|
1201 |
+
content: "\f286"; }
|
1202 |
+
|
1203 |
+
.fa-waze:before {
|
1204 |
+
content: "\f83f"; }
|
1205 |
+
|
1206 |
+
.fa-cc-jcb:before {
|
1207 |
+
content: "\f24b"; }
|
1208 |
+
|
1209 |
+
.fa-snapchat:before {
|
1210 |
+
content: "\f2ab"; }
|
1211 |
+
|
1212 |
+
.fa-snapchat-ghost:before {
|
1213 |
+
content: "\f2ab"; }
|
1214 |
+
|
1215 |
+
.fa-fantasy-flight-games:before {
|
1216 |
+
content: "\f6dc"; }
|
1217 |
+
|
1218 |
+
.fa-rust:before {
|
1219 |
+
content: "\e07a"; }
|
1220 |
+
|
1221 |
+
.fa-wix:before {
|
1222 |
+
content: "\f5cf"; }
|
1223 |
+
|
1224 |
+
.fa-square-behance:before {
|
1225 |
+
content: "\f1b5"; }
|
1226 |
+
|
1227 |
+
.fa-behance-square:before {
|
1228 |
+
content: "\f1b5"; }
|
1229 |
+
|
1230 |
+
.fa-supple:before {
|
1231 |
+
content: "\f3f9"; }
|
1232 |
+
|
1233 |
+
.fa-rebel:before {
|
1234 |
+
content: "\f1d0"; }
|
1235 |
+
|
1236 |
+
.fa-css3:before {
|
1237 |
+
content: "\f13c"; }
|
1238 |
+
|
1239 |
+
.fa-staylinked:before {
|
1240 |
+
content: "\f3f5"; }
|
1241 |
+
|
1242 |
+
.fa-kaggle:before {
|
1243 |
+
content: "\f5fa"; }
|
1244 |
+
|
1245 |
+
.fa-space-awesome:before {
|
1246 |
+
content: "\e5ac"; }
|
1247 |
+
|
1248 |
+
.fa-deviantart:before {
|
1249 |
+
content: "\f1bd"; }
|
1250 |
+
|
1251 |
+
.fa-cpanel:before {
|
1252 |
+
content: "\f388"; }
|
1253 |
+
|
1254 |
+
.fa-goodreads-g:before {
|
1255 |
+
content: "\f3a9"; }
|
1256 |
+
|
1257 |
+
.fa-square-git:before {
|
1258 |
+
content: "\f1d2"; }
|
1259 |
+
|
1260 |
+
.fa-git-square:before {
|
1261 |
+
content: "\f1d2"; }
|
1262 |
+
|
1263 |
+
.fa-square-tumblr:before {
|
1264 |
+
content: "\f174"; }
|
1265 |
+
|
1266 |
+
.fa-tumblr-square:before {
|
1267 |
+
content: "\f174"; }
|
1268 |
+
|
1269 |
+
.fa-trello:before {
|
1270 |
+
content: "\f181"; }
|
1271 |
+
|
1272 |
+
.fa-creative-commons-nc-jp:before {
|
1273 |
+
content: "\f4ea"; }
|
1274 |
+
|
1275 |
+
.fa-get-pocket:before {
|
1276 |
+
content: "\f265"; }
|
1277 |
+
|
1278 |
+
.fa-perbyte:before {
|
1279 |
+
content: "\e083"; }
|
1280 |
+
|
1281 |
+
.fa-grunt:before {
|
1282 |
+
content: "\f3ad"; }
|
1283 |
+
|
1284 |
+
.fa-weebly:before {
|
1285 |
+
content: "\f5cc"; }
|
1286 |
+
|
1287 |
+
.fa-connectdevelop:before {
|
1288 |
+
content: "\f20e"; }
|
1289 |
+
|
1290 |
+
.fa-leanpub:before {
|
1291 |
+
content: "\f212"; }
|
1292 |
+
|
1293 |
+
.fa-black-tie:before {
|
1294 |
+
content: "\f27e"; }
|
1295 |
+
|
1296 |
+
.fa-themeco:before {
|
1297 |
+
content: "\f5c6"; }
|
1298 |
+
|
1299 |
+
.fa-python:before {
|
1300 |
+
content: "\f3e2"; }
|
1301 |
+
|
1302 |
+
.fa-android:before {
|
1303 |
+
content: "\f17b"; }
|
1304 |
+
|
1305 |
+
.fa-bots:before {
|
1306 |
+
content: "\e340"; }
|
1307 |
+
|
1308 |
+
.fa-free-code-camp:before {
|
1309 |
+
content: "\f2c5"; }
|
1310 |
+
|
1311 |
+
.fa-hornbill:before {
|
1312 |
+
content: "\f592"; }
|
1313 |
+
|
1314 |
+
.fa-js:before {
|
1315 |
+
content: "\f3b8"; }
|
1316 |
+
|
1317 |
+
.fa-ideal:before {
|
1318 |
+
content: "\e013"; }
|
1319 |
+
|
1320 |
+
.fa-git:before {
|
1321 |
+
content: "\f1d3"; }
|
1322 |
+
|
1323 |
+
.fa-dev:before {
|
1324 |
+
content: "\f6cc"; }
|
1325 |
+
|
1326 |
+
.fa-sketch:before {
|
1327 |
+
content: "\f7c6"; }
|
1328 |
+
|
1329 |
+
.fa-yandex-international:before {
|
1330 |
+
content: "\f414"; }
|
1331 |
+
|
1332 |
+
.fa-cc-amex:before {
|
1333 |
+
content: "\f1f3"; }
|
1334 |
+
|
1335 |
+
.fa-uber:before {
|
1336 |
+
content: "\f402"; }
|
1337 |
+
|
1338 |
+
.fa-github:before {
|
1339 |
+
content: "\f09b"; }
|
1340 |
+
|
1341 |
+
.fa-php:before {
|
1342 |
+
content: "\f457"; }
|
1343 |
+
|
1344 |
+
.fa-alipay:before {
|
1345 |
+
content: "\f642"; }
|
1346 |
+
|
1347 |
+
.fa-youtube:before {
|
1348 |
+
content: "\f167"; }
|
1349 |
+
|
1350 |
+
.fa-skyatlas:before {
|
1351 |
+
content: "\f216"; }
|
1352 |
+
|
1353 |
+
.fa-firefox-browser:before {
|
1354 |
+
content: "\e007"; }
|
1355 |
+
|
1356 |
+
.fa-replyd:before {
|
1357 |
+
content: "\f3e6"; }
|
1358 |
+
|
1359 |
+
.fa-suse:before {
|
1360 |
+
content: "\f7d6"; }
|
1361 |
+
|
1362 |
+
.fa-jenkins:before {
|
1363 |
+
content: "\f3b6"; }
|
1364 |
+
|
1365 |
+
.fa-twitter:before {
|
1366 |
+
content: "\f099"; }
|
1367 |
+
|
1368 |
+
.fa-rockrms:before {
|
1369 |
+
content: "\f3e9"; }
|
1370 |
+
|
1371 |
+
.fa-pinterest:before {
|
1372 |
+
content: "\f0d2"; }
|
1373 |
+
|
1374 |
+
.fa-buffer:before {
|
1375 |
+
content: "\f837"; }
|
1376 |
+
|
1377 |
+
.fa-npm:before {
|
1378 |
+
content: "\f3d4"; }
|
1379 |
+
|
1380 |
+
.fa-yammer:before {
|
1381 |
+
content: "\f840"; }
|
1382 |
+
|
1383 |
+
.fa-btc:before {
|
1384 |
+
content: "\f15a"; }
|
1385 |
+
|
1386 |
+
.fa-dribbble:before {
|
1387 |
+
content: "\f17d"; }
|
1388 |
+
|
1389 |
+
.fa-stumbleupon-circle:before {
|
1390 |
+
content: "\f1a3"; }
|
1391 |
+
|
1392 |
+
.fa-internet-explorer:before {
|
1393 |
+
content: "\f26b"; }
|
1394 |
+
|
1395 |
+
.fa-stubber:before {
|
1396 |
+
content: "\e5c7"; }
|
1397 |
+
|
1398 |
+
.fa-telegram:before {
|
1399 |
+
content: "\f2c6"; }
|
1400 |
+
|
1401 |
+
.fa-telegram-plane:before {
|
1402 |
+
content: "\f2c6"; }
|
1403 |
+
|
1404 |
+
.fa-old-republic:before {
|
1405 |
+
content: "\f510"; }
|
1406 |
+
|
1407 |
+
.fa-odysee:before {
|
1408 |
+
content: "\e5c6"; }
|
1409 |
+
|
1410 |
+
.fa-square-whatsapp:before {
|
1411 |
+
content: "\f40c"; }
|
1412 |
+
|
1413 |
+
.fa-whatsapp-square:before {
|
1414 |
+
content: "\f40c"; }
|
1415 |
+
|
1416 |
+
.fa-node-js:before {
|
1417 |
+
content: "\f3d3"; }
|
1418 |
+
|
1419 |
+
.fa-edge-legacy:before {
|
1420 |
+
content: "\e078"; }
|
1421 |
+
|
1422 |
+
.fa-slack:before {
|
1423 |
+
content: "\f198"; }
|
1424 |
+
|
1425 |
+
.fa-slack-hash:before {
|
1426 |
+
content: "\f198"; }
|
1427 |
+
|
1428 |
+
.fa-medrt:before {
|
1429 |
+
content: "\f3c8"; }
|
1430 |
+
|
1431 |
+
.fa-usb:before {
|
1432 |
+
content: "\f287"; }
|
1433 |
+
|
1434 |
+
.fa-tumblr:before {
|
1435 |
+
content: "\f173"; }
|
1436 |
+
|
1437 |
+
.fa-vaadin:before {
|
1438 |
+
content: "\f408"; }
|
1439 |
+
|
1440 |
+
.fa-quora:before {
|
1441 |
+
content: "\f2c4"; }
|
1442 |
+
|
1443 |
+
.fa-square-x-twitter:before {
|
1444 |
+
content: "\e61a"; }
|
1445 |
+
|
1446 |
+
.fa-reacteurope:before {
|
1447 |
+
content: "\f75d"; }
|
1448 |
+
|
1449 |
+
.fa-medium:before {
|
1450 |
+
content: "\f23a"; }
|
1451 |
+
|
1452 |
+
.fa-medium-m:before {
|
1453 |
+
content: "\f23a"; }
|
1454 |
+
|
1455 |
+
.fa-amilia:before {
|
1456 |
+
content: "\f36d"; }
|
1457 |
+
|
1458 |
+
.fa-mixcloud:before {
|
1459 |
+
content: "\f289"; }
|
1460 |
+
|
1461 |
+
.fa-flipboard:before {
|
1462 |
+
content: "\f44d"; }
|
1463 |
+
|
1464 |
+
.fa-viacoin:before {
|
1465 |
+
content: "\f237"; }
|
1466 |
+
|
1467 |
+
.fa-critical-role:before {
|
1468 |
+
content: "\f6c9"; }
|
1469 |
+
|
1470 |
+
.fa-sitrox:before {
|
1471 |
+
content: "\e44a"; }
|
1472 |
+
|
1473 |
+
.fa-discourse:before {
|
1474 |
+
content: "\f393"; }
|
1475 |
+
|
1476 |
+
.fa-joomla:before {
|
1477 |
+
content: "\f1aa"; }
|
1478 |
+
|
1479 |
+
.fa-mastodon:before {
|
1480 |
+
content: "\f4f6"; }
|
1481 |
+
|
1482 |
+
.fa-airbnb:before {
|
1483 |
+
content: "\f834"; }
|
1484 |
+
|
1485 |
+
.fa-wolf-pack-battalion:before {
|
1486 |
+
content: "\f514"; }
|
1487 |
+
|
1488 |
+
.fa-buy-n-large:before {
|
1489 |
+
content: "\f8a6"; }
|
1490 |
+
|
1491 |
+
.fa-gulp:before {
|
1492 |
+
content: "\f3ae"; }
|
1493 |
+
|
1494 |
+
.fa-creative-commons-sampling-plus:before {
|
1495 |
+
content: "\f4f1"; }
|
1496 |
+
|
1497 |
+
.fa-strava:before {
|
1498 |
+
content: "\f428"; }
|
1499 |
+
|
1500 |
+
.fa-ember:before {
|
1501 |
+
content: "\f423"; }
|
1502 |
+
|
1503 |
+
.fa-canadian-maple-leaf:before {
|
1504 |
+
content: "\f785"; }
|
1505 |
+
|
1506 |
+
.fa-teamspeak:before {
|
1507 |
+
content: "\f4f9"; }
|
1508 |
+
|
1509 |
+
.fa-pushed:before {
|
1510 |
+
content: "\f3e1"; }
|
1511 |
+
|
1512 |
+
.fa-wordpress-simple:before {
|
1513 |
+
content: "\f411"; }
|
1514 |
+
|
1515 |
+
.fa-nutritionix:before {
|
1516 |
+
content: "\f3d6"; }
|
1517 |
+
|
1518 |
+
.fa-wodu:before {
|
1519 |
+
content: "\e088"; }
|
1520 |
+
|
1521 |
+
.fa-google-pay:before {
|
1522 |
+
content: "\e079"; }
|
1523 |
+
|
1524 |
+
.fa-intercom:before {
|
1525 |
+
content: "\f7af"; }
|
1526 |
+
|
1527 |
+
.fa-zhihu:before {
|
1528 |
+
content: "\f63f"; }
|
1529 |
+
|
1530 |
+
.fa-korvue:before {
|
1531 |
+
content: "\f42f"; }
|
1532 |
+
|
1533 |
+
.fa-pix:before {
|
1534 |
+
content: "\e43a"; }
|
1535 |
+
|
1536 |
+
.fa-steam-symbol:before {
|
1537 |
+
content: "\f3f6"; }
|
static/assets/FontAwesome/css/brands.min.css
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Font Awesome Free 6.4.2 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 2023 Fonticons, Inc.
|
5 |
+
*/
|
6 |
+
:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero:before{content:"\f3d0"}.fa-hooli:before{content:"\f427"}.fa-yelp:before{content:"\f1e9"}.fa-cc-visa:before{content:"\f1f0"}.fa-lastfm:before{content:"\f202"}.fa-shopware:before{content:"\f5b5"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-aws:before{content:"\f375"}.fa-redhat:before{content:"\f7bc"}.fa-yoast:before{content:"\f2b1"}.fa-cloudflare:before{content:"\e07d"}.fa-ups:before{content:"\f7e0"}.fa-wpexplorer:before{content:"\f2de"}.fa-dyalog:before{content:"\f399"}.fa-bity:before{content:"\f37a"}.fa-stackpath:before{content:"\f842"}.fa-buysellads:before{content:"\f20d"}.fa-first-order:before{content:"\f2b0"}.fa-modx:before{content:"\f285"}.fa-guilded:before{content:"\e07e"}.fa-vnv:before{content:"\f40b"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-microsoft:before{content:"\f3ca"}.fa-qq:before{content:"\f1d6"}.fa-orcid:before{content:"\f8d2"}.fa-java:before{content:"\f4e4"}.fa-invision:before{content:"\f7b0"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-centercode:before{content:"\f380"}.fa-glide-g:before{content:"\f2a6"}.fa-drupal:before{content:"\f1a9"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-unity:before{content:"\e049"}.fa-whmcs:before{content:"\f40d"}.fa-rocketchat:before{content:"\f3e8"}.fa-vk:before{content:"\f189"}.fa-untappd:before{content:"\f405"}.fa-mailchimp:before{content:"\f59e"}.fa-css3-alt:before{content:"\f38b"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-vimeo-v:before{content:"\f27d"}.fa-contao:before{content:"\f26d"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-deskpro:before{content:"\f38f"}.fa-sistrix:before{content:"\f3ee"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-battle-net:before{content:"\f835"}.fa-the-red-yeti:before{content:"\f69d"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-edge:before{content:"\f282"}.fa-threads:before{content:"\e618"}.fa-napster:before{content:"\f3d2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-google-plus-g:before{content:"\f0d5"}.fa-artstation:before{content:"\f77a"}.fa-markdown:before{content:"\f60f"}.fa-sourcetree:before{content:"\f7d3"}.fa-google-plus:before{content:"\f2b3"}.fa-diaspora:before{content:"\f791"}.fa-foursquare:before{content:"\f180"}.fa-stack-overflow:before{content:"\f16c"}.fa-github-alt:before{content:"\f113"}.fa-phoenix-squadron:before{content:"\f511"}.fa-pagelines:before{content:"\f18c"}.fa-algolia:before{content:"\f36c"}.fa-red-river:before{content:"\f3e3"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-safari:before{content:"\f267"}.fa-google:before{content:"\f1a0"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-atlassian:before{content:"\f77b"}.fa-linkedin-in:before{content:"\f0e1"}.fa-digital-ocean:before{content:"\f391"}.fa-nimblr:before{content:"\f5a8"}.fa-chromecast:before{content:"\f838"}.fa-evernote:before{content:"\f839"}.fa-hacker-news:before{content:"\f1d4"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-adversal:before{content:"\f36a"}.fa-creative-commons:before{content:"\f25e"}.fa-watchman-monitoring:before{content:"\e087"}.fa-fonticons:before{content:"\f280"}.fa-weixin:before{content:"\f1d7"}.fa-shirtsinbulk:before{content:"\f214"}.fa-codepen:before{content:"\f1cb"}.fa-git-alt:before{content:"\f841"}.fa-lyft:before{content:"\f3c3"}.fa-rev:before{content:"\f5b2"}.fa-windows:before{content:"\f17a"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-meetup:before{content:"\f2e0"}.fa-centos:before{content:"\f789"}.fa-adn:before{content:"\f170"}.fa-cloudsmith:before{content:"\f384"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-codiepie:before{content:"\f284"}.fa-node:before{content:"\f419"}.fa-mix:before{content:"\f3cb"}.fa-steam:before{content:"\f1b6"}.fa-cc-apple-pay:before{content:"\f416"}.fa-scribd:before{content:"\f28a"}.fa-debian:before{content:"\e60b"}.fa-openid:before{content:"\f19b"}.fa-instalod:before{content:"\e081"}.fa-expeditedssl:before{content:"\f23e"}.fa-sellcast:before{content:"\f2da"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-r-project:before{content:"\f4f7"}.fa-delicious:before{content:"\f1a5"}.fa-freebsd:before{content:"\f3a4"}.fa-vuejs:before{content:"\f41f"}.fa-accusoft:before{content:"\f369"}.fa-ioxhost:before{content:"\f208"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-app-store:before{content:"\f36f"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-itunes-note:before{content:"\f3b5"}.fa-golang:before{content:"\e40f"}.fa-kickstarter:before{content:"\f3bb"}.fa-grav:before{content:"\f2d6"}.fa-weibo:before{content:"\f18a"}.fa-uncharted:before{content:"\e084"}.fa-firstdraft:before{content:"\f3a1"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-wikipedia-w:before{content:"\f266"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-angellist:before{content:"\f209"}.fa-galactic-republic:before{content:"\f50c"}.fa-nfc-directional:before{content:"\e530"}.fa-skype:before{content:"\f17e"}.fa-joget:before{content:"\f3b7"}.fa-fedora:before{content:"\f798"}.fa-stripe-s:before{content:"\f42a"}.fa-meta:before{content:"\e49b"}.fa-laravel:before{content:"\f3bd"}.fa-hotjar:before{content:"\f3b1"}.fa-bluetooth-b:before{content:"\f294"}.fa-sticker-mule:before{content:"\f3f7"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-hips:before{content:"\f452"}.fa-behance:before{content:"\f1b4"}.fa-reddit:before{content:"\f1a1"}.fa-discord:before{content:"\f392"}.fa-chrome:before{content:"\f268"}.fa-app-store-ios:before{content:"\f370"}.fa-cc-discover:before{content:"\f1f2"}.fa-wpbeginner:before{content:"\f297"}.fa-confluence:before{content:"\f78d"}.fa-mdb:before{content:"\f8ca"}.fa-dochub:before{content:"\f394"}.fa-accessible-icon:before{content:"\f368"}.fa-ebay:before{content:"\f4f4"}.fa-amazon:before{content:"\f270"}.fa-unsplash:before{content:"\e07c"}.fa-yarn:before{content:"\f7e3"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-500px:before{content:"\f26e"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-asymmetrik:before{content:"\f372"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-gratipay:before{content:"\f184"}.fa-apple:before{content:"\f179"}.fa-hive:before{content:"\e07f"}.fa-gitkraken:before{content:"\f3a6"}.fa-keybase:before{content:"\f4f5"}.fa-apple-pay:before{content:"\f415"}.fa-padlet:before{content:"\e4a0"}.fa-amazon-pay:before{content:"\f42c"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-stumbleupon:before{content:"\f1a4"}.fa-fedex:before{content:"\f797"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-shopify:before{content:"\e057"}.fa-neos:before{content:"\f612"}.fa-square-threads:before{content:"\e619"}.fa-hackerrank:before{content:"\f5f7"}.fa-researchgate:before{content:"\f4f8"}.fa-swift:before{content:"\f8e1"}.fa-angular:before{content:"\f420"}.fa-speakap:before{content:"\f3f3"}.fa-angrycreative:before{content:"\f36e"}.fa-y-combinator:before{content:"\f23b"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-studiovinari:before{content:"\f3f8"}.fa-pied-piper:before{content:"\f2ae"}.fa-wordpress:before{content:"\f19a"}.fa-product-hunt:before{content:"\f288"}.fa-firefox:before{content:"\f269"}.fa-linode:before{content:"\f2b8"}.fa-goodreads:before{content:"\f3a8"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-jsfiddle:before{content:"\f1cc"}.fa-sith:before{content:"\f512"}.fa-themeisle:before{content:"\f2b2"}.fa-page4:before{content:"\f3d7"}.fa-hashnode:before{content:"\e499"}.fa-react:before{content:"\f41b"}.fa-cc-paypal:before{content:"\f1f4"}.fa-squarespace:before{content:"\f5be"}.fa-cc-stripe:before{content:"\f1f5"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-bitcoin:before{content:"\f379"}.fa-keycdn:before{content:"\f3ba"}.fa-opera:before{content:"\f26a"}.fa-itch-io:before{content:"\f83a"}.fa-umbraco:before{content:"\f8e8"}.fa-galactic-senate:before{content:"\f50d"}.fa-ubuntu:before{content:"\f7df"}.fa-draft2digital:before{content:"\f396"}.fa-stripe:before{content:"\f429"}.fa-houzz:before{content:"\f27c"}.fa-gg:before{content:"\f260"}.fa-dhl:before{content:"\f790"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-xing:before{content:"\f168"}.fa-blackberry:before{content:"\f37b"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-playstation:before{content:"\f3df"}.fa-quinscape:before{content:"\f459"}.fa-less:before{content:"\f41d"}.fa-blogger-b:before{content:"\f37d"}.fa-opencart:before{content:"\f23d"}.fa-vine:before{content:"\f1ca"}.fa-paypal:before{content:"\f1ed"}.fa-gitlab:before{content:"\f296"}.fa-typo3:before{content:"\f42b"}.fa-reddit-alien:before{content:"\f281"}.fa-yahoo:before{content:"\f19e"}.fa-dailymotion:before{content:"\e052"}.fa-affiliatetheme:before{content:"\f36b"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-bootstrap:before{content:"\f836"}.fa-odnoklassniki:before{content:"\f263"}.fa-nfc-symbol:before{content:"\e531"}.fa-ethereum:before{content:"\f42e"}.fa-speaker-deck:before{content:"\f83c"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-patreon:before{content:"\f3d9"}.fa-avianex:before{content:"\f374"}.fa-ello:before{content:"\f5f1"}.fa-gofore:before{content:"\f3a7"}.fa-bimobject:before{content:"\f378"}.fa-facebook-f:before{content:"\f39e"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-mandalorian:before{content:"\f50f"}.fa-first-order-alt:before{content:"\f50a"}.fa-osi:before{content:"\f41a"}.fa-google-wallet:before{content:"\f1ee"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-periscope:before{content:"\f3da"}.fa-fulcrum:before{content:"\f50b"}.fa-cloudscale:before{content:"\f383"}.fa-forumbee:before{content:"\f211"}.fa-mizuni:before{content:"\f3cc"}.fa-schlix:before{content:"\f3ea"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-bandcamp:before{content:"\f2d5"}.fa-wpforms:before{content:"\f298"}.fa-cloudversify:before{content:"\f385"}.fa-usps:before{content:"\f7e1"}.fa-megaport:before{content:"\f5a3"}.fa-magento:before{content:"\f3c4"}.fa-spotify:before{content:"\f1bc"}.fa-optin-monster:before{content:"\f23c"}.fa-fly:before{content:"\f417"}.fa-aviato:before{content:"\f421"}.fa-itunes:before{content:"\f3b4"}.fa-cuttlefish:before{content:"\f38c"}.fa-blogger:before{content:"\f37c"}.fa-flickr:before{content:"\f16e"}.fa-viber:before{content:"\f409"}.fa-soundcloud:before{content:"\f1be"}.fa-digg:before{content:"\f1a6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-symfony:before{content:"\f83d"}.fa-maxcdn:before{content:"\f136"}.fa-etsy:before{content:"\f2d7"}.fa-facebook-messenger:before{content:"\f39f"}.fa-audible:before{content:"\f373"}.fa-think-peaks:before{content:"\f731"}.fa-bilibili:before{content:"\e3d9"}.fa-erlang:before{content:"\f39d"}.fa-x-twitter:before{content:"\e61b"}.fa-cotton-bureau:before{content:"\f89e"}.fa-dashcube:before{content:"\f210"}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-stack-exchange:before{content:"\f18d"}.fa-elementor:before{content:"\f430"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-palfed:before{content:"\f3d8"}.fa-superpowers:before{content:"\f2dd"}.fa-resolving:before{content:"\f3e7"}.fa-xbox:before{content:"\f412"}.fa-searchengin:before{content:"\f3eb"}.fa-tiktok:before{content:"\e07b"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-renren:before{content:"\f18b"}.fa-linux:before{content:"\f17c"}.fa-glide:before{content:"\f2a5"}.fa-linkedin:before{content:"\f08c"}.fa-hubspot:before{content:"\f3b2"}.fa-deploydog:before{content:"\f38e"}.fa-twitch:before{content:"\f1e8"}.fa-ravelry:before{content:"\f2d9"}.fa-mixer:before{content:"\e056"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-vimeo:before{content:"\f40a"}.fa-mendeley:before{content:"\f7b3"}.fa-uniregistry:before{content:"\f404"}.fa-figma:before{content:"\f799"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-dropbox:before{content:"\f16b"}.fa-instagram:before{content:"\f16d"}.fa-cmplid:before{content:"\e360"}.fa-facebook:before{content:"\f09a"}.fa-gripfire:before{content:"\f3ac"}.fa-jedi-order:before{content:"\f50e"}.fa-uikit:before{content:"\f403"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-phabricator:before{content:"\f3db"}.fa-ussunnah:before{content:"\f407"}.fa-earlybirds:before{content:"\f39a"}.fa-trade-federation:before{content:"\f513"}.fa-autoprefixer:before{content:"\f41c"}.fa-whatsapp:before{content:"\f232"}.fa-slideshare:before{content:"\f1e7"}.fa-google-play:before{content:"\f3ab"}.fa-viadeo:before{content:"\f2a9"}.fa-line:before{content:"\f3c0"}.fa-google-drive:before{content:"\f3aa"}.fa-servicestack:before{content:"\f3ec"}.fa-simplybuilt:before{content:"\f215"}.fa-bitbucket:before{content:"\f171"}.fa-imdb:before{content:"\f2d8"}.fa-deezer:before{content:"\e077"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-jira:before{content:"\f7b1"}.fa-docker:before{content:"\f395"}.fa-screenpal:before{content:"\e570"}.fa-bluetooth:before{content:"\f293"}.fa-gitter:before{content:"\f426"}.fa-d-and-d:before{content:"\f38d"}.fa-microblog:before{content:"\e01a"}.fa-cc-diners-club:before{content:"\f24c"}.fa-gg-circle:before{content:"\f261"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-yandex:before{content:"\f413"}.fa-readme:before{content:"\f4d5"}.fa-html5:before{content:"\f13b"}.fa-sellsy:before{content:"\f213"}.fa-sass:before{content:"\f41e"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-buromobelexperte:before{content:"\f37f"}.fa-salesforce:before{content:"\f83b"}.fa-octopus-deploy:before{content:"\e082"}.fa-medapps:before{content:"\f3c6"}.fa-ns8:before{content:"\f3d5"}.fa-pinterest-p:before{content:"\f231"}.fa-apper:before{content:"\f371"}.fa-fort-awesome:before{content:"\f286"}.fa-waze:before{content:"\f83f"}.fa-cc-jcb:before{content:"\f24b"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-rust:before{content:"\e07a"}.fa-wix:before{content:"\f5cf"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-supple:before{content:"\f3f9"}.fa-rebel:before{content:"\f1d0"}.fa-css3:before{content:"\f13c"}.fa-staylinked:before{content:"\f3f5"}.fa-kaggle:before{content:"\f5fa"}.fa-space-awesome:before{content:"\e5ac"}.fa-deviantart:before{content:"\f1bd"}.fa-cpanel:before{content:"\f388"}.fa-goodreads-g:before{content:"\f3a9"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-trello:before{content:"\f181"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-get-pocket:before{content:"\f265"}.fa-perbyte:before{content:"\e083"}.fa-grunt:before{content:"\f3ad"}.fa-weebly:before{content:"\f5cc"}.fa-connectdevelop:before{content:"\f20e"}.fa-leanpub:before{content:"\f212"}.fa-black-tie:before{content:"\f27e"}.fa-themeco:before{content:"\f5c6"}.fa-python:before{content:"\f3e2"}.fa-android:before{content:"\f17b"}.fa-bots:before{content:"\e340"}.fa-free-code-camp:before{content:"\f2c5"}.fa-hornbill:before{content:"\f592"}.fa-js:before{content:"\f3b8"}.fa-ideal:before{content:"\e013"}.fa-git:before{content:"\f1d3"}.fa-dev:before{content:"\f6cc"}.fa-sketch:before{content:"\f7c6"}.fa-yandex-international:before{content:"\f414"}.fa-cc-amex:before{content:"\f1f3"}.fa-uber:before{content:"\f402"}.fa-github:before{content:"\f09b"}.fa-php:before{content:"\f457"}.fa-alipay:before{content:"\f642"}.fa-youtube:before{content:"\f167"}.fa-skyatlas:before{content:"\f216"}.fa-firefox-browser:before{content:"\e007"}.fa-replyd:before{content:"\f3e6"}.fa-suse:before{content:"\f7d6"}.fa-jenkins:before{content:"\f3b6"}.fa-twitter:before{content:"\f099"}.fa-rockrms:before{content:"\f3e9"}.fa-pinterest:before{content:"\f0d2"}.fa-buffer:before{content:"\f837"}.fa-npm:before{content:"\f3d4"}.fa-yammer:before{content:"\f840"}.fa-btc:before{content:"\f15a"}.fa-dribbble:before{content:"\f17d"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-internet-explorer:before{content:"\f26b"}.fa-stubber:before{content:"\e5c7"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-old-republic:before{content:"\f510"}.fa-odysee:before{content:"\e5c6"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-node-js:before{content:"\f3d3"}.fa-edge-legacy:before{content:"\e078"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-medrt:before{content:"\f3c8"}.fa-usb:before{content:"\f287"}.fa-tumblr:before{content:"\f173"}.fa-vaadin:before{content:"\f408"}.fa-quora:before{content:"\f2c4"}.fa-square-x-twitter:before{content:"\e61a"}.fa-reacteurope:before{content:"\f75d"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-amilia:before{content:"\f36d"}.fa-mixcloud:before{content:"\f289"}.fa-flipboard:before{content:"\f44d"}.fa-viacoin:before{content:"\f237"}.fa-critical-role:before{content:"\f6c9"}.fa-sitrox:before{content:"\e44a"}.fa-discourse:before{content:"\f393"}.fa-joomla:before{content:"\f1aa"}.fa-mastodon:before{content:"\f4f6"}.fa-airbnb:before{content:"\f834"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-buy-n-large:before{content:"\f8a6"}.fa-gulp:before{content:"\f3ae"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-strava:before{content:"\f428"}.fa-ember:before{content:"\f423"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-teamspeak:before{content:"\f4f9"}.fa-pushed:before{content:"\f3e1"}.fa-wordpress-simple:before{content:"\f411"}.fa-nutritionix:before{content:"\f3d6"}.fa-wodu:before{content:"\e088"}.fa-google-pay:before{content:"\e079"}.fa-intercom:before{content:"\f7af"}.fa-zhihu:before{content:"\f63f"}.fa-korvue:before{content:"\f42f"}.fa-pix:before{content:"\e43a"}.fa-steam-symbol:before{content:"\f3f6"}
|
static/assets/FontAwesome/css/fontawesome.css
ADDED
The diff for this file is too large to render.
See raw diff
|
|
static/assets/FontAwesome/css/fontawesome.min.css
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Font Awesome Free 6.4.2 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 2023 Fonticons, Inc.
|
5 |
+
*/
|
6 |
+
.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-classic,.fa-regular,.fa-sharp,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-transition-delay:0s;transition-delay:0s;-webkit-transition-duration:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}
|
7 |
+
|
8 |
+
.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-fill-drip:before{content:"\f576"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-at:before{content:"\40"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-text-height:before{content:"\f034"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-stethoscope:before{content:"\f0f1"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-info:before{content:"\f129"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-explosion:before{content:"\e4e9"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-wave-square:before{content:"\f83e"}.fa-ring:before{content:"\f70b"}.fa-building-un:before{content:"\e4d9"}.fa-dice-three:before{content:"\f527"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-door-open:before{content:"\f52b"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-atom:before{content:"\f5d2"}.fa-soap:before{content:"\e06e"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-pump-medical:before{content:"\e06a"}.fa-fingerprint:before{content:"\f577"}.fa-hand-point-right:before{content:"\f0a4"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-flag-checkered:before{content:"\f11e"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-crop:before{content:"\f125"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-users-rectangle:before{content:"\e594"}.fa-people-roof:before{content:"\e537"}.fa-people-line:before{content:"\e534"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-diagram-predecessor:before{content:"\e477"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-laptop:before{content:"\f109"}.fa-file-csv:before{content:"\f6dd"}.fa-menorah:before{content:"\f676"}.fa-truck-plane:before{content:"\e58f"}.fa-record-vinyl:before{content:"\f8d9"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-bong:before{content:"\f55c"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-jar-wheat:before{content:"\e517"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-pager:before{content:"\f815"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-strikethrough:before{content:"\f0cc"}.fa-k:before{content:"\4b"}.fa-landmark-flag:before{content:"\e51c"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-backward:before{content:"\f04a"}.fa-caret-right:before{content:"\f0da"}.fa-comments:before{content:"\f086"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-code-pull-request:before{content:"\e13c"}.fa-clipboard-list:before{content:"\f46d"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-user-check:before{content:"\f4fc"}.fa-vial-virus:before{content:"\e597"}.fa-sheet-plastic:before{content:"\e571"}.fa-blog:before{content:"\f781"}.fa-user-ninja:before{content:"\f504"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-toggle-off:before{content:"\f204"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-person-drowning:before{content:"\e545"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-spray-can:before{content:"\f5bd"}.fa-truck-monster:before{content:"\f63b"}.fa-w:before{content:"\57"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-rainbow:before{content:"\f75b"}.fa-circle-notch:before{content:"\f1ce"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-paw:before{content:"\f1b0"}.fa-cloud:before{content:"\f0c2"}.fa-trowel-bricks:before{content:"\e58a"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-hospital-user:before{content:"\f80d"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-binoculars:before{content:"\f1e5"}.fa-microphone-slash:before{content:"\f131"}.fa-box-tissue:before{content:"\e05b"}.fa-motorcycle:before{content:"\f21c"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-toilets-portable:before{content:"\e584"}.fa-hockey-puck:before{content:"\f453"}.fa-table:before{content:"\f0ce"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-users-slash:before{content:"\e073"}.fa-clover:before{content:"\e139"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-star-and-crescent:before{content:"\f699"}.fa-house-fire:before{content:"\e50c"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-helicopter:before{content:"\f533"}.fa-compass:before{content:"\f14e"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-file-circle-question:before{content:"\e4ef"}.fa-laptop-code:before{content:"\f5fc"}.fa-swatchbook:before{content:"\f5c3"}.fa-prescription-bottle:before{content:"\f485"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-people-group:before{content:"\e533"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-film:before{content:"\f008"}.fa-ruler-horizontal:before{content:"\f547"}.fa-people-robbery:before{content:"\e536"}.fa-lightbulb:before{content:"\f0eb"}.fa-caret-left:before{content:"\f0d9"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-sitemap:before{content:"\f0e8"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-memory:before{content:"\f538"}.fa-road-spikes:before{content:"\e568"}.fa-fire-burner:before{content:"\e4f1"}.fa-flag:before{content:"\f024"}.fa-hanukiah:before{content:"\f6e6"}.fa-feather:before{content:"\f52d"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-comment-slash:before{content:"\f4b3"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-compress:before{content:"\f066"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-ankh:before{content:"\f644"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-asterisk:before{content:"\2a"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-peseta-sign:before{content:"\e221"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-ghost:before{content:"\f6e2"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-cart-plus:before{content:"\f217"}.fa-gamepad:before{content:"\f11b"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-egg:before{content:"\f7fb"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-campground:before{content:"\f6bb"}.fa-folder-plus:before{content:"\f65e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-lock:before{content:"\f023"}.fa-gas-pump:before{content:"\f52f"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-house-flood-water:before{content:"\e50e"}.fa-tree:before{content:"\f1bb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-sack-dollar:before{content:"\f81d"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-car-side:before{content:"\f5e4"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-microscope:before{content:"\f610"}.fa-sink:before{content:"\e06d"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-mitten:before{content:"\f7b5"}.fa-person-rays:before{content:"\e54d"}.fa-users:before{content:"\f0c0"}.fa-eye-slash:before{content:"\f070"}.fa-flask-vial:before{content:"\e4f3"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-om:before{content:"\f679"}.fa-worm:before{content:"\e599"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-plug:before{content:"\f1e6"}.fa-chevron-up:before{content:"\f077"}.fa-hand-spock:before{content:"\f259"}.fa-stopwatch:before{content:"\f2f2"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-chess-bishop:before{content:"\f43a"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-road-circle-check:before{content:"\e564"}.fa-dice-five:before{content:"\f523"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-land-mine-on:before{content:"\e51b"}.fa-i-cursor:before{content:"\f246"}.fa-stamp:before{content:"\f5bf"}.fa-stairs:before{content:"\e289"}.fa-i:before{content:"\49"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-pills:before{content:"\f484"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-tooth:before{content:"\f5c9"}.fa-v:before{content:"\56"}.fa-bangladeshi-taka-sign:before{content:"\e2e6"}.fa-bicycle:before{content:"\f206"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-snowman:before{content:"\f7d0"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-road-barrier:before{content:"\e562"}.fa-school:before{content:"\f549"}.fa-igloo:before{content:"\f7ae"}.fa-joint:before{content:"\f595"}.fa-angle-right:before{content:"\f105"}.fa-horse:before{content:"\f6f0"}.fa-q:before{content:"\51"}.fa-g:before{content:"\47"}.fa-notes-medical:before{content:"\f481"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-dong-sign:before{content:"\e169"}.fa-capsules:before{content:"\f46b"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-hand-point-up:before{content:"\f0a6"}.fa-money-bill:before{content:"\f0d6"}.fa-bookmark:before{content:"\f02e"}.fa-align-justify:before{content:"\f039"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-helmet-un:before{content:"\e503"}.fa-bullseye:before{content:"\f140"}.fa-bacon:before{content:"\f7e5"}.fa-hand-point-down:before{content:"\f0a7"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-radiation:before{content:"\f7b9"}.fa-chart-simple:before{content:"\e473"}.fa-mars-stroke:before{content:"\f229"}.fa-vial:before{content:"\f492"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-e:before{content:"\45"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-user:before{content:"\f007"}.fa-school-circle-check:before{content:"\e56b"}.fa-dumpster:before{content:"\f793"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-building-user:before{content:"\e4da"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-highlighter:before{content:"\f591"}.fa-key:before{content:"\f084"}.fa-bullhorn:before{content:"\f0a1"}.fa-globe:before{content:"\f0ac"}.fa-synagogue:before{content:"\f69b"}.fa-person-half-dress:before{content:"\e548"}.fa-road-bridge:before{content:"\e563"}.fa-location-arrow:before{content:"\f124"}.fa-c:before{content:"\43"}.fa-tablet-button:before{content:"\f10a"}.fa-building-lock:before{content:"\e4d6"}.fa-pizza-slice:before{content:"\f818"}.fa-money-bill-wave:before{content:"\f53a"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-house-flag:before{content:"\e50d"}.fa-person-circle-minus:before{content:"\e540"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-camera-rotate:before{content:"\e0d8"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-star:before{content:"\f005"}.fa-repeat:before{content:"\f363"}.fa-cross:before{content:"\f654"}.fa-box:before{content:"\f466"}.fa-venus-mars:before{content:"\f228"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-charging-station:before{content:"\f5e7"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-mobile-retro:before{content:"\e527"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-spider:before{content:"\f717"}.fa-hands-bound:before{content:"\e4f9"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-x-ray:before{content:"\f497"}.fa-spell-check:before{content:"\f891"}.fa-slash:before{content:"\f715"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-server:before{content:"\f233"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-shop-lock:before{content:"\e4a5"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-blender-phone:before{content:"\f6b6"}.fa-building-wheat:before{content:"\e4db"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-venus:before{content:"\f221"}.fa-passport:before{content:"\f5ab"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-temperature-high:before{content:"\f769"}.fa-microchip:before{content:"\f2db"}.fa-crown:before{content:"\f521"}.fa-weight-hanging:before{content:"\f5cd"}.fa-xmarks-lines:before{content:"\e59a"}.fa-file-prescription:before{content:"\f572"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-chess-knight:before{content:"\f441"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-wheelchair:before{content:"\f193"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-toggle-on:before{content:"\f205"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-l:before{content:"\4c"}.fa-fire:before{content:"\f06d"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-folder-open:before{content:"\f07c"}.fa-heart-circle-plus:before{content:"\e500"}.fa-code-fork:before{content:"\e13b"}.fa-city:before{content:"\f64f"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-pepper-hot:before{content:"\f816"}.fa-unlock:before{content:"\f09c"}.fa-colon-sign:before{content:"\e140"}.fa-headset:before{content:"\f590"}.fa-store-slash:before{content:"\e071"}.fa-road-circle-xmark:before{content:"\e566"}.fa-user-minus:before{content:"\f503"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-clipboard:before{content:"\f328"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-underline:before{content:"\f0cd"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-signature:before{content:"\f5b7"}.fa-stroopwafel:before{content:"\f551"}.fa-bold:before{content:"\f032"}.fa-anchor-lock:before{content:"\e4ad"}.fa-building-ngo:before{content:"\e4d7"}.fa-manat-sign:before{content:"\e1d5"}.fa-not-equal:before{content:"\f53e"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-jedi:before{content:"\f669"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-mug-hot:before{content:"\f7b6"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-gift:before{content:"\f06b"}.fa-dice-two:before{content:"\f528"}.fa-chess-queen:before{content:"\f445"}.fa-glasses:before{content:"\f530"}.fa-chess-board:before{content:"\f43c"}.fa-building-circle-check:before{content:"\e4d2"}.fa-person-chalkboard:before{content:"\e53d"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-less-than-equal:before{content:"\f537"}.fa-train:before{content:"\f238"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-crow:before{content:"\f520"}.fa-sailboat:before{content:"\e445"}.fa-window-restore:before{content:"\f2d2"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-torii-gate:before{content:"\f6a1"}.fa-frog:before{content:"\f52e"}.fa-bucket:before{content:"\e4cf"}.fa-image:before{content:"\f03e"}.fa-microphone:before{content:"\f130"}.fa-cow:before{content:"\f6c8"}.fa-caret-up:before{content:"\f0d8"}.fa-screwdriver:before{content:"\f54a"}.fa-folder-closed:before{content:"\e185"}.fa-house-tsunami:before{content:"\e515"}.fa-square-nfi:before{content:"\e576"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-lemon:before{content:"\f094"}.fa-head-side-mask:before{content:"\e063"}.fa-handshake:before{content:"\f2b5"}.fa-gem:before{content:"\f3a5"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-smoking:before{content:"\f48d"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-monument:before{content:"\f5a6"}.fa-snowplow:before{content:"\f7d2"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-cannabis:before{content:"\f55f"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-tablets:before{content:"\f490"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-chair:before{content:"\f6c0"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-plate-wheat:before{content:"\e55a"}.fa-icicles:before{content:"\f7ad"}.fa-person-shelter:before{content:"\e54f"}.fa-neuter:before{content:"\f22c"}.fa-id-badge:before{content:"\f2c1"}.fa-marker:before{content:"\f5a1"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-helicopter-symbol:before{content:"\e502"}.fa-universal-access:before{content:"\f29a"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-lari-sign:before{content:"\e1c8"}.fa-volcano:before{content:"\f770"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-viruses:before{content:"\e076"}.fa-square-person-confined:before{content:"\e577"}.fa-user-tie:before{content:"\f508"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-certificate:before{content:"\f0a3"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-suitcase:before{content:"\f0f2"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-camera-retro:before{content:"\f083"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-box-open:before{content:"\f49e"}.fa-scroll:before{content:"\f70e"}.fa-spa:before{content:"\f5bb"}.fa-location-pin-lock:before{content:"\e51f"}.fa-pause:before{content:"\f04c"}.fa-hill-avalanche:before{content:"\e507"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-bomb:before{content:"\f1e2"}.fa-registered:before{content:"\f25d"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-subscript:before{content:"\f12c"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-burst:before{content:"\e4dc"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-money-bills:before{content:"\e1f3"}.fa-smog:before{content:"\f75f"}.fa-crutch:before{content:"\f7f7"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-palette:before{content:"\f53f"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-vest:before{content:"\e085"}.fa-ferry:before{content:"\e4ea"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-boxes-packing:before{content:"\e4c7"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-bowl-food:before{content:"\e4c6"}.fa-candy-cane:before{content:"\f786"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-file-word:before{content:"\f1c2"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-house-lock:before{content:"\e510"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-children:before{content:"\e4e1"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-envelope-open:before{content:"\f2b6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-mattress-pillow:before{content:"\e525"}.fa-guarani-sign:before{content:"\e19a"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-fire-extinguisher:before{content:"\f134"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-greater-than-equal:before{content:"\f532"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-virus:before{content:"\e074"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-layer-group:before{content:"\f5fd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-archway:before{content:"\f557"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-square:before{content:"\f0c8"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-couch:before{content:"\f4b8"}.fa-cedi-sign:before{content:"\e0df"}.fa-italic:before{content:"\f033"}.fa-church:before{content:"\f51d"}.fa-comments-dollar:before{content:"\f653"}.fa-democrat:before{content:"\f747"}.fa-z:before{content:"\5a"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-road-lock:before{content:"\e567"}.fa-a:before{content:"\41"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-p:before{content:"\50"}.fa-snowflake:before{content:"\f2dc"}.fa-newspaper:before{content:"\f1ea"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-locust:before{content:"\e520"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-person-dress-burst:before{content:"\e544"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-vector-square:before{content:"\f5cb"}.fa-bread-slice:before{content:"\f7ec"}.fa-language:before{content:"\f1ab"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-filter:before{content:"\f0b0"}.fa-question:before{content:"\3f"}.fa-file-signature:before{content:"\f573"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-house-chimney-user:before{content:"\e065"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-puzzle-piece:before{content:"\f12e"}.fa-money-check:before{content:"\f53c"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-code:before{content:"\f121"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-virus-covid:before{content:"\e4a8"}.fa-austral-sign:before{content:"\e0a9"}.fa-f:before{content:"\46"}.fa-leaf:before{content:"\f06c"}.fa-road:before{content:"\f018"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-person-circle-plus:before{content:"\e541"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-sack-xmark:before{content:"\e56a"}.fa-file-excel:before{content:"\f1c3"}.fa-file-contract:before{content:"\f56c"}.fa-fish-fins:before{content:"\e4f2"}.fa-building-flag:before{content:"\e4d5"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-object-ungroup:before{content:"\f248"}.fa-poop:before{content:"\f619"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-kaaba:before{content:"\f66b"}.fa-toilet-paper:before{content:"\f71e"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-eject:before{content:"\f052"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-plane-circle-check:before{content:"\e555"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-object-group:before{content:"\f247"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-mask-ventilator:before{content:"\e524"}.fa-arrow-right:before{content:"\f061"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-cash-register:before{content:"\f788"}.fa-person-circle-question:before{content:"\e542"}.fa-h:before{content:"\48"}.fa-tarp:before{content:"\e57b"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-heart:before{content:"\f004"}.fa-mars-and-venus:before{content:"\f224"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-dumpster-fire:before{content:"\f794"}.fa-house-crack:before{content:"\e3b1"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-bottle-water:before{content:"\e4c5"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-kitchen-set:before{content:"\e51a"}.fa-r:before{content:"\52"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-cube:before{content:"\f1b2"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-shield-dog:before{content:"\e573"}.fa-solar-panel:before{content:"\f5ba"}.fa-lock-open:before{content:"\f3c1"}.fa-elevator:before{content:"\e16d"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-circle:before{content:"\f111"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-recycle:before{content:"\f1b8"}.fa-user-astronaut:before{content:"\f4fb"}.fa-plane-slash:before{content:"\e069"}.fa-trademark:before{content:"\f25c"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-satellite-dish:before{content:"\f7c0"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-users-rays:before{content:"\e593"}.fa-wallet:before{content:"\f555"}.fa-clipboard-check:before{content:"\f46c"}.fa-file-audio:before{content:"\f1c7"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-wrench:before{content:"\f0ad"}.fa-bugs:before{content:"\e4d0"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-file-image:before{content:"\f1c5"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-plane-departure:before{content:"\f5b0"}.fa-handshake-slash:before{content:"\e060"}.fa-book-bookmark:before{content:"\e0bb"}.fa-code-branch:before{content:"\f126"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-bridge:before{content:"\e4c8"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-truck-front:before{content:"\e2b7"}.fa-cat:before{content:"\f6be"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-truck-field:before{content:"\e58d"}.fa-route:before{content:"\f4d7"}.fa-clipboard-question:before{content:"\e4e3"}.fa-panorama:before{content:"\e209"}.fa-comment-medical:before{content:"\f7f5"}.fa-teeth-open:before{content:"\f62f"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-tags:before{content:"\f02c"}.fa-wine-glass:before{content:"\f4e3"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-house-signal:before{content:"\e012"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-faucet-drip:before{content:"\e006"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-terminal:before{content:"\f120"}.fa-mobile-button:before{content:"\f10b"}.fa-house-medical-flag:before{content:"\e514"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-tape:before{content:"\f4db"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-eye:before{content:"\f06e"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-audio-description:before{content:"\f29e"}.fa-person-military-to-person:before{content:"\e54c"}.fa-file-shield:before{content:"\e4f0"}.fa-user-slash:before{content:"\f506"}.fa-pen:before{content:"\f304"}.fa-tower-observation:before{content:"\e586"}.fa-file-code:before{content:"\f1c9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-bus:before{content:"\f207"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-window-maximize:before{content:"\f2d0"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-prescription:before{content:"\f5b1"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-vihara:before{content:"\f6a7"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-plant-wilt:before{content:"\e5aa"}.fa-diamond:before{content:"\f219"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-bacterium:before{content:"\e05a"}.fa-hand-pointer:before{content:"\f25a"}.fa-drum-steelpan:before{content:"\f56a"}.fa-hand-scissors:before{content:"\f257"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-biohazard:before{content:"\f780"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-mars-double:before{content:"\f227"}.fa-child-dress:before{content:"\e59c"}.fa-users-between-lines:before{content:"\e591"}.fa-lungs-virus:before{content:"\e067"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-phone:before{content:"\f095"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-child-reaching:before{content:"\e59d"}.fa-head-side-virus:before{content:"\e064"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-door-closed:before{content:"\f52a"}.fa-shield-virus:before{content:"\e06c"}.fa-dice-six:before{content:"\f526"}.fa-mosquito-net:before{content:"\e52c"}.fa-bridge-water:before{content:"\e4ce"}.fa-person-booth:before{content:"\f756"}.fa-text-width:before{content:"\f035"}.fa-hat-wizard:before{content:"\f6e8"}.fa-pen-fancy:before{content:"\f5ac"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-trash:before{content:"\f1f8"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-book-medical:before{content:"\f7e6"}.fa-poo:before{content:"\f2fe"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-cubes:before{content:"\f1b3"}.fa-divide:before{content:"\f529"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-headphones:before{content:"\f025"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-clapping:before{content:"\e1a8"}.fa-republican:before{content:"\f75e"}.fa-arrow-left:before{content:"\f060"}.fa-person-circle-xmark:before{content:"\e543"}.fa-ruler:before{content:"\f545"}.fa-align-left:before{content:"\f036"}.fa-dice-d6:before{content:"\f6d1"}.fa-restroom:before{content:"\f7bd"}.fa-j:before{content:"\4a"}.fa-users-viewfinder:before{content:"\e595"}.fa-file-video:before{content:"\f1c8"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-file-pdf:before{content:"\f1c1"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-o:before{content:"\4f"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-user-secret:before{content:"\f21b"}.fa-otter:before{content:"\f700"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-comment-dollar:before{content:"\f651"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-clipboard-user:before{content:"\f7f3"}.fa-child:before{content:"\f1ae"}.fa-lira-sign:before{content:"\f195"}.fa-satellite:before{content:"\f7bf"}.fa-plane-lock:before{content:"\e558"}.fa-tag:before{content:"\f02b"}.fa-comment:before{content:"\f075"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-envelope:before{content:"\f0e0"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-paperclip:before{content:"\f0c6"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-ribbon:before{content:"\f4d6"}.fa-lungs:before{content:"\f604"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-border-none:before{content:"\f850"}.fa-circle-nodes:before{content:"\e4e2"}.fa-parachute-box:before{content:"\f4cd"}.fa-indent:before{content:"\f03c"}.fa-truck-field-un:before{content:"\e58e"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-mountain:before{content:"\f6fc"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-cloud-meatball:before{content:"\f73b"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-square-virus:before{content:"\e578"}.fa-meteor:before{content:"\f753"}.fa-car-on:before{content:"\e4dd"}.fa-sleigh:before{content:"\f7cc"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-water:before{content:"\f773"}.fa-calendar-check:before{content:"\f274"}.fa-braille:before{content:"\f2a1"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-landmark:before{content:"\f66f"}.fa-truck:before{content:"\f0d1"}.fa-crosshairs:before{content:"\f05b"}.fa-person-cane:before{content:"\e53c"}.fa-tent:before{content:"\e57d"}.fa-vest-patches:before{content:"\e086"}.fa-check-double:before{content:"\f560"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-cookie:before{content:"\f563"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-dumbbell:before{content:"\f44b"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-tarp-droplet:before{content:"\e57c"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-calendar-plus:before{content:"\f271"}.fa-plane-arrival:before{content:"\f5af"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-chart-gantt:before{content:"\e0e4"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-dna:before{content:"\f471"}.fa-virus-slash:before{content:"\e075"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-chess:before{content:"\f439"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-plug-circle-check:before{content:"\e55c"}.fa-street-view:before{content:"\f21d"}.fa-franc-sign:before{content:"\e18f"}.fa-volume-off:before{content:"\f026"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-star-of-david:before{content:"\f69a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-vials:before{content:"\f493"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-place-of-worship:before{content:"\f67f"}.fa-grip-vertical:before{content:"\f58e"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-u:before{content:"\55"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-pallet:before{content:"\f482"}.fa-faucet:before{content:"\e005"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-s:before{content:"\53"}.fa-timeline:before{content:"\e29c"}.fa-keyboard:before{content:"\f11c"}.fa-caret-down:before{content:"\f0d7"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-plane-up:before{content:"\e22d"}.fa-piggy-bank:before{content:"\f4d3"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-mountain-city:before{content:"\e52e"}.fa-coins:before{content:"\f51e"}.fa-khanda:before{content:"\f66d"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-folder-tree:before{content:"\f802"}.fa-network-wired:before{content:"\f6ff"}.fa-map-pin:before{content:"\f276"}.fa-hamsa:before{content:"\f665"}.fa-cent-sign:before{content:"\e3f5"}.fa-flask:before{content:"\f0c3"}.fa-person-pregnant:before{content:"\e31e"}.fa-wand-sparkles:before{content:"\f72b"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-ticket:before{content:"\f145"}.fa-power-off:before{content:"\f011"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-flag-usa:before{content:"\f74d"}.fa-laptop-file:before{content:"\e51d"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-diagram-next:before{content:"\e476"}.fa-person-rifle:before{content:"\e54e"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-closed-captioning:before{content:"\f20a"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-venus-double:before{content:"\f226"}.fa-images:before{content:"\f302"}.fa-calculator:before{content:"\f1ec"}.fa-people-pulling:before{content:"\e535"}.fa-n:before{content:"\4e"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-cloud-rain:before{content:"\f73d"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-ship:before{content:"\f21a"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-download:before{content:"\f019"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-file-circle-check:before{content:"\e5a0"}.fa-forward:before{content:"\f04e"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-align-center:before{content:"\f037"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-calendar-week:before{content:"\f784"}.fa-laptop-medical:before{content:"\f812"}.fa-b:before{content:"\42"}.fa-file-medical:before{content:"\f477"}.fa-dice-one:before{content:"\f525"}.fa-kiwi-bird:before{content:"\f535"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-mill-sign:before{content:"\e1ed"}.fa-bowl-rice:before{content:"\e2eb"}.fa-skull:before{content:"\f54c"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-truck-pickup:before{content:"\f63c"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-stop:before{content:"\f04d"}.fa-code-merge:before{content:"\f387"}.fa-upload:before{content:"\f093"}.fa-hurricane:before{content:"\f751"}.fa-mound:before{content:"\e52d"}.fa-toilet-portable:before{content:"\e583"}.fa-compact-disc:before{content:"\f51f"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-caravan:before{content:"\f8ff"}.fa-shield-cat:before{content:"\e572"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-glass-water:before{content:"\e4f4"}.fa-oil-well:before{content:"\e532"}.fa-vault:before{content:"\e2c5"}.fa-mars:before{content:"\f222"}.fa-toilet:before{content:"\f7d8"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-sun:before{content:"\f185"}.fa-guitar:before{content:"\f7a6"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-horse-head:before{content:"\f7ab"}.fa-bore-hole:before{content:"\e4c3"}.fa-industry:before{content:"\f275"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-florin-sign:before{content:"\e184"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-less-than:before{content:"\3c"}.fa-angle-down:before{content:"\f107"}.fa-car-tunnel:before{content:"\e4de"}.fa-head-side-cough:before{content:"\e061"}.fa-grip-lines:before{content:"\f7a4"}.fa-thumbs-down:before{content:"\f165"}.fa-user-lock:before{content:"\f502"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-chess-pawn:before{content:"\f443"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-person-through-window:before{content:"\e5a9"}.fa-toolbox:before{content:"\f552"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-bug:before{content:"\f188"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-mountain-sun:before{content:"\e52f"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-dice-d20:before{content:"\f6cf"}.fa-truck-droplet:before{content:"\e58c"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-medal:before{content:"\f5a2"}.fa-bed:before{content:"\f236"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-podcast:before{content:"\f2ce"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-bell:before{content:"\f0f3"}.fa-superscript:before{content:"\f12b"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-star-of-life:before{content:"\f621"}.fa-phone-slash:before{content:"\f3dd"}.fa-paint-roller:before{content:"\f5aa"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-file:before{content:"\f15b"}.fa-greater-than:before{content:"\3e"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-arrow-down:before{content:"\f063"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-eraser:before{content:"\f12d"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-person-burst:before{content:"\e53b"}.fa-dove:before{content:"\f4ba"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-socks:before{content:"\f696"}.fa-inbox:before{content:"\f01c"}.fa-section:before{content:"\e447"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-envelope-open-text:before{content:"\f658"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-wine-bottle:before{content:"\f72f"}.fa-chess-rook:before{content:"\f447"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-dharmachakra:before{content:"\f655"}.fa-hotdog:before{content:"\f80f"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-drum:before{content:"\f569"}.fa-ice-cream:before{content:"\f810"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-fax:before{content:"\f1ac"}.fa-paragraph:before{content:"\f1dd"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-star-half:before{content:"\f089"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-tree-city:before{content:"\e587"}.fa-play:before{content:"\f04b"}.fa-font:before{content:"\f031"}.fa-rupiah-sign:before{content:"\e23d"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-naira-sign:before{content:"\e1f6"}.fa-cart-arrow-down:before{content:"\f218"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-receipt:before{content:"\f543"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-chevron-down:before{content:"\f078"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-skull-crossbones:before{content:"\f714"}.fa-code-compare:before{content:"\e13a"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-school-lock:before{content:"\e56f"}.fa-tower-cell:before{content:"\e585"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-ranking-star:before{content:"\e561"}.fa-chess-king:before{content:"\f43f"}.fa-person-harassing:before{content:"\e549"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-arrow-up:before{content:"\f062"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-shrimp:before{content:"\e448"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-jug-detergent:before{content:"\e519"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-user-shield:before{content:"\f505"}.fa-wind:before{content:"\f72e"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-y:before{content:"\59"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-fish:before{content:"\f578"}.fa-user-graduate:before{content:"\f501"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-clapperboard:before{content:"\e131"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-jet-fighter-up:before{content:"\e518"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-copy:before{content:"\f0c5"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-hand-sparkles:before{content:"\e05d"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-child-combatant:before,.fa-child-rifle:before{content:"\e4e0"}.fa-gun:before{content:"\e19b"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-expand:before{content:"\f065"}.fa-computer:before{content:"\e4e5"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-peso-sign:before{content:"\e222"}.fa-building-shield:before{content:"\e4d8"}.fa-baby:before{content:"\f77c"}.fa-users-line:before{content:"\e592"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-tractor:before{content:"\f722"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-lines-leaning:before{content:"\e51e"}.fa-ruler-combined:before{content:"\f546"}.fa-copyright:before{content:"\f1f9"}.fa-equals:before{content:"\3d"}.fa-blender:before{content:"\f517"}.fa-teeth:before{content:"\f62e"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-map:before{content:"\f279"}.fa-rocket:before{content:"\f135"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-folder-minus:before{content:"\f65d"}.fa-store:before{content:"\f54e"}.fa-arrow-trend-up:before{content:"\e098"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-bezier-curve:before{content:"\f55b"}.fa-bell-slash:before{content:"\f1f6"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-school-flag:before{content:"\e56e"}.fa-fill:before{content:"\f575"}.fa-angle-up:before{content:"\f106"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-holly-berry:before{content:"\f7aa"}.fa-chevron-left:before{content:"\f053"}.fa-bacteria:before{content:"\e059"}.fa-hand-lizard:before{content:"\f258"}.fa-notdef:before{content:"\e1fe"}.fa-disease:before{content:"\f7fa"}.fa-briefcase-medical:before{content:"\f469"}.fa-genderless:before{content:"\f22d"}.fa-chevron-right:before{content:"\f054"}.fa-retweet:before{content:"\f079"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-pump-soap:before{content:"\e06b"}.fa-video-slash:before{content:"\f4e2"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-radio:before{content:"\f8d7"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-traffic-light:before{content:"\f637"}.fa-thermometer:before{content:"\f491"}.fa-vr-cardboard:before{content:"\f729"}.fa-hand-middle-finger:before{content:"\f806"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-truck-moving:before{content:"\f4df"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-display:before{content:"\e163"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-trophy:before{content:"\f091"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-hammer:before{content:"\f6e3"}.fa-hand-peace:before{content:"\f25b"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-spinner:before{content:"\f110"}.fa-robot:before{content:"\f544"}.fa-peace:before{content:"\f67c"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-warehouse:before{content:"\f494"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-splotch:before{content:"\f5bc"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-dice-four:before{content:"\f524"}.fa-sim-card:before{content:"\f7c4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-mercury:before{content:"\f223"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-person-falling-burst:before{content:"\e547"}.fa-award:before{content:"\f559"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-building:before{content:"\f1ad"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-qrcode:before{content:"\f029"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-house-medical:before{content:"\e3b2"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-house-chimney-window:before{content:"\e00d"}.fa-pen-nib:before{content:"\f5ad"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tents:before{content:"\e582"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-dog:before{content:"\f6d3"}.fa-carrot:before{content:"\f787"}.fa-moon:before{content:"\f186"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-cheese:before{content:"\f7ef"}.fa-yin-yang:before{content:"\f6ad"}.fa-music:before{content:"\f001"}.fa-code-commit:before{content:"\f386"}.fa-temperature-low:before{content:"\f76b"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-broom:before{content:"\f51a"}.fa-shield-heart:before{content:"\e574"}.fa-gopuram:before{content:"\f664"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-hashtag:before{content:"\23"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-oil-can:before{content:"\f613"}.fa-t:before{content:"\54"}.fa-hippo:before{content:"\f6ed"}.fa-chart-column:before{content:"\e0e3"}.fa-infinity:before{content:"\f534"}.fa-vial-circle-check:before{content:"\e596"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-voicemail:before{content:"\f897"}.fa-fan:before{content:"\f863"}.fa-person-walking-luggage:before{content:"\e554"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-calendar:before{content:"\f133"}.fa-trailer:before{content:"\e041"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-sd-card:before{content:"\f7c2"}.fa-dragon:before{content:"\f6d5"}.fa-shoe-prints:before{content:"\f54b"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-hand-holding:before{content:"\f4bd"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-clone:before{content:"\f24d"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-tornado:before{content:"\f76f"}.fa-file-circle-plus:before{content:"\e494"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-anchor:before{content:"\f13d"}.fa-border-all:before{content:"\f84c"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-cookie-bite:before{content:"\f564"}.fa-arrow-trend-down:before{content:"\e097"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-draw-polygon:before{content:"\f5ee"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-shower:before{content:"\f2cc"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-m:before{content:"\4d"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-book:before{content:"\f02d"}.fa-user-plus:before{content:"\f234"}.fa-check:before{content:"\f00c"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-house-circle-check:before{content:"\e509"}.fa-angle-left:before{content:"\f104"}.fa-diagram-successor:before{content:"\e47a"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-cloud-moon:before{content:"\f6c3"}.fa-briefcase:before{content:"\f0b1"}.fa-person-falling:before{content:"\e546"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-user-tag:before{content:"\f507"}.fa-rug:before{content:"\e569"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-baht-sign:before{content:"\e0ac"}.fa-book-open:before{content:"\f518"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-handcuffs:before{content:"\e4f8"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-database:before{content:"\f1c0"}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-mask-face:before{content:"\e1d7"}.fa-hill-rockslide:before{content:"\e508"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-paper-plane:before{content:"\f1d8"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-dungeon:before{content:"\f6d9"}.fa-align-right:before{content:"\f038"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-life-ring:before{content:"\f1cd"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-calendar-day:before{content:"\f783"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-dice:before{content:"\f522"}.fa-bowling-ball:before{content:"\f436"}.fa-brain:before{content:"\f5dc"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-calendar-minus:before{content:"\f272"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-gifts:before{content:"\f79c"}.fa-hotel:before{content:"\f594"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-thumbs-up:before{content:"\f164"}.fa-user-clock:before{content:"\f4fd"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-file-invoice:before{content:"\f570"}.fa-window-minimize:before{content:"\f2d1"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-brush:before{content:"\f55d"}.fa-mask:before{content:"\f6fa"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-ruler-vertical:before{content:"\f548"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-train-tram:before{content:"\e5b4"}.fa-user-nurse:before{content:"\f82f"}.fa-syringe:before{content:"\f48e"}.fa-cloud-sun:before{content:"\f6c4"}.fa-stopwatch-20:before{content:"\e06f"}.fa-square-full:before{content:"\f45c"}.fa-magnet:before{content:"\f076"}.fa-jar:before{content:"\e516"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-bug-slash:before{content:"\e490"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-bone:before{content:"\f5d7"}.fa-user-injured:before{content:"\f728"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-plane:before{content:"\f072"}.fa-tent-arrows-down:before{content:"\e581"}.fa-exclamation:before{content:"\21"}.fa-arrows-spin:before{content:"\e4bb"}.fa-print:before{content:"\f02f"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-x:before{content:"\58"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-person-military-pointing:before{content:"\e54a"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-umbrella:before{content:"\f0e9"}.fa-trowel:before{content:"\e589"}.fa-d:before{content:"\44"}.fa-stapler:before{content:"\e5af"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-kip-sign:before{content:"\e1c4"}.fa-hand-point-left:before{content:"\f0a5"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-barcode:before{content:"\f02a"}.fa-plus-minus:before{content:"\e43c"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-person-circle-check:before{content:"\e53e"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}
|
9 |
+
.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}
|
static/assets/FontAwesome/css/solid.css
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Font Awesome Free 6.4.2 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 2023 Fonticons, Inc.
|
5 |
+
*/
|
6 |
+
:root, :host {
|
7 |
+
--fa-style-family-classic: 'Font Awesome 6 Free';
|
8 |
+
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; }
|
9 |
+
|
10 |
+
@font-face {
|
11 |
+
font-family: 'Font Awesome 6 Free';
|
12 |
+
font-style: normal;
|
13 |
+
font-weight: 900;
|
14 |
+
font-display: block;
|
15 |
+
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
16 |
+
|
17 |
+
.fas,
|
18 |
+
.fa-solid {
|
19 |
+
font-weight: 900; }
|
static/assets/FontAwesome/css/solid.min.css
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Font Awesome Free 6.4.2 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 2023 Fonticons, Inc.
|
5 |
+
*/
|
6 |
+
:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}
|
static/assets/FontAwesome/css/svg-with-js.css
ADDED
@@ -0,0 +1,639 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Font Awesome Free 6.4.2 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 2023 Fonticons, Inc.
|
5 |
+
*/
|
6 |
+
:root, :host {
|
7 |
+
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Solid';
|
8 |
+
--fa-font-regular: normal 400 1em/1 'Font Awesome 6 Regular';
|
9 |
+
--fa-font-light: normal 300 1em/1 'Font Awesome 6 Light';
|
10 |
+
--fa-font-thin: normal 100 1em/1 'Font Awesome 6 Thin';
|
11 |
+
--fa-font-duotone: normal 900 1em/1 'Font Awesome 6 Duotone';
|
12 |
+
--fa-font-sharp-solid: normal 900 1em/1 'Font Awesome 6 Sharp';
|
13 |
+
--fa-font-sharp-regular: normal 400 1em/1 'Font Awesome 6 Sharp';
|
14 |
+
--fa-font-sharp-light: normal 300 1em/1 'Font Awesome 6 Sharp';
|
15 |
+
--fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; }
|
16 |
+
|
17 |
+
svg:not(:root).svg-inline--fa, svg:not(:host).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: -.125em; }
|
26 |
+
.svg-inline--fa.fa-2xs {
|
27 |
+
vertical-align: 0.1em; }
|
28 |
+
.svg-inline--fa.fa-xs {
|
29 |
+
vertical-align: 0em; }
|
30 |
+
.svg-inline--fa.fa-sm {
|
31 |
+
vertical-align: -0.07143em; }
|
32 |
+
.svg-inline--fa.fa-lg {
|
33 |
+
vertical-align: -0.2em; }
|
34 |
+
.svg-inline--fa.fa-xl {
|
35 |
+
vertical-align: -0.25em; }
|
36 |
+
.svg-inline--fa.fa-2xl {
|
37 |
+
vertical-align: -0.3125em; }
|
38 |
+
.svg-inline--fa.fa-pull-left {
|
39 |
+
margin-right: var(--fa-pull-margin, 0.3em);
|
40 |
+
width: auto; }
|
41 |
+
.svg-inline--fa.fa-pull-right {
|
42 |
+
margin-left: var(--fa-pull-margin, 0.3em);
|
43 |
+
width: auto; }
|
44 |
+
.svg-inline--fa.fa-li {
|
45 |
+
width: var(--fa-li-width, 2em);
|
46 |
+
top: 0.25em; }
|
47 |
+
.svg-inline--fa.fa-fw {
|
48 |
+
width: var(--fa-fw-width, 1.25em); }
|
49 |
+
|
50 |
+
.fa-layers svg.svg-inline--fa {
|
51 |
+
bottom: 0;
|
52 |
+
left: 0;
|
53 |
+
margin: auto;
|
54 |
+
position: absolute;
|
55 |
+
right: 0;
|
56 |
+
top: 0; }
|
57 |
+
|
58 |
+
.fa-layers-text, .fa-layers-counter {
|
59 |
+
display: inline-block;
|
60 |
+
position: absolute;
|
61 |
+
text-align: center; }
|
62 |
+
|
63 |
+
.fa-layers {
|
64 |
+
display: inline-block;
|
65 |
+
height: 1em;
|
66 |
+
position: relative;
|
67 |
+
text-align: center;
|
68 |
+
vertical-align: -.125em;
|
69 |
+
width: 1em; }
|
70 |
+
.fa-layers svg.svg-inline--fa {
|
71 |
+
-webkit-transform-origin: center center;
|
72 |
+
transform-origin: center center; }
|
73 |
+
|
74 |
+
.fa-layers-text {
|
75 |
+
left: 50%;
|
76 |
+
top: 50%;
|
77 |
+
-webkit-transform: translate(-50%, -50%);
|
78 |
+
transform: translate(-50%, -50%);
|
79 |
+
-webkit-transform-origin: center center;
|
80 |
+
transform-origin: center center; }
|
81 |
+
|
82 |
+
.fa-layers-counter {
|
83 |
+
background-color: var(--fa-counter-background-color, #ff253a);
|
84 |
+
border-radius: var(--fa-counter-border-radius, 1em);
|
85 |
+
box-sizing: border-box;
|
86 |
+
color: var(--fa-inverse, #fff);
|
87 |
+
line-height: var(--fa-counter-line-height, 1);
|
88 |
+
max-width: var(--fa-counter-max-width, 5em);
|
89 |
+
min-width: var(--fa-counter-min-width, 1.5em);
|
90 |
+
overflow: hidden;
|
91 |
+
padding: var(--fa-counter-padding, 0.25em 0.5em);
|
92 |
+
right: var(--fa-right, 0);
|
93 |
+
text-overflow: ellipsis;
|
94 |
+
top: var(--fa-top, 0);
|
95 |
+
-webkit-transform: scale(var(--fa-counter-scale, 0.25));
|
96 |
+
transform: scale(var(--fa-counter-scale, 0.25));
|
97 |
+
-webkit-transform-origin: top right;
|
98 |
+
transform-origin: top right; }
|
99 |
+
|
100 |
+
.fa-layers-bottom-right {
|
101 |
+
bottom: var(--fa-bottom, 0);
|
102 |
+
right: var(--fa-right, 0);
|
103 |
+
top: auto;
|
104 |
+
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
105 |
+
transform: scale(var(--fa-layers-scale, 0.25));
|
106 |
+
-webkit-transform-origin: bottom right;
|
107 |
+
transform-origin: bottom right; }
|
108 |
+
|
109 |
+
.fa-layers-bottom-left {
|
110 |
+
bottom: var(--fa-bottom, 0);
|
111 |
+
left: var(--fa-left, 0);
|
112 |
+
right: auto;
|
113 |
+
top: auto;
|
114 |
+
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
115 |
+
transform: scale(var(--fa-layers-scale, 0.25));
|
116 |
+
-webkit-transform-origin: bottom left;
|
117 |
+
transform-origin: bottom left; }
|
118 |
+
|
119 |
+
.fa-layers-top-right {
|
120 |
+
top: var(--fa-top, 0);
|
121 |
+
right: var(--fa-right, 0);
|
122 |
+
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
123 |
+
transform: scale(var(--fa-layers-scale, 0.25));
|
124 |
+
-webkit-transform-origin: top right;
|
125 |
+
transform-origin: top right; }
|
126 |
+
|
127 |
+
.fa-layers-top-left {
|
128 |
+
left: var(--fa-left, 0);
|
129 |
+
right: auto;
|
130 |
+
top: var(--fa-top, 0);
|
131 |
+
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
132 |
+
transform: scale(var(--fa-layers-scale, 0.25));
|
133 |
+
-webkit-transform-origin: top left;
|
134 |
+
transform-origin: top left; }
|
135 |
+
|
136 |
+
.fa-1x {
|
137 |
+
font-size: 1em; }
|
138 |
+
|
139 |
+
.fa-2x {
|
140 |
+
font-size: 2em; }
|
141 |
+
|
142 |
+
.fa-3x {
|
143 |
+
font-size: 3em; }
|
144 |
+
|
145 |
+
.fa-4x {
|
146 |
+
font-size: 4em; }
|
147 |
+
|
148 |
+
.fa-5x {
|
149 |
+
font-size: 5em; }
|
150 |
+
|
151 |
+
.fa-6x {
|
152 |
+
font-size: 6em; }
|
153 |
+
|
154 |
+
.fa-7x {
|
155 |
+
font-size: 7em; }
|
156 |
+
|
157 |
+
.fa-8x {
|
158 |
+
font-size: 8em; }
|
159 |
+
|
160 |
+
.fa-9x {
|
161 |
+
font-size: 9em; }
|
162 |
+
|
163 |
+
.fa-10x {
|
164 |
+
font-size: 10em; }
|
165 |
+
|
166 |
+
.fa-2xs {
|
167 |
+
font-size: 0.625em;
|
168 |
+
line-height: 0.1em;
|
169 |
+
vertical-align: 0.225em; }
|
170 |
+
|
171 |
+
.fa-xs {
|
172 |
+
font-size: 0.75em;
|
173 |
+
line-height: 0.08333em;
|
174 |
+
vertical-align: 0.125em; }
|
175 |
+
|
176 |
+
.fa-sm {
|
177 |
+
font-size: 0.875em;
|
178 |
+
line-height: 0.07143em;
|
179 |
+
vertical-align: 0.05357em; }
|
180 |
+
|
181 |
+
.fa-lg {
|
182 |
+
font-size: 1.25em;
|
183 |
+
line-height: 0.05em;
|
184 |
+
vertical-align: -0.075em; }
|
185 |
+
|
186 |
+
.fa-xl {
|
187 |
+
font-size: 1.5em;
|
188 |
+
line-height: 0.04167em;
|
189 |
+
vertical-align: -0.125em; }
|
190 |
+
|
191 |
+
.fa-2xl {
|
192 |
+
font-size: 2em;
|
193 |
+
line-height: 0.03125em;
|
194 |
+
vertical-align: -0.1875em; }
|
195 |
+
|
196 |
+
.fa-fw {
|
197 |
+
text-align: center;
|
198 |
+
width: 1.25em; }
|
199 |
+
|
200 |
+
.fa-ul {
|
201 |
+
list-style-type: none;
|
202 |
+
margin-left: var(--fa-li-margin, 2.5em);
|
203 |
+
padding-left: 0; }
|
204 |
+
.fa-ul > li {
|
205 |
+
position: relative; }
|
206 |
+
|
207 |
+
.fa-li {
|
208 |
+
left: calc(var(--fa-li-width, 2em) * -1);
|
209 |
+
position: absolute;
|
210 |
+
text-align: center;
|
211 |
+
width: var(--fa-li-width, 2em);
|
212 |
+
line-height: inherit; }
|
213 |
+
|
214 |
+
.fa-border {
|
215 |
+
border-color: var(--fa-border-color, #eee);
|
216 |
+
border-radius: var(--fa-border-radius, 0.1em);
|
217 |
+
border-style: var(--fa-border-style, solid);
|
218 |
+
border-width: var(--fa-border-width, 0.08em);
|
219 |
+
padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); }
|
220 |
+
|
221 |
+
.fa-pull-left {
|
222 |
+
float: left;
|
223 |
+
margin-right: var(--fa-pull-margin, 0.3em); }
|
224 |
+
|
225 |
+
.fa-pull-right {
|
226 |
+
float: right;
|
227 |
+
margin-left: var(--fa-pull-margin, 0.3em); }
|
228 |
+
|
229 |
+
.fa-beat {
|
230 |
+
-webkit-animation-name: fa-beat;
|
231 |
+
animation-name: fa-beat;
|
232 |
+
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
233 |
+
animation-delay: var(--fa-animation-delay, 0s);
|
234 |
+
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
235 |
+
animation-direction: var(--fa-animation-direction, normal);
|
236 |
+
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
237 |
+
animation-duration: var(--fa-animation-duration, 1s);
|
238 |
+
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
239 |
+
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
240 |
+
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
241 |
+
animation-timing-function: var(--fa-animation-timing, ease-in-out); }
|
242 |
+
|
243 |
+
.fa-bounce {
|
244 |
+
-webkit-animation-name: fa-bounce;
|
245 |
+
animation-name: fa-bounce;
|
246 |
+
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
247 |
+
animation-delay: var(--fa-animation-delay, 0s);
|
248 |
+
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
249 |
+
animation-direction: var(--fa-animation-direction, normal);
|
250 |
+
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
251 |
+
animation-duration: var(--fa-animation-duration, 1s);
|
252 |
+
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
253 |
+
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
254 |
+
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
|
255 |
+
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); }
|
256 |
+
|
257 |
+
.fa-fade {
|
258 |
+
-webkit-animation-name: fa-fade;
|
259 |
+
animation-name: fa-fade;
|
260 |
+
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
261 |
+
animation-delay: var(--fa-animation-delay, 0s);
|
262 |
+
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
263 |
+
animation-direction: var(--fa-animation-direction, normal);
|
264 |
+
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
265 |
+
animation-duration: var(--fa-animation-duration, 1s);
|
266 |
+
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
267 |
+
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
268 |
+
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
269 |
+
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
|
270 |
+
|
271 |
+
.fa-beat-fade {
|
272 |
+
-webkit-animation-name: fa-beat-fade;
|
273 |
+
animation-name: fa-beat-fade;
|
274 |
+
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
275 |
+
animation-delay: var(--fa-animation-delay, 0s);
|
276 |
+
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
277 |
+
animation-direction: var(--fa-animation-direction, normal);
|
278 |
+
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
279 |
+
animation-duration: var(--fa-animation-duration, 1s);
|
280 |
+
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
281 |
+
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
282 |
+
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
283 |
+
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
|
284 |
+
|
285 |
+
.fa-flip {
|
286 |
+
-webkit-animation-name: fa-flip;
|
287 |
+
animation-name: fa-flip;
|
288 |
+
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
289 |
+
animation-delay: var(--fa-animation-delay, 0s);
|
290 |
+
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
291 |
+
animation-direction: var(--fa-animation-direction, normal);
|
292 |
+
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
293 |
+
animation-duration: var(--fa-animation-duration, 1s);
|
294 |
+
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
295 |
+
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
296 |
+
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
297 |
+
animation-timing-function: var(--fa-animation-timing, ease-in-out); }
|
298 |
+
|
299 |
+
.fa-shake {
|
300 |
+
-webkit-animation-name: fa-shake;
|
301 |
+
animation-name: fa-shake;
|
302 |
+
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
303 |
+
animation-delay: var(--fa-animation-delay, 0s);
|
304 |
+
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
305 |
+
animation-direction: var(--fa-animation-direction, normal);
|
306 |
+
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
307 |
+
animation-duration: var(--fa-animation-duration, 1s);
|
308 |
+
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
309 |
+
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
310 |
+
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
|
311 |
+
animation-timing-function: var(--fa-animation-timing, linear); }
|
312 |
+
|
313 |
+
.fa-spin {
|
314 |
+
-webkit-animation-name: fa-spin;
|
315 |
+
animation-name: fa-spin;
|
316 |
+
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
317 |
+
animation-delay: var(--fa-animation-delay, 0s);
|
318 |
+
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
319 |
+
animation-direction: var(--fa-animation-direction, normal);
|
320 |
+
-webkit-animation-duration: var(--fa-animation-duration, 2s);
|
321 |
+
animation-duration: var(--fa-animation-duration, 2s);
|
322 |
+
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
323 |
+
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
324 |
+
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
|
325 |
+
animation-timing-function: var(--fa-animation-timing, linear); }
|
326 |
+
|
327 |
+
.fa-spin-reverse {
|
328 |
+
--fa-animation-direction: reverse; }
|
329 |
+
|
330 |
+
.fa-pulse,
|
331 |
+
.fa-spin-pulse {
|
332 |
+
-webkit-animation-name: fa-spin;
|
333 |
+
animation-name: fa-spin;
|
334 |
+
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
335 |
+
animation-direction: var(--fa-animation-direction, normal);
|
336 |
+
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
337 |
+
animation-duration: var(--fa-animation-duration, 1s);
|
338 |
+
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
339 |
+
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
340 |
+
-webkit-animation-timing-function: var(--fa-animation-timing, steps(8));
|
341 |
+
animation-timing-function: var(--fa-animation-timing, steps(8)); }
|
342 |
+
|
343 |
+
@media (prefers-reduced-motion: reduce) {
|
344 |
+
.fa-beat,
|
345 |
+
.fa-bounce,
|
346 |
+
.fa-fade,
|
347 |
+
.fa-beat-fade,
|
348 |
+
.fa-flip,
|
349 |
+
.fa-pulse,
|
350 |
+
.fa-shake,
|
351 |
+
.fa-spin,
|
352 |
+
.fa-spin-pulse {
|
353 |
+
-webkit-animation-delay: -1ms;
|
354 |
+
animation-delay: -1ms;
|
355 |
+
-webkit-animation-duration: 1ms;
|
356 |
+
animation-duration: 1ms;
|
357 |
+
-webkit-animation-iteration-count: 1;
|
358 |
+
animation-iteration-count: 1;
|
359 |
+
-webkit-transition-delay: 0s;
|
360 |
+
transition-delay: 0s;
|
361 |
+
-webkit-transition-duration: 0s;
|
362 |
+
transition-duration: 0s; } }
|
363 |
+
|
364 |
+
@-webkit-keyframes fa-beat {
|
365 |
+
0%, 90% {
|
366 |
+
-webkit-transform: scale(1);
|
367 |
+
transform: scale(1); }
|
368 |
+
45% {
|
369 |
+
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
|
370 |
+
transform: scale(var(--fa-beat-scale, 1.25)); } }
|
371 |
+
|
372 |
+
@keyframes fa-beat {
|
373 |
+
0%, 90% {
|
374 |
+
-webkit-transform: scale(1);
|
375 |
+
transform: scale(1); }
|
376 |
+
45% {
|
377 |
+
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
|
378 |
+
transform: scale(var(--fa-beat-scale, 1.25)); } }
|
379 |
+
|
380 |
+
@-webkit-keyframes fa-bounce {
|
381 |
+
0% {
|
382 |
+
-webkit-transform: scale(1, 1) translateY(0);
|
383 |
+
transform: scale(1, 1) translateY(0); }
|
384 |
+
10% {
|
385 |
+
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
386 |
+
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
|
387 |
+
30% {
|
388 |
+
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
389 |
+
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
|
390 |
+
50% {
|
391 |
+
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
392 |
+
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
|
393 |
+
57% {
|
394 |
+
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
395 |
+
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
|
396 |
+
64% {
|
397 |
+
-webkit-transform: scale(1, 1) translateY(0);
|
398 |
+
transform: scale(1, 1) translateY(0); }
|
399 |
+
100% {
|
400 |
+
-webkit-transform: scale(1, 1) translateY(0);
|
401 |
+
transform: scale(1, 1) translateY(0); } }
|
402 |
+
|
403 |
+
@keyframes fa-bounce {
|
404 |
+
0% {
|
405 |
+
-webkit-transform: scale(1, 1) translateY(0);
|
406 |
+
transform: scale(1, 1) translateY(0); }
|
407 |
+
10% {
|
408 |
+
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
409 |
+
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
|
410 |
+
30% {
|
411 |
+
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
412 |
+
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
|
413 |
+
50% {
|
414 |
+
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
415 |
+
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
|
416 |
+
57% {
|
417 |
+
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
418 |
+
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
|
419 |
+
64% {
|
420 |
+
-webkit-transform: scale(1, 1) translateY(0);
|
421 |
+
transform: scale(1, 1) translateY(0); }
|
422 |
+
100% {
|
423 |
+
-webkit-transform: scale(1, 1) translateY(0);
|
424 |
+
transform: scale(1, 1) translateY(0); } }
|
425 |
+
|
426 |
+
@-webkit-keyframes fa-fade {
|
427 |
+
50% {
|
428 |
+
opacity: var(--fa-fade-opacity, 0.4); } }
|
429 |
+
|
430 |
+
@keyframes fa-fade {
|
431 |
+
50% {
|
432 |
+
opacity: var(--fa-fade-opacity, 0.4); } }
|
433 |
+
|
434 |
+
@-webkit-keyframes fa-beat-fade {
|
435 |
+
0%, 100% {
|
436 |
+
opacity: var(--fa-beat-fade-opacity, 0.4);
|
437 |
+
-webkit-transform: scale(1);
|
438 |
+
transform: scale(1); }
|
439 |
+
50% {
|
440 |
+
opacity: 1;
|
441 |
+
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
|
442 |
+
transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
|
443 |
+
|
444 |
+
@keyframes fa-beat-fade {
|
445 |
+
0%, 100% {
|
446 |
+
opacity: var(--fa-beat-fade-opacity, 0.4);
|
447 |
+
-webkit-transform: scale(1);
|
448 |
+
transform: scale(1); }
|
449 |
+
50% {
|
450 |
+
opacity: 1;
|
451 |
+
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
|
452 |
+
transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
|
453 |
+
|
454 |
+
@-webkit-keyframes fa-flip {
|
455 |
+
50% {
|
456 |
+
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
457 |
+
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
|
458 |
+
|
459 |
+
@keyframes fa-flip {
|
460 |
+
50% {
|
461 |
+
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
462 |
+
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
|
463 |
+
|
464 |
+
@-webkit-keyframes fa-shake {
|
465 |
+
0% {
|
466 |
+
-webkit-transform: rotate(-15deg);
|
467 |
+
transform: rotate(-15deg); }
|
468 |
+
4% {
|
469 |
+
-webkit-transform: rotate(15deg);
|
470 |
+
transform: rotate(15deg); }
|
471 |
+
8%, 24% {
|
472 |
+
-webkit-transform: rotate(-18deg);
|
473 |
+
transform: rotate(-18deg); }
|
474 |
+
12%, 28% {
|
475 |
+
-webkit-transform: rotate(18deg);
|
476 |
+
transform: rotate(18deg); }
|
477 |
+
16% {
|
478 |
+
-webkit-transform: rotate(-22deg);
|
479 |
+
transform: rotate(-22deg); }
|
480 |
+
20% {
|
481 |
+
-webkit-transform: rotate(22deg);
|
482 |
+
transform: rotate(22deg); }
|
483 |
+
32% {
|
484 |
+
-webkit-transform: rotate(-12deg);
|
485 |
+
transform: rotate(-12deg); }
|
486 |
+
36% {
|
487 |
+
-webkit-transform: rotate(12deg);
|
488 |
+
transform: rotate(12deg); }
|
489 |
+
40%, 100% {
|
490 |
+
-webkit-transform: rotate(0deg);
|
491 |
+
transform: rotate(0deg); } }
|
492 |
+
|
493 |
+
@keyframes fa-shake {
|
494 |
+
0% {
|
495 |
+
-webkit-transform: rotate(-15deg);
|
496 |
+
transform: rotate(-15deg); }
|
497 |
+
4% {
|
498 |
+
-webkit-transform: rotate(15deg);
|
499 |
+
transform: rotate(15deg); }
|
500 |
+
8%, 24% {
|
501 |
+
-webkit-transform: rotate(-18deg);
|
502 |
+
transform: rotate(-18deg); }
|
503 |
+
12%, 28% {
|
504 |
+
-webkit-transform: rotate(18deg);
|
505 |
+
transform: rotate(18deg); }
|
506 |
+
16% {
|
507 |
+
-webkit-transform: rotate(-22deg);
|
508 |
+
transform: rotate(-22deg); }
|
509 |
+
20% {
|
510 |
+
-webkit-transform: rotate(22deg);
|
511 |
+
transform: rotate(22deg); }
|
512 |
+
32% {
|
513 |
+
-webkit-transform: rotate(-12deg);
|
514 |
+
transform: rotate(-12deg); }
|
515 |
+
36% {
|
516 |
+
-webkit-transform: rotate(12deg);
|
517 |
+
transform: rotate(12deg); }
|
518 |
+
40%, 100% {
|
519 |
+
-webkit-transform: rotate(0deg);
|
520 |
+
transform: rotate(0deg); } }
|
521 |
+
|
522 |
+
@-webkit-keyframes fa-spin {
|
523 |
+
0% {
|
524 |
+
-webkit-transform: rotate(0deg);
|
525 |
+
transform: rotate(0deg); }
|
526 |
+
100% {
|
527 |
+
-webkit-transform: rotate(360deg);
|
528 |
+
transform: rotate(360deg); } }
|
529 |
+
|
530 |
+
@keyframes fa-spin {
|
531 |
+
0% {
|
532 |
+
-webkit-transform: rotate(0deg);
|
533 |
+
transform: rotate(0deg); }
|
534 |
+
100% {
|
535 |
+
-webkit-transform: rotate(360deg);
|
536 |
+
transform: rotate(360deg); } }
|
537 |
+
|
538 |
+
.fa-rotate-90 {
|
539 |
+
-webkit-transform: rotate(90deg);
|
540 |
+
transform: rotate(90deg); }
|
541 |
+
|
542 |
+
.fa-rotate-180 {
|
543 |
+
-webkit-transform: rotate(180deg);
|
544 |
+
transform: rotate(180deg); }
|
545 |
+
|
546 |
+
.fa-rotate-270 {
|
547 |
+
-webkit-transform: rotate(270deg);
|
548 |
+
transform: rotate(270deg); }
|
549 |
+
|
550 |
+
.fa-flip-horizontal {
|
551 |
+
-webkit-transform: scale(-1, 1);
|
552 |
+
transform: scale(-1, 1); }
|
553 |
+
|
554 |
+
.fa-flip-vertical {
|
555 |
+
-webkit-transform: scale(1, -1);
|
556 |
+
transform: scale(1, -1); }
|
557 |
+
|
558 |
+
.fa-flip-both,
|
559 |
+
.fa-flip-horizontal.fa-flip-vertical {
|
560 |
+
-webkit-transform: scale(-1, -1);
|
561 |
+
transform: scale(-1, -1); }
|
562 |
+
|
563 |
+
.fa-rotate-by {
|
564 |
+
-webkit-transform: rotate(var(--fa-rotate-angle, none));
|
565 |
+
transform: rotate(var(--fa-rotate-angle, none)); }
|
566 |
+
|
567 |
+
.fa-stack {
|
568 |
+
display: inline-block;
|
569 |
+
vertical-align: middle;
|
570 |
+
height: 2em;
|
571 |
+
position: relative;
|
572 |
+
width: 2.5em; }
|
573 |
+
|
574 |
+
.fa-stack-1x,
|
575 |
+
.fa-stack-2x {
|
576 |
+
bottom: 0;
|
577 |
+
left: 0;
|
578 |
+
margin: auto;
|
579 |
+
position: absolute;
|
580 |
+
right: 0;
|
581 |
+
top: 0;
|
582 |
+
z-index: var(--fa-stack-z-index, auto); }
|
583 |
+
|
584 |
+
.svg-inline--fa.fa-stack-1x {
|
585 |
+
height: 1em;
|
586 |
+
width: 1.25em; }
|
587 |
+
|
588 |
+
.svg-inline--fa.fa-stack-2x {
|
589 |
+
height: 2em;
|
590 |
+
width: 2.5em; }
|
591 |
+
|
592 |
+
.fa-inverse {
|
593 |
+
color: var(--fa-inverse, #fff); }
|
594 |
+
|
595 |
+
.sr-only,
|
596 |
+
.fa-sr-only {
|
597 |
+
position: absolute;
|
598 |
+
width: 1px;
|
599 |
+
height: 1px;
|
600 |
+
padding: 0;
|
601 |
+
margin: -1px;
|
602 |
+
overflow: hidden;
|
603 |
+
clip: rect(0, 0, 0, 0);
|
604 |
+
white-space: nowrap;
|
605 |
+
border-width: 0; }
|
606 |
+
|
607 |
+
.sr-only-focusable:not(:focus),
|
608 |
+
.fa-sr-only-focusable:not(:focus) {
|
609 |
+
position: absolute;
|
610 |
+
width: 1px;
|
611 |
+
height: 1px;
|
612 |
+
padding: 0;
|
613 |
+
margin: -1px;
|
614 |
+
overflow: hidden;
|
615 |
+
clip: rect(0, 0, 0, 0);
|
616 |
+
white-space: nowrap;
|
617 |
+
border-width: 0; }
|
618 |
+
|
619 |
+
.svg-inline--fa .fa-primary {
|
620 |
+
fill: var(--fa-primary-color, currentColor);
|
621 |
+
opacity: var(--fa-primary-opacity, 1); }
|
622 |
+
|
623 |
+
.svg-inline--fa .fa-secondary {
|
624 |
+
fill: var(--fa-secondary-color, currentColor);
|
625 |
+
opacity: var(--fa-secondary-opacity, 0.4); }
|
626 |
+
|
627 |
+
.svg-inline--fa.fa-swap-opacity .fa-primary {
|
628 |
+
opacity: var(--fa-secondary-opacity, 0.4); }
|
629 |
+
|
630 |
+
.svg-inline--fa.fa-swap-opacity .fa-secondary {
|
631 |
+
opacity: var(--fa-primary-opacity, 1); }
|
632 |
+
|
633 |
+
.svg-inline--fa mask .fa-primary,
|
634 |
+
.svg-inline--fa mask .fa-secondary {
|
635 |
+
fill: black; }
|
636 |
+
|
637 |
+
.fad.fa-inverse,
|
638 |
+
.fa-duotone.fa-inverse {
|
639 |
+
color: var(--fa-inverse, #fff); }
|
static/assets/FontAwesome/css/svg-with-js.min.css
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Font Awesome Free 6.4.2 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 2023 Fonticons, Inc.
|
5 |
+
*/
|
6 |
+
:host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Solid";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Regular";--fa-font-light:normal 300 1em/1 "Font Awesome 6 Light";--fa-font-thin:normal 100 1em/1 "Font Awesome 6 Thin";--fa-font-duotone:normal 900 1em/1 "Font Awesome 6 Duotone";--fa-font-sharp-solid:normal 900 1em/1 "Font Awesome 6 Sharp";--fa-font-sharp-regular:normal 400 1em/1 "Font Awesome 6 Sharp";--fa-font-sharp-light:normal 300 1em/1 "Font Awesome 6 Sharp";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}svg:not(:host).svg-inline--fa,svg:not(:root).svg-inline--fa{overflow:visible;box-sizing:content-box}.svg-inline--fa{display:var(--fa-display,inline-block);height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-2xs{vertical-align:.1em}.svg-inline--fa.fa-xs{vertical-align:0}.svg-inline--fa.fa-sm{vertical-align:-.07143em}.svg-inline--fa.fa-lg{vertical-align:-.2em}.svg-inline--fa.fa-xl{vertical-align:-.25em}.svg-inline--fa.fa-2xl{vertical-align:-.3125em}.svg-inline--fa.fa-pull-left{margin-right:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-pull-right{margin-left:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-li{width:var(--fa-li-width,2em);top:.25em}.svg-inline--fa.fa-fw{width:var(--fa-fw-width,1.25em)}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:var(--fa-counter-background-color,#ff253a);border-radius:var(--fa-counter-border-radius,1em);box-sizing:border-box;color:var(--fa-inverse,#fff);line-height:var(--fa-counter-line-height,1);max-width:var(--fa-counter-max-width,5em);min-width:var(--fa-counter-min-width,1.5em);overflow:hidden;padding:var(--fa-counter-padding,.25em .5em);right:var(--fa-right,0);text-overflow:ellipsis;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-counter-scale,.25));transform:scale(var(--fa-counter-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:var(--fa-bottom,0);right:var(--fa-right,0);top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:var(--fa-bottom,0);left:var(--fa-left,0);right:auto;top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{top:var(--fa-top,0);right:var(--fa-right,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:var(--fa-left,0);right:auto;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top left;transform-origin:top left}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-transition-delay:0s;transition-delay:0s;-webkit-transition-duration:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;vertical-align:middle;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;z-index:var(--fa-stack-z-index,auto)}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor)}.svg-inline--fa .fa-secondary,.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fa-duotone.fa-inverse,.fad.fa-inverse{color:var(--fa-inverse,#fff)}
|
static/assets/FontAwesome/css/v4-font-face.css
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Font Awesome Free 6.4.2 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 2023 Fonticons, Inc.
|
5 |
+
*/
|
6 |
+
@font-face {
|
7 |
+
font-family: 'FontAwesome';
|
8 |
+
font-display: block;
|
9 |
+
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
10 |
+
|
11 |
+
@font-face {
|
12 |
+
font-family: 'FontAwesome';
|
13 |
+
font-display: block;
|
14 |
+
src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
|
15 |
+
|
16 |
+
@font-face {
|
17 |
+
font-family: 'FontAwesome';
|
18 |
+
font-display: block;
|
19 |
+
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype");
|
20 |
+
unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; }
|
21 |
+
|
22 |
+
@font-face {
|
23 |
+
font-family: 'FontAwesome';
|
24 |
+
font-display: block;
|
25 |
+
src: url("../webfonts/fa-v4compatibility.woff2") format("woff2"), url("../webfonts/fa-v4compatibility.ttf") format("truetype");
|
26 |
+
unicode-range: U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A; }
|
static/assets/FontAwesome/css/v4-font-face.min.css
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Font Awesome Free 6.4.2 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 2023 Fonticons, Inc.
|
5 |
+
*/
|
6 |
+
@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}
|
static/assets/FontAwesome/css/v4-shims.css
ADDED
@@ -0,0 +1,2194 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Font Awesome Free 6.4.2 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 2023 Fonticons, Inc.
|
5 |
+
*/
|
6 |
+
.fa.fa-glass:before {
|
7 |
+
content: "\f000"; }
|
8 |
+
|
9 |
+
.fa.fa-envelope-o {
|
10 |
+
font-family: 'Font Awesome 6 Free';
|
11 |
+
font-weight: 400; }
|
12 |
+
|
13 |
+
.fa.fa-envelope-o:before {
|
14 |
+
content: "\f0e0"; }
|
15 |
+
|
16 |
+
.fa.fa-star-o {
|
17 |
+
font-family: 'Font Awesome 6 Free';
|
18 |
+
font-weight: 400; }
|
19 |
+
|
20 |
+
.fa.fa-star-o:before {
|
21 |
+
content: "\f005"; }
|
22 |
+
|
23 |
+
.fa.fa-remove:before {
|
24 |
+
content: "\f00d"; }
|
25 |
+
|
26 |
+
.fa.fa-close:before {
|
27 |
+
content: "\f00d"; }
|
28 |
+
|
29 |
+
.fa.fa-gear:before {
|
30 |
+
content: "\f013"; }
|
31 |
+
|
32 |
+
.fa.fa-trash-o {
|
33 |
+
font-family: 'Font Awesome 6 Free';
|
34 |
+
font-weight: 400; }
|
35 |
+
|
36 |
+
.fa.fa-trash-o:before {
|
37 |
+
content: "\f2ed"; }
|
38 |
+
|
39 |
+
.fa.fa-home:before {
|
40 |
+
content: "\f015"; }
|
41 |
+
|
42 |
+
.fa.fa-file-o {
|
43 |
+
font-family: 'Font Awesome 6 Free';
|
44 |
+
font-weight: 400; }
|
45 |
+
|
46 |
+
.fa.fa-file-o:before {
|
47 |
+
content: "\f15b"; }
|
48 |
+
|
49 |
+
.fa.fa-clock-o {
|
50 |
+
font-family: 'Font Awesome 6 Free';
|
51 |
+
font-weight: 400; }
|
52 |
+
|
53 |
+
.fa.fa-clock-o:before {
|
54 |
+
content: "\f017"; }
|
55 |
+
|
56 |
+
.fa.fa-arrow-circle-o-down {
|
57 |
+
font-family: 'Font Awesome 6 Free';
|
58 |
+
font-weight: 400; }
|
59 |
+
|
60 |
+
.fa.fa-arrow-circle-o-down:before {
|
61 |
+
content: "\f358"; }
|
62 |
+
|
63 |
+
.fa.fa-arrow-circle-o-up {
|
64 |
+
font-family: 'Font Awesome 6 Free';
|
65 |
+
font-weight: 400; }
|
66 |
+
|
67 |
+
.fa.fa-arrow-circle-o-up:before {
|
68 |
+
content: "\f35b"; }
|
69 |
+
|
70 |
+
.fa.fa-play-circle-o {
|
71 |
+
font-family: 'Font Awesome 6 Free';
|
72 |
+
font-weight: 400; }
|
73 |
+
|
74 |
+
.fa.fa-play-circle-o:before {
|
75 |
+
content: "\f144"; }
|
76 |
+
|
77 |
+
.fa.fa-repeat:before {
|
78 |
+
content: "\f01e"; }
|
79 |
+
|
80 |
+
.fa.fa-rotate-right:before {
|
81 |
+
content: "\f01e"; }
|
82 |
+
|
83 |
+
.fa.fa-refresh:before {
|
84 |
+
content: "\f021"; }
|
85 |
+
|
86 |
+
.fa.fa-list-alt {
|
87 |
+
font-family: 'Font Awesome 6 Free';
|
88 |
+
font-weight: 400; }
|
89 |
+
|
90 |
+
.fa.fa-list-alt:before {
|
91 |
+
content: "\f022"; }
|
92 |
+
|
93 |
+
.fa.fa-dedent:before {
|
94 |
+
content: "\f03b"; }
|
95 |
+
|
96 |
+
.fa.fa-video-camera:before {
|
97 |
+
content: "\f03d"; }
|
98 |
+
|
99 |
+
.fa.fa-picture-o {
|
100 |
+
font-family: 'Font Awesome 6 Free';
|
101 |
+
font-weight: 400; }
|
102 |
+
|
103 |
+
.fa.fa-picture-o:before {
|
104 |
+
content: "\f03e"; }
|
105 |
+
|
106 |
+
.fa.fa-photo {
|
107 |
+
font-family: 'Font Awesome 6 Free';
|
108 |
+
font-weight: 400; }
|
109 |
+
|
110 |
+
.fa.fa-photo:before {
|
111 |
+
content: "\f03e"; }
|
112 |
+
|
113 |
+
.fa.fa-image {
|
114 |
+
font-family: 'Font Awesome 6 Free';
|
115 |
+
font-weight: 400; }
|
116 |
+
|
117 |
+
.fa.fa-image:before {
|
118 |
+
content: "\f03e"; }
|
119 |
+
|
120 |
+
.fa.fa-map-marker:before {
|
121 |
+
content: "\f3c5"; }
|
122 |
+
|
123 |
+
.fa.fa-pencil-square-o {
|
124 |
+
font-family: 'Font Awesome 6 Free';
|
125 |
+
font-weight: 400; }
|
126 |
+
|
127 |
+
.fa.fa-pencil-square-o:before {
|
128 |
+
content: "\f044"; }
|
129 |
+
|
130 |
+
.fa.fa-edit {
|
131 |
+
font-family: 'Font Awesome 6 Free';
|
132 |
+
font-weight: 400; }
|
133 |
+
|
134 |
+
.fa.fa-edit:before {
|
135 |
+
content: "\f044"; }
|
136 |
+
|
137 |
+
.fa.fa-share-square-o:before {
|
138 |
+
content: "\f14d"; }
|
139 |
+
|
140 |
+
.fa.fa-check-square-o {
|
141 |
+
font-family: 'Font Awesome 6 Free';
|
142 |
+
font-weight: 400; }
|
143 |
+
|
144 |
+
.fa.fa-check-square-o:before {
|
145 |
+
content: "\f14a"; }
|
146 |
+
|
147 |
+
.fa.fa-arrows:before {
|
148 |
+
content: "\f0b2"; }
|
149 |
+
|
150 |
+
.fa.fa-times-circle-o {
|
151 |
+
font-family: 'Font Awesome 6 Free';
|
152 |
+
font-weight: 400; }
|
153 |
+
|
154 |
+
.fa.fa-times-circle-o:before {
|
155 |
+
content: "\f057"; }
|
156 |
+
|
157 |
+
.fa.fa-check-circle-o {
|
158 |
+
font-family: 'Font Awesome 6 Free';
|
159 |
+
font-weight: 400; }
|
160 |
+
|
161 |
+
.fa.fa-check-circle-o:before {
|
162 |
+
content: "\f058"; }
|
163 |
+
|
164 |
+
.fa.fa-mail-forward:before {
|
165 |
+
content: "\f064"; }
|
166 |
+
|
167 |
+
.fa.fa-expand:before {
|
168 |
+
content: "\f424"; }
|
169 |
+
|
170 |
+
.fa.fa-compress:before {
|
171 |
+
content: "\f422"; }
|
172 |
+
|
173 |
+
.fa.fa-eye {
|
174 |
+
font-family: 'Font Awesome 6 Free';
|
175 |
+
font-weight: 400; }
|
176 |
+
|
177 |
+
.fa.fa-eye-slash {
|
178 |
+
font-family: 'Font Awesome 6 Free';
|
179 |
+
font-weight: 400; }
|
180 |
+
|
181 |
+
.fa.fa-warning:before {
|
182 |
+
content: "\f071"; }
|
183 |
+
|
184 |
+
.fa.fa-calendar:before {
|
185 |
+
content: "\f073"; }
|
186 |
+
|
187 |
+
.fa.fa-arrows-v:before {
|
188 |
+
content: "\f338"; }
|
189 |
+
|
190 |
+
.fa.fa-arrows-h:before {
|
191 |
+
content: "\f337"; }
|
192 |
+
|
193 |
+
.fa.fa-bar-chart:before {
|
194 |
+
content: "\e0e3"; }
|
195 |
+
|
196 |
+
.fa.fa-bar-chart-o:before {
|
197 |
+
content: "\e0e3"; }
|
198 |
+
|
199 |
+
.fa.fa-twitter-square {
|
200 |
+
font-family: 'Font Awesome 6 Brands';
|
201 |
+
font-weight: 400; }
|
202 |
+
|
203 |
+
.fa.fa-twitter-square:before {
|
204 |
+
content: "\f081"; }
|
205 |
+
|
206 |
+
.fa.fa-facebook-square {
|
207 |
+
font-family: 'Font Awesome 6 Brands';
|
208 |
+
font-weight: 400; }
|
209 |
+
|
210 |
+
.fa.fa-facebook-square:before {
|
211 |
+
content: "\f082"; }
|
212 |
+
|
213 |
+
.fa.fa-gears:before {
|
214 |
+
content: "\f085"; }
|
215 |
+
|
216 |
+
.fa.fa-thumbs-o-up {
|
217 |
+
font-family: 'Font Awesome 6 Free';
|
218 |
+
font-weight: 400; }
|
219 |
+
|
220 |
+
.fa.fa-thumbs-o-up:before {
|
221 |
+
content: "\f164"; }
|
222 |
+
|
223 |
+
.fa.fa-thumbs-o-down {
|
224 |
+
font-family: 'Font Awesome 6 Free';
|
225 |
+
font-weight: 400; }
|
226 |
+
|
227 |
+
.fa.fa-thumbs-o-down:before {
|
228 |
+
content: "\f165"; }
|
229 |
+
|
230 |
+
.fa.fa-heart-o {
|
231 |
+
font-family: 'Font Awesome 6 Free';
|
232 |
+
font-weight: 400; }
|
233 |
+
|
234 |
+
.fa.fa-heart-o:before {
|
235 |
+
content: "\f004"; }
|
236 |
+
|
237 |
+
.fa.fa-sign-out:before {
|
238 |
+
content: "\f2f5"; }
|
239 |
+
|
240 |
+
.fa.fa-linkedin-square {
|
241 |
+
font-family: 'Font Awesome 6 Brands';
|
242 |
+
font-weight: 400; }
|
243 |
+
|
244 |
+
.fa.fa-linkedin-square:before {
|
245 |
+
content: "\f08c"; }
|
246 |
+
|
247 |
+
.fa.fa-thumb-tack:before {
|
248 |
+
content: "\f08d"; }
|
249 |
+
|
250 |
+
.fa.fa-external-link:before {
|
251 |
+
content: "\f35d"; }
|
252 |
+
|
253 |
+
.fa.fa-sign-in:before {
|
254 |
+
content: "\f2f6"; }
|
255 |
+
|
256 |
+
.fa.fa-github-square {
|
257 |
+
font-family: 'Font Awesome 6 Brands';
|
258 |
+
font-weight: 400; }
|
259 |
+
|
260 |
+
.fa.fa-github-square:before {
|
261 |
+
content: "\f092"; }
|
262 |
+
|
263 |
+
.fa.fa-lemon-o {
|
264 |
+
font-family: 'Font Awesome 6 Free';
|
265 |
+
font-weight: 400; }
|
266 |
+
|
267 |
+
.fa.fa-lemon-o:before {
|
268 |
+
content: "\f094"; }
|
269 |
+
|
270 |
+
.fa.fa-square-o {
|
271 |
+
font-family: 'Font Awesome 6 Free';
|
272 |
+
font-weight: 400; }
|
273 |
+
|
274 |
+
.fa.fa-square-o:before {
|
275 |
+
content: "\f0c8"; }
|
276 |
+
|
277 |
+
.fa.fa-bookmark-o {
|
278 |
+
font-family: 'Font Awesome 6 Free';
|
279 |
+
font-weight: 400; }
|
280 |
+
|
281 |
+
.fa.fa-bookmark-o:before {
|
282 |
+
content: "\f02e"; }
|
283 |
+
|
284 |
+
.fa.fa-twitter {
|
285 |
+
font-family: 'Font Awesome 6 Brands';
|
286 |
+
font-weight: 400; }
|
287 |
+
|
288 |
+
.fa.fa-facebook {
|
289 |
+
font-family: 'Font Awesome 6 Brands';
|
290 |
+
font-weight: 400; }
|
291 |
+
|
292 |
+
.fa.fa-facebook:before {
|
293 |
+
content: "\f39e"; }
|
294 |
+
|
295 |
+
.fa.fa-facebook-f {
|
296 |
+
font-family: 'Font Awesome 6 Brands';
|
297 |
+
font-weight: 400; }
|
298 |
+
|
299 |
+
.fa.fa-facebook-f:before {
|
300 |
+
content: "\f39e"; }
|
301 |
+
|
302 |
+
.fa.fa-github {
|
303 |
+
font-family: 'Font Awesome 6 Brands';
|
304 |
+
font-weight: 400; }
|
305 |
+
|
306 |
+
.fa.fa-credit-card {
|
307 |
+
font-family: 'Font Awesome 6 Free';
|
308 |
+
font-weight: 400; }
|
309 |
+
|
310 |
+
.fa.fa-feed:before {
|
311 |
+
content: "\f09e"; }
|
312 |
+
|
313 |
+
.fa.fa-hdd-o {
|
314 |
+
font-family: 'Font Awesome 6 Free';
|
315 |
+
font-weight: 400; }
|
316 |
+
|
317 |
+
.fa.fa-hdd-o:before {
|
318 |
+
content: "\f0a0"; }
|
319 |
+
|
320 |
+
.fa.fa-hand-o-right {
|
321 |
+
font-family: 'Font Awesome 6 Free';
|
322 |
+
font-weight: 400; }
|
323 |
+
|
324 |
+
.fa.fa-hand-o-right:before {
|
325 |
+
content: "\f0a4"; }
|
326 |
+
|
327 |
+
.fa.fa-hand-o-left {
|
328 |
+
font-family: 'Font Awesome 6 Free';
|
329 |
+
font-weight: 400; }
|
330 |
+
|
331 |
+
.fa.fa-hand-o-left:before {
|
332 |
+
content: "\f0a5"; }
|
333 |
+
|
334 |
+
.fa.fa-hand-o-up {
|
335 |
+
font-family: 'Font Awesome 6 Free';
|
336 |
+
font-weight: 400; }
|
337 |
+
|
338 |
+
.fa.fa-hand-o-up:before {
|
339 |
+
content: "\f0a6"; }
|
340 |
+
|
341 |
+
.fa.fa-hand-o-down {
|
342 |
+
font-family: 'Font Awesome 6 Free';
|
343 |
+
font-weight: 400; }
|
344 |
+
|
345 |
+
.fa.fa-hand-o-down:before {
|
346 |
+
content: "\f0a7"; }
|
347 |
+
|
348 |
+
.fa.fa-globe:before {
|
349 |
+
content: "\f57d"; }
|
350 |
+
|
351 |
+
.fa.fa-tasks:before {
|
352 |
+
content: "\f828"; }
|
353 |
+
|
354 |
+
.fa.fa-arrows-alt:before {
|
355 |
+
content: "\f31e"; }
|
356 |
+
|
357 |
+
.fa.fa-group:before {
|
358 |
+
content: "\f0c0"; }
|
359 |
+
|
360 |
+
.fa.fa-chain:before {
|
361 |
+
content: "\f0c1"; }
|
362 |
+
|
363 |
+
.fa.fa-cut:before {
|
364 |
+
content: "\f0c4"; }
|
365 |
+
|
366 |
+
.fa.fa-files-o {
|
367 |
+
font-family: 'Font Awesome 6 Free';
|
368 |
+
font-weight: 400; }
|
369 |
+
|
370 |
+
.fa.fa-files-o:before {
|
371 |
+
content: "\f0c5"; }
|
372 |
+
|
373 |
+
.fa.fa-floppy-o {
|
374 |
+
font-family: 'Font Awesome 6 Free';
|
375 |
+
font-weight: 400; }
|
376 |
+
|
377 |
+
.fa.fa-floppy-o:before {
|
378 |
+
content: "\f0c7"; }
|
379 |
+
|
380 |
+
.fa.fa-save {
|
381 |
+
font-family: 'Font Awesome 6 Free';
|
382 |
+
font-weight: 400; }
|
383 |
+
|
384 |
+
.fa.fa-save:before {
|
385 |
+
content: "\f0c7"; }
|
386 |
+
|
387 |
+
.fa.fa-navicon:before {
|
388 |
+
content: "\f0c9"; }
|
389 |
+
|
390 |
+
.fa.fa-reorder:before {
|
391 |
+
content: "\f0c9"; }
|
392 |
+
|
393 |
+
.fa.fa-magic:before {
|
394 |
+
content: "\e2ca"; }
|
395 |
+
|
396 |
+
.fa.fa-pinterest {
|
397 |
+
font-family: 'Font Awesome 6 Brands';
|
398 |
+
font-weight: 400; }
|
399 |
+
|
400 |
+
.fa.fa-pinterest-square {
|
401 |
+
font-family: 'Font Awesome 6 Brands';
|
402 |
+
font-weight: 400; }
|
403 |
+
|
404 |
+
.fa.fa-pinterest-square:before {
|
405 |
+
content: "\f0d3"; }
|
406 |
+
|
407 |
+
.fa.fa-google-plus-square {
|
408 |
+
font-family: 'Font Awesome 6 Brands';
|
409 |
+
font-weight: 400; }
|
410 |
+
|
411 |
+
.fa.fa-google-plus-square:before {
|
412 |
+
content: "\f0d4"; }
|
413 |
+
|
414 |
+
.fa.fa-google-plus {
|
415 |
+
font-family: 'Font Awesome 6 Brands';
|
416 |
+
font-weight: 400; }
|
417 |
+
|
418 |
+
.fa.fa-google-plus:before {
|
419 |
+
content: "\f0d5"; }
|
420 |
+
|
421 |
+
.fa.fa-money:before {
|
422 |
+
content: "\f3d1"; }
|
423 |
+
|
424 |
+
.fa.fa-unsorted:before {
|
425 |
+
content: "\f0dc"; }
|
426 |
+
|
427 |
+
.fa.fa-sort-desc:before {
|
428 |
+
content: "\f0dd"; }
|
429 |
+
|
430 |
+
.fa.fa-sort-asc:before {
|
431 |
+
content: "\f0de"; }
|
432 |
+
|
433 |
+
.fa.fa-linkedin {
|
434 |
+
font-family: 'Font Awesome 6 Brands';
|
435 |
+
font-weight: 400; }
|
436 |
+
|
437 |
+
.fa.fa-linkedin:before {
|
438 |
+
content: "\f0e1"; }
|
439 |
+
|
440 |
+
.fa.fa-rotate-left:before {
|
441 |
+
content: "\f0e2"; }
|
442 |
+
|
443 |
+
.fa.fa-legal:before {
|
444 |
+
content: "\f0e3"; }
|
445 |
+
|
446 |
+
.fa.fa-tachometer:before {
|
447 |
+
content: "\f625"; }
|
448 |
+
|
449 |
+
.fa.fa-dashboard:before {
|
450 |
+
content: "\f625"; }
|
451 |
+
|
452 |
+
.fa.fa-comment-o {
|
453 |
+
font-family: 'Font Awesome 6 Free';
|
454 |
+
font-weight: 400; }
|
455 |
+
|
456 |
+
.fa.fa-comment-o:before {
|
457 |
+
content: "\f075"; }
|
458 |
+
|
459 |
+
.fa.fa-comments-o {
|
460 |
+
font-family: 'Font Awesome 6 Free';
|
461 |
+
font-weight: 400; }
|
462 |
+
|
463 |
+
.fa.fa-comments-o:before {
|
464 |
+
content: "\f086"; }
|
465 |
+
|
466 |
+
.fa.fa-flash:before {
|
467 |
+
content: "\f0e7"; }
|
468 |
+
|
469 |
+
.fa.fa-clipboard:before {
|
470 |
+
content: "\f0ea"; }
|
471 |
+
|
472 |
+
.fa.fa-lightbulb-o {
|
473 |
+
font-family: 'Font Awesome 6 Free';
|
474 |
+
font-weight: 400; }
|
475 |
+
|
476 |
+
.fa.fa-lightbulb-o:before {
|
477 |
+
content: "\f0eb"; }
|
478 |
+
|
479 |
+
.fa.fa-exchange:before {
|
480 |
+
content: "\f362"; }
|
481 |
+
|
482 |
+
.fa.fa-cloud-download:before {
|
483 |
+
content: "\f0ed"; }
|
484 |
+
|
485 |
+
.fa.fa-cloud-upload:before {
|
486 |
+
content: "\f0ee"; }
|
487 |
+
|
488 |
+
.fa.fa-bell-o {
|
489 |
+
font-family: 'Font Awesome 6 Free';
|
490 |
+
font-weight: 400; }
|
491 |
+
|
492 |
+
.fa.fa-bell-o:before {
|
493 |
+
content: "\f0f3"; }
|
494 |
+
|
495 |
+
.fa.fa-cutlery:before {
|
496 |
+
content: "\f2e7"; }
|
497 |
+
|
498 |
+
.fa.fa-file-text-o {
|
499 |
+
font-family: 'Font Awesome 6 Free';
|
500 |
+
font-weight: 400; }
|
501 |
+
|
502 |
+
.fa.fa-file-text-o:before {
|
503 |
+
content: "\f15c"; }
|
504 |
+
|
505 |
+
.fa.fa-building-o {
|
506 |
+
font-family: 'Font Awesome 6 Free';
|
507 |
+
font-weight: 400; }
|
508 |
+
|
509 |
+
.fa.fa-building-o:before {
|
510 |
+
content: "\f1ad"; }
|
511 |
+
|
512 |
+
.fa.fa-hospital-o {
|
513 |
+
font-family: 'Font Awesome 6 Free';
|
514 |
+
font-weight: 400; }
|
515 |
+
|
516 |
+
.fa.fa-hospital-o:before {
|
517 |
+
content: "\f0f8"; }
|
518 |
+
|
519 |
+
.fa.fa-tablet:before {
|
520 |
+
content: "\f3fa"; }
|
521 |
+
|
522 |
+
.fa.fa-mobile:before {
|
523 |
+
content: "\f3cd"; }
|
524 |
+
|
525 |
+
.fa.fa-mobile-phone:before {
|
526 |
+
content: "\f3cd"; }
|
527 |
+
|
528 |
+
.fa.fa-circle-o {
|
529 |
+
font-family: 'Font Awesome 6 Free';
|
530 |
+
font-weight: 400; }
|
531 |
+
|
532 |
+
.fa.fa-circle-o:before {
|
533 |
+
content: "\f111"; }
|
534 |
+
|
535 |
+
.fa.fa-mail-reply:before {
|
536 |
+
content: "\f3e5"; }
|
537 |
+
|
538 |
+
.fa.fa-github-alt {
|
539 |
+
font-family: 'Font Awesome 6 Brands';
|
540 |
+
font-weight: 400; }
|
541 |
+
|
542 |
+
.fa.fa-folder-o {
|
543 |
+
font-family: 'Font Awesome 6 Free';
|
544 |
+
font-weight: 400; }
|
545 |
+
|
546 |
+
.fa.fa-folder-o:before {
|
547 |
+
content: "\f07b"; }
|
548 |
+
|
549 |
+
.fa.fa-folder-open-o {
|
550 |
+
font-family: 'Font Awesome 6 Free';
|
551 |
+
font-weight: 400; }
|
552 |
+
|
553 |
+
.fa.fa-folder-open-o:before {
|
554 |
+
content: "\f07c"; }
|
555 |
+
|
556 |
+
.fa.fa-smile-o {
|
557 |
+
font-family: 'Font Awesome 6 Free';
|
558 |
+
font-weight: 400; }
|
559 |
+
|
560 |
+
.fa.fa-smile-o:before {
|
561 |
+
content: "\f118"; }
|
562 |
+
|
563 |
+
.fa.fa-frown-o {
|
564 |
+
font-family: 'Font Awesome 6 Free';
|
565 |
+
font-weight: 400; }
|
566 |
+
|
567 |
+
.fa.fa-frown-o:before {
|
568 |
+
content: "\f119"; }
|
569 |
+
|
570 |
+
.fa.fa-meh-o {
|
571 |
+
font-family: 'Font Awesome 6 Free';
|
572 |
+
font-weight: 400; }
|
573 |
+
|
574 |
+
.fa.fa-meh-o:before {
|
575 |
+
content: "\f11a"; }
|
576 |
+
|
577 |
+
.fa.fa-keyboard-o {
|
578 |
+
font-family: 'Font Awesome 6 Free';
|
579 |
+
font-weight: 400; }
|
580 |
+
|
581 |
+
.fa.fa-keyboard-o:before {
|
582 |
+
content: "\f11c"; }
|
583 |
+
|
584 |
+
.fa.fa-flag-o {
|
585 |
+
font-family: 'Font Awesome 6 Free';
|
586 |
+
font-weight: 400; }
|
587 |
+
|
588 |
+
.fa.fa-flag-o:before {
|
589 |
+
content: "\f024"; }
|
590 |
+
|
591 |
+
.fa.fa-mail-reply-all:before {
|
592 |
+
content: "\f122"; }
|
593 |
+
|
594 |
+
.fa.fa-star-half-o {
|
595 |
+
font-family: 'Font Awesome 6 Free';
|
596 |
+
font-weight: 400; }
|
597 |
+
|
598 |
+
.fa.fa-star-half-o:before {
|
599 |
+
content: "\f5c0"; }
|
600 |
+
|
601 |
+
.fa.fa-star-half-empty {
|
602 |
+
font-family: 'Font Awesome 6 Free';
|
603 |
+
font-weight: 400; }
|
604 |
+
|
605 |
+
.fa.fa-star-half-empty:before {
|
606 |
+
content: "\f5c0"; }
|
607 |
+
|
608 |
+
.fa.fa-star-half-full {
|
609 |
+
font-family: 'Font Awesome 6 Free';
|
610 |
+
font-weight: 400; }
|
611 |
+
|
612 |
+
.fa.fa-star-half-full:before {
|
613 |
+
content: "\f5c0"; }
|
614 |
+
|
615 |
+
.fa.fa-code-fork:before {
|
616 |
+
content: "\f126"; }
|
617 |
+
|
618 |
+
.fa.fa-chain-broken:before {
|
619 |
+
content: "\f127"; }
|
620 |
+
|
621 |
+
.fa.fa-unlink:before {
|
622 |
+
content: "\f127"; }
|
623 |
+
|
624 |
+
.fa.fa-calendar-o {
|
625 |
+
font-family: 'Font Awesome 6 Free';
|
626 |
+
font-weight: 400; }
|
627 |
+
|
628 |
+
.fa.fa-calendar-o:before {
|
629 |
+
content: "\f133"; }
|
630 |
+
|
631 |
+
.fa.fa-maxcdn {
|
632 |
+
font-family: 'Font Awesome 6 Brands';
|
633 |
+
font-weight: 400; }
|
634 |
+
|
635 |
+
.fa.fa-html5 {
|
636 |
+
font-family: 'Font Awesome 6 Brands';
|
637 |
+
font-weight: 400; }
|
638 |
+
|
639 |
+
.fa.fa-css3 {
|
640 |
+
font-family: 'Font Awesome 6 Brands';
|
641 |
+
font-weight: 400; }
|
642 |
+
|
643 |
+
.fa.fa-unlock-alt:before {
|
644 |
+
content: "\f09c"; }
|
645 |
+
|
646 |
+
.fa.fa-minus-square-o {
|
647 |
+
font-family: 'Font Awesome 6 Free';
|
648 |
+
font-weight: 400; }
|
649 |
+
|
650 |
+
.fa.fa-minus-square-o:before {
|
651 |
+
content: "\f146"; }
|
652 |
+
|
653 |
+
.fa.fa-level-up:before {
|
654 |
+
content: "\f3bf"; }
|
655 |
+
|
656 |
+
.fa.fa-level-down:before {
|
657 |
+
content: "\f3be"; }
|
658 |
+
|
659 |
+
.fa.fa-pencil-square:before {
|
660 |
+
content: "\f14b"; }
|
661 |
+
|
662 |
+
.fa.fa-external-link-square:before {
|
663 |
+
content: "\f360"; }
|
664 |
+
|
665 |
+
.fa.fa-compass {
|
666 |
+
font-family: 'Font Awesome 6 Free';
|
667 |
+
font-weight: 400; }
|
668 |
+
|
669 |
+
.fa.fa-caret-square-o-down {
|
670 |
+
font-family: 'Font Awesome 6 Free';
|
671 |
+
font-weight: 400; }
|
672 |
+
|
673 |
+
.fa.fa-caret-square-o-down:before {
|
674 |
+
content: "\f150"; }
|
675 |
+
|
676 |
+
.fa.fa-toggle-down {
|
677 |
+
font-family: 'Font Awesome 6 Free';
|
678 |
+
font-weight: 400; }
|
679 |
+
|
680 |
+
.fa.fa-toggle-down:before {
|
681 |
+
content: "\f150"; }
|
682 |
+
|
683 |
+
.fa.fa-caret-square-o-up {
|
684 |
+
font-family: 'Font Awesome 6 Free';
|
685 |
+
font-weight: 400; }
|
686 |
+
|
687 |
+
.fa.fa-caret-square-o-up:before {
|
688 |
+
content: "\f151"; }
|
689 |
+
|
690 |
+
.fa.fa-toggle-up {
|
691 |
+
font-family: 'Font Awesome 6 Free';
|
692 |
+
font-weight: 400; }
|
693 |
+
|
694 |
+
.fa.fa-toggle-up:before {
|
695 |
+
content: "\f151"; }
|
696 |
+
|
697 |
+
.fa.fa-caret-square-o-right {
|
698 |
+
font-family: 'Font Awesome 6 Free';
|
699 |
+
font-weight: 400; }
|
700 |
+
|
701 |
+
.fa.fa-caret-square-o-right:before {
|
702 |
+
content: "\f152"; }
|
703 |
+
|
704 |
+
.fa.fa-toggle-right {
|
705 |
+
font-family: 'Font Awesome 6 Free';
|
706 |
+
font-weight: 400; }
|
707 |
+
|
708 |
+
.fa.fa-toggle-right:before {
|
709 |
+
content: "\f152"; }
|
710 |
+
|
711 |
+
.fa.fa-eur:before {
|
712 |
+
content: "\f153"; }
|
713 |
+
|
714 |
+
.fa.fa-euro:before {
|
715 |
+
content: "\f153"; }
|
716 |
+
|
717 |
+
.fa.fa-gbp:before {
|
718 |
+
content: "\f154"; }
|
719 |
+
|
720 |
+
.fa.fa-usd:before {
|
721 |
+
content: "\24"; }
|
722 |
+
|
723 |
+
.fa.fa-dollar:before {
|
724 |
+
content: "\24"; }
|
725 |
+
|
726 |
+
.fa.fa-inr:before {
|
727 |
+
content: "\e1bc"; }
|
728 |
+
|
729 |
+
.fa.fa-rupee:before {
|
730 |
+
content: "\e1bc"; }
|
731 |
+
|
732 |
+
.fa.fa-jpy:before {
|
733 |
+
content: "\f157"; }
|
734 |
+
|
735 |
+
.fa.fa-cny:before {
|
736 |
+
content: "\f157"; }
|
737 |
+
|
738 |
+
.fa.fa-rmb:before {
|
739 |
+
content: "\f157"; }
|
740 |
+
|
741 |
+
.fa.fa-yen:before {
|
742 |
+
content: "\f157"; }
|
743 |
+
|
744 |
+
.fa.fa-rub:before {
|
745 |
+
content: "\f158"; }
|
746 |
+
|
747 |
+
.fa.fa-ruble:before {
|
748 |
+
content: "\f158"; }
|
749 |
+
|
750 |
+
.fa.fa-rouble:before {
|
751 |
+
content: "\f158"; }
|
752 |
+
|
753 |
+
.fa.fa-krw:before {
|
754 |
+
content: "\f159"; }
|
755 |
+
|
756 |
+
.fa.fa-won:before {
|
757 |
+
content: "\f159"; }
|
758 |
+
|
759 |
+
.fa.fa-btc {
|
760 |
+
font-family: 'Font Awesome 6 Brands';
|
761 |
+
font-weight: 400; }
|
762 |
+
|
763 |
+
.fa.fa-bitcoin {
|
764 |
+
font-family: 'Font Awesome 6 Brands';
|
765 |
+
font-weight: 400; }
|
766 |
+
|
767 |
+
.fa.fa-bitcoin:before {
|
768 |
+
content: "\f15a"; }
|
769 |
+
|
770 |
+
.fa.fa-file-text:before {
|
771 |
+
content: "\f15c"; }
|
772 |
+
|
773 |
+
.fa.fa-sort-alpha-asc:before {
|
774 |
+
content: "\f15d"; }
|
775 |
+
|
776 |
+
.fa.fa-sort-alpha-desc:before {
|
777 |
+
content: "\f881"; }
|
778 |
+
|
779 |
+
.fa.fa-sort-amount-asc:before {
|
780 |
+
content: "\f884"; }
|
781 |
+
|
782 |
+
.fa.fa-sort-amount-desc:before {
|
783 |
+
content: "\f160"; }
|
784 |
+
|
785 |
+
.fa.fa-sort-numeric-asc:before {
|
786 |
+
content: "\f162"; }
|
787 |
+
|
788 |
+
.fa.fa-sort-numeric-desc:before {
|
789 |
+
content: "\f886"; }
|
790 |
+
|
791 |
+
.fa.fa-youtube-square {
|
792 |
+
font-family: 'Font Awesome 6 Brands';
|
793 |
+
font-weight: 400; }
|
794 |
+
|
795 |
+
.fa.fa-youtube-square:before {
|
796 |
+
content: "\f431"; }
|
797 |
+
|
798 |
+
.fa.fa-youtube {
|
799 |
+
font-family: 'Font Awesome 6 Brands';
|
800 |
+
font-weight: 400; }
|
801 |
+
|
802 |
+
.fa.fa-xing {
|
803 |
+
font-family: 'Font Awesome 6 Brands';
|
804 |
+
font-weight: 400; }
|
805 |
+
|
806 |
+
.fa.fa-xing-square {
|
807 |
+
font-family: 'Font Awesome 6 Brands';
|
808 |
+
font-weight: 400; }
|
809 |
+
|
810 |
+
.fa.fa-xing-square:before {
|
811 |
+
content: "\f169"; }
|
812 |
+
|
813 |
+
.fa.fa-youtube-play {
|
814 |
+
font-family: 'Font Awesome 6 Brands';
|
815 |
+
font-weight: 400; }
|
816 |
+
|
817 |
+
.fa.fa-youtube-play:before {
|
818 |
+
content: "\f167"; }
|
819 |
+
|
820 |
+
.fa.fa-dropbox {
|
821 |
+
font-family: 'Font Awesome 6 Brands';
|
822 |
+
font-weight: 400; }
|
823 |
+
|
824 |
+
.fa.fa-stack-overflow {
|
825 |
+
font-family: 'Font Awesome 6 Brands';
|
826 |
+
font-weight: 400; }
|
827 |
+
|
828 |
+
.fa.fa-instagram {
|
829 |
+
font-family: 'Font Awesome 6 Brands';
|
830 |
+
font-weight: 400; }
|
831 |
+
|
832 |
+
.fa.fa-flickr {
|
833 |
+
font-family: 'Font Awesome 6 Brands';
|
834 |
+
font-weight: 400; }
|
835 |
+
|
836 |
+
.fa.fa-adn {
|
837 |
+
font-family: 'Font Awesome 6 Brands';
|
838 |
+
font-weight: 400; }
|
839 |
+
|
840 |
+
.fa.fa-bitbucket {
|
841 |
+
font-family: 'Font Awesome 6 Brands';
|
842 |
+
font-weight: 400; }
|
843 |
+
|
844 |
+
.fa.fa-bitbucket-square {
|
845 |
+
font-family: 'Font Awesome 6 Brands';
|
846 |
+
font-weight: 400; }
|
847 |
+
|
848 |
+
.fa.fa-bitbucket-square:before {
|
849 |
+
content: "\f171"; }
|
850 |
+
|
851 |
+
.fa.fa-tumblr {
|
852 |
+
font-family: 'Font Awesome 6 Brands';
|
853 |
+
font-weight: 400; }
|
854 |
+
|
855 |
+
.fa.fa-tumblr-square {
|
856 |
+
font-family: 'Font Awesome 6 Brands';
|
857 |
+
font-weight: 400; }
|
858 |
+
|
859 |
+
.fa.fa-tumblr-square:before {
|
860 |
+
content: "\f174"; }
|
861 |
+
|
862 |
+
.fa.fa-long-arrow-down:before {
|
863 |
+
content: "\f309"; }
|
864 |
+
|
865 |
+
.fa.fa-long-arrow-up:before {
|
866 |
+
content: "\f30c"; }
|
867 |
+
|
868 |
+
.fa.fa-long-arrow-left:before {
|
869 |
+
content: "\f30a"; }
|
870 |
+
|
871 |
+
.fa.fa-long-arrow-right:before {
|
872 |
+
content: "\f30b"; }
|
873 |
+
|
874 |
+
.fa.fa-apple {
|
875 |
+
font-family: 'Font Awesome 6 Brands';
|
876 |
+
font-weight: 400; }
|
877 |
+
|
878 |
+
.fa.fa-windows {
|
879 |
+
font-family: 'Font Awesome 6 Brands';
|
880 |
+
font-weight: 400; }
|
881 |
+
|
882 |
+
.fa.fa-android {
|
883 |
+
font-family: 'Font Awesome 6 Brands';
|
884 |
+
font-weight: 400; }
|
885 |
+
|
886 |
+
.fa.fa-linux {
|
887 |
+
font-family: 'Font Awesome 6 Brands';
|
888 |
+
font-weight: 400; }
|
889 |
+
|
890 |
+
.fa.fa-dribbble {
|
891 |
+
font-family: 'Font Awesome 6 Brands';
|
892 |
+
font-weight: 400; }
|
893 |
+
|
894 |
+
.fa.fa-skype {
|
895 |
+
font-family: 'Font Awesome 6 Brands';
|
896 |
+
font-weight: 400; }
|
897 |
+
|
898 |
+
.fa.fa-foursquare {
|
899 |
+
font-family: 'Font Awesome 6 Brands';
|
900 |
+
font-weight: 400; }
|
901 |
+
|
902 |
+
.fa.fa-trello {
|
903 |
+
font-family: 'Font Awesome 6 Brands';
|
904 |
+
font-weight: 400; }
|
905 |
+
|
906 |
+
.fa.fa-gratipay {
|
907 |
+
font-family: 'Font Awesome 6 Brands';
|
908 |
+
font-weight: 400; }
|
909 |
+
|
910 |
+
.fa.fa-gittip {
|
911 |
+
font-family: 'Font Awesome 6 Brands';
|
912 |
+
font-weight: 400; }
|
913 |
+
|
914 |
+
.fa.fa-gittip:before {
|
915 |
+
content: "\f184"; }
|
916 |
+
|
917 |
+
.fa.fa-sun-o {
|
918 |
+
font-family: 'Font Awesome 6 Free';
|
919 |
+
font-weight: 400; }
|
920 |
+
|
921 |
+
.fa.fa-sun-o:before {
|
922 |
+
content: "\f185"; }
|
923 |
+
|
924 |
+
.fa.fa-moon-o {
|
925 |
+
font-family: 'Font Awesome 6 Free';
|
926 |
+
font-weight: 400; }
|
927 |
+
|
928 |
+
.fa.fa-moon-o:before {
|
929 |
+
content: "\f186"; }
|
930 |
+
|
931 |
+
.fa.fa-vk {
|
932 |
+
font-family: 'Font Awesome 6 Brands';
|
933 |
+
font-weight: 400; }
|
934 |
+
|
935 |
+
.fa.fa-weibo {
|
936 |
+
font-family: 'Font Awesome 6 Brands';
|
937 |
+
font-weight: 400; }
|
938 |
+
|
939 |
+
.fa.fa-renren {
|
940 |
+
font-family: 'Font Awesome 6 Brands';
|
941 |
+
font-weight: 400; }
|
942 |
+
|
943 |
+
.fa.fa-pagelines {
|
944 |
+
font-family: 'Font Awesome 6 Brands';
|
945 |
+
font-weight: 400; }
|
946 |
+
|
947 |
+
.fa.fa-stack-exchange {
|
948 |
+
font-family: 'Font Awesome 6 Brands';
|
949 |
+
font-weight: 400; }
|
950 |
+
|
951 |
+
.fa.fa-arrow-circle-o-right {
|
952 |
+
font-family: 'Font Awesome 6 Free';
|
953 |
+
font-weight: 400; }
|
954 |
+
|
955 |
+
.fa.fa-arrow-circle-o-right:before {
|
956 |
+
content: "\f35a"; }
|
957 |
+
|
958 |
+
.fa.fa-arrow-circle-o-left {
|
959 |
+
font-family: 'Font Awesome 6 Free';
|
960 |
+
font-weight: 400; }
|
961 |
+
|
962 |
+
.fa.fa-arrow-circle-o-left:before {
|
963 |
+
content: "\f359"; }
|
964 |
+
|
965 |
+
.fa.fa-caret-square-o-left {
|
966 |
+
font-family: 'Font Awesome 6 Free';
|
967 |
+
font-weight: 400; }
|
968 |
+
|
969 |
+
.fa.fa-caret-square-o-left:before {
|
970 |
+
content: "\f191"; }
|
971 |
+
|
972 |
+
.fa.fa-toggle-left {
|
973 |
+
font-family: 'Font Awesome 6 Free';
|
974 |
+
font-weight: 400; }
|
975 |
+
|
976 |
+
.fa.fa-toggle-left:before {
|
977 |
+
content: "\f191"; }
|
978 |
+
|
979 |
+
.fa.fa-dot-circle-o {
|
980 |
+
font-family: 'Font Awesome 6 Free';
|
981 |
+
font-weight: 400; }
|
982 |
+
|
983 |
+
.fa.fa-dot-circle-o:before {
|
984 |
+
content: "\f192"; }
|
985 |
+
|
986 |
+
.fa.fa-vimeo-square {
|
987 |
+
font-family: 'Font Awesome 6 Brands';
|
988 |
+
font-weight: 400; }
|
989 |
+
|
990 |
+
.fa.fa-vimeo-square:before {
|
991 |
+
content: "\f194"; }
|
992 |
+
|
993 |
+
.fa.fa-try:before {
|
994 |
+
content: "\e2bb"; }
|
995 |
+
|
996 |
+
.fa.fa-turkish-lira:before {
|
997 |
+
content: "\e2bb"; }
|
998 |
+
|
999 |
+
.fa.fa-plus-square-o {
|
1000 |
+
font-family: 'Font Awesome 6 Free';
|
1001 |
+
font-weight: 400; }
|
1002 |
+
|
1003 |
+
.fa.fa-plus-square-o:before {
|
1004 |
+
content: "\f0fe"; }
|
1005 |
+
|
1006 |
+
.fa.fa-slack {
|
1007 |
+
font-family: 'Font Awesome 6 Brands';
|
1008 |
+
font-weight: 400; }
|
1009 |
+
|
1010 |
+
.fa.fa-wordpress {
|
1011 |
+
font-family: 'Font Awesome 6 Brands';
|
1012 |
+
font-weight: 400; }
|
1013 |
+
|
1014 |
+
.fa.fa-openid {
|
1015 |
+
font-family: 'Font Awesome 6 Brands';
|
1016 |
+
font-weight: 400; }
|
1017 |
+
|
1018 |
+
.fa.fa-institution:before {
|
1019 |
+
content: "\f19c"; }
|
1020 |
+
|
1021 |
+
.fa.fa-bank:before {
|
1022 |
+
content: "\f19c"; }
|
1023 |
+
|
1024 |
+
.fa.fa-mortar-board:before {
|
1025 |
+
content: "\f19d"; }
|
1026 |
+
|
1027 |
+
.fa.fa-yahoo {
|
1028 |
+
font-family: 'Font Awesome 6 Brands';
|
1029 |
+
font-weight: 400; }
|
1030 |
+
|
1031 |
+
.fa.fa-google {
|
1032 |
+
font-family: 'Font Awesome 6 Brands';
|
1033 |
+
font-weight: 400; }
|
1034 |
+
|
1035 |
+
.fa.fa-reddit {
|
1036 |
+
font-family: 'Font Awesome 6 Brands';
|
1037 |
+
font-weight: 400; }
|
1038 |
+
|
1039 |
+
.fa.fa-reddit-square {
|
1040 |
+
font-family: 'Font Awesome 6 Brands';
|
1041 |
+
font-weight: 400; }
|
1042 |
+
|
1043 |
+
.fa.fa-reddit-square:before {
|
1044 |
+
content: "\f1a2"; }
|
1045 |
+
|
1046 |
+
.fa.fa-stumbleupon-circle {
|
1047 |
+
font-family: 'Font Awesome 6 Brands';
|
1048 |
+
font-weight: 400; }
|
1049 |
+
|
1050 |
+
.fa.fa-stumbleupon {
|
1051 |
+
font-family: 'Font Awesome 6 Brands';
|
1052 |
+
font-weight: 400; }
|
1053 |
+
|
1054 |
+
.fa.fa-delicious {
|
1055 |
+
font-family: 'Font Awesome 6 Brands';
|
1056 |
+
font-weight: 400; }
|
1057 |
+
|
1058 |
+
.fa.fa-digg {
|
1059 |
+
font-family: 'Font Awesome 6 Brands';
|
1060 |
+
font-weight: 400; }
|
1061 |
+
|
1062 |
+
.fa.fa-pied-piper-pp {
|
1063 |
+
font-family: 'Font Awesome 6 Brands';
|
1064 |
+
font-weight: 400; }
|
1065 |
+
|
1066 |
+
.fa.fa-pied-piper-alt {
|
1067 |
+
font-family: 'Font Awesome 6 Brands';
|
1068 |
+
font-weight: 400; }
|
1069 |
+
|
1070 |
+
.fa.fa-drupal {
|
1071 |
+
font-family: 'Font Awesome 6 Brands';
|
1072 |
+
font-weight: 400; }
|
1073 |
+
|
1074 |
+
.fa.fa-joomla {
|
1075 |
+
font-family: 'Font Awesome 6 Brands';
|
1076 |
+
font-weight: 400; }
|
1077 |
+
|
1078 |
+
.fa.fa-behance {
|
1079 |
+
font-family: 'Font Awesome 6 Brands';
|
1080 |
+
font-weight: 400; }
|
1081 |
+
|
1082 |
+
.fa.fa-behance-square {
|
1083 |
+
font-family: 'Font Awesome 6 Brands';
|
1084 |
+
font-weight: 400; }
|
1085 |
+
|
1086 |
+
.fa.fa-behance-square:before {
|
1087 |
+
content: "\f1b5"; }
|
1088 |
+
|
1089 |
+
.fa.fa-steam {
|
1090 |
+
font-family: 'Font Awesome 6 Brands';
|
1091 |
+
font-weight: 400; }
|
1092 |
+
|
1093 |
+
.fa.fa-steam-square {
|
1094 |
+
font-family: 'Font Awesome 6 Brands';
|
1095 |
+
font-weight: 400; }
|
1096 |
+
|
1097 |
+
.fa.fa-steam-square:before {
|
1098 |
+
content: "\f1b7"; }
|
1099 |
+
|
1100 |
+
.fa.fa-automobile:before {
|
1101 |
+
content: "\f1b9"; }
|
1102 |
+
|
1103 |
+
.fa.fa-cab:before {
|
1104 |
+
content: "\f1ba"; }
|
1105 |
+
|
1106 |
+
.fa.fa-spotify {
|
1107 |
+
font-family: 'Font Awesome 6 Brands';
|
1108 |
+
font-weight: 400; }
|
1109 |
+
|
1110 |
+
.fa.fa-deviantart {
|
1111 |
+
font-family: 'Font Awesome 6 Brands';
|
1112 |
+
font-weight: 400; }
|
1113 |
+
|
1114 |
+
.fa.fa-soundcloud {
|
1115 |
+
font-family: 'Font Awesome 6 Brands';
|
1116 |
+
font-weight: 400; }
|
1117 |
+
|
1118 |
+
.fa.fa-file-pdf-o {
|
1119 |
+
font-family: 'Font Awesome 6 Free';
|
1120 |
+
font-weight: 400; }
|
1121 |
+
|
1122 |
+
.fa.fa-file-pdf-o:before {
|
1123 |
+
content: "\f1c1"; }
|
1124 |
+
|
1125 |
+
.fa.fa-file-word-o {
|
1126 |
+
font-family: 'Font Awesome 6 Free';
|
1127 |
+
font-weight: 400; }
|
1128 |
+
|
1129 |
+
.fa.fa-file-word-o:before {
|
1130 |
+
content: "\f1c2"; }
|
1131 |
+
|
1132 |
+
.fa.fa-file-excel-o {
|
1133 |
+
font-family: 'Font Awesome 6 Free';
|
1134 |
+
font-weight: 400; }
|
1135 |
+
|
1136 |
+
.fa.fa-file-excel-o:before {
|
1137 |
+
content: "\f1c3"; }
|
1138 |
+
|
1139 |
+
.fa.fa-file-powerpoint-o {
|
1140 |
+
font-family: 'Font Awesome 6 Free';
|
1141 |
+
font-weight: 400; }
|
1142 |
+
|
1143 |
+
.fa.fa-file-powerpoint-o:before {
|
1144 |
+
content: "\f1c4"; }
|
1145 |
+
|
1146 |
+
.fa.fa-file-image-o {
|
1147 |
+
font-family: 'Font Awesome 6 Free';
|
1148 |
+
font-weight: 400; }
|
1149 |
+
|
1150 |
+
.fa.fa-file-image-o:before {
|
1151 |
+
content: "\f1c5"; }
|
1152 |
+
|
1153 |
+
.fa.fa-file-photo-o {
|
1154 |
+
font-family: 'Font Awesome 6 Free';
|
1155 |
+
font-weight: 400; }
|
1156 |
+
|
1157 |
+
.fa.fa-file-photo-o:before {
|
1158 |
+
content: "\f1c5"; }
|
1159 |
+
|
1160 |
+
.fa.fa-file-picture-o {
|
1161 |
+
font-family: 'Font Awesome 6 Free';
|
1162 |
+
font-weight: 400; }
|
1163 |
+
|
1164 |
+
.fa.fa-file-picture-o:before {
|
1165 |
+
content: "\f1c5"; }
|
1166 |
+
|
1167 |
+
.fa.fa-file-archive-o {
|
1168 |
+
font-family: 'Font Awesome 6 Free';
|
1169 |
+
font-weight: 400; }
|
1170 |
+
|
1171 |
+
.fa.fa-file-archive-o:before {
|
1172 |
+
content: "\f1c6"; }
|
1173 |
+
|
1174 |
+
.fa.fa-file-zip-o {
|
1175 |
+
font-family: 'Font Awesome 6 Free';
|
1176 |
+
font-weight: 400; }
|
1177 |
+
|
1178 |
+
.fa.fa-file-zip-o:before {
|
1179 |
+
content: "\f1c6"; }
|
1180 |
+
|
1181 |
+
.fa.fa-file-audio-o {
|
1182 |
+
font-family: 'Font Awesome 6 Free';
|
1183 |
+
font-weight: 400; }
|
1184 |
+
|
1185 |
+
.fa.fa-file-audio-o:before {
|
1186 |
+
content: "\f1c7"; }
|
1187 |
+
|
1188 |
+
.fa.fa-file-sound-o {
|
1189 |
+
font-family: 'Font Awesome 6 Free';
|
1190 |
+
font-weight: 400; }
|
1191 |
+
|
1192 |
+
.fa.fa-file-sound-o:before {
|
1193 |
+
content: "\f1c7"; }
|
1194 |
+
|
1195 |
+
.fa.fa-file-video-o {
|
1196 |
+
font-family: 'Font Awesome 6 Free';
|
1197 |
+
font-weight: 400; }
|
1198 |
+
|
1199 |
+
.fa.fa-file-video-o:before {
|
1200 |
+
content: "\f1c8"; }
|
1201 |
+
|
1202 |
+
.fa.fa-file-movie-o {
|
1203 |
+
font-family: 'Font Awesome 6 Free';
|
1204 |
+
font-weight: 400; }
|
1205 |
+
|
1206 |
+
.fa.fa-file-movie-o:before {
|
1207 |
+
content: "\f1c8"; }
|
1208 |
+
|
1209 |
+
.fa.fa-file-code-o {
|
1210 |
+
font-family: 'Font Awesome 6 Free';
|
1211 |
+
font-weight: 400; }
|
1212 |
+
|
1213 |
+
.fa.fa-file-code-o:before {
|
1214 |
+
content: "\f1c9"; }
|
1215 |
+
|
1216 |
+
.fa.fa-vine {
|
1217 |
+
font-family: 'Font Awesome 6 Brands';
|
1218 |
+
font-weight: 400; }
|
1219 |
+
|
1220 |
+
.fa.fa-codepen {
|
1221 |
+
font-family: 'Font Awesome 6 Brands';
|
1222 |
+
font-weight: 400; }
|
1223 |
+
|
1224 |
+
.fa.fa-jsfiddle {
|
1225 |
+
font-family: 'Font Awesome 6 Brands';
|
1226 |
+
font-weight: 400; }
|
1227 |
+
|
1228 |
+
.fa.fa-life-bouy:before {
|
1229 |
+
content: "\f1cd"; }
|
1230 |
+
|
1231 |
+
.fa.fa-life-buoy:before {
|
1232 |
+
content: "\f1cd"; }
|
1233 |
+
|
1234 |
+
.fa.fa-life-saver:before {
|
1235 |
+
content: "\f1cd"; }
|
1236 |
+
|
1237 |
+
.fa.fa-support:before {
|
1238 |
+
content: "\f1cd"; }
|
1239 |
+
|
1240 |
+
.fa.fa-circle-o-notch:before {
|
1241 |
+
content: "\f1ce"; }
|
1242 |
+
|
1243 |
+
.fa.fa-rebel {
|
1244 |
+
font-family: 'Font Awesome 6 Brands';
|
1245 |
+
font-weight: 400; }
|
1246 |
+
|
1247 |
+
.fa.fa-ra {
|
1248 |
+
font-family: 'Font Awesome 6 Brands';
|
1249 |
+
font-weight: 400; }
|
1250 |
+
|
1251 |
+
.fa.fa-ra:before {
|
1252 |
+
content: "\f1d0"; }
|
1253 |
+
|
1254 |
+
.fa.fa-resistance {
|
1255 |
+
font-family: 'Font Awesome 6 Brands';
|
1256 |
+
font-weight: 400; }
|
1257 |
+
|
1258 |
+
.fa.fa-resistance:before {
|
1259 |
+
content: "\f1d0"; }
|
1260 |
+
|
1261 |
+
.fa.fa-empire {
|
1262 |
+
font-family: 'Font Awesome 6 Brands';
|
1263 |
+
font-weight: 400; }
|
1264 |
+
|
1265 |
+
.fa.fa-ge {
|
1266 |
+
font-family: 'Font Awesome 6 Brands';
|
1267 |
+
font-weight: 400; }
|
1268 |
+
|
1269 |
+
.fa.fa-ge:before {
|
1270 |
+
content: "\f1d1"; }
|
1271 |
+
|
1272 |
+
.fa.fa-git-square {
|
1273 |
+
font-family: 'Font Awesome 6 Brands';
|
1274 |
+
font-weight: 400; }
|
1275 |
+
|
1276 |
+
.fa.fa-git-square:before {
|
1277 |
+
content: "\f1d2"; }
|
1278 |
+
|
1279 |
+
.fa.fa-git {
|
1280 |
+
font-family: 'Font Awesome 6 Brands';
|
1281 |
+
font-weight: 400; }
|
1282 |
+
|
1283 |
+
.fa.fa-hacker-news {
|
1284 |
+
font-family: 'Font Awesome 6 Brands';
|
1285 |
+
font-weight: 400; }
|
1286 |
+
|
1287 |
+
.fa.fa-y-combinator-square {
|
1288 |
+
font-family: 'Font Awesome 6 Brands';
|
1289 |
+
font-weight: 400; }
|
1290 |
+
|
1291 |
+
.fa.fa-y-combinator-square:before {
|
1292 |
+
content: "\f1d4"; }
|
1293 |
+
|
1294 |
+
.fa.fa-yc-square {
|
1295 |
+
font-family: 'Font Awesome 6 Brands';
|
1296 |
+
font-weight: 400; }
|
1297 |
+
|
1298 |
+
.fa.fa-yc-square:before {
|
1299 |
+
content: "\f1d4"; }
|
1300 |
+
|
1301 |
+
.fa.fa-tencent-weibo {
|
1302 |
+
font-family: 'Font Awesome 6 Brands';
|
1303 |
+
font-weight: 400; }
|
1304 |
+
|
1305 |
+
.fa.fa-qq {
|
1306 |
+
font-family: 'Font Awesome 6 Brands';
|
1307 |
+
font-weight: 400; }
|
1308 |
+
|
1309 |
+
.fa.fa-weixin {
|
1310 |
+
font-family: 'Font Awesome 6 Brands';
|
1311 |
+
font-weight: 400; }
|
1312 |
+
|
1313 |
+
.fa.fa-wechat {
|
1314 |
+
font-family: 'Font Awesome 6 Brands';
|
1315 |
+
font-weight: 400; }
|
1316 |
+
|
1317 |
+
.fa.fa-wechat:before {
|
1318 |
+
content: "\f1d7"; }
|
1319 |
+
|
1320 |
+
.fa.fa-send:before {
|
1321 |
+
content: "\f1d8"; }
|
1322 |
+
|
1323 |
+
.fa.fa-paper-plane-o {
|
1324 |
+
font-family: 'Font Awesome 6 Free';
|
1325 |
+
font-weight: 400; }
|
1326 |
+
|
1327 |
+
.fa.fa-paper-plane-o:before {
|
1328 |
+
content: "\f1d8"; }
|
1329 |
+
|
1330 |
+
.fa.fa-send-o {
|
1331 |
+
font-family: 'Font Awesome 6 Free';
|
1332 |
+
font-weight: 400; }
|
1333 |
+
|
1334 |
+
.fa.fa-send-o:before {
|
1335 |
+
content: "\f1d8"; }
|
1336 |
+
|
1337 |
+
.fa.fa-circle-thin {
|
1338 |
+
font-family: 'Font Awesome 6 Free';
|
1339 |
+
font-weight: 400; }
|
1340 |
+
|
1341 |
+
.fa.fa-circle-thin:before {
|
1342 |
+
content: "\f111"; }
|
1343 |
+
|
1344 |
+
.fa.fa-header:before {
|
1345 |
+
content: "\f1dc"; }
|
1346 |
+
|
1347 |
+
.fa.fa-futbol-o {
|
1348 |
+
font-family: 'Font Awesome 6 Free';
|
1349 |
+
font-weight: 400; }
|
1350 |
+
|
1351 |
+
.fa.fa-futbol-o:before {
|
1352 |
+
content: "\f1e3"; }
|
1353 |
+
|
1354 |
+
.fa.fa-soccer-ball-o {
|
1355 |
+
font-family: 'Font Awesome 6 Free';
|
1356 |
+
font-weight: 400; }
|
1357 |
+
|
1358 |
+
.fa.fa-soccer-ball-o:before {
|
1359 |
+
content: "\f1e3"; }
|
1360 |
+
|
1361 |
+
.fa.fa-slideshare {
|
1362 |
+
font-family: 'Font Awesome 6 Brands';
|
1363 |
+
font-weight: 400; }
|
1364 |
+
|
1365 |
+
.fa.fa-twitch {
|
1366 |
+
font-family: 'Font Awesome 6 Brands';
|
1367 |
+
font-weight: 400; }
|
1368 |
+
|
1369 |
+
.fa.fa-yelp {
|
1370 |
+
font-family: 'Font Awesome 6 Brands';
|
1371 |
+
font-weight: 400; }
|
1372 |
+
|
1373 |
+
.fa.fa-newspaper-o {
|
1374 |
+
font-family: 'Font Awesome 6 Free';
|
1375 |
+
font-weight: 400; }
|
1376 |
+
|
1377 |
+
.fa.fa-newspaper-o:before {
|
1378 |
+
content: "\f1ea"; }
|
1379 |
+
|
1380 |
+
.fa.fa-paypal {
|
1381 |
+
font-family: 'Font Awesome 6 Brands';
|
1382 |
+
font-weight: 400; }
|
1383 |
+
|
1384 |
+
.fa.fa-google-wallet {
|
1385 |
+
font-family: 'Font Awesome 6 Brands';
|
1386 |
+
font-weight: 400; }
|
1387 |
+
|
1388 |
+
.fa.fa-cc-visa {
|
1389 |
+
font-family: 'Font Awesome 6 Brands';
|
1390 |
+
font-weight: 400; }
|
1391 |
+
|
1392 |
+
.fa.fa-cc-mastercard {
|
1393 |
+
font-family: 'Font Awesome 6 Brands';
|
1394 |
+
font-weight: 400; }
|
1395 |
+
|
1396 |
+
.fa.fa-cc-discover {
|
1397 |
+
font-family: 'Font Awesome 6 Brands';
|
1398 |
+
font-weight: 400; }
|
1399 |
+
|
1400 |
+
.fa.fa-cc-amex {
|
1401 |
+
font-family: 'Font Awesome 6 Brands';
|
1402 |
+
font-weight: 400; }
|
1403 |
+
|
1404 |
+
.fa.fa-cc-paypal {
|
1405 |
+
font-family: 'Font Awesome 6 Brands';
|
1406 |
+
font-weight: 400; }
|
1407 |
+
|
1408 |
+
.fa.fa-cc-stripe {
|
1409 |
+
font-family: 'Font Awesome 6 Brands';
|
1410 |
+
font-weight: 400; }
|
1411 |
+
|
1412 |
+
.fa.fa-bell-slash-o {
|
1413 |
+
font-family: 'Font Awesome 6 Free';
|
1414 |
+
font-weight: 400; }
|
1415 |
+
|
1416 |
+
.fa.fa-bell-slash-o:before {
|
1417 |
+
content: "\f1f6"; }
|
1418 |
+
|
1419 |
+
.fa.fa-trash:before {
|
1420 |
+
content: "\f2ed"; }
|
1421 |
+
|
1422 |
+
.fa.fa-copyright {
|
1423 |
+
font-family: 'Font Awesome 6 Free';
|
1424 |
+
font-weight: 400; }
|
1425 |
+
|
1426 |
+
.fa.fa-eyedropper:before {
|
1427 |
+
content: "\f1fb"; }
|
1428 |
+
|
1429 |
+
.fa.fa-area-chart:before {
|
1430 |
+
content: "\f1fe"; }
|
1431 |
+
|
1432 |
+
.fa.fa-pie-chart:before {
|
1433 |
+
content: "\f200"; }
|
1434 |
+
|
1435 |
+
.fa.fa-line-chart:before {
|
1436 |
+
content: "\f201"; }
|
1437 |
+
|
1438 |
+
.fa.fa-lastfm {
|
1439 |
+
font-family: 'Font Awesome 6 Brands';
|
1440 |
+
font-weight: 400; }
|
1441 |
+
|
1442 |
+
.fa.fa-lastfm-square {
|
1443 |
+
font-family: 'Font Awesome 6 Brands';
|
1444 |
+
font-weight: 400; }
|
1445 |
+
|
1446 |
+
.fa.fa-lastfm-square:before {
|
1447 |
+
content: "\f203"; }
|
1448 |
+
|
1449 |
+
.fa.fa-ioxhost {
|
1450 |
+
font-family: 'Font Awesome 6 Brands';
|
1451 |
+
font-weight: 400; }
|
1452 |
+
|
1453 |
+
.fa.fa-angellist {
|
1454 |
+
font-family: 'Font Awesome 6 Brands';
|
1455 |
+
font-weight: 400; }
|
1456 |
+
|
1457 |
+
.fa.fa-cc {
|
1458 |
+
font-family: 'Font Awesome 6 Free';
|
1459 |
+
font-weight: 400; }
|
1460 |
+
|
1461 |
+
.fa.fa-cc:before {
|
1462 |
+
content: "\f20a"; }
|
1463 |
+
|
1464 |
+
.fa.fa-ils:before {
|
1465 |
+
content: "\f20b"; }
|
1466 |
+
|
1467 |
+
.fa.fa-shekel:before {
|
1468 |
+
content: "\f20b"; }
|
1469 |
+
|
1470 |
+
.fa.fa-sheqel:before {
|
1471 |
+
content: "\f20b"; }
|
1472 |
+
|
1473 |
+
.fa.fa-buysellads {
|
1474 |
+
font-family: 'Font Awesome 6 Brands';
|
1475 |
+
font-weight: 400; }
|
1476 |
+
|
1477 |
+
.fa.fa-connectdevelop {
|
1478 |
+
font-family: 'Font Awesome 6 Brands';
|
1479 |
+
font-weight: 400; }
|
1480 |
+
|
1481 |
+
.fa.fa-dashcube {
|
1482 |
+
font-family: 'Font Awesome 6 Brands';
|
1483 |
+
font-weight: 400; }
|
1484 |
+
|
1485 |
+
.fa.fa-forumbee {
|
1486 |
+
font-family: 'Font Awesome 6 Brands';
|
1487 |
+
font-weight: 400; }
|
1488 |
+
|
1489 |
+
.fa.fa-leanpub {
|
1490 |
+
font-family: 'Font Awesome 6 Brands';
|
1491 |
+
font-weight: 400; }
|
1492 |
+
|
1493 |
+
.fa.fa-sellsy {
|
1494 |
+
font-family: 'Font Awesome 6 Brands';
|
1495 |
+
font-weight: 400; }
|
1496 |
+
|
1497 |
+
.fa.fa-shirtsinbulk {
|
1498 |
+
font-family: 'Font Awesome 6 Brands';
|
1499 |
+
font-weight: 400; }
|
1500 |
+
|
1501 |
+
.fa.fa-simplybuilt {
|
1502 |
+
font-family: 'Font Awesome 6 Brands';
|
1503 |
+
font-weight: 400; }
|
1504 |
+
|
1505 |
+
.fa.fa-skyatlas {
|
1506 |
+
font-family: 'Font Awesome 6 Brands';
|
1507 |
+
font-weight: 400; }
|
1508 |
+
|
1509 |
+
.fa.fa-diamond {
|
1510 |
+
font-family: 'Font Awesome 6 Free';
|
1511 |
+
font-weight: 400; }
|
1512 |
+
|
1513 |
+
.fa.fa-diamond:before {
|
1514 |
+
content: "\f3a5"; }
|
1515 |
+
|
1516 |
+
.fa.fa-transgender:before {
|
1517 |
+
content: "\f224"; }
|
1518 |
+
|
1519 |
+
.fa.fa-intersex:before {
|
1520 |
+
content: "\f224"; }
|
1521 |
+
|
1522 |
+
.fa.fa-transgender-alt:before {
|
1523 |
+
content: "\f225"; }
|
1524 |
+
|
1525 |
+
.fa.fa-facebook-official {
|
1526 |
+
font-family: 'Font Awesome 6 Brands';
|
1527 |
+
font-weight: 400; }
|
1528 |
+
|
1529 |
+
.fa.fa-facebook-official:before {
|
1530 |
+
content: "\f09a"; }
|
1531 |
+
|
1532 |
+
.fa.fa-pinterest-p {
|
1533 |
+
font-family: 'Font Awesome 6 Brands';
|
1534 |
+
font-weight: 400; }
|
1535 |
+
|
1536 |
+
.fa.fa-whatsapp {
|
1537 |
+
font-family: 'Font Awesome 6 Brands';
|
1538 |
+
font-weight: 400; }
|
1539 |
+
|
1540 |
+
.fa.fa-hotel:before {
|
1541 |
+
content: "\f236"; }
|
1542 |
+
|
1543 |
+
.fa.fa-viacoin {
|
1544 |
+
font-family: 'Font Awesome 6 Brands';
|
1545 |
+
font-weight: 400; }
|
1546 |
+
|
1547 |
+
.fa.fa-medium {
|
1548 |
+
font-family: 'Font Awesome 6 Brands';
|
1549 |
+
font-weight: 400; }
|
1550 |
+
|
1551 |
+
.fa.fa-y-combinator {
|
1552 |
+
font-family: 'Font Awesome 6 Brands';
|
1553 |
+
font-weight: 400; }
|
1554 |
+
|
1555 |
+
.fa.fa-yc {
|
1556 |
+
font-family: 'Font Awesome 6 Brands';
|
1557 |
+
font-weight: 400; }
|
1558 |
+
|
1559 |
+
.fa.fa-yc:before {
|
1560 |
+
content: "\f23b"; }
|
1561 |
+
|
1562 |
+
.fa.fa-optin-monster {
|
1563 |
+
font-family: 'Font Awesome 6 Brands';
|
1564 |
+
font-weight: 400; }
|
1565 |
+
|
1566 |
+
.fa.fa-opencart {
|
1567 |
+
font-family: 'Font Awesome 6 Brands';
|
1568 |
+
font-weight: 400; }
|
1569 |
+
|
1570 |
+
.fa.fa-expeditedssl {
|
1571 |
+
font-family: 'Font Awesome 6 Brands';
|
1572 |
+
font-weight: 400; }
|
1573 |
+
|
1574 |
+
.fa.fa-battery-4:before {
|
1575 |
+
content: "\f240"; }
|
1576 |
+
|
1577 |
+
.fa.fa-battery:before {
|
1578 |
+
content: "\f240"; }
|
1579 |
+
|
1580 |
+
.fa.fa-battery-3:before {
|
1581 |
+
content: "\f241"; }
|
1582 |
+
|
1583 |
+
.fa.fa-battery-2:before {
|
1584 |
+
content: "\f242"; }
|
1585 |
+
|
1586 |
+
.fa.fa-battery-1:before {
|
1587 |
+
content: "\f243"; }
|
1588 |
+
|
1589 |
+
.fa.fa-battery-0:before {
|
1590 |
+
content: "\f244"; }
|
1591 |
+
|
1592 |
+
.fa.fa-object-group {
|
1593 |
+
font-family: 'Font Awesome 6 Free';
|
1594 |
+
font-weight: 400; }
|
1595 |
+
|
1596 |
+
.fa.fa-object-ungroup {
|
1597 |
+
font-family: 'Font Awesome 6 Free';
|
1598 |
+
font-weight: 400; }
|
1599 |
+
|
1600 |
+
.fa.fa-sticky-note-o {
|
1601 |
+
font-family: 'Font Awesome 6 Free';
|
1602 |
+
font-weight: 400; }
|
1603 |
+
|
1604 |
+
.fa.fa-sticky-note-o:before {
|
1605 |
+
content: "\f249"; }
|
1606 |
+
|
1607 |
+
.fa.fa-cc-jcb {
|
1608 |
+
font-family: 'Font Awesome 6 Brands';
|
1609 |
+
font-weight: 400; }
|
1610 |
+
|
1611 |
+
.fa.fa-cc-diners-club {
|
1612 |
+
font-family: 'Font Awesome 6 Brands';
|
1613 |
+
font-weight: 400; }
|
1614 |
+
|
1615 |
+
.fa.fa-clone {
|
1616 |
+
font-family: 'Font Awesome 6 Free';
|
1617 |
+
font-weight: 400; }
|
1618 |
+
|
1619 |
+
.fa.fa-hourglass-o:before {
|
1620 |
+
content: "\f254"; }
|
1621 |
+
|
1622 |
+
.fa.fa-hourglass-1:before {
|
1623 |
+
content: "\f251"; }
|
1624 |
+
|
1625 |
+
.fa.fa-hourglass-2:before {
|
1626 |
+
content: "\f252"; }
|
1627 |
+
|
1628 |
+
.fa.fa-hourglass-3:before {
|
1629 |
+
content: "\f253"; }
|
1630 |
+
|
1631 |
+
.fa.fa-hand-rock-o {
|
1632 |
+
font-family: 'Font Awesome 6 Free';
|
1633 |
+
font-weight: 400; }
|
1634 |
+
|
1635 |
+
.fa.fa-hand-rock-o:before {
|
1636 |
+
content: "\f255"; }
|
1637 |
+
|
1638 |
+
.fa.fa-hand-grab-o {
|
1639 |
+
font-family: 'Font Awesome 6 Free';
|
1640 |
+
font-weight: 400; }
|
1641 |
+
|
1642 |
+
.fa.fa-hand-grab-o:before {
|
1643 |
+
content: "\f255"; }
|
1644 |
+
|
1645 |
+
.fa.fa-hand-paper-o {
|
1646 |
+
font-family: 'Font Awesome 6 Free';
|
1647 |
+
font-weight: 400; }
|
1648 |
+
|
1649 |
+
.fa.fa-hand-paper-o:before {
|
1650 |
+
content: "\f256"; }
|
1651 |
+
|
1652 |
+
.fa.fa-hand-stop-o {
|
1653 |
+
font-family: 'Font Awesome 6 Free';
|
1654 |
+
font-weight: 400; }
|
1655 |
+
|
1656 |
+
.fa.fa-hand-stop-o:before {
|
1657 |
+
content: "\f256"; }
|
1658 |
+
|
1659 |
+
.fa.fa-hand-scissors-o {
|
1660 |
+
font-family: 'Font Awesome 6 Free';
|
1661 |
+
font-weight: 400; }
|
1662 |
+
|
1663 |
+
.fa.fa-hand-scissors-o:before {
|
1664 |
+
content: "\f257"; }
|
1665 |
+
|
1666 |
+
.fa.fa-hand-lizard-o {
|
1667 |
+
font-family: 'Font Awesome 6 Free';
|
1668 |
+
font-weight: 400; }
|
1669 |
+
|
1670 |
+
.fa.fa-hand-lizard-o:before {
|
1671 |
+
content: "\f258"; }
|
1672 |
+
|
1673 |
+
.fa.fa-hand-spock-o {
|
1674 |
+
font-family: 'Font Awesome 6 Free';
|
1675 |
+
font-weight: 400; }
|
1676 |
+
|
1677 |
+
.fa.fa-hand-spock-o:before {
|
1678 |
+
content: "\f259"; }
|
1679 |
+
|
1680 |
+
.fa.fa-hand-pointer-o {
|
1681 |
+
font-family: 'Font Awesome 6 Free';
|
1682 |
+
font-weight: 400; }
|
1683 |
+
|
1684 |
+
.fa.fa-hand-pointer-o:before {
|
1685 |
+
content: "\f25a"; }
|
1686 |
+
|
1687 |
+
.fa.fa-hand-peace-o {
|
1688 |
+
font-family: 'Font Awesome 6 Free';
|
1689 |
+
font-weight: 400; }
|
1690 |
+
|
1691 |
+
.fa.fa-hand-peace-o:before {
|
1692 |
+
content: "\f25b"; }
|
1693 |
+
|
1694 |
+
.fa.fa-registered {
|
1695 |
+
font-family: 'Font Awesome 6 Free';
|
1696 |
+
font-weight: 400; }
|
1697 |
+
|
1698 |
+
.fa.fa-creative-commons {
|
1699 |
+
font-family: 'Font Awesome 6 Brands';
|
1700 |
+
font-weight: 400; }
|
1701 |
+
|
1702 |
+
.fa.fa-gg {
|
1703 |
+
font-family: 'Font Awesome 6 Brands';
|
1704 |
+
font-weight: 400; }
|
1705 |
+
|
1706 |
+
.fa.fa-gg-circle {
|
1707 |
+
font-family: 'Font Awesome 6 Brands';
|
1708 |
+
font-weight: 400; }
|
1709 |
+
|
1710 |
+
.fa.fa-odnoklassniki {
|
1711 |
+
font-family: 'Font Awesome 6 Brands';
|
1712 |
+
font-weight: 400; }
|
1713 |
+
|
1714 |
+
.fa.fa-odnoklassniki-square {
|
1715 |
+
font-family: 'Font Awesome 6 Brands';
|
1716 |
+
font-weight: 400; }
|
1717 |
+
|
1718 |
+
.fa.fa-odnoklassniki-square:before {
|
1719 |
+
content: "\f264"; }
|
1720 |
+
|
1721 |
+
.fa.fa-get-pocket {
|
1722 |
+
font-family: 'Font Awesome 6 Brands';
|
1723 |
+
font-weight: 400; }
|
1724 |
+
|
1725 |
+
.fa.fa-wikipedia-w {
|
1726 |
+
font-family: 'Font Awesome 6 Brands';
|
1727 |
+
font-weight: 400; }
|
1728 |
+
|
1729 |
+
.fa.fa-safari {
|
1730 |
+
font-family: 'Font Awesome 6 Brands';
|
1731 |
+
font-weight: 400; }
|
1732 |
+
|
1733 |
+
.fa.fa-chrome {
|
1734 |
+
font-family: 'Font Awesome 6 Brands';
|
1735 |
+
font-weight: 400; }
|
1736 |
+
|
1737 |
+
.fa.fa-firefox {
|
1738 |
+
font-family: 'Font Awesome 6 Brands';
|
1739 |
+
font-weight: 400; }
|
1740 |
+
|
1741 |
+
.fa.fa-opera {
|
1742 |
+
font-family: 'Font Awesome 6 Brands';
|
1743 |
+
font-weight: 400; }
|
1744 |
+
|
1745 |
+
.fa.fa-internet-explorer {
|
1746 |
+
font-family: 'Font Awesome 6 Brands';
|
1747 |
+
font-weight: 400; }
|
1748 |
+
|
1749 |
+
.fa.fa-television:before {
|
1750 |
+
content: "\f26c"; }
|
1751 |
+
|
1752 |
+
.fa.fa-contao {
|
1753 |
+
font-family: 'Font Awesome 6 Brands';
|
1754 |
+
font-weight: 400; }
|
1755 |
+
|
1756 |
+
.fa.fa-500px {
|
1757 |
+
font-family: 'Font Awesome 6 Brands';
|
1758 |
+
font-weight: 400; }
|
1759 |
+
|
1760 |
+
.fa.fa-amazon {
|
1761 |
+
font-family: 'Font Awesome 6 Brands';
|
1762 |
+
font-weight: 400; }
|
1763 |
+
|
1764 |
+
.fa.fa-calendar-plus-o {
|
1765 |
+
font-family: 'Font Awesome 6 Free';
|
1766 |
+
font-weight: 400; }
|
1767 |
+
|
1768 |
+
.fa.fa-calendar-plus-o:before {
|
1769 |
+
content: "\f271"; }
|
1770 |
+
|
1771 |
+
.fa.fa-calendar-minus-o {
|
1772 |
+
font-family: 'Font Awesome 6 Free';
|
1773 |
+
font-weight: 400; }
|
1774 |
+
|
1775 |
+
.fa.fa-calendar-minus-o:before {
|
1776 |
+
content: "\f272"; }
|
1777 |
+
|
1778 |
+
.fa.fa-calendar-times-o {
|
1779 |
+
font-family: 'Font Awesome 6 Free';
|
1780 |
+
font-weight: 400; }
|
1781 |
+
|
1782 |
+
.fa.fa-calendar-times-o:before {
|
1783 |
+
content: "\f273"; }
|
1784 |
+
|
1785 |
+
.fa.fa-calendar-check-o {
|
1786 |
+
font-family: 'Font Awesome 6 Free';
|
1787 |
+
font-weight: 400; }
|
1788 |
+
|
1789 |
+
.fa.fa-calendar-check-o:before {
|
1790 |
+
content: "\f274"; }
|
1791 |
+
|
1792 |
+
.fa.fa-map-o {
|
1793 |
+
font-family: 'Font Awesome 6 Free';
|
1794 |
+
font-weight: 400; }
|
1795 |
+
|
1796 |
+
.fa.fa-map-o:before {
|
1797 |
+
content: "\f279"; }
|
1798 |
+
|
1799 |
+
.fa.fa-commenting:before {
|
1800 |
+
content: "\f4ad"; }
|
1801 |
+
|
1802 |
+
.fa.fa-commenting-o {
|
1803 |
+
font-family: 'Font Awesome 6 Free';
|
1804 |
+
font-weight: 400; }
|
1805 |
+
|
1806 |
+
.fa.fa-commenting-o:before {
|
1807 |
+
content: "\f4ad"; }
|
1808 |
+
|
1809 |
+
.fa.fa-houzz {
|
1810 |
+
font-family: 'Font Awesome 6 Brands';
|
1811 |
+
font-weight: 400; }
|
1812 |
+
|
1813 |
+
.fa.fa-vimeo {
|
1814 |
+
font-family: 'Font Awesome 6 Brands';
|
1815 |
+
font-weight: 400; }
|
1816 |
+
|
1817 |
+
.fa.fa-vimeo:before {
|
1818 |
+
content: "\f27d"; }
|
1819 |
+
|
1820 |
+
.fa.fa-black-tie {
|
1821 |
+
font-family: 'Font Awesome 6 Brands';
|
1822 |
+
font-weight: 400; }
|
1823 |
+
|
1824 |
+
.fa.fa-fonticons {
|
1825 |
+
font-family: 'Font Awesome 6 Brands';
|
1826 |
+
font-weight: 400; }
|
1827 |
+
|
1828 |
+
.fa.fa-reddit-alien {
|
1829 |
+
font-family: 'Font Awesome 6 Brands';
|
1830 |
+
font-weight: 400; }
|
1831 |
+
|
1832 |
+
.fa.fa-edge {
|
1833 |
+
font-family: 'Font Awesome 6 Brands';
|
1834 |
+
font-weight: 400; }
|
1835 |
+
|
1836 |
+
.fa.fa-credit-card-alt:before {
|
1837 |
+
content: "\f09d"; }
|
1838 |
+
|
1839 |
+
.fa.fa-codiepie {
|
1840 |
+
font-family: 'Font Awesome 6 Brands';
|
1841 |
+
font-weight: 400; }
|
1842 |
+
|
1843 |
+
.fa.fa-modx {
|
1844 |
+
font-family: 'Font Awesome 6 Brands';
|
1845 |
+
font-weight: 400; }
|
1846 |
+
|
1847 |
+
.fa.fa-fort-awesome {
|
1848 |
+
font-family: 'Font Awesome 6 Brands';
|
1849 |
+
font-weight: 400; }
|
1850 |
+
|
1851 |
+
.fa.fa-usb {
|
1852 |
+
font-family: 'Font Awesome 6 Brands';
|
1853 |
+
font-weight: 400; }
|
1854 |
+
|
1855 |
+
.fa.fa-product-hunt {
|
1856 |
+
font-family: 'Font Awesome 6 Brands';
|
1857 |
+
font-weight: 400; }
|
1858 |
+
|
1859 |
+
.fa.fa-mixcloud {
|
1860 |
+
font-family: 'Font Awesome 6 Brands';
|
1861 |
+
font-weight: 400; }
|
1862 |
+
|
1863 |
+
.fa.fa-scribd {
|
1864 |
+
font-family: 'Font Awesome 6 Brands';
|
1865 |
+
font-weight: 400; }
|
1866 |
+
|
1867 |
+
.fa.fa-pause-circle-o {
|
1868 |
+
font-family: 'Font Awesome 6 Free';
|
1869 |
+
font-weight: 400; }
|
1870 |
+
|
1871 |
+
.fa.fa-pause-circle-o:before {
|
1872 |
+
content: "\f28b"; }
|
1873 |
+
|
1874 |
+
.fa.fa-stop-circle-o {
|
1875 |
+
font-family: 'Font Awesome 6 Free';
|
1876 |
+
font-weight: 400; }
|
1877 |
+
|
1878 |
+
.fa.fa-stop-circle-o:before {
|
1879 |
+
content: "\f28d"; }
|
1880 |
+
|
1881 |
+
.fa.fa-bluetooth {
|
1882 |
+
font-family: 'Font Awesome 6 Brands';
|
1883 |
+
font-weight: 400; }
|
1884 |
+
|
1885 |
+
.fa.fa-bluetooth-b {
|
1886 |
+
font-family: 'Font Awesome 6 Brands';
|
1887 |
+
font-weight: 400; }
|
1888 |
+
|
1889 |
+
.fa.fa-gitlab {
|
1890 |
+
font-family: 'Font Awesome 6 Brands';
|
1891 |
+
font-weight: 400; }
|
1892 |
+
|
1893 |
+
.fa.fa-wpbeginner {
|
1894 |
+
font-family: 'Font Awesome 6 Brands';
|
1895 |
+
font-weight: 400; }
|
1896 |
+
|
1897 |
+
.fa.fa-wpforms {
|
1898 |
+
font-family: 'Font Awesome 6 Brands';
|
1899 |
+
font-weight: 400; }
|
1900 |
+
|
1901 |
+
.fa.fa-envira {
|
1902 |
+
font-family: 'Font Awesome 6 Brands';
|
1903 |
+
font-weight: 400; }
|
1904 |
+
|
1905 |
+
.fa.fa-wheelchair-alt {
|
1906 |
+
font-family: 'Font Awesome 6 Brands';
|
1907 |
+
font-weight: 400; }
|
1908 |
+
|
1909 |
+
.fa.fa-wheelchair-alt:before {
|
1910 |
+
content: "\f368"; }
|
1911 |
+
|
1912 |
+
.fa.fa-question-circle-o {
|
1913 |
+
font-family: 'Font Awesome 6 Free';
|
1914 |
+
font-weight: 400; }
|
1915 |
+
|
1916 |
+
.fa.fa-question-circle-o:before {
|
1917 |
+
content: "\f059"; }
|
1918 |
+
|
1919 |
+
.fa.fa-volume-control-phone:before {
|
1920 |
+
content: "\f2a0"; }
|
1921 |
+
|
1922 |
+
.fa.fa-asl-interpreting:before {
|
1923 |
+
content: "\f2a3"; }
|
1924 |
+
|
1925 |
+
.fa.fa-deafness:before {
|
1926 |
+
content: "\f2a4"; }
|
1927 |
+
|
1928 |
+
.fa.fa-hard-of-hearing:before {
|
1929 |
+
content: "\f2a4"; }
|
1930 |
+
|
1931 |
+
.fa.fa-glide {
|
1932 |
+
font-family: 'Font Awesome 6 Brands';
|
1933 |
+
font-weight: 400; }
|
1934 |
+
|
1935 |
+
.fa.fa-glide-g {
|
1936 |
+
font-family: 'Font Awesome 6 Brands';
|
1937 |
+
font-weight: 400; }
|
1938 |
+
|
1939 |
+
.fa.fa-signing:before {
|
1940 |
+
content: "\f2a7"; }
|
1941 |
+
|
1942 |
+
.fa.fa-viadeo {
|
1943 |
+
font-family: 'Font Awesome 6 Brands';
|
1944 |
+
font-weight: 400; }
|
1945 |
+
|
1946 |
+
.fa.fa-viadeo-square {
|
1947 |
+
font-family: 'Font Awesome 6 Brands';
|
1948 |
+
font-weight: 400; }
|
1949 |
+
|
1950 |
+
.fa.fa-viadeo-square:before {
|
1951 |
+
content: "\f2aa"; }
|
1952 |
+
|
1953 |
+
.fa.fa-snapchat {
|
1954 |
+
font-family: 'Font Awesome 6 Brands';
|
1955 |
+
font-weight: 400; }
|
1956 |
+
|
1957 |
+
.fa.fa-snapchat-ghost {
|
1958 |
+
font-family: 'Font Awesome 6 Brands';
|
1959 |
+
font-weight: 400; }
|
1960 |
+
|
1961 |
+
.fa.fa-snapchat-ghost:before {
|
1962 |
+
content: "\f2ab"; }
|
1963 |
+
|
1964 |
+
.fa.fa-snapchat-square {
|
1965 |
+
font-family: 'Font Awesome 6 Brands';
|
1966 |
+
font-weight: 400; }
|
1967 |
+
|
1968 |
+
.fa.fa-snapchat-square:before {
|
1969 |
+
content: "\f2ad"; }
|
1970 |
+
|
1971 |
+
.fa.fa-pied-piper {
|
1972 |
+
font-family: 'Font Awesome 6 Brands';
|
1973 |
+
font-weight: 400; }
|
1974 |
+
|
1975 |
+
.fa.fa-first-order {
|
1976 |
+
font-family: 'Font Awesome 6 Brands';
|
1977 |
+
font-weight: 400; }
|
1978 |
+
|
1979 |
+
.fa.fa-yoast {
|
1980 |
+
font-family: 'Font Awesome 6 Brands';
|
1981 |
+
font-weight: 400; }
|
1982 |
+
|
1983 |
+
.fa.fa-themeisle {
|
1984 |
+
font-family: 'Font Awesome 6 Brands';
|
1985 |
+
font-weight: 400; }
|
1986 |
+
|
1987 |
+
.fa.fa-google-plus-official {
|
1988 |
+
font-family: 'Font Awesome 6 Brands';
|
1989 |
+
font-weight: 400; }
|
1990 |
+
|
1991 |
+
.fa.fa-google-plus-official:before {
|
1992 |
+
content: "\f2b3"; }
|
1993 |
+
|
1994 |
+
.fa.fa-google-plus-circle {
|
1995 |
+
font-family: 'Font Awesome 6 Brands';
|
1996 |
+
font-weight: 400; }
|
1997 |
+
|
1998 |
+
.fa.fa-google-plus-circle:before {
|
1999 |
+
content: "\f2b3"; }
|
2000 |
+
|
2001 |
+
.fa.fa-font-awesome {
|
2002 |
+
font-family: 'Font Awesome 6 Brands';
|
2003 |
+
font-weight: 400; }
|
2004 |
+
|
2005 |
+
.fa.fa-fa {
|
2006 |
+
font-family: 'Font Awesome 6 Brands';
|
2007 |
+
font-weight: 400; }
|
2008 |
+
|
2009 |
+
.fa.fa-fa:before {
|
2010 |
+
content: "\f2b4"; }
|
2011 |
+
|
2012 |
+
.fa.fa-handshake-o {
|
2013 |
+
font-family: 'Font Awesome 6 Free';
|
2014 |
+
font-weight: 400; }
|
2015 |
+
|
2016 |
+
.fa.fa-handshake-o:before {
|
2017 |
+
content: "\f2b5"; }
|
2018 |
+
|
2019 |
+
.fa.fa-envelope-open-o {
|
2020 |
+
font-family: 'Font Awesome 6 Free';
|
2021 |
+
font-weight: 400; }
|
2022 |
+
|
2023 |
+
.fa.fa-envelope-open-o:before {
|
2024 |
+
content: "\f2b6"; }
|
2025 |
+
|
2026 |
+
.fa.fa-linode {
|
2027 |
+
font-family: 'Font Awesome 6 Brands';
|
2028 |
+
font-weight: 400; }
|
2029 |
+
|
2030 |
+
.fa.fa-address-book-o {
|
2031 |
+
font-family: 'Font Awesome 6 Free';
|
2032 |
+
font-weight: 400; }
|
2033 |
+
|
2034 |
+
.fa.fa-address-book-o:before {
|
2035 |
+
content: "\f2b9"; }
|
2036 |
+
|
2037 |
+
.fa.fa-vcard:before {
|
2038 |
+
content: "\f2bb"; }
|
2039 |
+
|
2040 |
+
.fa.fa-address-card-o {
|
2041 |
+
font-family: 'Font Awesome 6 Free';
|
2042 |
+
font-weight: 400; }
|
2043 |
+
|
2044 |
+
.fa.fa-address-card-o:before {
|
2045 |
+
content: "\f2bb"; }
|
2046 |
+
|
2047 |
+
.fa.fa-vcard-o {
|
2048 |
+
font-family: 'Font Awesome 6 Free';
|
2049 |
+
font-weight: 400; }
|
2050 |
+
|
2051 |
+
.fa.fa-vcard-o:before {
|
2052 |
+
content: "\f2bb"; }
|
2053 |
+
|
2054 |
+
.fa.fa-user-circle-o {
|
2055 |
+
font-family: 'Font Awesome 6 Free';
|
2056 |
+
font-weight: 400; }
|
2057 |
+
|
2058 |
+
.fa.fa-user-circle-o:before {
|
2059 |
+
content: "\f2bd"; }
|
2060 |
+
|
2061 |
+
.fa.fa-user-o {
|
2062 |
+
font-family: 'Font Awesome 6 Free';
|
2063 |
+
font-weight: 400; }
|
2064 |
+
|
2065 |
+
.fa.fa-user-o:before {
|
2066 |
+
content: "\f007"; }
|
2067 |
+
|
2068 |
+
.fa.fa-id-badge {
|
2069 |
+
font-family: 'Font Awesome 6 Free';
|
2070 |
+
font-weight: 400; }
|
2071 |
+
|
2072 |
+
.fa.fa-drivers-license:before {
|
2073 |
+
content: "\f2c2"; }
|
2074 |
+
|
2075 |
+
.fa.fa-id-card-o {
|
2076 |
+
font-family: 'Font Awesome 6 Free';
|
2077 |
+
font-weight: 400; }
|
2078 |
+
|
2079 |
+
.fa.fa-id-card-o:before {
|
2080 |
+
content: "\f2c2"; }
|
2081 |
+
|
2082 |
+
.fa.fa-drivers-license-o {
|
2083 |
+
font-family: 'Font Awesome 6 Free';
|
2084 |
+
font-weight: 400; }
|
2085 |
+
|
2086 |
+
.fa.fa-drivers-license-o:before {
|
2087 |
+
content: "\f2c2"; }
|
2088 |
+
|
2089 |
+
.fa.fa-quora {
|
2090 |
+
font-family: 'Font Awesome 6 Brands';
|
2091 |
+
font-weight: 400; }
|
2092 |
+
|
2093 |
+
.fa.fa-free-code-camp {
|
2094 |
+
font-family: 'Font Awesome 6 Brands';
|
2095 |
+
font-weight: 400; }
|
2096 |
+
|
2097 |
+
.fa.fa-telegram {
|
2098 |
+
font-family: 'Font Awesome 6 Brands';
|
2099 |
+
font-weight: 400; }
|
2100 |
+
|
2101 |
+
.fa.fa-thermometer-4:before {
|
2102 |
+
content: "\f2c7"; }
|
2103 |
+
|
2104 |
+
.fa.fa-thermometer:before {
|
2105 |
+
content: "\f2c7"; }
|
2106 |
+
|
2107 |
+
.fa.fa-thermometer-3:before {
|
2108 |
+
content: "\f2c8"; }
|
2109 |
+
|
2110 |
+
.fa.fa-thermometer-2:before {
|
2111 |
+
content: "\f2c9"; }
|
2112 |
+
|
2113 |
+
.fa.fa-thermometer-1:before {
|
2114 |
+
content: "\f2ca"; }
|
2115 |
+
|
2116 |
+
.fa.fa-thermometer-0:before {
|
2117 |
+
content: "\f2cb"; }
|
2118 |
+
|
2119 |
+
.fa.fa-bathtub:before {
|
2120 |
+
content: "\f2cd"; }
|
2121 |
+
|
2122 |
+
.fa.fa-s15:before {
|
2123 |
+
content: "\f2cd"; }
|
2124 |
+
|
2125 |
+
.fa.fa-window-maximize {
|
2126 |
+
font-family: 'Font Awesome 6 Free';
|
2127 |
+
font-weight: 400; }
|
2128 |
+
|
2129 |
+
.fa.fa-window-restore {
|
2130 |
+
font-family: 'Font Awesome 6 Free';
|
2131 |
+
font-weight: 400; }
|
2132 |
+
|
2133 |
+
.fa.fa-times-rectangle:before {
|
2134 |
+
content: "\f410"; }
|
2135 |
+
|
2136 |
+
.fa.fa-window-close-o {
|
2137 |
+
font-family: 'Font Awesome 6 Free';
|
2138 |
+
font-weight: 400; }
|
2139 |
+
|
2140 |
+
.fa.fa-window-close-o:before {
|
2141 |
+
content: "\f410"; }
|
2142 |
+
|
2143 |
+
.fa.fa-times-rectangle-o {
|
2144 |
+
font-family: 'Font Awesome 6 Free';
|
2145 |
+
font-weight: 400; }
|
2146 |
+
|
2147 |
+
.fa.fa-times-rectangle-o:before {
|
2148 |
+
content: "\f410"; }
|
2149 |
+
|
2150 |
+
.fa.fa-bandcamp {
|
2151 |
+
font-family: 'Font Awesome 6 Brands';
|
2152 |
+
font-weight: 400; }
|
2153 |
+
|
2154 |
+
.fa.fa-grav {
|
2155 |
+
font-family: 'Font Awesome 6 Brands';
|
2156 |
+
font-weight: 400; }
|
2157 |
+
|
2158 |
+
.fa.fa-etsy {
|
2159 |
+
font-family: 'Font Awesome 6 Brands';
|
2160 |
+
font-weight: 400; }
|
2161 |
+
|
2162 |
+
.fa.fa-imdb {
|
2163 |
+
font-family: 'Font Awesome 6 Brands';
|
2164 |
+
font-weight: 400; }
|
2165 |
+
|
2166 |
+
.fa.fa-ravelry {
|
2167 |
+
font-family: 'Font Awesome 6 Brands';
|
2168 |
+
font-weight: 400; }
|
2169 |
+
|
2170 |
+
.fa.fa-eercast {
|
2171 |
+
font-family: 'Font Awesome 6 Brands';
|
2172 |
+
font-weight: 400; }
|
2173 |
+
|
2174 |
+
.fa.fa-eercast:before {
|
2175 |
+
content: "\f2da"; }
|
2176 |
+
|
2177 |
+
.fa.fa-snowflake-o {
|
2178 |
+
font-family: 'Font Awesome 6 Free';
|
2179 |
+
font-weight: 400; }
|
2180 |
+
|
2181 |
+
.fa.fa-snowflake-o:before {
|
2182 |
+
content: "\f2dc"; }
|
2183 |
+
|
2184 |
+
.fa.fa-superpowers {
|
2185 |
+
font-family: 'Font Awesome 6 Brands';
|
2186 |
+
font-weight: 400; }
|
2187 |
+
|
2188 |
+
.fa.fa-wpexplorer {
|
2189 |
+
font-family: 'Font Awesome 6 Brands';
|
2190 |
+
font-weight: 400; }
|
2191 |
+
|
2192 |
+
.fa.fa-meetup {
|
2193 |
+
font-family: 'Font Awesome 6 Brands';
|
2194 |
+
font-weight: 400; }
|
static/assets/FontAwesome/css/v4-shims.min.css
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Font Awesome Free 6.4.2 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 2023 Fonticons, Inc.
|
5 |
+
*/
|
6 |
+
.fa.fa-glass:before{content:"\f000"}.fa.fa-envelope-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-envelope-o:before{content:"\f0e0"}.fa.fa-star-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-star-o:before{content:"\f005"}.fa.fa-close:before,.fa.fa-remove:before{content:"\f00d"}.fa.fa-gear:before{content:"\f013"}.fa.fa-trash-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-trash-o:before{content:"\f2ed"}.fa.fa-home:before{content:"\f015"}.fa.fa-file-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-o:before{content:"\f15b"}.fa.fa-clock-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-clock-o:before{content:"\f017"}.fa.fa-arrow-circle-o-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-arrow-circle-o-down:before{content:"\f358"}.fa.fa-arrow-circle-o-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-arrow-circle-o-up:before{content:"\f35b"}.fa.fa-play-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-play-circle-o:before{content:"\f144"}.fa.fa-repeat:before,.fa.fa-rotate-right:before{content:"\f01e"}.fa.fa-refresh:before{content:"\f021"}.fa.fa-list-alt{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-list-alt:before{content:"\f022"}.fa.fa-dedent:before{content:"\f03b"}.fa.fa-video-camera:before{content:"\f03d"}.fa.fa-picture-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-picture-o:before{content:"\f03e"}.fa.fa-photo{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-photo:before{content:"\f03e"}.fa.fa-image{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-image:before{content:"\f03e"}.fa.fa-map-marker:before{content:"\f3c5"}.fa.fa-pencil-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-pencil-square-o:before{content:"\f044"}.fa.fa-edit{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-edit:before{content:"\f044"}.fa.fa-share-square-o:before{content:"\f14d"}.fa.fa-check-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-check-square-o:before{content:"\f14a"}.fa.fa-arrows:before{content:"\f0b2"}.fa.fa-times-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-times-circle-o:before{content:"\f057"}.fa.fa-check-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-check-circle-o:before{content:"\f058"}.fa.fa-mail-forward:before{content:"\f064"}.fa.fa-expand:before{content:"\f424"}.fa.fa-compress:before{content:"\f422"}.fa.fa-eye,.fa.fa-eye-slash{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-warning:before{content:"\f071"}.fa.fa-calendar:before{content:"\f073"}.fa.fa-arrows-v:before{content:"\f338"}.fa.fa-arrows-h:before{content:"\f337"}.fa.fa-bar-chart-o:before,.fa.fa-bar-chart:before{content:"\e0e3"}.fa.fa-twitter-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-twitter-square:before{content:"\f081"}.fa.fa-facebook-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-facebook-square:before{content:"\f082"}.fa.fa-gears:before{content:"\f085"}.fa.fa-thumbs-o-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-thumbs-o-up:before{content:"\f164"}.fa.fa-thumbs-o-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-thumbs-o-down:before{content:"\f165"}.fa.fa-heart-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-heart-o:before{content:"\f004"}.fa.fa-sign-out:before{content:"\f2f5"}.fa.fa-linkedin-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-linkedin-square:before{content:"\f08c"}.fa.fa-thumb-tack:before{content:"\f08d"}.fa.fa-external-link:before{content:"\f35d"}.fa.fa-sign-in:before{content:"\f2f6"}.fa.fa-github-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-github-square:before{content:"\f092"}.fa.fa-lemon-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-lemon-o:before{content:"\f094"}.fa.fa-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-square-o:before{content:"\f0c8"}.fa.fa-bookmark-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-bookmark-o:before{content:"\f02e"}.fa.fa-facebook,.fa.fa-twitter{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-facebook:before{content:"\f39e"}.fa.fa-facebook-f{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-facebook-f:before{content:"\f39e"}.fa.fa-github{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-credit-card{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-feed:before{content:"\f09e"}.fa.fa-hdd-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hdd-o:before{content:"\f0a0"}.fa.fa-hand-o-right{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-o-right:before{content:"\f0a4"}.fa.fa-hand-o-left{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-o-left:before{content:"\f0a5"}.fa.fa-hand-o-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-o-up:before{content:"\f0a6"}.fa.fa-hand-o-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-o-down:before{content:"\f0a7"}.fa.fa-globe:before{content:"\f57d"}.fa.fa-tasks:before{content:"\f828"}.fa.fa-arrows-alt:before{content:"\f31e"}.fa.fa-group:before{content:"\f0c0"}.fa.fa-chain:before{content:"\f0c1"}.fa.fa-cut:before{content:"\f0c4"}.fa.fa-files-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-files-o:before{content:"\f0c5"}.fa.fa-floppy-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-floppy-o:before{content:"\f0c7"}.fa.fa-save{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-save:before{content:"\f0c7"}.fa.fa-navicon:before,.fa.fa-reorder:before{content:"\f0c9"}.fa.fa-magic:before{content:"\e2ca"}.fa.fa-pinterest,.fa.fa-pinterest-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-pinterest-square:before{content:"\f0d3"}.fa.fa-google-plus-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-google-plus-square:before{content:"\f0d4"}.fa.fa-google-plus{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-google-plus:before{content:"\f0d5"}.fa.fa-money:before{content:"\f3d1"}.fa.fa-unsorted:before{content:"\f0dc"}.fa.fa-sort-desc:before{content:"\f0dd"}.fa.fa-sort-asc:before{content:"\f0de"}.fa.fa-linkedin{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-linkedin:before{content:"\f0e1"}.fa.fa-rotate-left:before{content:"\f0e2"}.fa.fa-legal:before{content:"\f0e3"}.fa.fa-dashboard:before,.fa.fa-tachometer:before{content:"\f625"}.fa.fa-comment-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-comment-o:before{content:"\f075"}.fa.fa-comments-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-comments-o:before{content:"\f086"}.fa.fa-flash:before{content:"\f0e7"}.fa.fa-clipboard:before{content:"\f0ea"}.fa.fa-lightbulb-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-lightbulb-o:before{content:"\f0eb"}.fa.fa-exchange:before{content:"\f362"}.fa.fa-cloud-download:before{content:"\f0ed"}.fa.fa-cloud-upload:before{content:"\f0ee"}.fa.fa-bell-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-bell-o:before{content:"\f0f3"}.fa.fa-cutlery:before{content:"\f2e7"}.fa.fa-file-text-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-text-o:before{content:"\f15c"}.fa.fa-building-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-building-o:before{content:"\f1ad"}.fa.fa-hospital-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hospital-o:before{content:"\f0f8"}.fa.fa-tablet:before{content:"\f3fa"}.fa.fa-mobile-phone:before,.fa.fa-mobile:before{content:"\f3cd"}.fa.fa-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-circle-o:before{content:"\f111"}.fa.fa-mail-reply:before{content:"\f3e5"}.fa.fa-github-alt{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-folder-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-folder-o:before{content:"\f07b"}.fa.fa-folder-open-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-folder-open-o:before{content:"\f07c"}.fa.fa-smile-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-smile-o:before{content:"\f118"}.fa.fa-frown-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-frown-o:before{content:"\f119"}.fa.fa-meh-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-meh-o:before{content:"\f11a"}.fa.fa-keyboard-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-keyboard-o:before{content:"\f11c"}.fa.fa-flag-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-flag-o:before{content:"\f024"}.fa.fa-mail-reply-all:before{content:"\f122"}.fa.fa-star-half-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-star-half-o:before{content:"\f5c0"}.fa.fa-star-half-empty{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-star-half-empty:before{content:"\f5c0"}.fa.fa-star-half-full{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-star-half-full:before{content:"\f5c0"}.fa.fa-code-fork:before{content:"\f126"}.fa.fa-chain-broken:before,.fa.fa-unlink:before{content:"\f127"}.fa.fa-calendar-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-o:before{content:"\f133"}.fa.fa-css3,.fa.fa-html5,.fa.fa-maxcdn{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-unlock-alt:before{content:"\f09c"}.fa.fa-minus-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-minus-square-o:before{content:"\f146"}.fa.fa-level-up:before{content:"\f3bf"}.fa.fa-level-down:before{content:"\f3be"}.fa.fa-pencil-square:before{content:"\f14b"}.fa.fa-external-link-square:before{content:"\f360"}.fa.fa-compass{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-down:before{content:"\f150"}.fa.fa-toggle-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-toggle-down:before{content:"\f150"}.fa.fa-caret-square-o-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-up:before{content:"\f151"}.fa.fa-toggle-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-toggle-up:before{content:"\f151"}.fa.fa-caret-square-o-right{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-right:before{content:"\f152"}.fa.fa-toggle-right{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-toggle-right:before{content:"\f152"}.fa.fa-eur:before,.fa.fa-euro:before{content:"\f153"}.fa.fa-gbp:before{content:"\f154"}.fa.fa-dollar:before,.fa.fa-usd:before{content:"\24"}.fa.fa-inr:before,.fa.fa-rupee:before{content:"\e1bc"}.fa.fa-cny:before,.fa.fa-jpy:before,.fa.fa-rmb:before,.fa.fa-yen:before{content:"\f157"}.fa.fa-rouble:before,.fa.fa-rub:before,.fa.fa-ruble:before{content:"\f158"}.fa.fa-krw:before,.fa.fa-won:before{content:"\f159"}.fa.fa-bitcoin,.fa.fa-btc{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-bitcoin:before{content:"\f15a"}.fa.fa-file-text:before{content:"\f15c"}.fa.fa-sort-alpha-asc:before{content:"\f15d"}.fa.fa-sort-alpha-desc:before{content:"\f881"}.fa.fa-sort-amount-asc:before{content:"\f884"}.fa.fa-sort-amount-desc:before{content:"\f160"}.fa.fa-sort-numeric-asc:before{content:"\f162"}.fa.fa-sort-numeric-desc:before{content:"\f886"}.fa.fa-youtube-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-youtube-square:before{content:"\f431"}.fa.fa-xing,.fa.fa-xing-square,.fa.fa-youtube{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-xing-square:before{content:"\f169"}.fa.fa-youtube-play{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-youtube-play:before{content:"\f167"}.fa.fa-adn,.fa.fa-bitbucket,.fa.fa-bitbucket-square,.fa.fa-dropbox,.fa.fa-flickr,.fa.fa-instagram,.fa.fa-stack-overflow{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-bitbucket-square:before{content:"\f171"}.fa.fa-tumblr,.fa.fa-tumblr-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-tumblr-square:before{content:"\f174"}.fa.fa-long-arrow-down:before{content:"\f309"}.fa.fa-long-arrow-up:before{content:"\f30c"}.fa.fa-long-arrow-left:before{content:"\f30a"}.fa.fa-long-arrow-right:before{content:"\f30b"}.fa.fa-android,.fa.fa-apple,.fa.fa-dribbble,.fa.fa-foursquare,.fa.fa-gittip,.fa.fa-gratipay,.fa.fa-linux,.fa.fa-skype,.fa.fa-trello,.fa.fa-windows{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-gittip:before{content:"\f184"}.fa.fa-sun-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-sun-o:before{content:"\f185"}.fa.fa-moon-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-moon-o:before{content:"\f186"}.fa.fa-pagelines,.fa.fa-renren,.fa.fa-stack-exchange,.fa.fa-vk,.fa.fa-weibo{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-arrow-circle-o-right{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-arrow-circle-o-right:before{content:"\f35a"}.fa.fa-arrow-circle-o-left{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-arrow-circle-o-left:before{content:"\f359"}.fa.fa-caret-square-o-left{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-left:before{content:"\f191"}.fa.fa-toggle-left{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-toggle-left:before{content:"\f191"}.fa.fa-dot-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-dot-circle-o:before{content:"\f192"}.fa.fa-vimeo-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-vimeo-square:before{content:"\f194"}.fa.fa-try:before,.fa.fa-turkish-lira:before{content:"\e2bb"}.fa.fa-plus-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-plus-square-o:before{content:"\f0fe"}.fa.fa-openid,.fa.fa-slack,.fa.fa-wordpress{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-bank:before,.fa.fa-institution:before{content:"\f19c"}.fa.fa-mortar-board:before{content:"\f19d"}.fa.fa-google,.fa.fa-reddit,.fa.fa-reddit-square,.fa.fa-yahoo{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-reddit-square:before{content:"\f1a2"}.fa.fa-behance,.fa.fa-behance-square,.fa.fa-delicious,.fa.fa-digg,.fa.fa-drupal,.fa.fa-joomla,.fa.fa-pied-piper-alt,.fa.fa-pied-piper-pp,.fa.fa-stumbleupon,.fa.fa-stumbleupon-circle{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-behance-square:before{content:"\f1b5"}.fa.fa-steam,.fa.fa-steam-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-steam-square:before{content:"\f1b7"}.fa.fa-automobile:before{content:"\f1b9"}.fa.fa-cab:before{content:"\f1ba"}.fa.fa-deviantart,.fa.fa-soundcloud,.fa.fa-spotify{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-file-pdf-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-pdf-o:before{content:"\f1c1"}.fa.fa-file-word-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-word-o:before{content:"\f1c2"}.fa.fa-file-excel-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-excel-o:before{content:"\f1c3"}.fa.fa-file-powerpoint-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-powerpoint-o:before{content:"\f1c4"}.fa.fa-file-image-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-image-o:before{content:"\f1c5"}.fa.fa-file-photo-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-photo-o:before{content:"\f1c5"}.fa.fa-file-picture-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-picture-o:before{content:"\f1c5"}.fa.fa-file-archive-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-archive-o:before{content:"\f1c6"}.fa.fa-file-zip-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-zip-o:before{content:"\f1c6"}.fa.fa-file-audio-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-audio-o:before{content:"\f1c7"}.fa.fa-file-sound-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-sound-o:before{content:"\f1c7"}.fa.fa-file-video-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-video-o:before{content:"\f1c8"}.fa.fa-file-movie-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-movie-o:before{content:"\f1c8"}.fa.fa-file-code-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-code-o:before{content:"\f1c9"}.fa.fa-codepen,.fa.fa-jsfiddle,.fa.fa-vine{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-life-bouy:before,.fa.fa-life-buoy:before,.fa.fa-life-saver:before,.fa.fa-support:before{content:"\f1cd"}.fa.fa-circle-o-notch:before{content:"\f1ce"}.fa.fa-ra,.fa.fa-rebel{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-ra:before{content:"\f1d0"}.fa.fa-resistance{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-resistance:before{content:"\f1d0"}.fa.fa-empire,.fa.fa-ge{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-ge:before{content:"\f1d1"}.fa.fa-git-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-git-square:before{content:"\f1d2"}.fa.fa-git,.fa.fa-hacker-news,.fa.fa-y-combinator-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-y-combinator-square:before{content:"\f1d4"}.fa.fa-yc-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-yc-square:before{content:"\f1d4"}.fa.fa-qq,.fa.fa-tencent-weibo,.fa.fa-wechat,.fa.fa-weixin{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-wechat:before{content:"\f1d7"}.fa.fa-send:before{content:"\f1d8"}.fa.fa-paper-plane-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-paper-plane-o:before{content:"\f1d8"}.fa.fa-send-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-send-o:before{content:"\f1d8"}.fa.fa-circle-thin{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-circle-thin:before{content:"\f111"}.fa.fa-header:before{content:"\f1dc"}.fa.fa-futbol-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-futbol-o:before{content:"\f1e3"}.fa.fa-soccer-ball-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-soccer-ball-o:before{content:"\f1e3"}.fa.fa-slideshare,.fa.fa-twitch,.fa.fa-yelp{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-newspaper-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-newspaper-o:before{content:"\f1ea"}.fa.fa-cc-amex,.fa.fa-cc-discover,.fa.fa-cc-mastercard,.fa.fa-cc-paypal,.fa.fa-cc-stripe,.fa.fa-cc-visa,.fa.fa-google-wallet,.fa.fa-paypal{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-bell-slash-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-bell-slash-o:before{content:"\f1f6"}.fa.fa-trash:before{content:"\f2ed"}.fa.fa-copyright{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-eyedropper:before{content:"\f1fb"}.fa.fa-area-chart:before{content:"\f1fe"}.fa.fa-pie-chart:before{content:"\f200"}.fa.fa-line-chart:before{content:"\f201"}.fa.fa-lastfm,.fa.fa-lastfm-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-lastfm-square:before{content:"\f203"}.fa.fa-angellist,.fa.fa-ioxhost{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-cc{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-cc:before{content:"\f20a"}.fa.fa-ils:before,.fa.fa-shekel:before,.fa.fa-sheqel:before{content:"\f20b"}.fa.fa-buysellads,.fa.fa-connectdevelop,.fa.fa-dashcube,.fa.fa-forumbee,.fa.fa-leanpub,.fa.fa-sellsy,.fa.fa-shirtsinbulk,.fa.fa-simplybuilt,.fa.fa-skyatlas{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-diamond{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-diamond:before{content:"\f3a5"}.fa.fa-intersex:before,.fa.fa-transgender:before{content:"\f224"}.fa.fa-transgender-alt:before{content:"\f225"}.fa.fa-facebook-official{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-facebook-official:before{content:"\f09a"}.fa.fa-pinterest-p,.fa.fa-whatsapp{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-hotel:before{content:"\f236"}.fa.fa-medium,.fa.fa-viacoin,.fa.fa-y-combinator,.fa.fa-yc{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-yc:before{content:"\f23b"}.fa.fa-expeditedssl,.fa.fa-opencart,.fa.fa-optin-monster{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-battery-4:before,.fa.fa-battery:before{content:"\f240"}.fa.fa-battery-3:before{content:"\f241"}.fa.fa-battery-2:before{content:"\f242"}.fa.fa-battery-1:before{content:"\f243"}.fa.fa-battery-0:before{content:"\f244"}.fa.fa-object-group,.fa.fa-object-ungroup,.fa.fa-sticky-note-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-sticky-note-o:before{content:"\f249"}.fa.fa-cc-diners-club,.fa.fa-cc-jcb{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-clone{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hourglass-o:before{content:"\f254"}.fa.fa-hourglass-1:before{content:"\f251"}.fa.fa-hourglass-2:before{content:"\f252"}.fa.fa-hourglass-3:before{content:"\f253"}.fa.fa-hand-rock-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-rock-o:before{content:"\f255"}.fa.fa-hand-grab-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-grab-o:before{content:"\f255"}.fa.fa-hand-paper-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-paper-o:before{content:"\f256"}.fa.fa-hand-stop-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-stop-o:before{content:"\f256"}.fa.fa-hand-scissors-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-scissors-o:before{content:"\f257"}.fa.fa-hand-lizard-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-lizard-o:before{content:"\f258"}.fa.fa-hand-spock-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-spock-o:before{content:"\f259"}.fa.fa-hand-pointer-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-pointer-o:before{content:"\f25a"}.fa.fa-hand-peace-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-peace-o:before{content:"\f25b"}.fa.fa-registered{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-creative-commons,.fa.fa-gg,.fa.fa-gg-circle,.fa.fa-odnoklassniki,.fa.fa-odnoklassniki-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-odnoklassniki-square:before{content:"\f264"}.fa.fa-chrome,.fa.fa-firefox,.fa.fa-get-pocket,.fa.fa-internet-explorer,.fa.fa-opera,.fa.fa-safari,.fa.fa-wikipedia-w{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-television:before{content:"\f26c"}.fa.fa-500px,.fa.fa-amazon,.fa.fa-contao{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-calendar-plus-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-plus-o:before{content:"\f271"}.fa.fa-calendar-minus-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-minus-o:before{content:"\f272"}.fa.fa-calendar-times-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-times-o:before{content:"\f273"}.fa.fa-calendar-check-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-check-o:before{content:"\f274"}.fa.fa-map-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-map-o:before{content:"\f279"}.fa.fa-commenting:before{content:"\f4ad"}.fa.fa-commenting-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-commenting-o:before{content:"\f4ad"}.fa.fa-houzz,.fa.fa-vimeo{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-vimeo:before{content:"\f27d"}.fa.fa-black-tie,.fa.fa-edge,.fa.fa-fonticons,.fa.fa-reddit-alien{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-credit-card-alt:before{content:"\f09d"}.fa.fa-codiepie,.fa.fa-fort-awesome,.fa.fa-mixcloud,.fa.fa-modx,.fa.fa-product-hunt,.fa.fa-scribd,.fa.fa-usb{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-pause-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-pause-circle-o:before{content:"\f28b"}.fa.fa-stop-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-stop-circle-o:before{content:"\f28d"}.fa.fa-bluetooth,.fa.fa-bluetooth-b,.fa.fa-envira,.fa.fa-gitlab,.fa.fa-wheelchair-alt,.fa.fa-wpbeginner,.fa.fa-wpforms{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-wheelchair-alt:before{content:"\f368"}.fa.fa-question-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-question-circle-o:before{content:"\f059"}.fa.fa-volume-control-phone:before{content:"\f2a0"}.fa.fa-asl-interpreting:before{content:"\f2a3"}.fa.fa-deafness:before,.fa.fa-hard-of-hearing:before{content:"\f2a4"}.fa.fa-glide,.fa.fa-glide-g{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-signing:before{content:"\f2a7"}.fa.fa-viadeo,.fa.fa-viadeo-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-viadeo-square:before{content:"\f2aa"}.fa.fa-snapchat,.fa.fa-snapchat-ghost{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-snapchat-ghost:before{content:"\f2ab"}.fa.fa-snapchat-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-snapchat-square:before{content:"\f2ad"}.fa.fa-first-order,.fa.fa-google-plus-official,.fa.fa-pied-piper,.fa.fa-themeisle,.fa.fa-yoast{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-google-plus-official:before{content:"\f2b3"}.fa.fa-google-plus-circle{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-google-plus-circle:before{content:"\f2b3"}.fa.fa-fa,.fa.fa-font-awesome{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-fa:before{content:"\f2b4"}.fa.fa-handshake-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-handshake-o:before{content:"\f2b5"}.fa.fa-envelope-open-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-envelope-open-o:before{content:"\f2b6"}.fa.fa-linode{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-address-book-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-address-book-o:before{content:"\f2b9"}.fa.fa-vcard:before{content:"\f2bb"}.fa.fa-address-card-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-address-card-o:before{content:"\f2bb"}.fa.fa-vcard-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-vcard-o:before{content:"\f2bb"}.fa.fa-user-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-user-circle-o:before{content:"\f2bd"}.fa.fa-user-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-user-o:before{content:"\f007"}.fa.fa-id-badge{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-drivers-license:before{content:"\f2c2"}.fa.fa-id-card-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-id-card-o:before{content:"\f2c2"}.fa.fa-drivers-license-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-drivers-license-o:before{content:"\f2c2"}.fa.fa-free-code-camp,.fa.fa-quora,.fa.fa-telegram{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-thermometer-4:before,.fa.fa-thermometer:before{content:"\f2c7"}.fa.fa-thermometer-3:before{content:"\f2c8"}.fa.fa-thermometer-2:before{content:"\f2c9"}.fa.fa-thermometer-1:before{content:"\f2ca"}.fa.fa-thermometer-0:before{content:"\f2cb"}.fa.fa-bathtub:before,.fa.fa-s15:before{content:"\f2cd"}.fa.fa-window-maximize,.fa.fa-window-restore{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-times-rectangle:before{content:"\f410"}.fa.fa-window-close-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-window-close-o:before{content:"\f410"}.fa.fa-times-rectangle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-times-rectangle-o:before{content:"\f410"}.fa.fa-bandcamp,.fa.fa-eercast,.fa.fa-etsy,.fa.fa-grav,.fa.fa-imdb,.fa.fa-ravelry{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-eercast:before{content:"\f2da"}.fa.fa-snowflake-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-snowflake-o:before{content:"\f2dc"}.fa.fa-meetup,.fa.fa-superpowers,.fa.fa-wpexplorer{font-family:"Font Awesome 6 Brands";font-weight:400}
|
static/assets/FontAwesome/css/v5-font-face.css
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Font Awesome Free 6.4.2 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 2023 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"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
|
11 |
+
|
12 |
+
@font-face {
|
13 |
+
font-family: 'Font Awesome 5 Free';
|
14 |
+
font-display: block;
|
15 |
+
font-weight: 900;
|
16 |
+
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
17 |
+
|
18 |
+
@font-face {
|
19 |
+
font-family: 'Font Awesome 5 Free';
|
20 |
+
font-display: block;
|
21 |
+
font-weight: 400;
|
22 |
+
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
|
static/assets/FontAwesome/css/v5-font-face.min.css
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Font Awesome Free 6.4.2 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 2023 Fonticons, Inc.
|
5 |
+
*/
|
6 |
+
@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}
|
static/assets/FontAwesome/js/all.js
ADDED
The diff for this file is too large to render.
See raw diff
|
|
static/assets/FontAwesome/js/all.min.js
ADDED
The diff for this file is too large to render.
See raw diff
|
|
static/assets/FontAwesome/js/brands.js
ADDED
The diff for this file is too large to render.
See raw diff
|
|
static/assets/FontAwesome/js/brands.min.js
ADDED
The diff for this file is too large to render.
See raw diff
|
|
static/assets/FontAwesome/js/conflict-detection.js
ADDED
@@ -0,0 +1,1138 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Font Awesome Free 6.4.2 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 2023 Fonticons, Inc.
|
5 |
+
*/
|
6 |
+
(function (global, factory) {
|
7 |
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory() :
|
8 |
+
typeof define === 'function' && define.amd ? define(factory) :
|
9 |
+
(factory());
|
10 |
+
}(this, (function () { 'use strict';
|
11 |
+
|
12 |
+
function ownKeys(object, enumerableOnly) {
|
13 |
+
var keys = Object.keys(object);
|
14 |
+
|
15 |
+
if (Object.getOwnPropertySymbols) {
|
16 |
+
var symbols = Object.getOwnPropertySymbols(object);
|
17 |
+
enumerableOnly && (symbols = symbols.filter(function (sym) {
|
18 |
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
19 |
+
})), keys.push.apply(keys, symbols);
|
20 |
+
}
|
21 |
+
|
22 |
+
return keys;
|
23 |
+
}
|
24 |
+
|
25 |
+
function _objectSpread2(target) {
|
26 |
+
for (var i = 1; i < arguments.length; i++) {
|
27 |
+
var source = null != arguments[i] ? arguments[i] : {};
|
28 |
+
i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
|
29 |
+
_defineProperty(target, key, source[key]);
|
30 |
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
|
31 |
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
32 |
+
});
|
33 |
+
}
|
34 |
+
|
35 |
+
return target;
|
36 |
+
}
|
37 |
+
|
38 |
+
function _typeof(obj) {
|
39 |
+
"@babel/helpers - typeof";
|
40 |
+
|
41 |
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
|
42 |
+
return typeof obj;
|
43 |
+
} : function (obj) {
|
44 |
+
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
45 |
+
}, _typeof(obj);
|
46 |
+
}
|
47 |
+
|
48 |
+
function _defineProperty(obj, key, value) {
|
49 |
+
if (key in obj) {
|
50 |
+
Object.defineProperty(obj, key, {
|
51 |
+
value: value,
|
52 |
+
enumerable: true,
|
53 |
+
configurable: true,
|
54 |
+
writable: true
|
55 |
+
});
|
56 |
+
} else {
|
57 |
+
obj[key] = value;
|
58 |
+
}
|
59 |
+
|
60 |
+
return obj;
|
61 |
+
}
|
62 |
+
|
63 |
+
function _toConsumableArray(arr) {
|
64 |
+
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
65 |
+
}
|
66 |
+
|
67 |
+
function _arrayWithoutHoles(arr) {
|
68 |
+
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
|
69 |
+
}
|
70 |
+
|
71 |
+
function _iterableToArray(iter) {
|
72 |
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
73 |
+
}
|
74 |
+
|
75 |
+
function _unsupportedIterableToArray(o, minLen) {
|
76 |
+
if (!o) return;
|
77 |
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
78 |
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
79 |
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
80 |
+
if (n === "Map" || n === "Set") return Array.from(o);
|
81 |
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
82 |
+
}
|
83 |
+
|
84 |
+
function _arrayLikeToArray(arr, len) {
|
85 |
+
if (len == null || len > arr.length) len = arr.length;
|
86 |
+
|
87 |
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
88 |
+
|
89 |
+
return arr2;
|
90 |
+
}
|
91 |
+
|
92 |
+
function _nonIterableSpread() {
|
93 |
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
94 |
+
}
|
95 |
+
|
96 |
+
var _WINDOW = {};
|
97 |
+
var _DOCUMENT = {};
|
98 |
+
|
99 |
+
try {
|
100 |
+
if (typeof window !== 'undefined') _WINDOW = window;
|
101 |
+
if (typeof document !== 'undefined') _DOCUMENT = document;
|
102 |
+
} catch (e) {}
|
103 |
+
|
104 |
+
var _ref = _WINDOW.navigator || {},
|
105 |
+
_ref$userAgent = _ref.userAgent,
|
106 |
+
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
|
107 |
+
var WINDOW = _WINDOW;
|
108 |
+
var DOCUMENT = _DOCUMENT;
|
109 |
+
var IS_BROWSER = !!WINDOW.document;
|
110 |
+
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
|
111 |
+
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
|
112 |
+
|
113 |
+
var functions = [];
|
114 |
+
|
115 |
+
var listener = function listener() {
|
116 |
+
DOCUMENT.removeEventListener('DOMContentLoaded', listener);
|
117 |
+
loaded = 1;
|
118 |
+
functions.map(function (fn) {
|
119 |
+
return fn();
|
120 |
+
});
|
121 |
+
};
|
122 |
+
|
123 |
+
var loaded = false;
|
124 |
+
|
125 |
+
if (IS_DOM) {
|
126 |
+
loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);
|
127 |
+
if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);
|
128 |
+
}
|
129 |
+
|
130 |
+
function domready (fn) {
|
131 |
+
if (!IS_DOM) return;
|
132 |
+
loaded ? setTimeout(fn, 0) : functions.push(fn);
|
133 |
+
}
|
134 |
+
|
135 |
+
function report (_ref) {
|
136 |
+
var nodesTested = _ref.nodesTested,
|
137 |
+
nodesFound = _ref.nodesFound;
|
138 |
+
var timedOutTests = {};
|
139 |
+
|
140 |
+
for (var key in nodesFound) {
|
141 |
+
if (!(nodesTested.conflict[key] || nodesTested.noConflict[key])) {
|
142 |
+
timedOutTests[key] = nodesFound[key];
|
143 |
+
}
|
144 |
+
}
|
145 |
+
|
146 |
+
var conflictsCount = Object.keys(nodesTested.conflict).length;
|
147 |
+
|
148 |
+
if (conflictsCount > 0) {
|
149 |
+
console.info("%cConflict".concat(conflictsCount > 1 ? 's' : '', " found:"), 'color: darkred; font-size: large');
|
150 |
+
var data = {};
|
151 |
+
|
152 |
+
for (var _key in nodesTested.conflict) {
|
153 |
+
var item = nodesTested.conflict[_key];
|
154 |
+
data[_key] = {
|
155 |
+
'tagName': item.tagName,
|
156 |
+
'src/href': item.src || item.href || 'n/a',
|
157 |
+
'innerText excerpt': item.innerText && item.innerText !== '' ? item.innerText.slice(0, 200) + '...' : '(empty)'
|
158 |
+
};
|
159 |
+
}
|
160 |
+
|
161 |
+
console.table(data);
|
162 |
+
}
|
163 |
+
|
164 |
+
var noConflictsCount = Object.keys(nodesTested.noConflict).length;
|
165 |
+
|
166 |
+
if (noConflictsCount > 0) {
|
167 |
+
console.info("%cNo conflict".concat(noConflictsCount > 1 ? 's' : '', " found with ").concat(noConflictsCount === 1 ? 'this' : 'these', ":"), 'color: green; font-size: large');
|
168 |
+
var _data = {};
|
169 |
+
|
170 |
+
for (var _key2 in nodesTested.noConflict) {
|
171 |
+
var _item = nodesTested.noConflict[_key2];
|
172 |
+
_data[_key2] = {
|
173 |
+
'tagName': _item.tagName,
|
174 |
+
'src/href': _item.src || _item.href || 'n/a',
|
175 |
+
'innerText excerpt': _item.innerText && _item.innerText !== '' ? _item.innerText.slice(0, 200) + '...' : '(empty)'
|
176 |
+
};
|
177 |
+
}
|
178 |
+
|
179 |
+
console.table(_data);
|
180 |
+
}
|
181 |
+
|
182 |
+
var timeOutCount = Object.keys(timedOutTests).length;
|
183 |
+
|
184 |
+
if (timeOutCount > 0) {
|
185 |
+
console.info("%cLeftovers--we timed out before collecting test results for ".concat(timeOutCount === 1 ? 'this' : 'these', ":"), 'color: blue; font-size: large');
|
186 |
+
var _data2 = {};
|
187 |
+
|
188 |
+
for (var _key3 in timedOutTests) {
|
189 |
+
var _item2 = timedOutTests[_key3];
|
190 |
+
_data2[_key3] = {
|
191 |
+
'tagName': _item2.tagName,
|
192 |
+
'src/href': _item2.src || _item2.href || 'n/a',
|
193 |
+
'innerText excerpt': _item2.innerText && _item2.innerText !== '' ? _item2.innerText.slice(0, 200) + '...' : '(empty)'
|
194 |
+
};
|
195 |
+
}
|
196 |
+
|
197 |
+
console.table(_data2);
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
+
var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
202 |
+
|
203 |
+
function createCommonjsModule(fn, module) {
|
204 |
+
return module = { exports: {} }, fn(module, module.exports), module.exports;
|
205 |
+
}
|
206 |
+
|
207 |
+
var md5 = createCommonjsModule(function (module) {
|
208 |
+
|
209 |
+
(function ($) {
|
210 |
+
/**
|
211 |
+
* Add integers, wrapping at 2^32.
|
212 |
+
* This uses 16-bit operations internally to work around bugs in interpreters.
|
213 |
+
*
|
214 |
+
* @param {number} x First integer
|
215 |
+
* @param {number} y Second integer
|
216 |
+
* @returns {number} Sum
|
217 |
+
*/
|
218 |
+
|
219 |
+
function safeAdd(x, y) {
|
220 |
+
var lsw = (x & 0xffff) + (y & 0xffff);
|
221 |
+
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
|
222 |
+
return msw << 16 | lsw & 0xffff;
|
223 |
+
}
|
224 |
+
/**
|
225 |
+
* Bitwise rotate a 32-bit number to the left.
|
226 |
+
*
|
227 |
+
* @param {number} num 32-bit number
|
228 |
+
* @param {number} cnt Rotation count
|
229 |
+
* @returns {number} Rotated number
|
230 |
+
*/
|
231 |
+
|
232 |
+
|
233 |
+
function bitRotateLeft(num, cnt) {
|
234 |
+
return num << cnt | num >>> 32 - cnt;
|
235 |
+
}
|
236 |
+
/**
|
237 |
+
* Basic operation the algorithm uses.
|
238 |
+
*
|
239 |
+
* @param {number} q q
|
240 |
+
* @param {number} a a
|
241 |
+
* @param {number} b b
|
242 |
+
* @param {number} x x
|
243 |
+
* @param {number} s s
|
244 |
+
* @param {number} t t
|
245 |
+
* @returns {number} Result
|
246 |
+
*/
|
247 |
+
|
248 |
+
|
249 |
+
function md5cmn(q, a, b, x, s, t) {
|
250 |
+
return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
|
251 |
+
}
|
252 |
+
/**
|
253 |
+
* Basic operation the algorithm uses.
|
254 |
+
*
|
255 |
+
* @param {number} a a
|
256 |
+
* @param {number} b b
|
257 |
+
* @param {number} c c
|
258 |
+
* @param {number} d d
|
259 |
+
* @param {number} x x
|
260 |
+
* @param {number} s s
|
261 |
+
* @param {number} t t
|
262 |
+
* @returns {number} Result
|
263 |
+
*/
|
264 |
+
|
265 |
+
|
266 |
+
function md5ff(a, b, c, d, x, s, t) {
|
267 |
+
return md5cmn(b & c | ~b & d, a, b, x, s, t);
|
268 |
+
}
|
269 |
+
/**
|
270 |
+
* Basic operation the algorithm uses.
|
271 |
+
*
|
272 |
+
* @param {number} a a
|
273 |
+
* @param {number} b b
|
274 |
+
* @param {number} c c
|
275 |
+
* @param {number} d d
|
276 |
+
* @param {number} x x
|
277 |
+
* @param {number} s s
|
278 |
+
* @param {number} t t
|
279 |
+
* @returns {number} Result
|
280 |
+
*/
|
281 |
+
|
282 |
+
|
283 |
+
function md5gg(a, b, c, d, x, s, t) {
|
284 |
+
return md5cmn(b & d | c & ~d, a, b, x, s, t);
|
285 |
+
}
|
286 |
+
/**
|
287 |
+
* Basic operation the algorithm uses.
|
288 |
+
*
|
289 |
+
* @param {number} a a
|
290 |
+
* @param {number} b b
|
291 |
+
* @param {number} c c
|
292 |
+
* @param {number} d d
|
293 |
+
* @param {number} x x
|
294 |
+
* @param {number} s s
|
295 |
+
* @param {number} t t
|
296 |
+
* @returns {number} Result
|
297 |
+
*/
|
298 |
+
|
299 |
+
|
300 |
+
function md5hh(a, b, c, d, x, s, t) {
|
301 |
+
return md5cmn(b ^ c ^ d, a, b, x, s, t);
|
302 |
+
}
|
303 |
+
/**
|
304 |
+
* Basic operation the algorithm uses.
|
305 |
+
*
|
306 |
+
* @param {number} a a
|
307 |
+
* @param {number} b b
|
308 |
+
* @param {number} c c
|
309 |
+
* @param {number} d d
|
310 |
+
* @param {number} x x
|
311 |
+
* @param {number} s s
|
312 |
+
* @param {number} t t
|
313 |
+
* @returns {number} Result
|
314 |
+
*/
|
315 |
+
|
316 |
+
|
317 |
+
function md5ii(a, b, c, d, x, s, t) {
|
318 |
+
return md5cmn(c ^ (b | ~d), a, b, x, s, t);
|
319 |
+
}
|
320 |
+
/**
|
321 |
+
* Calculate the MD5 of an array of little-endian words, and a bit length.
|
322 |
+
*
|
323 |
+
* @param {Array} x Array of little-endian words
|
324 |
+
* @param {number} len Bit length
|
325 |
+
* @returns {Array<number>} MD5 Array
|
326 |
+
*/
|
327 |
+
|
328 |
+
|
329 |
+
function binlMD5(x, len) {
|
330 |
+
/* append padding */
|
331 |
+
x[len >> 5] |= 0x80 << len % 32;
|
332 |
+
x[(len + 64 >>> 9 << 4) + 14] = len;
|
333 |
+
var i;
|
334 |
+
var olda;
|
335 |
+
var oldb;
|
336 |
+
var oldc;
|
337 |
+
var oldd;
|
338 |
+
var a = 1732584193;
|
339 |
+
var b = -271733879;
|
340 |
+
var c = -1732584194;
|
341 |
+
var d = 271733878;
|
342 |
+
|
343 |
+
for (i = 0; i < x.length; i += 16) {
|
344 |
+
olda = a;
|
345 |
+
oldb = b;
|
346 |
+
oldc = c;
|
347 |
+
oldd = d;
|
348 |
+
a = md5ff(a, b, c, d, x[i], 7, -680876936);
|
349 |
+
d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
|
350 |
+
c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
|
351 |
+
b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
|
352 |
+
a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
|
353 |
+
d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
|
354 |
+
c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
|
355 |
+
b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
|
356 |
+
a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
|
357 |
+
d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
|
358 |
+
c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
|
359 |
+
b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
|
360 |
+
a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
|
361 |
+
d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
|
362 |
+
c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
|
363 |
+
b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
|
364 |
+
a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
|
365 |
+
d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
|
366 |
+
c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
|
367 |
+
b = md5gg(b, c, d, a, x[i], 20, -373897302);
|
368 |
+
a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
|
369 |
+
d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
|
370 |
+
c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
|
371 |
+
b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
|
372 |
+
a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
|
373 |
+
d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
|
374 |
+
c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
|
375 |
+
b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
|
376 |
+
a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
|
377 |
+
d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
|
378 |
+
c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
|
379 |
+
b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
|
380 |
+
a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
|
381 |
+
d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
|
382 |
+
c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
|
383 |
+
b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
|
384 |
+
a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
|
385 |
+
d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
|
386 |
+
c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
|
387 |
+
b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
|
388 |
+
a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
|
389 |
+
d = md5hh(d, a, b, c, x[i], 11, -358537222);
|
390 |
+
c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
|
391 |
+
b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
|
392 |
+
a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
|
393 |
+
d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
|
394 |
+
c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
|
395 |
+
b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
|
396 |
+
a = md5ii(a, b, c, d, x[i], 6, -198630844);
|
397 |
+
d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
|
398 |
+
c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
|
399 |
+
b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
|
400 |
+
a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
|
401 |
+
d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
|
402 |
+
c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
|
403 |
+
b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
|
404 |
+
a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
|
405 |
+
d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
|
406 |
+
c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
|
407 |
+
b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
|
408 |
+
a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
|
409 |
+
d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
|
410 |
+
c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
|
411 |
+
b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
|
412 |
+
a = safeAdd(a, olda);
|
413 |
+
b = safeAdd(b, oldb);
|
414 |
+
c = safeAdd(c, oldc);
|
415 |
+
d = safeAdd(d, oldd);
|
416 |
+
}
|
417 |
+
|
418 |
+
return [a, b, c, d];
|
419 |
+
}
|
420 |
+
/**
|
421 |
+
* Convert an array of little-endian words to a string
|
422 |
+
*
|
423 |
+
* @param {Array<number>} input MD5 Array
|
424 |
+
* @returns {string} MD5 string
|
425 |
+
*/
|
426 |
+
|
427 |
+
|
428 |
+
function binl2rstr(input) {
|
429 |
+
var i;
|
430 |
+
var output = '';
|
431 |
+
var length32 = input.length * 32;
|
432 |
+
|
433 |
+
for (i = 0; i < length32; i += 8) {
|
434 |
+
output += String.fromCharCode(input[i >> 5] >>> i % 32 & 0xff);
|
435 |
+
}
|
436 |
+
|
437 |
+
return output;
|
438 |
+
}
|
439 |
+
/**
|
440 |
+
* Convert a raw string to an array of little-endian words
|
441 |
+
* Characters >255 have their high-byte silently ignored.
|
442 |
+
*
|
443 |
+
* @param {string} input Raw input string
|
444 |
+
* @returns {Array<number>} Array of little-endian words
|
445 |
+
*/
|
446 |
+
|
447 |
+
|
448 |
+
function rstr2binl(input) {
|
449 |
+
var i;
|
450 |
+
var output = [];
|
451 |
+
output[(input.length >> 2) - 1] = undefined;
|
452 |
+
|
453 |
+
for (i = 0; i < output.length; i += 1) {
|
454 |
+
output[i] = 0;
|
455 |
+
}
|
456 |
+
|
457 |
+
var length8 = input.length * 8;
|
458 |
+
|
459 |
+
for (i = 0; i < length8; i += 8) {
|
460 |
+
output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32;
|
461 |
+
}
|
462 |
+
|
463 |
+
return output;
|
464 |
+
}
|
465 |
+
/**
|
466 |
+
* Calculate the MD5 of a raw string
|
467 |
+
*
|
468 |
+
* @param {string} s Input string
|
469 |
+
* @returns {string} Raw MD5 string
|
470 |
+
*/
|
471 |
+
|
472 |
+
|
473 |
+
function rstrMD5(s) {
|
474 |
+
return binl2rstr(binlMD5(rstr2binl(s), s.length * 8));
|
475 |
+
}
|
476 |
+
/**
|
477 |
+
* Calculates the HMAC-MD5 of a key and some data (raw strings)
|
478 |
+
*
|
479 |
+
* @param {string} key HMAC key
|
480 |
+
* @param {string} data Raw input string
|
481 |
+
* @returns {string} Raw MD5 string
|
482 |
+
*/
|
483 |
+
|
484 |
+
|
485 |
+
function rstrHMACMD5(key, data) {
|
486 |
+
var i;
|
487 |
+
var bkey = rstr2binl(key);
|
488 |
+
var ipad = [];
|
489 |
+
var opad = [];
|
490 |
+
var hash;
|
491 |
+
ipad[15] = opad[15] = undefined;
|
492 |
+
|
493 |
+
if (bkey.length > 16) {
|
494 |
+
bkey = binlMD5(bkey, key.length * 8);
|
495 |
+
}
|
496 |
+
|
497 |
+
for (i = 0; i < 16; i += 1) {
|
498 |
+
ipad[i] = bkey[i] ^ 0x36363636;
|
499 |
+
opad[i] = bkey[i] ^ 0x5c5c5c5c;
|
500 |
+
}
|
501 |
+
|
502 |
+
hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
|
503 |
+
return binl2rstr(binlMD5(opad.concat(hash), 512 + 128));
|
504 |
+
}
|
505 |
+
/**
|
506 |
+
* Convert a raw string to a hex string
|
507 |
+
*
|
508 |
+
* @param {string} input Raw input string
|
509 |
+
* @returns {string} Hex encoded string
|
510 |
+
*/
|
511 |
+
|
512 |
+
|
513 |
+
function rstr2hex(input) {
|
514 |
+
var hexTab = '0123456789abcdef';
|
515 |
+
var output = '';
|
516 |
+
var x;
|
517 |
+
var i;
|
518 |
+
|
519 |
+
for (i = 0; i < input.length; i += 1) {
|
520 |
+
x = input.charCodeAt(i);
|
521 |
+
output += hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f);
|
522 |
+
}
|
523 |
+
|
524 |
+
return output;
|
525 |
+
}
|
526 |
+
/**
|
527 |
+
* Encode a string as UTF-8
|
528 |
+
*
|
529 |
+
* @param {string} input Input string
|
530 |
+
* @returns {string} UTF8 string
|
531 |
+
*/
|
532 |
+
|
533 |
+
|
534 |
+
function str2rstrUTF8(input) {
|
535 |
+
return unescape(encodeURIComponent(input));
|
536 |
+
}
|
537 |
+
/**
|
538 |
+
* Encodes input string as raw MD5 string
|
539 |
+
*
|
540 |
+
* @param {string} s Input string
|
541 |
+
* @returns {string} Raw MD5 string
|
542 |
+
*/
|
543 |
+
|
544 |
+
|
545 |
+
function rawMD5(s) {
|
546 |
+
return rstrMD5(str2rstrUTF8(s));
|
547 |
+
}
|
548 |
+
/**
|
549 |
+
* Encodes input string as Hex encoded string
|
550 |
+
*
|
551 |
+
* @param {string} s Input string
|
552 |
+
* @returns {string} Hex encoded string
|
553 |
+
*/
|
554 |
+
|
555 |
+
|
556 |
+
function hexMD5(s) {
|
557 |
+
return rstr2hex(rawMD5(s));
|
558 |
+
}
|
559 |
+
/**
|
560 |
+
* Calculates the raw HMAC-MD5 for the given key and data
|
561 |
+
*
|
562 |
+
* @param {string} k HMAC key
|
563 |
+
* @param {string} d Input string
|
564 |
+
* @returns {string} Raw MD5 string
|
565 |
+
*/
|
566 |
+
|
567 |
+
|
568 |
+
function rawHMACMD5(k, d) {
|
569 |
+
return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));
|
570 |
+
}
|
571 |
+
/**
|
572 |
+
* Calculates the Hex encoded HMAC-MD5 for the given key and data
|
573 |
+
*
|
574 |
+
* @param {string} k HMAC key
|
575 |
+
* @param {string} d Input string
|
576 |
+
* @returns {string} Raw MD5 string
|
577 |
+
*/
|
578 |
+
|
579 |
+
|
580 |
+
function hexHMACMD5(k, d) {
|
581 |
+
return rstr2hex(rawHMACMD5(k, d));
|
582 |
+
}
|
583 |
+
/**
|
584 |
+
* Calculates MD5 value for a given string.
|
585 |
+
* If a key is provided, calculates the HMAC-MD5 value.
|
586 |
+
* Returns a Hex encoded string unless the raw argument is given.
|
587 |
+
*
|
588 |
+
* @param {string} string Input string
|
589 |
+
* @param {string} [key] HMAC key
|
590 |
+
* @param {boolean} [raw] Raw output switch
|
591 |
+
* @returns {string} MD5 output
|
592 |
+
*/
|
593 |
+
|
594 |
+
|
595 |
+
function md5(string, key, raw) {
|
596 |
+
if (!key) {
|
597 |
+
if (!raw) {
|
598 |
+
return hexMD5(string);
|
599 |
+
}
|
600 |
+
|
601 |
+
return rawMD5(string);
|
602 |
+
}
|
603 |
+
|
604 |
+
if (!raw) {
|
605 |
+
return hexHMACMD5(key, string);
|
606 |
+
}
|
607 |
+
|
608 |
+
return rawHMACMD5(key, string);
|
609 |
+
}
|
610 |
+
|
611 |
+
if (module.exports) {
|
612 |
+
module.exports = md5;
|
613 |
+
} else {
|
614 |
+
$.md5 = md5;
|
615 |
+
}
|
616 |
+
})(commonjsGlobal);
|
617 |
+
});
|
618 |
+
|
619 |
+
function md5ForNode(node) {
|
620 |
+
if (null === node || 'object' !== _typeof(node)) return undefined;
|
621 |
+
|
622 |
+
if (node.src) {
|
623 |
+
return md5(node.src);
|
624 |
+
} else if (node.href) {
|
625 |
+
return md5(node.href);
|
626 |
+
} else if (node.innerText && '' !== node.innerText) {
|
627 |
+
// eslint-disable-line yoda
|
628 |
+
return md5(node.innerText);
|
629 |
+
} else {
|
630 |
+
return undefined;
|
631 |
+
}
|
632 |
+
}
|
633 |
+
|
634 |
+
var diagScriptId = 'fa-kits-diag';
|
635 |
+
var nodeUnderTestId = 'fa-kits-node-under-test';
|
636 |
+
var md5Attr = 'data-md5';
|
637 |
+
var detectionIgnoreAttr = 'data-fa-detection-ignore';
|
638 |
+
var timeoutAttr = 'data-fa-detection-timeout';
|
639 |
+
var resultsCollectionMaxWaitAttr = 'data-fa-detection-results-collection-max-wait';
|
640 |
+
|
641 |
+
var silenceErrors = function silenceErrors(e) {
|
642 |
+
e.preventDefault();
|
643 |
+
e.stopPropagation();
|
644 |
+
};
|
645 |
+
|
646 |
+
function pollUntil(_ref) {
|
647 |
+
var _ref$fn = _ref.fn,
|
648 |
+
fn = _ref$fn === void 0 ? function () {
|
649 |
+
return true;
|
650 |
+
} : _ref$fn,
|
651 |
+
_ref$initialDuration = _ref.initialDuration,
|
652 |
+
initialDuration = _ref$initialDuration === void 0 ? 1 : _ref$initialDuration,
|
653 |
+
_ref$maxDuration = _ref.maxDuration,
|
654 |
+
maxDuration = _ref$maxDuration === void 0 ? WINDOW.FontAwesomeDetection.timeout : _ref$maxDuration,
|
655 |
+
_ref$showProgress = _ref.showProgress,
|
656 |
+
showProgress = _ref$showProgress === void 0 ? false : _ref$showProgress,
|
657 |
+
progressIndicator = _ref.progressIndicator;
|
658 |
+
return new Promise(function (resolve, reject) {
|
659 |
+
// eslint-disable-line compat/compat
|
660 |
+
function poll(duration, cumulativeDuration) {
|
661 |
+
setTimeout(function () {
|
662 |
+
var result = fn();
|
663 |
+
|
664 |
+
if (showProgress) {
|
665 |
+
console.info(progressIndicator);
|
666 |
+
}
|
667 |
+
|
668 |
+
if (!!result) {
|
669 |
+
// eslint-disable-line no-extra-boolean-cast
|
670 |
+
resolve(result);
|
671 |
+
} else {
|
672 |
+
var nextDuration = 250;
|
673 |
+
var nextCumulativeDuration = nextDuration + cumulativeDuration;
|
674 |
+
|
675 |
+
if (nextCumulativeDuration <= maxDuration) {
|
676 |
+
poll(nextDuration, nextCumulativeDuration);
|
677 |
+
} else {
|
678 |
+
reject('timeout'); // eslint-disable-line prefer-promise-reject-errors
|
679 |
+
}
|
680 |
+
}
|
681 |
+
}, duration);
|
682 |
+
}
|
683 |
+
|
684 |
+
poll(initialDuration, 0);
|
685 |
+
});
|
686 |
+
}
|
687 |
+
|
688 |
+
function detectWebfontConflicts() {
|
689 |
+
var linkTags = Array.from(DOCUMENT.getElementsByTagName('link')).filter(function (t) {
|
690 |
+
return !t.hasAttribute(detectionIgnoreAttr);
|
691 |
+
});
|
692 |
+
var styleTags = Array.from(DOCUMENT.getElementsByTagName('style')).filter(function (t) {
|
693 |
+
if (t.hasAttribute(detectionIgnoreAttr)) {
|
694 |
+
return false;
|
695 |
+
} // If the browser has loaded the FA5 CSS, let's not test that <style> element.
|
696 |
+
// Its enough that we'll be testing for traces of the corresponding JS being loaded, and testing
|
697 |
+
// this <style> would only produce a false negative anyway.
|
698 |
+
|
699 |
+
|
700 |
+
if (WINDOW.FontAwesomeConfig && t.innerText.match(new RegExp("svg:not\\(:root\\)\\.".concat(WINDOW.FontAwesomeConfig.replacementClass)))) {
|
701 |
+
return false;
|
702 |
+
}
|
703 |
+
|
704 |
+
return true;
|
705 |
+
});
|
706 |
+
|
707 |
+
function runDiag(scriptOrLinkTag, md5) {
|
708 |
+
var diagFrame = DOCUMENT.createElement('iframe'); // Using "visibility: hidden; position: absolute" instead of "display: none;" because
|
709 |
+
// Firefox will not return the expected results for getComputedStyle if our iframe has display: none.
|
710 |
+
|
711 |
+
diagFrame.setAttribute('style', 'visibility: hidden; position: absolute; height: 0; width: 0;');
|
712 |
+
var testIconId = 'fa-test-icon-' + md5;
|
713 |
+
var iTag = DOCUMENT.createElement('i');
|
714 |
+
iTag.setAttribute('class', 'fa fa-coffee');
|
715 |
+
iTag.setAttribute('id', testIconId);
|
716 |
+
var diagScript = DOCUMENT.createElement('script');
|
717 |
+
diagScript.setAttribute('id', diagScriptId); // WARNING: this function will be toString()'d and assigned to innerText of the diag script
|
718 |
+
// element that we'll be putting into a diagnostic iframe.
|
719 |
+
// That means that this code won't compile until after the outer script has run and injected
|
720 |
+
// this code into the iframe. There are some compile time errors that might occur there.
|
721 |
+
// For example, using single line (double-slash) comments like this one inside that function
|
722 |
+
// will probably cause it to choke. Chrome will show an error like this:
|
723 |
+
// Uncaught SyntaxError: Unexpected end of input
|
724 |
+
|
725 |
+
var diagScriptFun = function diagScriptFun(nodeUnderTestId, testIconId, md5, parentOrigin) {
|
726 |
+
parent.FontAwesomeDetection.__pollUntil({
|
727 |
+
fn: function fn() {
|
728 |
+
var iEl = document.getElementById(testIconId);
|
729 |
+
var computedStyle = window.getComputedStyle(iEl);
|
730 |
+
var fontFamily = computedStyle.getPropertyValue('font-family');
|
731 |
+
|
732 |
+
if (!!fontFamily.match(/FontAwesome/) || !!fontFamily.match(/Font Awesome [56]/)) {
|
733 |
+
return true;
|
734 |
+
} else {
|
735 |
+
return false;
|
736 |
+
}
|
737 |
+
}
|
738 |
+
}).then(function () {
|
739 |
+
var node = document.getElementById(nodeUnderTestId);
|
740 |
+
parent.postMessage({
|
741 |
+
type: 'fontawesome-conflict',
|
742 |
+
technology: 'webfont',
|
743 |
+
href: node.href,
|
744 |
+
innerText: node.innerText,
|
745 |
+
tagName: node.tagName,
|
746 |
+
md5: md5
|
747 |
+
}, parentOrigin);
|
748 |
+
}).catch(function (e) {
|
749 |
+
var node = document.getElementById(nodeUnderTestId);
|
750 |
+
|
751 |
+
if (e === 'timeout') {
|
752 |
+
parent.postMessage({
|
753 |
+
type: 'no-conflict',
|
754 |
+
technology: 'webfont',
|
755 |
+
href: node.src,
|
756 |
+
innerText: node.innerText,
|
757 |
+
tagName: node.tagName,
|
758 |
+
md5: md5
|
759 |
+
}, parentOrigin);
|
760 |
+
} else {
|
761 |
+
console.error(e);
|
762 |
+
}
|
763 |
+
});
|
764 |
+
};
|
765 |
+
|
766 |
+
var parentOrigin = WINDOW.location.origin === 'file://' ? '*' : WINDOW.location.origin;
|
767 |
+
diagScript.innerText = "(".concat(diagScriptFun.toString(), ")('").concat(nodeUnderTestId, "', '").concat(testIconId || 'foo', "', '").concat(md5, "', '").concat(parentOrigin, "');");
|
768 |
+
|
769 |
+
diagFrame.onload = function () {
|
770 |
+
diagFrame.contentWindow.addEventListener('error', silenceErrors, true);
|
771 |
+
diagFrame.contentDocument.head.appendChild(diagScript);
|
772 |
+
diagFrame.contentDocument.head.appendChild(scriptOrLinkTag);
|
773 |
+
diagFrame.contentDocument.body.appendChild(iTag);
|
774 |
+
};
|
775 |
+
|
776 |
+
domready(function () {
|
777 |
+
return DOCUMENT.body.appendChild(diagFrame);
|
778 |
+
});
|
779 |
+
}
|
780 |
+
|
781 |
+
var cssByMD5 = {};
|
782 |
+
|
783 |
+
for (var i = 0; i < linkTags.length; i++) {
|
784 |
+
var linkUnderTest = DOCUMENT.createElement('link');
|
785 |
+
linkUnderTest.setAttribute('id', nodeUnderTestId);
|
786 |
+
linkUnderTest.setAttribute('href', linkTags[i].href);
|
787 |
+
linkUnderTest.setAttribute('rel', linkTags[i].rel);
|
788 |
+
var md5ForLink = md5ForNode(linkTags[i]);
|
789 |
+
linkUnderTest.setAttribute(md5Attr, md5ForLink);
|
790 |
+
cssByMD5[md5ForLink] = linkTags[i];
|
791 |
+
runDiag(linkUnderTest, md5ForLink);
|
792 |
+
}
|
793 |
+
|
794 |
+
for (var _i = 0; _i < styleTags.length; _i++) {
|
795 |
+
var styleUnderTest = DOCUMENT.createElement('style');
|
796 |
+
styleUnderTest.setAttribute('id', nodeUnderTestId);
|
797 |
+
var md5ForStyle = md5ForNode(styleTags[_i]);
|
798 |
+
styleUnderTest.setAttribute(md5Attr, md5ForStyle);
|
799 |
+
styleUnderTest.innerText = styleTags[_i].innerText;
|
800 |
+
cssByMD5[md5ForStyle] = styleTags[_i];
|
801 |
+
runDiag(styleUnderTest, md5ForStyle);
|
802 |
+
}
|
803 |
+
|
804 |
+
return cssByMD5;
|
805 |
+
}
|
806 |
+
|
807 |
+
function detectSvgConflicts(currentScript) {
|
808 |
+
var scripts = Array.from(DOCUMENT.scripts).filter(function (t) {
|
809 |
+
return !t.hasAttribute(detectionIgnoreAttr) && t !== currentScript;
|
810 |
+
});
|
811 |
+
var scriptsByMD5 = {};
|
812 |
+
|
813 |
+
var _loop = function _loop(scriptIdx) {
|
814 |
+
var diagFrame = DOCUMENT.createElement('iframe');
|
815 |
+
diagFrame.setAttribute('style', 'display:none;');
|
816 |
+
var scriptUnderTest = DOCUMENT.createElement('script');
|
817 |
+
scriptUnderTest.setAttribute('id', nodeUnderTestId);
|
818 |
+
var md5ForScript = md5ForNode(scripts[scriptIdx]);
|
819 |
+
scriptUnderTest.setAttribute(md5Attr, md5ForScript);
|
820 |
+
scriptsByMD5[md5ForScript] = scripts[scriptIdx];
|
821 |
+
|
822 |
+
if (scripts[scriptIdx].src !== '') {
|
823 |
+
scriptUnderTest.src = scripts[scriptIdx].src;
|
824 |
+
}
|
825 |
+
|
826 |
+
if (scripts[scriptIdx].innerText !== '') {
|
827 |
+
scriptUnderTest.innerText = scripts[scriptIdx].innerText;
|
828 |
+
}
|
829 |
+
|
830 |
+
scriptUnderTest.async = true;
|
831 |
+
var diagScript = DOCUMENT.createElement('script');
|
832 |
+
diagScript.setAttribute('id', diagScriptId);
|
833 |
+
var parentOrigin = WINDOW.location.origin === 'file://' ? '*' : WINDOW.location.origin;
|
834 |
+
|
835 |
+
var diagScriptFun = function diagScriptFun(nodeUnderTestId, md5, parentOrigin) {
|
836 |
+
parent.FontAwesomeDetection.__pollUntil({
|
837 |
+
fn: function fn() {
|
838 |
+
return !!window.FontAwesomeConfig || !!window.FontAwesomeKitConfig;
|
839 |
+
}
|
840 |
+
}).then(function () {
|
841 |
+
var scriptNode = document.getElementById(nodeUnderTestId);
|
842 |
+
parent.postMessage({
|
843 |
+
type: 'fontawesome-conflict',
|
844 |
+
technology: 'js',
|
845 |
+
src: scriptNode.src,
|
846 |
+
innerText: scriptNode.innerText,
|
847 |
+
tagName: scriptNode.tagName,
|
848 |
+
md5: md5
|
849 |
+
}, parentOrigin);
|
850 |
+
}).catch(function (e) {
|
851 |
+
var scriptNode = document.getElementById(nodeUnderTestId);
|
852 |
+
|
853 |
+
if (e === 'timeout') {
|
854 |
+
parent.postMessage({
|
855 |
+
type: 'no-conflict',
|
856 |
+
src: scriptNode.src,
|
857 |
+
innerText: scriptNode.innerText,
|
858 |
+
tagName: scriptNode.tagName,
|
859 |
+
md5: md5
|
860 |
+
}, parentOrigin);
|
861 |
+
} else {
|
862 |
+
console.error(e);
|
863 |
+
}
|
864 |
+
});
|
865 |
+
};
|
866 |
+
|
867 |
+
diagScript.innerText = "(".concat(diagScriptFun.toString(), ")('").concat(nodeUnderTestId, "', '").concat(md5ForScript, "', '").concat(parentOrigin, "');");
|
868 |
+
|
869 |
+
diagFrame.onload = function () {
|
870 |
+
diagFrame.contentWindow.addEventListener('error', silenceErrors, true);
|
871 |
+
diagFrame.contentDocument.head.appendChild(diagScript);
|
872 |
+
diagFrame.contentDocument.head.appendChild(scriptUnderTest);
|
873 |
+
};
|
874 |
+
|
875 |
+
domready(function () {
|
876 |
+
return DOCUMENT.body.appendChild(diagFrame);
|
877 |
+
});
|
878 |
+
};
|
879 |
+
|
880 |
+
for (var scriptIdx = 0; scriptIdx < scripts.length; scriptIdx++) {
|
881 |
+
_loop(scriptIdx);
|
882 |
+
}
|
883 |
+
|
884 |
+
return scriptsByMD5;
|
885 |
+
}
|
886 |
+
|
887 |
+
function setDoneResults(_ref2) {
|
888 |
+
var nodesTested = _ref2.nodesTested,
|
889 |
+
nodesFound = _ref2.nodesFound;
|
890 |
+
WINDOW.FontAwesomeDetection = WINDOW.FontAwesomeDetection || {};
|
891 |
+
WINDOW.FontAwesomeDetection.nodesTested = nodesTested;
|
892 |
+
WINDOW.FontAwesomeDetection.nodesFound = nodesFound;
|
893 |
+
WINDOW.FontAwesomeDetection.detectionDone = true;
|
894 |
+
}
|
895 |
+
|
896 |
+
function conflictDetection() {
|
897 |
+
var report$$1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};
|
898 |
+
var nodesTested = {
|
899 |
+
conflict: {},
|
900 |
+
noConflict: {}
|
901 |
+
};
|
902 |
+
|
903 |
+
WINDOW.onmessage = function (e) {
|
904 |
+
if (WINDOW.location.origin === 'file://' || e.origin === WINDOW.location.origin) {
|
905 |
+
if (e && e.data) {
|
906 |
+
if (e.data.type === 'fontawesome-conflict') {
|
907 |
+
nodesTested.conflict[e.data.md5] = e.data;
|
908 |
+
} else if (e.data.type === 'no-conflict') {
|
909 |
+
nodesTested.noConflict[e.data.md5] = e.data;
|
910 |
+
}
|
911 |
+
}
|
912 |
+
}
|
913 |
+
};
|
914 |
+
|
915 |
+
var scriptsToTest = detectSvgConflicts(DOCUMENT.currentScript);
|
916 |
+
var cssToTest = detectWebfontConflicts();
|
917 |
+
|
918 |
+
var nodesFound = _objectSpread2(_objectSpread2({}, scriptsToTest), cssToTest);
|
919 |
+
|
920 |
+
var testCount = Object.keys(scriptsToTest).length + Object.keys(cssToTest).length; // The resultsCollectionMaxWait allows for the time between when the tests running under
|
921 |
+
// child iframes call postMessage with their results, and when the parent window
|
922 |
+
// receives and handles those events with window.onmessage.
|
923 |
+
// Making it configurable allows us to test the scenario where this timeout is exceeded.
|
924 |
+
// Naming it something very different from "timeout" is to help avoid the potential ambiguity between
|
925 |
+
// these two timeout-related settings.
|
926 |
+
|
927 |
+
var masterTimeout = WINDOW.FontAwesomeDetection.timeout + WINDOW.FontAwesomeDetection.resultsCollectionMaxWait;
|
928 |
+
console.group('Font Awesome Detector');
|
929 |
+
|
930 |
+
if (testCount === 0) {
|
931 |
+
console.info('%cAll Good!', 'color: green; font-size: large');
|
932 |
+
console.info('We didn\'t find anything that needs testing for conflicts. Ergo, no conflicts.');
|
933 |
+
} else {
|
934 |
+
console.info("Testing ".concat(testCount, " possible conflicts."));
|
935 |
+
console.info("We'll wait about ".concat(Math.round(WINDOW.FontAwesomeDetection.timeout / 10) / 100, " seconds while testing these and\n") + "then up to another ".concat(Math.round(WINDOW.FontAwesomeDetection.resultsCollectionMaxWait / 10) / 100, " to allow the browser time\n") + "to accumulate the results. But we'll probably be outta here way before then.\n\n");
|
936 |
+
console.info("You can adjust those durations by assigning values to these attributes on the <script> element that loads this detection:");
|
937 |
+
console.info("\t%c".concat(timeoutAttr, "%c: milliseconds to wait for each test before deciding whether it's a conflict."), 'font-weight: bold;', 'font-size: normal;');
|
938 |
+
console.info("\t%c".concat(resultsCollectionMaxWaitAttr, "%c: milliseconds to wait for the browser to accumulate test results before giving up."), 'font-weight: bold;', 'font-size: normal;');
|
939 |
+
pollUntil({
|
940 |
+
// Give this overall timer a little extra cushion
|
941 |
+
maxDuration: masterTimeout,
|
942 |
+
showProgress: true,
|
943 |
+
progressIndicator: 'waiting...',
|
944 |
+
fn: function fn() {
|
945 |
+
return Object.keys(nodesTested.conflict).length + Object.keys(nodesTested.noConflict).length >= testCount;
|
946 |
+
}
|
947 |
+
}).then(function () {
|
948 |
+
console.info('DONE!');
|
949 |
+
setDoneResults({
|
950 |
+
nodesTested: nodesTested,
|
951 |
+
nodesFound: nodesFound
|
952 |
+
});
|
953 |
+
report$$1({
|
954 |
+
nodesTested: nodesTested,
|
955 |
+
nodesFound: nodesFound
|
956 |
+
});
|
957 |
+
console.groupEnd();
|
958 |
+
}).catch(function (e) {
|
959 |
+
if (e === 'timeout') {
|
960 |
+
console.info('TIME OUT! We waited until we got tired. Here\'s what we found:');
|
961 |
+
setDoneResults({
|
962 |
+
nodesTested: nodesTested,
|
963 |
+
nodesFound: nodesFound
|
964 |
+
});
|
965 |
+
report$$1({
|
966 |
+
nodesTested: nodesTested,
|
967 |
+
nodesFound: nodesFound
|
968 |
+
});
|
969 |
+
} else {
|
970 |
+
console.info('Whoops! We hit an error:', e);
|
971 |
+
console.info('Here\'s what we\'d found up until that error:');
|
972 |
+
setDoneResults({
|
973 |
+
nodesTested: nodesTested,
|
974 |
+
nodesFound: nodesFound
|
975 |
+
});
|
976 |
+
report$$1({
|
977 |
+
nodesTested: nodesTested,
|
978 |
+
nodesFound: nodesFound
|
979 |
+
});
|
980 |
+
}
|
981 |
+
|
982 |
+
console.groupEnd();
|
983 |
+
});
|
984 |
+
}
|
985 |
+
} // Allow clients to access, and in some cases, override some properties
|
986 |
+
|
987 |
+
var initialConfig = WINDOW.FontAwesomeDetection || {}; // These can be overridden
|
988 |
+
|
989 |
+
var _default = {
|
990 |
+
report: report,
|
991 |
+
timeout: +(DOCUMENT.currentScript.getAttribute(timeoutAttr) || "2000"),
|
992 |
+
resultsCollectionMaxWait: +(DOCUMENT.currentScript.getAttribute(resultsCollectionMaxWaitAttr) || "5000")
|
993 |
+
};
|
994 |
+
|
995 |
+
var _config = _objectSpread2(_objectSpread2(_objectSpread2({}, _default), initialConfig), {}, {
|
996 |
+
// These cannot be overridden
|
997 |
+
__pollUntil: pollUntil,
|
998 |
+
md5ForNode: md5ForNode,
|
999 |
+
detectionDone: false,
|
1000 |
+
nodesTested: null,
|
1001 |
+
nodesFound: null
|
1002 |
+
});
|
1003 |
+
|
1004 |
+
WINDOW.FontAwesomeDetection = _config;
|
1005 |
+
|
1006 |
+
var _familyProxy, _familyProxy2, _familyProxy3, _familyProxy4, _familyProxy5;
|
1007 |
+
var PRODUCTION = function () {
|
1008 |
+
try {
|
1009 |
+
return process.env.NODE_ENV === 'production';
|
1010 |
+
} catch (e) {
|
1011 |
+
return false;
|
1012 |
+
}
|
1013 |
+
}();
|
1014 |
+
var FAMILY_CLASSIC = 'classic';
|
1015 |
+
var FAMILY_SHARP = 'sharp';
|
1016 |
+
var FAMILIES = [FAMILY_CLASSIC, FAMILY_SHARP];
|
1017 |
+
|
1018 |
+
function familyProxy(obj) {
|
1019 |
+
// Defaults to the classic family if family is not available
|
1020 |
+
return new Proxy(obj, {
|
1021 |
+
get: function get(target, prop) {
|
1022 |
+
return prop in target ? target[prop] : target[FAMILY_CLASSIC];
|
1023 |
+
}
|
1024 |
+
});
|
1025 |
+
}
|
1026 |
+
var PREFIX_TO_STYLE = familyProxy((_familyProxy = {}, _defineProperty(_familyProxy, FAMILY_CLASSIC, {
|
1027 |
+
'fa': 'solid',
|
1028 |
+
'fas': 'solid',
|
1029 |
+
'fa-solid': 'solid',
|
1030 |
+
'far': 'regular',
|
1031 |
+
'fa-regular': 'regular',
|
1032 |
+
'fal': 'light',
|
1033 |
+
'fa-light': 'light',
|
1034 |
+
'fat': 'thin',
|
1035 |
+
'fa-thin': 'thin',
|
1036 |
+
'fad': 'duotone',
|
1037 |
+
'fa-duotone': 'duotone',
|
1038 |
+
'fab': 'brands',
|
1039 |
+
'fa-brands': 'brands',
|
1040 |
+
'fak': 'kit',
|
1041 |
+
'fa-kit': 'kit'
|
1042 |
+
}), _defineProperty(_familyProxy, FAMILY_SHARP, {
|
1043 |
+
'fa': 'solid',
|
1044 |
+
'fass': 'solid',
|
1045 |
+
'fa-solid': 'solid',
|
1046 |
+
'fasr': 'regular',
|
1047 |
+
'fa-regular': 'regular',
|
1048 |
+
'fasl': 'light',
|
1049 |
+
'fa-light': 'light'
|
1050 |
+
}), _familyProxy));
|
1051 |
+
var STYLE_TO_PREFIX = familyProxy((_familyProxy2 = {}, _defineProperty(_familyProxy2, FAMILY_CLASSIC, {
|
1052 |
+
'solid': 'fas',
|
1053 |
+
'regular': 'far',
|
1054 |
+
'light': 'fal',
|
1055 |
+
'thin': 'fat',
|
1056 |
+
'duotone': 'fad',
|
1057 |
+
'brands': 'fab',
|
1058 |
+
'kit': 'fak'
|
1059 |
+
}), _defineProperty(_familyProxy2, FAMILY_SHARP, {
|
1060 |
+
'solid': 'fass',
|
1061 |
+
'regular': 'fasr',
|
1062 |
+
'light': 'fasl'
|
1063 |
+
}), _familyProxy2));
|
1064 |
+
var PREFIX_TO_LONG_STYLE = familyProxy((_familyProxy3 = {}, _defineProperty(_familyProxy3, FAMILY_CLASSIC, {
|
1065 |
+
'fab': 'fa-brands',
|
1066 |
+
'fad': 'fa-duotone',
|
1067 |
+
'fak': 'fa-kit',
|
1068 |
+
'fal': 'fa-light',
|
1069 |
+
'far': 'fa-regular',
|
1070 |
+
'fas': 'fa-solid',
|
1071 |
+
'fat': 'fa-thin'
|
1072 |
+
}), _defineProperty(_familyProxy3, FAMILY_SHARP, {
|
1073 |
+
'fass': 'fa-solid',
|
1074 |
+
'fasr': 'fa-regular',
|
1075 |
+
'fasl': 'fa-light'
|
1076 |
+
}), _familyProxy3));
|
1077 |
+
var LONG_STYLE_TO_PREFIX = familyProxy((_familyProxy4 = {}, _defineProperty(_familyProxy4, FAMILY_CLASSIC, {
|
1078 |
+
'fa-brands': 'fab',
|
1079 |
+
'fa-duotone': 'fad',
|
1080 |
+
'fa-kit': 'fak',
|
1081 |
+
'fa-light': 'fal',
|
1082 |
+
'fa-regular': 'far',
|
1083 |
+
'fa-solid': 'fas',
|
1084 |
+
'fa-thin': 'fat'
|
1085 |
+
}), _defineProperty(_familyProxy4, FAMILY_SHARP, {
|
1086 |
+
'fa-solid': 'fass',
|
1087 |
+
'fa-regular': 'fasr',
|
1088 |
+
'fa-light': 'fasl'
|
1089 |
+
}), _familyProxy4));
|
1090 |
+
var FONT_WEIGHT_TO_PREFIX = familyProxy((_familyProxy5 = {}, _defineProperty(_familyProxy5, FAMILY_CLASSIC, {
|
1091 |
+
'900': 'fas',
|
1092 |
+
'400': 'far',
|
1093 |
+
'normal': 'far',
|
1094 |
+
'300': 'fal',
|
1095 |
+
'100': 'fat'
|
1096 |
+
}), _defineProperty(_familyProxy5, FAMILY_SHARP, {
|
1097 |
+
'900': 'fass',
|
1098 |
+
'400': 'fasr',
|
1099 |
+
'300': 'fasl'
|
1100 |
+
}), _familyProxy5));
|
1101 |
+
var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
1102 |
+
var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);
|
1103 |
+
var DUOTONE_CLASSES = {
|
1104 |
+
GROUP: 'duotone-group',
|
1105 |
+
SWAP_OPACITY: 'swap-opacity',
|
1106 |
+
PRIMARY: 'primary',
|
1107 |
+
SECONDARY: 'secondary'
|
1108 |
+
};
|
1109 |
+
var prefixes = new Set();
|
1110 |
+
Object.keys(STYLE_TO_PREFIX[FAMILY_CLASSIC]).map(prefixes.add.bind(prefixes));
|
1111 |
+
Object.keys(STYLE_TO_PREFIX[FAMILY_SHARP]).map(prefixes.add.bind(prefixes));
|
1112 |
+
var RESERVED_CLASSES = [].concat(FAMILIES, _toConsumableArray(prefixes), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) {
|
1113 |
+
return "".concat(n, "x");
|
1114 |
+
})).concat(oneToTwenty.map(function (n) {
|
1115 |
+
return "w-".concat(n);
|
1116 |
+
}));
|
1117 |
+
|
1118 |
+
function bunker(fn) {
|
1119 |
+
try {
|
1120 |
+
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
1121 |
+
args[_key - 1] = arguments[_key];
|
1122 |
+
}
|
1123 |
+
|
1124 |
+
fn.apply(void 0, args);
|
1125 |
+
} catch (e) {
|
1126 |
+
if (!PRODUCTION) {
|
1127 |
+
throw e;
|
1128 |
+
}
|
1129 |
+
}
|
1130 |
+
}
|
1131 |
+
|
1132 |
+
bunker(function () {
|
1133 |
+
if (IS_BROWSER && IS_DOM) {
|
1134 |
+
conflictDetection(window.FontAwesomeDetection.report);
|
1135 |
+
}
|
1136 |
+
});
|
1137 |
+
|
1138 |
+
})));
|
static/assets/FontAwesome/js/conflict-detection.min.js
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Font Awesome Free 6.4.2 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 2023 Fonticons, Inc.
|
5 |
+
*/
|
6 |
+
var t;t=function(){"use strict";function o(e,t){var n,o=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,n)),o}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach(function(t){r(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}var t={},n={};try{"undefined"!=typeof window&&(t=window),"undefined"!=typeof document&&(n=document)}catch(t){}function c(){u.removeEventListener("DOMContentLoaded",c),p=1,g.map(function(t){return t()})}var f=(t.navigator||{}).userAgent,s=void 0===f?"":f,l=t,u=n,d=!!l.document,m=!!u.documentElement&&!!u.head&&"function"==typeof u.addEventListener&&"function"==typeof u.createElement,g=(~s.indexOf("MSIE")||s.indexOf("Trident/"),[]),p=!1;function h(t){m&&(p?setTimeout(t,0):g.push(t))}m&&((p=(u.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(u.readyState))||u.addEventListener("DOMContentLoaded",c));var b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var y=(function(t){function u(t,e){var n=(65535&t)+(65535&e);return(t>>16)+(e>>16)+(n>>16)<<16|65535&n}function c(t,e,n,o,r,i){return u((i=u(u(e,t),u(o,i)))<<r|i>>>32-r,n)}function d(t,e,n,o,r,i,a){return c(e&n|~e&o,t,e,r,i,a)}function m(t,e,n,o,r,i,a){return c(e&o|n&~o,t,e,r,i,a)}function g(t,e,n,o,r,i,a){return c(e^n^o,t,e,r,i,a)}function p(t,e,n,o,r,i,a){return c(n^(e|~o),t,e,r,i,a)}function a(t,e){var n,o,r,i;t[e>>5]|=128<<e%32,t[14+(e+64>>>9<<4)]=e;for(var a=1732584193,c=-271733879,f=-1732584194,s=271733878,l=0;l<t.length;l+=16)a=d(n=a,o=c,r=f,i=s,t[l],7,-680876936),s=d(s,a,c,f,t[l+1],12,-389564586),f=d(f,s,a,c,t[l+2],17,606105819),c=d(c,f,s,a,t[l+3],22,-1044525330),a=d(a,c,f,s,t[l+4],7,-176418897),s=d(s,a,c,f,t[l+5],12,1200080426),f=d(f,s,a,c,t[l+6],17,-1473231341),c=d(c,f,s,a,t[l+7],22,-45705983),a=d(a,c,f,s,t[l+8],7,1770035416),s=d(s,a,c,f,t[l+9],12,-1958414417),f=d(f,s,a,c,t[l+10],17,-42063),c=d(c,f,s,a,t[l+11],22,-1990404162),a=d(a,c,f,s,t[l+12],7,1804603682),s=d(s,a,c,f,t[l+13],12,-40341101),f=d(f,s,a,c,t[l+14],17,-1502002290),a=m(a,c=d(c,f,s,a,t[l+15],22,1236535329),f,s,t[l+1],5,-165796510),s=m(s,a,c,f,t[l+6],9,-1069501632),f=m(f,s,a,c,t[l+11],14,643717713),c=m(c,f,s,a,t[l],20,-373897302),a=m(a,c,f,s,t[l+5],5,-701558691),s=m(s,a,c,f,t[l+10],9,38016083),f=m(f,s,a,c,t[l+15],14,-660478335),c=m(c,f,s,a,t[l+4],20,-405537848),a=m(a,c,f,s,t[l+9],5,568446438),s=m(s,a,c,f,t[l+14],9,-1019803690),f=m(f,s,a,c,t[l+3],14,-187363961),c=m(c,f,s,a,t[l+8],20,1163531501),a=m(a,c,f,s,t[l+13],5,-1444681467),s=m(s,a,c,f,t[l+2],9,-51403784),f=m(f,s,a,c,t[l+7],14,1735328473),a=g(a,c=m(c,f,s,a,t[l+12],20,-1926607734),f,s,t[l+5],4,-378558),s=g(s,a,c,f,t[l+8],11,-2022574463),f=g(f,s,a,c,t[l+11],16,1839030562),c=g(c,f,s,a,t[l+14],23,-35309556),a=g(a,c,f,s,t[l+1],4,-1530992060),s=g(s,a,c,f,t[l+4],11,1272893353),f=g(f,s,a,c,t[l+7],16,-155497632),c=g(c,f,s,a,t[l+10],23,-1094730640),a=g(a,c,f,s,t[l+13],4,681279174),s=g(s,a,c,f,t[l],11,-358537222),f=g(f,s,a,c,t[l+3],16,-722521979),c=g(c,f,s,a,t[l+6],23,76029189),a=g(a,c,f,s,t[l+9],4,-640364487),s=g(s,a,c,f,t[l+12],11,-421815835),f=g(f,s,a,c,t[l+15],16,530742520),a=p(a,c=g(c,f,s,a,t[l+2],23,-995338651),f,s,t[l],6,-198630844),s=p(s,a,c,f,t[l+7],10,1126891415),f=p(f,s,a,c,t[l+14],15,-1416354905),c=p(c,f,s,a,t[l+5],21,-57434055),a=p(a,c,f,s,t[l+12],6,1700485571),s=p(s,a,c,f,t[l+3],10,-1894986606),f=p(f,s,a,c,t[l+10],15,-1051523),c=p(c,f,s,a,t[l+1],21,-2054922799),a=p(a,c,f,s,t[l+8],6,1873313359),s=p(s,a,c,f,t[l+15],10,-30611744),f=p(f,s,a,c,t[l+6],15,-1560198380),c=p(c,f,s,a,t[l+13],21,1309151649),a=p(a,c,f,s,t[l+4],6,-145523070),s=p(s,a,c,f,t[l+11],10,-1120210379),f=p(f,s,a,c,t[l+2],15,718787259),c=p(c,f,s,a,t[l+9],21,-343485551),a=u(a,n),c=u(c,o),f=u(f,r),s=u(s,i);return[a,c,f,s]}function f(t){for(var e="",n=32*t.length,o=0;o<n;o+=8)e+=String.fromCharCode(t[o>>5]>>>o%32&255);return e}function s(t){var e=[];for(e[(t.length>>2)-1]=void 0,o=0;o<e.length;o+=1)e[o]=0;for(var n=8*t.length,o=0;o<n;o+=8)e[o>>5]|=(255&t.charCodeAt(o/8))<<o%32;return e}function o(t){for(var e,n="0123456789abcdef",o="",r=0;r<t.length;r+=1)e=t.charCodeAt(r),o+=n.charAt(e>>>4&15)+n.charAt(15&e);return o}function n(t){return unescape(encodeURIComponent(t))}function r(t){return f(a(s(t=n(t)),8*t.length))}function i(t,e){return function(t,e){var n,o=s(t),r=[],i=[];for(r[15]=i[15]=void 0,16<o.length&&(o=a(o,8*t.length)),n=0;n<16;n+=1)r[n]=909522486^o[n],i[n]=1549556828^o[n];return e=a(r.concat(s(e)),512+8*e.length),f(a(i.concat(e),640))}(n(t),n(e))}function e(t,e,n){return e?n?i(e,t):o(i(e,t)):n?r(t):o(r(t))}var l;l=b,t.exports?t.exports=e:l.md5=e}(z={exports:{}}),z.exports);function w(t){if(null!==t&&"object"===e(t))return t.src?y(t.src):t.href?y(t.href):t.innerText&&""!==t.innerText?y(t.innerText):void 0}var v="fa-kits-diag",A="fa-kits-node-under-test",x="data-md5",T="data-fa-detection-ignore",O="data-fa-detection-timeout",D="data-fa-detection-results-collection-max-wait",E=function(t){t.preventDefault(),t.stopPropagation()};function C(t){var e=t.fn,i=void 0===e?function(){return!0}:e,e=t.initialDuration,n=void 0===e?1:e,e=t.maxDuration,a=void 0===e?l.FontAwesomeDetection.timeout:e,e=t.showProgress,c=void 0!==e&&e,f=t.progressIndicator;return new Promise(function(o,r){!function e(t,n){setTimeout(function(){var t=i();c&&console.info(f),t?o(t):(t=250+n)<=a?e(250,t):r("timeout")},t)}(n,0)})}function F(e){for(var i=Array.from(u.scripts).filter(function(t){return!t.hasAttribute(T)&&t!==e}),a={},t=0;t<i.length;t++)!function(t){var e=u.createElement("iframe");e.setAttribute("style","display:none;");var n=u.createElement("script");n.setAttribute("id",A);var o=w(i[t]);n.setAttribute(x,o),a[o]=i[t],""!==i[t].src&&(n.src=i[t].src),""!==i[t].innerText&&(n.innerText=i[t].innerText),n.async=!0;var r=u.createElement("script");r.setAttribute("id",v);t="file://"===l.location.origin?"*":l.location.origin;r.innerText="(".concat(function(n,o,r){parent.FontAwesomeDetection.__pollUntil({fn:function(){return!!window.FontAwesomeConfig||!!window.FontAwesomeKitConfig}}).then(function(){var t=document.getElementById(n);parent.postMessage({type:"fontawesome-conflict",technology:"js",src:t.src,innerText:t.innerText,tagName:t.tagName,md5:o},r)}).catch(function(t){var e=document.getElementById(n);"timeout"===t?parent.postMessage({type:"no-conflict",src:e.src,innerText:e.innerText,tagName:e.tagName,md5:o},r):console.error(t)})}.toString(),")('").concat(A,"', '").concat(o,"', '").concat(t,"');"),e.onload=function(){e.contentWindow.addEventListener("error",E,!0),e.contentDocument.head.appendChild(r),e.contentDocument.head.appendChild(n)},h(function(){return u.body.appendChild(e)})}(t);return a}function k(t){var e=t.nodesTested,t=t.nodesFound;l.FontAwesomeDetection=l.FontAwesomeDetection||{},l.FontAwesomeDetection.nodesTested=e,l.FontAwesomeDetection.nodesFound=t,l.FontAwesomeDetection.detectionDone=!0}function j(t){var e=0<arguments.length&&void 0!==t?t:function(){},n={conflict:{},noConflict:{}};l.onmessage=function(t){"file://"!==l.location.origin&&t.origin!==l.location.origin||t&&t.data&&("fontawesome-conflict"===t.data.type?n.conflict[t.data.md5]=t.data:"no-conflict"===t.data.type&&(n.noConflict[t.data.md5]=t.data))};var o=F(u.currentScript),t=function(){var t=Array.from(u.getElementsByTagName("link")).filter(function(t){return!t.hasAttribute(T)}),e=Array.from(u.getElementsByTagName("style")).filter(function(t){return!t.hasAttribute(T)&&(!l.FontAwesomeConfig||!t.innerText.match(new RegExp("svg:not\\(:root\\)\\.".concat(l.FontAwesomeConfig.replacementClass))))});function n(t,e){var n=u.createElement("iframe");n.setAttribute("style","visibility: hidden; position: absolute; height: 0; width: 0;");var o="fa-test-icon-"+e,r=u.createElement("i");r.setAttribute("class","fa fa-coffee"),r.setAttribute("id",o);var i=u.createElement("script");i.setAttribute("id",v);var a="file://"===l.location.origin?"*":l.location.origin;i.innerText="(".concat(function(n,e,o,r){parent.FontAwesomeDetection.__pollUntil({fn:function(){var t=document.getElementById(e),t=window.getComputedStyle(t).getPropertyValue("font-family");return!(!t.match(/FontAwesome/)&&!t.match(/Font Awesome [56]/))}}).then(function(){var t=document.getElementById(n);parent.postMessage({type:"fontawesome-conflict",technology:"webfont",href:t.href,innerText:t.innerText,tagName:t.tagName,md5:o},r)}).catch(function(t){var e=document.getElementById(n);"timeout"===t?parent.postMessage({type:"no-conflict",technology:"webfont",href:e.src,innerText:e.innerText,tagName:e.tagName,md5:o},r):console.error(t)})}.toString(),")('").concat(A,"', '").concat(o||"foo","', '").concat(e,"', '").concat(a,"');"),n.onload=function(){n.contentWindow.addEventListener("error",E,!0),n.contentDocument.head.appendChild(i),n.contentDocument.head.appendChild(t),n.contentDocument.body.appendChild(r)},h(function(){return u.body.appendChild(n)})}for(var o={},r=0;r<t.length;r++){var i=u.createElement("link");i.setAttribute("id",A),i.setAttribute("href",t[r].href),i.setAttribute("rel",t[r].rel);var a=w(t[r]);i.setAttribute(x,a),o[a]=t[r],n(i,a)}for(var c=0;c<e.length;c++){var f=u.createElement("style");f.setAttribute("id",A);var s=w(e[c]);f.setAttribute(x,s),f.innerText=e[c].innerText,o[s]=e[c],n(f,s)}return o}(),r=a(a({},o),t),i=Object.keys(o).length+Object.keys(t).length,t=l.FontAwesomeDetection.timeout+l.FontAwesomeDetection.resultsCollectionMaxWait;console.group("Font Awesome Detector"),0===i?(console.info("%cAll Good!","color: green; font-size: large"),console.info("We didn't find anything that needs testing for conflicts. Ergo, no conflicts.")):(console.info("Testing ".concat(i," possible conflicts.")),console.info("We'll wait about ".concat(Math.round(l.FontAwesomeDetection.timeout/10)/100," seconds while testing these and\n")+"then up to another ".concat(Math.round(l.FontAwesomeDetection.resultsCollectionMaxWait/10)/100," to allow the browser time\n")+"to accumulate the results. But we'll probably be outta here way before then.\n\n"),console.info("You can adjust those durations by assigning values to these attributes on the <script> element that loads this detection:"),console.info("\t%c".concat(O,"%c: milliseconds to wait for each test before deciding whether it's a conflict."),"font-weight: bold;","font-size: normal;"),console.info("\t%c".concat(D,"%c: milliseconds to wait for the browser to accumulate test results before giving up."),"font-weight: bold;","font-size: normal;"),C({maxDuration:t,showProgress:!0,progressIndicator:"waiting...",fn:function(){return Object.keys(n.conflict).length+Object.keys(n.noConflict).length>=i}}).then(function(){console.info("DONE!"),k({nodesTested:n,nodesFound:r}),e({nodesTested:n,nodesFound:r}),console.groupEnd()}).catch(function(t){"timeout"===t?console.info("TIME OUT! We waited until we got tired. Here's what we found:"):(console.info("Whoops! We hit an error:",t),console.info("Here's what we'd found up until that error:")),k({nodesTested:n,nodesFound:r}),e({nodesTested:n,nodesFound:r}),console.groupEnd()}))}var S=l.FontAwesomeDetection||{},N=a(a(a({},{report:function(t){var e,n=t.nodesTested,o=t.nodesFound,r={};for(e in o)n.conflict[e]||n.noConflict[e]||(r[e]=o[e]);if(0<(t=Object.keys(n.conflict).length)){console.info("%cConflict".concat(1<t?"s":""," found:"),"color: darkred; font-size: large");var i,a={};for(i in n.conflict){var c=n.conflict[i];a[i]={tagName:c.tagName,"src/href":c.src||c.href||"n/a","innerText excerpt":c.innerText&&""!==c.innerText?c.innerText.slice(0,200)+"...":"(empty)"}}console.table(a)}if(0<(t=Object.keys(n.noConflict).length)){console.info("%cNo conflict".concat(1<t?"s":""," found with ").concat(1===t?"this":"these",":"),"color: green; font-size: large");var f,s={};for(f in n.noConflict){var l=n.noConflict[f];s[f]={tagName:l.tagName,"src/href":l.src||l.href||"n/a","innerText excerpt":l.innerText&&""!==l.innerText?l.innerText.slice(0,200)+"...":"(empty)"}}console.table(s)}if(0<(t=Object.keys(r).length)){console.info("%cLeftovers--we timed out before collecting test results for ".concat(1===t?"this":"these",":"),"color: blue; font-size: large");var u,d={};for(u in r){var m=r[u];d[u]={tagName:m.tagName,"src/href":m.src||m.href||"n/a","innerText excerpt":m.innerText&&""!==m.innerText?m.innerText.slice(0,200)+"...":"(empty)"}}console.table(d)}},timeout:+(u.currentScript.getAttribute(O)||"2000"),resultsCollectionMaxWait:+(u.currentScript.getAttribute(D)||"5000")}),S),{},{__pollUntil:C,md5ForNode:w,detectionDone:!1,nodesTested:null,nodesFound:null});l.FontAwesomeDetection=N;var P=function(){try{return"production"===process.env.NODE_ENV}catch(t){return!1}}(),M="classic",I="sharp",W=[M,I];function B(t){return new Proxy(t,{get:function(t,e){return e in t?t[e]:t[M]}})}B((r(L={},M,{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands",fak:"kit","fa-kit":"kit"}),r(L,I,{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light"}),L));var t=B((r(f={},M,{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"}),r(f,I,{solid:"fass",regular:"fasr",light:"fasl"}),f)),S=(B((r(n={},M,{fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"}),r(n,I,{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light"}),n)),B((r(s={},M,{"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"}),r(s,I,{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl"}),s)),B((r(z={},M,{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"}),r(z,I,{900:"fass",400:"fasr",300:"fasl"}),z)),[1,2,3,4,5,6,7,8,9,10]),N=S.concat([11,12,13,14,15,16,17,18,19,20]),L="duotone-group",f="swap-opacity",n="primary",s="secondary",z=new Set;Object.keys(t[M]).map(z.add.bind(z)),Object.keys(t[I]).map(z.add.bind(z));[].concat(W,function(t){if(Array.isArray(t))return i(t)}(z=z)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(z)||function(t,e){if(t){if("string"==typeof t)return i(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Map"===(n="Object"===n&&t.constructor?t.constructor.name:n)||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(t,e):void 0}}(z)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),["2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",L,f,n,s]).concat(S.map(function(t){return"".concat(t,"x")})).concat(N.map(function(t){return"w-".concat(t)}));!function(t){try{for(var e=arguments.length,n=new Array(1<e?e-1:0),o=1;o<e;o++)n[o-1]=arguments[o];t.apply(void 0,n)}catch(t){if(!P)throw t}}(function(){d&&m&&j(window.FontAwesomeDetection.report)})},("object"!=typeof exports||"undefined"==typeof module)&&"function"==typeof define&&define.amd?define(t):t();
|
static/assets/FontAwesome/js/fontawesome.js
ADDED
The diff for this file is too large to render.
See raw diff
|
|
static/assets/FontAwesome/js/fontawesome.min.js
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Font Awesome Free 6.4.2 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 2023 Fonticons, Inc.
|
5 |
+
*/
|
6 |
+
!function(){"use strict";function n(a,t){var e,n=Object.keys(a);return Object.getOwnPropertySymbols&&(e=Object.getOwnPropertySymbols(a),t&&(e=e.filter(function(t){return Object.getOwnPropertyDescriptor(a,t).enumerable})),n.push.apply(n,e)),n}function k(a){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?n(Object(e),!0).forEach(function(t){s(a,t,e[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(e)):n(Object(e)).forEach(function(t){Object.defineProperty(a,t,Object.getOwnPropertyDescriptor(e,t))})}return a}function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function r(t,a){for(var e=0;e<a.length;e++){var n=a[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function s(t,a,e){return a in t?Object.defineProperty(t,a,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[a]=e,t}function m(t,a){return function(t){if(Array.isArray(t))return t}(t)||function(t,a){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var n,i,r=[],o=!0,s=!1;try{for(e=e.call(t);!(o=(n=e.next()).done)&&(r.push(n.value),!a||r.length!==a);o=!0);}catch(t){s=!0,i=t}finally{try{o||null==e.return||e.return()}finally{if(s)throw i}}return r}}(t,a)||e(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(t){return function(t){if(Array.isArray(t))return o(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||e(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function e(t,a){if(t){if("string"==typeof t)return o(t,a);var e=Object.prototype.toString.call(t).slice(8,-1);return"Map"===(e="Object"===e&&t.constructor?t.constructor.name:e)||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?o(t,a):void 0}}function o(t,a){(null==a||a>t.length)&&(a=t.length);for(var e=0,n=new Array(a);e<a;e++)n[e]=t[e];return n}function t(){}var a={},c={},f=null,u={mark:t,measure:t};try{"undefined"!=typeof window&&(a=window),"undefined"!=typeof document&&(c=document),"undefined"!=typeof MutationObserver&&(f=MutationObserver),"undefined"!=typeof performance&&(u=performance)}catch(t){}var d=(a.navigator||{}).userAgent,b=void 0===d?"":d,g=a,h=c,p=f,d=u,v=!!g.document,y=!!h.documentElement&&!!h.head&&"function"==typeof h.addEventListener&&"function"==typeof h.createElement,w=~b.indexOf("MSIE")||~b.indexOf("Trident/"),a="___FONT_AWESOME___",x=16,A="svg-inline--fa",O="data-fa-i2svg",N="data-fa-pseudo-element",P="data-fa-pseudo-element-pending",C="data-prefix",S="data-icon",j="fontawesome-i2svg",E="async",z=["HTML","HEAD","STYLE","SCRIPT"],M=function(){try{return!0}catch(t){return!1}}(),I="classic",L="sharp",Y=[I,L];function R(t){return new Proxy(t,{get:function(t,a){return a in t?t[a]:t[I]}})}var T=R((s(c={},I,{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands",fak:"kit","fa-kit":"kit"}),s(c,L,{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light"}),c)),D=R((s(f={},I,{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"}),s(f,L,{solid:"fass",regular:"fasr",light:"fasl"}),f)),F=R((s(u={},I,{fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"}),s(u,L,{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light"}),u)),H=R((s(b={},I,{"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"}),s(b,L,{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl"}),b)),W=/fa(s|r|l|t|d|b|k|ss|sr|sl)?[\-\ ]/,_="fa-layers-text",U=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i,X=R((s(c={},I,{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"}),s(c,L,{900:"fass",400:"fasr",300:"fasl"}),c)),f=[1,2,3,4,5,6,7,8,9,10],u=f.concat([11,12,13,14,15,16,17,18,19,20]),B=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],q={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},b=new Set;Object.keys(D[I]).map(b.add.bind(b)),Object.keys(D[L]).map(b.add.bind(b));var V=[].concat(Y,l(b),["2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",q.GROUP,q.SWAP_OPACITY,q.PRIMARY,q.SECONDARY]).concat(f.map(function(t){return"".concat(t,"x")})).concat(u.map(function(t){return"w-".concat(t)})),G=g.FontAwesomeConfig||{};h&&"function"==typeof h.querySelector&&[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach(function(t){var a=m(t,2),t=a[0],a=a[1],t=""===(t=function(t){var a=h.querySelector("script["+t+"]");if(a)return a.getAttribute(t)}(t))||"false"!==t&&("true"===t||t);null!=t&&(G[a]=t)});c={styleDefault:"solid",familyDefault:"classic",cssPrefix:"fa",replacementClass:A,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};G.familyPrefix&&(G.cssPrefix=G.familyPrefix);var K=k(k({},c),G);K.autoReplaceSvg||(K.observeMutations=!1);var J={};Object.keys(c).forEach(function(a){Object.defineProperty(J,a,{enumerable:!0,set:function(t){K[a]=t,Q.forEach(function(t){return t(J)})},get:function(){return K[a]}})}),Object.defineProperty(J,"familyPrefix",{enumerable:!0,set:function(t){K.cssPrefix=t,Q.forEach(function(t){return t(J)})},get:function(){return K.cssPrefix}}),g.FontAwesomeConfig=J;var Q=[];var Z=x,$={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};var tt="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function at(){for(var t=12,a="";0<t--;)a+=tt[62*Math.random()|0];return a}function et(t){for(var a=[],e=(t||[]).length>>>0;e--;)a[e]=t[e];return a}function nt(t){return t.classList?et(t.classList):(t.getAttribute("class")||"").split(" ").filter(function(t){return t})}function it(t){return"".concat(t).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function rt(e){return Object.keys(e||{}).reduce(function(t,a){return t+"".concat(a,": ").concat(e[a].trim(),";")},"")}function ot(t){return t.size!==$.size||t.x!==$.x||t.y!==$.y||t.rotate!==$.rotate||t.flipX||t.flipY}function st(){var t,a,e=A,n=J.cssPrefix,i=J.replacementClass,r=':host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Solid";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Regular";--fa-font-light:normal 300 1em/1 "Font Awesome 6 Light";--fa-font-thin:normal 100 1em/1 "Font Awesome 6 Thin";--fa-font-duotone:normal 900 1em/1 "Font Awesome 6 Duotone";--fa-font-sharp-solid:normal 900 1em/1 "Font Awesome 6 Sharp";--fa-font-sharp-regular:normal 400 1em/1 "Font Awesome 6 Sharp";--fa-font-sharp-light:normal 300 1em/1 "Font Awesome 6 Sharp";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}svg:not(:host).svg-inline--fa,svg:not(:root).svg-inline--fa{overflow:visible;box-sizing:content-box}.svg-inline--fa{display:var(--fa-display,inline-block);height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-2xs{vertical-align:.1em}.svg-inline--fa.fa-xs{vertical-align:0}.svg-inline--fa.fa-sm{vertical-align:-.0714285705em}.svg-inline--fa.fa-lg{vertical-align:-.2em}.svg-inline--fa.fa-xl{vertical-align:-.25em}.svg-inline--fa.fa-2xl{vertical-align:-.3125em}.svg-inline--fa.fa-pull-left{margin-right:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-pull-right{margin-left:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-li{width:var(--fa-li-width,2em);top:.25em}.svg-inline--fa.fa-fw{width:var(--fa-fw-width,1.25em)}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:var(--fa-counter-background-color,#ff253a);border-radius:var(--fa-counter-border-radius,1em);box-sizing:border-box;color:var(--fa-inverse,#fff);line-height:var(--fa-counter-line-height,1);max-width:var(--fa-counter-max-width,5em);min-width:var(--fa-counter-min-width,1.5em);overflow:hidden;padding:var(--fa-counter-padding,.25em .5em);right:var(--fa-right,0);text-overflow:ellipsis;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-counter-scale,.25));transform:scale(var(--fa-counter-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:var(--fa-bottom,0);right:var(--fa-right,0);top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:var(--fa-bottom,0);left:var(--fa-left,0);right:auto;top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{top:var(--fa-top,0);right:var(--fa-right,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:var(--fa-left,0);right:auto;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top left;transform-origin:top left}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width,2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color,#eee);border-radius:var(--fa-border-radius,.1em);border-style:var(--fa-border-style,solid);border-width:var(--fa-border-width,.08em);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-transition-delay:0s;transition-delay:0s;-webkit-transition-duration:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}100%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}100%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}24%,8%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}24%,8%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;vertical-align:middle;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;z-index:var(--fa-stack-z-index,auto)}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-sr-only,.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.fa-sr-only-focusable:not(:focus),.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fa-duotone.fa-inverse,.fad.fa-inverse{color:var(--fa-inverse,#fff)}';return"fa"===n&&i===e||(t=new RegExp("\\.".concat("fa","\\-"),"g"),a=new RegExp("\\--".concat("fa","\\-"),"g"),e=new RegExp("\\.".concat(e),"g"),r=r.replace(t,".".concat(n,"-")).replace(a,"--".concat(n,"-")).replace(e,".".concat(i))),r}var ct=!1;function ft(){J.autoAddCss&&!ct&&(function(t){if(t&&y){var a=h.createElement("style");a.setAttribute("type","text/css"),a.innerHTML=t;for(var e=h.head.childNodes,n=null,i=e.length-1;-1<i;i--){var r=e[i],o=(r.tagName||"").toUpperCase();-1<["STYLE","LINK"].indexOf(o)&&(n=r)}h.head.insertBefore(a,n)}}(st()),ct=!0)}b={mixout:function(){return{dom:{css:st,insertCss:ft}}},hooks:function(){return{beforeDOMElementCreation:function(){ft()},beforeI2svg:function(){ft()}}}},f=g||{};f[a]||(f[a]={}),f[a].styles||(f[a].styles={}),f[a].hooks||(f[a].hooks={}),f[a].shims||(f[a].shims=[]);function lt(){h.removeEventListener("DOMContentLoaded",lt),dt=1,mt.map(function(t){return t()})}var ut=f[a],mt=[],dt=!1;function bt(t){y&&(dt?setTimeout(t,0):mt.push(t))}function pt(t){var e,a=t.tag,n=t.attributes,i=void 0===n?{}:n,n=t.children,n=void 0===n?[]:n;return"string"==typeof t?it(t):"<".concat(a," ").concat((e=i,Object.keys(e||{}).reduce(function(t,a){return t+"".concat(a,'="').concat(it(e[a]),'" ')},"").trim()),">").concat(n.map(pt).join(""),"</").concat(a,">")}function vt(t,a,e){if(t&&t[a]&&t[a][e])return{prefix:a,iconName:e,icon:t[a][e]}}y&&((dt=(h.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(h.readyState))||h.addEventListener("DOMContentLoaded",lt));function gt(t,a,e,n){for(var i,r,o=Object.keys(t),s=o.length,c=void 0!==n?ht(a,n):a,f=void 0===e?(i=1,t[o[0]]):(i=0,e);i<s;i++)f=c(f,t[r=o[i]],r,t);return f}var ht=function(i,r){return function(t,a,e,n){return i.call(r,t,a,e,n)}};function yt(t){t=function(t){for(var a=[],e=0,n=t.length;e<n;){var i,r=t.charCodeAt(e++);55296<=r&&r<=56319&&e<n?56320==(64512&(i=t.charCodeAt(e++)))?a.push(((1023&r)<<10)+(1023&i)+65536):(a.push(r),e--):a.push(r)}return a}(t);return 1===t.length?t[0].toString(16):null}function kt(n){return Object.keys(n).reduce(function(t,a){var e=n[a];return!!e.icon?t[e.iconName]=e.icon:t[a]=e,t},{})}function wt(t,a,e){var n=(2<arguments.length&&void 0!==e?e:{}).skipHooks,e=void 0!==n&&n,n=kt(a);"function"!=typeof ut.hooks.addPack||e?ut.styles[t]=k(k({},ut.styles[t]||{}),n):ut.hooks.addPack(t,kt(a)),"fas"===t&&wt("fa",a)}var xt=ut.styles,At=ut.shims,Ot=(s(u={},I,Object.values(F[I])),s(u,L,Object.values(F[L])),u),Nt=null,Pt={},Ct={},St={},jt={},Et={},zt=(s(c={},I,Object.keys(T[I])),s(c,L,Object.keys(T[L])),c);function Mt(t,a){var e=a.split("-"),a=e[0],e=e.slice(1).join("-");return a!==t||""===e||~V.indexOf(e)?null:e}function It(){function t(n){return gt(xt,function(t,a,e){return t[e]=gt(a,n,{}),t},{})}Pt=t(function(a,t,e){return t[3]&&(a[t[3]]=e),t[2]&&t[2].filter(function(t){return"number"==typeof t}).forEach(function(t){a[t.toString(16)]=e}),a}),Ct=t(function(a,t,e){return a[e]=e,t[2]&&t[2].filter(function(t){return"string"==typeof t}).forEach(function(t){a[t]=e}),a}),Et=t(function(a,t,e){t=t[2];return a[e]=e,t.forEach(function(t){a[t]=e}),a});var i="far"in xt||J.autoFetchSvg,a=gt(At,function(t,a){var e=a[0],n=a[1],a=a[2];return"far"!==n||i||(n="fas"),"string"==typeof e&&(t.names[e]={prefix:n,iconName:a}),"number"==typeof e&&(t.unicodes[e.toString(16)]={prefix:n,iconName:a}),t},{names:{},unicodes:{}});St=a.names,jt=a.unicodes,Nt=Dt(J.styleDefault,{family:J.familyDefault})}function Lt(t,a){return(Pt[t]||{})[a]}function Yt(t,a){return(Et[t]||{})[a]}function Rt(t){return St[t]||{prefix:null,iconName:null}}f=function(t){Nt=Dt(t.styleDefault,{family:J.familyDefault})},Q.push(f),It();function Tt(){return{prefix:null,iconName:null,rest:[]}}function Dt(t,a){var e=(1<arguments.length&&void 0!==a?a:{}).family,a=void 0===e?I:e,e=T[a][t],e=D[a][t]||D[a][e],t=t in ut.styles?t:null;return e||t||null}var Ft=(s(a={},I,Object.keys(F[I])),s(a,L,Object.keys(F[L])),a);function Ht(t,a){var a=(1<arguments.length&&void 0!==a?a:{}).skipLookups,n=void 0!==a&&a,i=(s(a={},I,"".concat(J.cssPrefix,"-").concat(I)),s(a,L,"".concat(J.cssPrefix,"-").concat(L)),a),r=null,o=I;(t.includes(i[I])||t.some(function(t){return Ft[I].includes(t)}))&&(o=I),(t.includes(i[L])||t.some(function(t){return Ft[L].includes(t)}))&&(o=L);a=t.reduce(function(t,a){var e=Mt(J.cssPrefix,a);return xt[a]?(a=Ot[o].includes(a)?H[o][a]:a,r=a,t.prefix=a):-1<zt[o].indexOf(a)?(r=a,t.prefix=Dt(a,{family:o})):e?t.iconName=e:a!==J.replacementClass&&a!==i[I]&&a!==i[L]&&t.rest.push(a),!n&&t.prefix&&t.iconName&&(e="fa"===r?Rt(t.iconName):{},a=Yt(t.prefix,t.iconName),e.prefix&&(r=null),t.iconName=e.iconName||a||t.iconName,t.prefix=e.prefix||t.prefix,"far"!==t.prefix||xt.far||!xt.fas||J.autoFetchSvg||(t.prefix="fas")),t},Tt());return(t.includes("fa-brands")||t.includes("fab"))&&(a.prefix="fab"),(t.includes("fa-duotone")||t.includes("fad"))&&(a.prefix="fad"),a.prefix||o!==L||!xt.fass&&!J.autoFetchSvg||(a.prefix="fass",a.iconName=Yt(a.prefix,a.iconName)||a.iconName),"fa"!==a.prefix&&"fa"!==r||(a.prefix=Nt||"fas"),a}var u=function(){function t(){!function(t,a){if(!(t instanceof a))throw new TypeError("Cannot call a class as a function")}(this,t),this.definitions={}}var a,e,n;return a=t,(e=[{key:"add",value:function(){for(var e=this,t=arguments.length,a=new Array(t),n=0;n<t;n++)a[n]=arguments[n];var i=a.reduce(this._pullDefinitions,{});Object.keys(i).forEach(function(t){e.definitions[t]=k(k({},e.definitions[t]||{}),i[t]),wt(t,i[t]);var a=F[I][t];a&&wt(a,i[t]),It()})}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(i,t){var r=t.prefix&&t.iconName&&t.icon?{0:t}:t;return Object.keys(r).map(function(t){var a=r[t],e=a.prefix,t=a.iconName,n=a.icon,a=n[2];i[e]||(i[e]={}),0<a.length&&a.forEach(function(t){"string"==typeof t&&(i[e][t]=n)}),i[e][t]=n}),i}}])&&r(a.prototype,e),n&&r(a,n),Object.defineProperty(a,"prototype",{writable:!1}),t}(),c=[],Wt={},_t={},Ut=Object.keys(_t);function Xt(t,a){for(var e=arguments.length,n=new Array(2<e?e-2:0),i=2;i<e;i++)n[i-2]=arguments[i];return(Wt[t]||[]).forEach(function(t){a=t.apply(null,[a].concat(n))}),a}function Bt(t){for(var a=arguments.length,e=new Array(1<a?a-1:0),n=1;n<a;n++)e[n-1]=arguments[n];(Wt[t]||[]).forEach(function(t){t.apply(null,e)})}function qt(t){var a=t,t=Array.prototype.slice.call(arguments,1);return _t[a]?_t[a].apply(null,t):void 0}function Vt(t){"fa"===t.prefix&&(t.prefix="fas");var a=t.iconName,t=t.prefix||Nt;if(a)return a=Yt(t,a)||a,vt(Gt.definitions,t,a)||vt(ut.styles,t,a)}var Gt=new u,Kt={noAuto:function(){J.autoReplaceSvg=!1,J.observeMutations=!1,Bt("noAuto")},config:J,dom:{i2svg:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return y?(Bt("beforeI2svg",t),qt("pseudoElements2svg",t),qt("i2svg",t)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},a=t.autoReplaceSvgRoot;!1===J.autoReplaceSvg&&(J.autoReplaceSvg=!0),J.observeMutations=!0,bt(function(){Jt({autoReplaceSvgRoot:a}),Bt("watch",t)})}},parse:{icon:function(t){if(null===t)return null;if("object"===i(t)&&t.prefix&&t.iconName)return{prefix:t.prefix,iconName:Yt(t.prefix,t.iconName)||t.iconName};if(Array.isArray(t)&&2===t.length){var a=0===t[1].indexOf("fa-")?t[1].slice(3):t[1],e=Dt(t[0]);return{prefix:e,iconName:Yt(e,a)||a}}if("string"==typeof t&&(-1<t.indexOf("".concat(J.cssPrefix,"-"))||t.match(W))){a=Ht(t.split(" "),{skipLookups:!0});return{prefix:a.prefix||Nt,iconName:Yt(a.prefix,a.iconName)||a.iconName}}return"string"==typeof t?{prefix:Nt,iconName:Yt(Nt,t)||t}:void 0}},library:Gt,findIconDefinition:Vt,toHtml:pt},Jt=function(){var t=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).autoReplaceSvgRoot,t=void 0===t?h:t;(0<Object.keys(ut.styles).length||J.autoFetchSvg)&&y&&J.autoReplaceSvg&&Kt.dom.i2svg({node:t})};function Qt(a,t){return Object.defineProperty(a,"abstract",{get:t}),Object.defineProperty(a,"html",{get:function(){return a.abstract.map(pt)}}),Object.defineProperty(a,"node",{get:function(){if(y){var t=h.createElement("div");return t.innerHTML=a.html,t.children}}}),a}function Zt(t){var a=t.icons,e=a.main,n=a.mask,i=t.prefix,r=t.iconName,o=t.transform,s=t.symbol,c=t.title,f=t.maskId,l=t.titleId,u=t.extra,m=t.watchable,d=void 0!==m&&m,b=n.found?n:e,a=b.width,t=b.height,m="fak"===i,b=[J.replacementClass,r?"".concat(J.cssPrefix,"-").concat(r):""].filter(function(t){return-1===u.classes.indexOf(t)}).filter(function(t){return""!==t||!!t}).concat(u.classes).join(" "),b={children:[],attributes:k(k({},u.attributes),{},{"data-prefix":i,"data-icon":r,class:b,role:u.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(a," ").concat(t)})},t=m&&!~u.classes.indexOf("fa-fw")?{width:"".concat(a/t*16*.0625,"em")}:{};d&&(b.attributes[O]=""),c&&(b.children.push({tag:"title",attributes:{id:b.attributes["aria-labelledby"]||"title-".concat(l||at())},children:[c]}),delete b.attributes.title);var p,v,g,h,y,t=k(k({},b),{},{prefix:i,iconName:r,main:e,mask:n,maskId:f,transform:o,symbol:s,styles:k(k({},t),u.styles)}),n=n.found&&e.found?qt("generateAbstractMask",t)||{children:[],attributes:{}}:qt("generateAbstractIcon",t)||{children:[],attributes:{}},e=n.children,n=n.attributes;return t.children=e,t.attributes=n,s?(v=(p=t).prefix,g=p.iconName,h=p.children,y=p.attributes,p=!0===(p=p.symbol)?"".concat(v,"-").concat(J.cssPrefix,"-").concat(g):p,[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:k(k({},y),{},{id:p}),children:h}]}]):(g=(v=t).children,y=v.main,p=v.mask,h=v.attributes,t=v.styles,ot(v=v.transform)&&y.found&&!p.found&&(p=y.width/y.height/2,y=.5,h.style=rt(k(k({},t),{},{"transform-origin":"".concat(p+v.x/16,"em ").concat(y+v.y/16,"em")}))),[{tag:"svg",attributes:h,children:g}])}function $t(t){var a=t.content,e=t.width,n=t.height,i=t.transform,r=t.title,o=t.extra,s=t.watchable,c=void 0!==s&&s,t=k(k(k({},o.attributes),r?{title:r}:{}),{},{class:o.classes.join(" ")});c&&(t[O]="");s=k({},o.styles);ot(i)&&(s.transform=(o=(c={transform:i,startCentered:!0,width:e,height:n}).transform,i=c.width,n=void 0===(e=c.height)?x:e,c=void 0!==(e=c.startCentered)&&e,e="",e+=c&&w?"translate(".concat(o.x/Z-(void 0===i?x:i)/2,"em, ").concat(o.y/Z-n/2,"em) "):c?"translate(calc(-50% + ".concat(o.x/Z,"em), calc(-50% + ").concat(o.y/Z,"em)) "):"translate(".concat(o.x/Z,"em, ").concat(o.y/Z,"em) "),e+="scale(".concat(o.size/Z*(o.flipX?-1:1),", ").concat(o.size/Z*(o.flipY?-1:1),") "),e+="rotate(".concat(o.rotate,"deg) ")),s["-webkit-transform"]=s.transform);s=rt(s);0<s.length&&(t.style=s);s=[];return s.push({tag:"span",attributes:t,children:[a]}),r&&s.push({tag:"span",attributes:{class:"sr-only"},children:[r]}),s}var ta=ut.styles;function aa(t){var a=t[0],e=t[1],t=m(t.slice(4),1)[0];return{found:!0,width:a,height:e,icon:Array.isArray(t)?{tag:"g",attributes:{class:"".concat(J.cssPrefix,"-").concat(q.GROUP)},children:[{tag:"path",attributes:{class:"".concat(J.cssPrefix,"-").concat(q.SECONDARY),fill:"currentColor",d:t[0]}},{tag:"path",attributes:{class:"".concat(J.cssPrefix,"-").concat(q.PRIMARY),fill:"currentColor",d:t[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:t}}}}var ea={found:!1,width:512,height:512};function na(i,r){var o=r;return"fa"===r&&null!==J.styleDefault&&(r=Nt),new Promise(function(t,a){var e,n;qt("missingIconAbstract");if("fa"===o&&(n=Rt(i)||{},i=n.iconName||i,r=n.prefix||r),i&&r&&ta[r]&&ta[r][i])return t(aa(ta[r][i]));e=i,n=r,M||J.showMissingIcons||!e||console.error('Icon with name "'.concat(e,'" and prefix "').concat(n,'" is missing.')),t(k(k({},ea),{},{icon:J.showMissingIcons&&i&&qt("missingIconAbstract")||{}}))})}function ia(){}function ra(t){oa.mark("".concat(sa," ").concat(t," ends")),oa.measure("".concat(sa," ").concat(t),"".concat(sa," ").concat(t," begins"),"".concat(sa," ").concat(t," ends"))}var oa=J.measurePerformance&&d&&d.mark&&d.measure?d:{mark:ia,measure:ia},sa='FA "6.4.2"',ca={begin:function(t){return oa.mark("".concat(sa," ").concat(t," begins")),function(){return ra(t)}},end:ra},fa=function(){};function la(t){return"string"==typeof(t.getAttribute?t.getAttribute(O):null)}function ua(t){return h.createElementNS("http://www.w3.org/2000/svg",t)}function ma(t){return h.createElement(t)}var da={replace:function(t){var a=t[0];a.parentNode&&(t[1].forEach(function(t){a.parentNode.insertBefore(function a(e,t){var t=(1<arguments.length&&void 0!==t?t:{}).ceFn,n=void 0===t?"svg"===e.tag?ua:ma:t;if("string"==typeof e)return h.createTextNode(e);var i=n(e.tag);return Object.keys(e.attributes||[]).forEach(function(t){i.setAttribute(t,e.attributes[t])}),(e.children||[]).forEach(function(t){i.appendChild(a(t,{ceFn:n}))}),i}(t),a)}),null===a.getAttribute(O)&&J.keepOriginalSource?(t=h.createComment((t=" ".concat((t=a).outerHTML," "),t="".concat(t,"Font Awesome fontawesome.com "))),a.parentNode.replaceChild(t,a)):a.remove())},nest:function(t){var a=t[0],e=t[1];if(~nt(a).indexOf(J.replacementClass))return da.replace(t);var n=new RegExp("".concat(J.cssPrefix,"-.*"));delete e[0].attributes.id,e[0].attributes.class&&(t=e[0].attributes.class.split(" ").reduce(function(t,a){return(a===J.replacementClass||a.match(n)?t.toSvg:t.toNode).push(a),t},{toNode:[],toSvg:[]}),e[0].attributes.class=t.toSvg.join(" "),0===t.toNode.length?a.removeAttribute("class"):a.setAttribute("class",t.toNode.join(" ")));e=e.map(pt).join("\n");a.setAttribute(O,""),a.innerHTML=e}};function ba(t){t()}function pa(e,t){var n="function"==typeof t?t:fa;0===e.length?n():(J.mutateApproach===E?g.requestAnimationFrame||ba:ba)(function(){var t=!0!==J.autoReplaceSvg&&da[J.autoReplaceSvg]||da.replace,a=ca.begin("mutate");e.map(t),a(),n()})}var va=!1;function ga(){va=!0}function ha(){va=!1}var ya=null;function ka(t){var r,o,a,s;p&&J.observeMutations&&(a=t.treeCallback,r=void 0===a?fa:a,a=t.nodeCallback,o=void 0===a?fa:a,a=t.pseudoElementsCallback,s=void 0===a?fa:a,t=void 0===(t=t.observeMutationsRoot)?h:t,ya=new p(function(t){var i;va||(i=Nt,et(t).forEach(function(t){var a,e,n;"childList"===t.type&&0<t.addedNodes.length&&!la(t.addedNodes[0])&&(J.searchPseudoElements&&s(t.target),r(t.target)),"attributes"===t.type&&t.target.parentNode&&J.searchPseudoElements&&s(t.target.parentNode),"attributes"===t.type&&la(t.target)&&~B.indexOf(t.attributeName)&&("class"===t.attributeName&&(e=t.target,n=e.getAttribute?e.getAttribute(C):null,e=e.getAttribute?e.getAttribute(S):null,n&&e)?(e=(a=Ht(nt(t.target))).prefix,a=a.iconName,t.target.setAttribute(C,e||i),a&&t.target.setAttribute(S,a)):(a=t.target)&&a.classList&&a.classList.contains&&a.classList.contains(J.replacementClass)&&o(t.target))}))}),y&&ya.observe(t,{childList:!0,attributes:!0,characterData:!0,subtree:!0}))}function wa(t){var a=t.getAttribute("data-prefix"),e=t.getAttribute("data-icon"),n=void 0!==t.innerText?t.innerText.trim():"",i=Ht(nt(t));return i.prefix||(i.prefix=Nt),a&&e&&(i.prefix=a,i.iconName=e),i.iconName&&i.prefix||(i.prefix&&0<n.length&&(i.iconName=(e=i.prefix,n=t.innerText,(Ct[e]||{})[n]||Lt(i.prefix,yt(t.innerText)))),!i.iconName&&J.autoFetchSvg&&t.firstChild&&t.firstChild.nodeType===Node.TEXT_NODE&&(i.iconName=t.firstChild.data)),i}function xa(t,a){var e=1<arguments.length&&void 0!==a?a:{styleParser:!0},n=wa(t),i=n.iconName,r=n.prefix,o=n.rest,s=(a=et((s=t).attributes).reduce(function(t,a){return"class"!==t.name&&"style"!==t.name&&(t[a.name]=a.value),t},{}),n=s.getAttribute("title"),s=s.getAttribute("data-fa-title-id"),J.autoA11y&&(n?a["aria-labelledby"]="".concat(J.replacementClass,"-title-").concat(s||at()):(a["aria-hidden"]="true",a.focusable="false")),a),a=Xt("parseNodeAttributes",{},t),c=e.styleParser?(e=(c=t).getAttribute("style"),c=[],c=e?e.split(";").reduce(function(t,a){var e=a.split(":"),a=e[0],e=e.slice(1);return a&&0<e.length&&(t[a]=e.join(":").trim()),t},{}):c):[];return k({iconName:i,title:t.getAttribute("title"),titleId:t.getAttribute("data-fa-title-id"),prefix:r,transform:$,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:o,styles:c,attributes:s}},a)}var Aa=ut.styles;function Oa(t){var a="nest"===J.autoReplaceSvg?xa(t,{styleParser:!1}):xa(t);return~a.extra.classes.indexOf(_)?qt("generateLayersText",t,a):qt("generateSvgReplacementMutation",t,a)}var Na=new Set;function Pa(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;if(!y)return Promise.resolve();function i(t){return a.add("".concat(j,"-").concat(t))}function r(t){return a.remove("".concat(j,"-").concat(t))}var a=h.documentElement.classList,e=J.autoFetchSvg?Na:Y.map(function(t){return"fa-".concat(t)}).concat(Object.keys(Aa));e.includes("fa")||e.push("fa");var o=[".".concat(_,":not([").concat(O,"])")].concat(e.map(function(t){return".".concat(t,":not([").concat(O,"])")})).join(", ");if(0===o.length)return Promise.resolve();e=[];try{e=et(t.querySelectorAll(o))}catch(t){}if(!(0<e.length))return Promise.resolve();i("pending"),r("complete");var s=ca.begin("onTree"),c=e.reduce(function(t,a){try{var e=Oa(a);e&&t.push(e)}catch(t){M||"MissingIcon"===t.name&&console.error(t)}return t},[]);return new Promise(function(a,e){Promise.all(c).then(function(t){pa(t,function(){i("active"),i("complete"),r("pending"),"function"==typeof n&&n(),s(),a()})}).catch(function(t){s(),e(t)})})}function Ca(t){var a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;Oa(t).then(function(t){t&&pa([t],a)})}Y.map(function(t){Na.add("fa-".concat(t))}),Object.keys(T[I]).map(Na.add.bind(Na)),Object.keys(T[L]).map(Na.add.bind(Na));function Sa(t){var a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=a.transform,n=void 0===e?$:e,i=void 0!==(e=a.symbol)&&e,r=void 0===(e=a.mask)?null:e,o=void 0===(e=a.maskId)?null:e,s=void 0===(e=a.title)?null:e,c=void 0===(e=a.titleId)?null:e,f=void 0===(e=a.classes)?[]:e,l=void 0===(e=a.attributes)?{}:e,u=void 0===(e=a.styles)?{}:e;if(t){var m=t.prefix,d=t.iconName,b=t.icon;return Qt(k({type:"icon"},t),function(){return Bt("beforeDOMElementCreation",{iconDefinition:t,params:a}),J.autoA11y&&(s?l["aria-labelledby"]="".concat(J.replacementClass,"-title-").concat(c||at()):(l["aria-hidden"]="true",l.focusable="false")),Zt({icons:{main:aa(b),mask:r?aa(r.icon):{found:!1,width:null,height:null,icon:{}}},prefix:m,iconName:d,transform:k(k({},$),n),symbol:i,title:s,maskId:o,titleId:c,extra:{attributes:l,styles:u,classes:f}})})}}var Na=l(Na),f={mixout:function(){return{icon:(n=Sa,function(t){var a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=(t||{}).icon?t:Vt(t||{}),t=(t=a.mask)&&((t||{}).icon?t:Vt(t||{}));return n(e,k(k({},a),{},{mask:t}))})};var n},hooks:function(){return{mutationObserverCallbacks:function(t){return t.treeCallback=Pa,t.nodeCallback=Ca,t}}},provides:function(t){t.i2svg=function(t){var a=t.node,t=t.callback;return Pa(void 0===a?h:a,void 0===t?function(){}:t)},t.generateSvgReplacementMutation=function(n,t){var i=t.iconName,r=t.title,o=t.titleId,s=t.prefix,c=t.transform,f=t.symbol,a=t.mask,l=t.maskId,u=t.extra;return new Promise(function(e,t){Promise.all([na(i,s),a.iconName?na(a.iconName,a.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(function(t){var a=m(t,2),t=a[0],a=a[1];e([n,Zt({icons:{main:t,mask:a},prefix:s,iconName:i,transform:c,symbol:f,maskId:l,title:r,titleId:o,extra:u,watchable:!0})])}).catch(t)})},t.generateAbstractIcon=function(t){var a,e=t.children,n=t.attributes,i=t.main,r=t.transform,t=rt(t.styles);return 0<t.length&&(n.style=t),ot(r)&&(a=qt("generateAbstractTransformGrouping",{main:i,transform:r,containerWidth:i.width,iconWidth:i.width})),e.push(a||i.icon),{children:e,attributes:n}}}},a={mixout:function(){return{layer:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},a=e.classes,n=void 0===a?[]:a;return Qt({type:"layer"},function(){Bt("beforeDOMElementCreation",{assembler:t,params:e});var a=[];return t(function(t){Array.isArray(t)?t.map(function(t){a=a.concat(t.abstract)}):a=a.concat(t.abstract)}),[{tag:"span",attributes:{class:["".concat(J.cssPrefix,"-layers")].concat(l(n)).join(" ")},children:a}]})}}}},u={mixout:function(){return{counter:function(i){var r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},t=r.title,o=void 0===t?null:t,t=r.classes,s=void 0===t?[]:t,t=r.attributes,c=void 0===t?{}:t,t=r.styles,f=void 0===t?{}:t;return Qt({type:"counter",content:i},function(){return Bt("beforeDOMElementCreation",{content:i,params:r}),t={content:i.toString(),title:o,extra:{attributes:c,styles:f,classes:["".concat(J.cssPrefix,"-layers-counter")].concat(l(s))}},a=t.content,e=t.title,n=t.extra,t=k(k(k({},n.attributes),e?{title:e}:{}),{},{class:n.classes.join(" ")}),0<(n=rt(n.styles)).length&&(t.style=n),(n=[]).push({tag:"span",attributes:t,children:[a]}),e&&n.push({tag:"span",attributes:{class:"sr-only"},children:[e]}),n;var t,a,e,n})}}}},d={mixout:function(){return{text:function(t){var a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=a.transform,n=void 0===e?$:e,e=a.title,i=void 0===e?null:e,e=a.classes,r=void 0===e?[]:e,e=a.attributes,o=void 0===e?{}:e,e=a.styles,s=void 0===e?{}:e;return Qt({type:"text",content:t},function(){return Bt("beforeDOMElementCreation",{content:t,params:a}),$t({content:t,transform:k(k({},$),n),title:i,extra:{attributes:o,styles:s,classes:["".concat(J.cssPrefix,"-layers-text")].concat(l(r))}})})}}},provides:function(t){t.generateLayersText=function(t,a){var e,n=a.title,i=a.transform,r=a.extra,o=null,s=null;return w&&(e=parseInt(getComputedStyle(t).fontSize,10),o=(a=t.getBoundingClientRect()).width/e,s=a.height/e),J.autoA11y&&!n&&(r.attributes["aria-hidden"]="true"),Promise.resolve([t,$t({content:t.innerHTML,width:o,height:s,transform:i,title:n,extra:r,watchable:!0})])}}},ja=new RegExp('"',"ug"),Ea=[1105920,1112319];function za(b,p){var v="".concat(P).concat(p.replace(":","-"));return new Promise(function(e,t){if(null!==b.getAttribute(v))return e();var n,i,r,o,a,s,c,f=et(b.children).filter(function(t){return t.getAttribute(N)===p})[0],l=g.getComputedStyle(b,p),u=l.getPropertyValue("font-family").match(U),m=l.getPropertyValue("font-weight"),d=l.getPropertyValue("content");if(f&&!u)return b.removeChild(f),e();u&&"none"!==d&&""!==d?(s=l.getPropertyValue("content"),a=~["Sharp"].indexOf(u[2])?L:I,n=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(u[2])?D[a][u[2].toLowerCase()]:X[a][m],d=(l=(l=(d=s).replace(ja,""),a=0,s=(m=l).length,c=55296<=(d=m.charCodeAt(a))&&d<=56319&&a+1<s&&56320<=(c=m.charCodeAt(a+1))&&c<=57343?1024*(d-55296)+c-56320+65536:d,d=Ea[0]<=c&&c<=Ea[1],{value:yt((c=2===l.length&&l[0]===l[1])?l[0]:l),isSecondary:d||c})).value,c=l.isSecondary,l=u[0].startsWith("FontAwesome"),u=Lt(n,d),i=u,l&&(d=jt[l=d],l=Lt("fas",l),(l=d||(l?{prefix:"fas",iconName:l}:null)||{prefix:null,iconName:null}).iconName&&l.prefix&&(u=l.iconName,n=l.prefix)),!u||c||f&&f.getAttribute(C)===n&&f.getAttribute(S)===i?e():(b.setAttribute(v,i),f&&b.removeChild(f),(o=(r={iconName:null,title:null,titleId:null,prefix:null,transform:$,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}).extra).attributes[N]=p,na(u,n).then(function(t){var a=Zt(k(k({},r),{},{icons:{main:t,mask:Tt()},prefix:n,iconName:i,extra:o,watchable:!0})),t=h.createElementNS("http://www.w3.org/2000/svg","svg");"::before"===p?b.insertBefore(t,b.firstChild):b.appendChild(t),t.outerHTML=a.map(pt).join("\n"),b.removeAttribute(v),e()}).catch(t))):e()})}function Ma(t){return Promise.all([za(t,"::before"),za(t,"::after")])}function Ia(t){return!(t.parentNode===document.head||~z.indexOf(t.tagName.toUpperCase())||t.getAttribute(N)||t.parentNode&&"svg"===t.parentNode.tagName)}function La(i){if(y)return new Promise(function(t,a){var e=et(i.querySelectorAll("*")).filter(Ia).map(Ma),n=ca.begin("searchPseudoElements");ga(),Promise.all(e).then(function(){n(),ha(),t()}).catch(function(){n(),ha(),a()})})}function Ya(t){return t.toLowerCase().split(" ").reduce(function(t,a){var e=a.toLowerCase().split("-"),a=e[0],n=e.slice(1).join("-");if(a&&"h"===n)return t.flipX=!0,t;if(a&&"v"===n)return t.flipY=!0,t;if(n=parseFloat(n),isNaN(n))return t;switch(a){case"grow":t.size=t.size+n;break;case"shrink":t.size=t.size-n;break;case"left":t.x=t.x-n;break;case"right":t.x=t.x+n;break;case"up":t.y=t.y-n;break;case"down":t.y=t.y+n;break;case"rotate":t.rotate=t.rotate+n}return t},{size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0})}var Ra=!1,Ta={x:0,y:0,width:"100%",height:"100%"};function Da(t){return t.attributes&&(t.attributes.fill||(!(1<arguments.length&&void 0!==arguments[1])||arguments[1]))&&(t.attributes.fill="black"),t}var Fa;Fa={mixoutsTo:Kt}.mixoutsTo,c=[b,f,a,u,d,{hooks:function(){return{mutationObserverCallbacks:function(t){return t.pseudoElementsCallback=La,t}}},provides:function(t){t.pseudoElements2svg=function(t){t=t.node;J.searchPseudoElements&&La(void 0===t?h:t)}}},{mixout:function(){return{dom:{unwatch:function(){ga(),Ra=!0}}}},hooks:function(){return{bootstrap:function(){ka(Xt("mutationObserverCallbacks",{}))},noAuto:function(){ya&&ya.disconnect()},watch:function(t){t=t.observeMutationsRoot;Ra?ha():ka(Xt("mutationObserverCallbacks",{observeMutationsRoot:t}))}}}},{mixout:function(){return{parse:{transform:Ya}}},hooks:function(){return{parseNodeAttributes:function(t,a){a=a.getAttribute("data-fa-transform");return a&&(t.transform=Ya(a)),t}}},provides:function(t){t.generateAbstractTransformGrouping=function(t){var a=t.main,e=t.transform,n=t.containerWidth,i=t.iconWidth,r={transform:"translate(".concat(n/2," 256)")},t="translate(".concat(32*e.x,", ").concat(32*e.y,") "),n="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),e="rotate(".concat(e.rotate," 0 0)"),i={outer:r,inner:{transform:"".concat(t," ").concat(n," ").concat(e)},path:{transform:"translate(".concat(i/2*-1," -256)")}};return{tag:"g",attributes:k({},i.outer),children:[{tag:"g",attributes:k({},i.inner),children:[{tag:a.icon.tag,children:a.icon.children,attributes:k(k({},a.icon.attributes),i.path)}]}]}}}},{hooks:function(){return{parseNodeAttributes:function(t,a){var e=a.getAttribute("data-fa-mask"),e=e?Ht(e.split(" ").map(function(t){return t.trim()})):Tt();return e.prefix||(e.prefix=Nt),t.mask=e,t.maskId=a.getAttribute("data-fa-mask-id"),t}}},provides:function(t){t.generateAbstractMask=function(t){var a=t.children,e=t.attributes,n=t.main,i=t.mask,r=t.maskId,o=t.transform,s=n.width,c=n.icon,f=i.width,t=i.icon,o=(i=(n={transform:o,containerWidth:f,iconWidth:s}).transform,o=n.containerWidth,f=n.iconWidth,s={transform:"translate(".concat(o/2," 256)")},n="translate(".concat(32*i.x,", ").concat(32*i.y,") "),o="scale(".concat(i.size/16*(i.flipX?-1:1),", ").concat(i.size/16*(i.flipY?-1:1),") "),i="rotate(".concat(i.rotate," 0 0)"),{outer:s,inner:{transform:"".concat(n," ").concat(o," ").concat(i)},path:{transform:"translate(".concat(f/2*-1," -256)")}}),i={tag:"rect",attributes:k(k({},Ta),{},{fill:"white"})},f=c.children?{children:c.children.map(Da)}:{},f={tag:"g",attributes:k({},o.inner),children:[Da(k({tag:c.tag,attributes:k(k({},c.attributes),o.path)},f))]},o={tag:"g",attributes:k({},o.outer),children:[f]},f="mask-".concat(r||at()),r="clip-".concat(r||at()),o={tag:"mask",attributes:k(k({},Ta),{},{id:f,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[i,o]},o={tag:"defs",children:[{tag:"clipPath",attributes:{id:r},children:"g"===(t=t).tag?t.children:[t]},o]};return a.push(o,{tag:"rect",attributes:k({fill:"currentColor","clip-path":"url(#".concat(r,")"),mask:"url(#".concat(f,")")},Ta)}),{children:a,attributes:e}}}},{provides:function(t){var r=!1;g.matchMedia&&(r=g.matchMedia("(prefers-reduced-motion: reduce)").matches),t.missingIconAbstract=function(){var t=[],a={fill:"currentColor"},e={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};t.push({tag:"path",attributes:k(k({},a),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var n=k(k({},e),{},{attributeName:"opacity"}),i={tag:"circle",attributes:k(k({},a),{},{cx:"256",cy:"364",r:"28"}),children:[]};return r||i.children.push({tag:"animate",attributes:k(k({},e),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:k(k({},n),{},{values:"1;0;1;1;0;1;"})}),t.push(i),t.push({tag:"path",attributes:k(k({},a),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:r?[]:[{tag:"animate",attributes:k(k({},n),{},{values:"1;0;0;0;0;1;"})}]}),r||t.push({tag:"path",attributes:k(k({},a),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:k(k({},n),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:t}}}},{hooks:function(){return{parseNodeAttributes:function(t,a){a=a.getAttribute("data-fa-symbol");return t.symbol=null!==a&&(""===a||a),t}}}}],Wt={},Object.keys(_t).forEach(function(t){-1===Ut.indexOf(t)&&delete _t[t]}),c.forEach(function(t){var a,e=t.mixout?t.mixout():{};Object.keys(e).forEach(function(a){"function"==typeof e[a]&&(Fa[a]=e[a]),"object"===i(e[a])&&Object.keys(e[a]).forEach(function(t){Fa[a]||(Fa[a]={}),Fa[a][t]=e[a][t]})}),t.hooks&&(a=t.hooks(),Object.keys(a).forEach(function(t){Wt[t]||(Wt[t]=[]),Wt[t].push(a[t])})),t.provides&&t.provides(_t)}),function(t){try{for(var a=arguments.length,e=new Array(1<a?a-1:0),n=1;n<a;n++)e[n-1]=arguments[n];t.apply(void 0,e)}catch(t){if(!M)throw t}}(function(t){v&&(g.FontAwesome||(g.FontAwesome=Kt),bt(function(){Jt(),Bt("bootstrap")})),ut.hooks=k(k({},ut.hooks),{},{addPack:function(t,a){ut.styles[t]=k(k({},ut.styles[t]||{}),a),It(),Jt()},addPacks:function(t){t.forEach(function(t){var a=m(t,2),t=a[0],a=a[1];ut.styles[t]=k(k({},ut.styles[t]||{}),a)}),It(),Jt()},addShims:function(t){var a;(a=ut.shims).push.apply(a,l(t)),It(),Jt()}})})}();
|
static/assets/FontAwesome/js/regular.js
ADDED
The diff for this file is too large to render.
See raw diff
|
|
static/assets/FontAwesome/js/regular.min.js
ADDED
The diff for this file is too large to render.
See raw diff
|
|
static/assets/FontAwesome/js/solid.js
ADDED
The diff for this file is too large to render.
See raw diff
|
|
static/assets/FontAwesome/js/solid.min.js
ADDED
The diff for this file is too large to render.
See raw diff
|
|