diff --git a/502.html b/502.html index 98f4dbb..a65c3cd 100644 --- a/502.html +++ b/502.html @@ -49,7 +49,7 @@
diff --git a/chat_box/apps.py b/chat_box/apps.py index dd90bc1..e49c8ad 100644 --- a/chat_box/apps.py +++ b/chat_box/apps.py @@ -3,3 +3,6 @@ from django.apps import AppConfig class ChatBoxConfig(AppConfig): name = "chat_box" + + def ready(self): + from . import models diff --git a/chat_box/models.py b/chat_box/models.py index fd35430..476e861 100644 --- a/chat_box/models.py +++ b/chat_box/models.py @@ -25,26 +25,18 @@ class Room(models.Model): class Meta: app_label = "chat_box" - @cache_wrapper(prefix="Rinfo") - def _info(self): - last_msg = self.message_set.first() - return { - "user_ids": [self.user_one.id, self.user_two.id], - "last_message": last_msg.body if last_msg else None, - } - @cached_property def _cached_info(self): - return self._info() + return get_room_info(self.id) def contain(self, profile): - return profile.id in self._cached_info["user_ids"] + return profile.id in [self.user_one_id, self.user_two_id] def other_user(self, profile): return self.user_one if profile == self.user_two else self.user_two def other_user_id(self, profile): - user_ids = self._cached_info["user_ids"] + user_ids = [self.user_one_id, self.user_two_id] return sum(user_ids) - profile.id def users(self): @@ -53,6 +45,10 @@ class Room(models.Model): def last_message_body(self): return self._cached_info["last_message"] + @classmethod + def prefetch_room_cache(self, room_ids): + get_room_info.prefetch_multi([(i,) for i in room_ids]) + class Message(models.Model): author = models.ForeignKey(Profile, verbose_name=_("user"), on_delete=CASCADE) @@ -66,7 +62,6 @@ class Message(models.Model): ) def save(self, *args, **kwargs): - new_message = self.id self.body = self.body.strip() super(Message, self).save(*args, **kwargs) @@ -148,3 +143,11 @@ class Ignore(models.Model): self.remove_ignore(current_user, friend) else: self.add_ignore(current_user, friend) + + +@cache_wrapper(prefix="Rinfo") +def get_room_info(room_id): + last_msg = Message.objects.filter(room_id=room_id).first() + return { + "last_message": last_msg.body if last_msg else None, + } diff --git a/chat_box/views.py b/chat_box/views.py index b01994a..5214725 100644 --- a/chat_box/views.py +++ b/chat_box/views.py @@ -34,7 +34,7 @@ from judge import event_poster as event from judge.jinja2.gravatar import gravatar from judge.models import Friend -from chat_box.models import Message, Profile, Room, UserRoom, Ignore +from chat_box.models import Message, Profile, Room, UserRoom, Ignore, get_room_info from chat_box.utils import encrypt_url, decrypt_url, encrypt_channel, get_unread_boxes @@ -174,19 +174,46 @@ def mute_message(request): return JsonResponse(ret) +def check_valid_message(request, room): + if not room and len(request.POST["body"]) > 200: + return False + + if not can_access_room(request, room) or request.profile.mute: + return False + + last_msg = Message.objects.filter(room=room).first() + if ( + last_msg + and last_msg.author == request.profile + and last_msg.body == request.POST["body"].strip() + ): + return False + + if not room: + four_last_msg = Message.objects.filter(room=room).order_by("-id")[:4] + if len(four_last_msg) >= 4: + same_author = all(msg.author == request.profile for msg in four_last_msg) + time_diff = timezone.now() - four_last_msg[3].time + if same_author and time_diff.total_seconds() < 300: + return False + + return True + + @login_required def post_message(request): ret = {"msg": "posted"} + if request.method != "POST": return HttpResponseBadRequest() - if len(request.POST["body"]) > 5000: + if len(request.POST["body"]) > 5000 or len(request.POST["body"].strip()) == 0: return HttpResponseBadRequest() room = None if request.POST["room"]: room = Room.objects.get(id=request.POST["room"]) - if not can_access_room(request, room) or request.profile.mute: + if not check_valid_message(request, room): return HttpResponseBadRequest() new_message = Message(author=request.profile, body=request.POST["body"], room=room) @@ -204,7 +231,7 @@ def post_message(request): }, ) else: - Room._info.dirty(room) + get_room_info.dirty(room.id) room.last_msg_time = new_message.time room.save() @@ -229,9 +256,7 @@ def post_message(request): def can_access_room(request, room): - return ( - not room or room.user_one == request.profile or room.user_two == request.profile - ) + return not room or room.contain(request.profile) @login_required @@ -247,7 +272,7 @@ def chat_message_ajax(request): try: message = Message.objects.filter(hidden=False).get(id=message_id) room = message.room - if room and not room.contain(request.profile): + if not can_access_room(request, room): return HttpResponse("Unauthorized", status=401) except Message.DoesNotExist: return HttpResponseBadRequest() @@ -278,7 +303,7 @@ def update_last_seen(request, **kwargs): except Room.DoesNotExist: return HttpResponseBadRequest() - if room and not room.contain(profile): + if not can_access_room(request, room): return HttpResponseBadRequest() user_room, _ = UserRoom.objects.get_or_create(user=profile, room=room) @@ -338,6 +363,8 @@ def user_online_status_ajax(request): def get_online_status(profile, other_profile_ids, rooms=None): if not other_profile_ids: return None + Profile.prefetch_profile_cache(other_profile_ids) + joined_ids = ",".join([str(id) for id in other_profile_ids]) other_profiles = Profile.objects.raw( f"SELECT * from judge_profile where id in ({joined_ids}) order by field(id,{joined_ids})" @@ -404,6 +431,7 @@ def get_status_context(profile, include_ignored=False): recent_profile_ids = [str(i["other_user"]) for i in recent_profile] recent_rooms = [int(i["id"]) for i in recent_profile] + Room.prefetch_room_cache(recent_rooms) admin_list = ( queryset.filter(display_rank="admin") @@ -473,9 +501,16 @@ def get_or_create_room(request): user_room.last_seen = timezone.now() user_room.save() + room_url = reverse("chat", kwargs={"room_id": room.id}) if request.method == "GET": - return JsonResponse({"room": room.id, "other_user_id": other_user.id}) - return HttpResponseRedirect(reverse("chat", kwargs={"room_id": room.id})) + return JsonResponse( + { + "room": room.id, + "other_user_id": other_user.id, + "url": room_url, + } + ) + return HttpResponseRedirect(room_url) def get_unread_count(rooms, user): diff --git a/dmoj/settings.py b/dmoj/settings.py index e136a4d..74db7e2 100644 --- a/dmoj/settings.py +++ b/dmoj/settings.py @@ -34,6 +34,7 @@ SITE_ID = 1 SITE_NAME = "LQDOJ" SITE_LONG_NAME = "LQDOJ: Le Quy Don Online Judge" SITE_ADMIN_EMAIL = False +SITE_DOMAIN = "lqdoj.edu.vn" DMOJ_REQUIRE_STAFF_2FA = True @@ -85,6 +86,7 @@ DMOJ_STATS_SUBMISSION_RESULT_COLORS = { "ERR": "#ffa71c", } DMOJ_PROFILE_IMAGE_ROOT = "profile_images" +DMOJ_TEST_FORMATTER_ROOT = "test_formatter" MARKDOWN_STYLES = {} MARKDOWN_DEFAULT_STYLE = {} @@ -130,13 +132,10 @@ USE_SELENIUM = False SELENIUM_CUSTOM_CHROME_PATH = None SELENIUM_CHROMEDRIVER_PATH = "chromedriver" -PYGMENT_THEME = "pygment-github.css" INLINE_JQUERY = True INLINE_FONTAWESOME = True JQUERY_JS = "//ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js" -FONTAWESOME_CSS = ( - "//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" -) +FONTAWESOME_CSS = "//cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" DMOJ_CANONICAL = "" # Application definition @@ -170,7 +169,7 @@ else: }, { "model": "judge.Submission", - "icon": "fa-check-square-o", + "icon": "fa-check-square", "children": [ "judge.Language", "judge.Judge", @@ -278,8 +277,11 @@ LANGUAGE_COOKIE_AGE = 8640000 FORM_RENDERER = "django.forms.renderers.TemplatesSetting" -IMPERSONATE_REQUIRE_SUPERUSER = True -IMPERSONATE_DISABLE_LOGGING = True +IMPERSONATE = { + "REQUIRE_SUPERUSER": True, + "DISABLE_LOGGING": True, + "ADMIN_DELETE_PERMISSION": True, +} ACCOUNT_ACTIVATION_DAYS = 7 @@ -323,7 +325,6 @@ TEMPLATES = [ "judge.template_context.site", "judge.template_context.site_name", "judge.template_context.misc_config", - "judge.template_context.math_setting", "social_django.context_processors.backends", "social_django.context_processors.login_redirect", ], @@ -431,7 +432,7 @@ AUTHENTICATION_BACKENDS = ( "social_core.backends.google.GoogleOAuth2", "social_core.backends.facebook.FacebookOAuth2", "judge.social_auth.GitHubSecureEmailOAuth2", - "django.contrib.auth.backends.ModelBackend", + "judge.authentication.CustomModelBackend", ) SOCIAL_AUTH_PIPELINE = ( @@ -488,6 +489,11 @@ DEFAULT_AUTO_FIELD = "django.db.models.AutoField" # Chunk upload CHUNK_UPLOAD_DIR = "/tmp/chunk_upload_tmp" +# Rate limit +RL_VOTE = "200/h" +RL_COMMENT = "30/h" + + try: with open(os.path.join(os.path.dirname(__file__), "local_settings.py")) as f: exec(f.read(), globals()) diff --git a/dmoj/urls.py b/dmoj/urls.py index 889de20..73af5eb 100644 --- a/dmoj/urls.py +++ b/dmoj/urls.py @@ -16,14 +16,6 @@ from django.contrib.auth.decorators import login_required from django.conf.urls.static import static as url_static -from judge.feed import ( - AtomBlogFeed, - AtomCommentFeed, - AtomProblemFeed, - BlogFeed, - CommentFeed, - ProblemFeed, -) from judge.forms import CustomAuthenticationForm from judge.sitemap import ( BlogPostSitemap, @@ -46,6 +38,7 @@ from judge.views import ( license, mailgun, markdown_editor, + test_formatter, notification, organization, preview, @@ -68,7 +61,12 @@ from judge.views import ( resolver, course, email, + custom_file_upload, ) +from judge import authentication + +from judge.views.test_formatter import test_formatter + from judge.views.problem_data import ( ProblemDataView, ProblemSubmissionDiff, @@ -80,7 +78,6 @@ from judge.views.register import ActivationView, RegistrationView from judge.views.select2 import ( AssigneeSelect2View, ChatUserSearchSelect2View, - CommentSelect2View, ContestSelect2View, ContestUserSearchSelect2View, OrganizationSelect2View, @@ -88,6 +85,7 @@ from judge.views.select2 import ( TicketUserSelect2View, UserSearchSelect2View, UserSelect2View, + ProblemAuthorSearchSelect2View, ) admin.autodiscover() @@ -144,9 +142,7 @@ register_patterns = [ url(r"^logout/$", user.UserLogoutView.as_view(), name="auth_logout"), url( r"^password/change/$", - auth_views.PasswordChangeView.as_view( - template_name="registration/password_change_form.html", - ), + authentication.CustomPasswordChangeView.as_view(), name="password_change", ), url( @@ -403,7 +399,28 @@ urlpatterns = [ name="submission_status", ), url(r"^/abort$", submission.abort_submission, name="submission_abort"), - url(r"^/html$", submission.single_submission), + ] + ), + ), + url( + r"^test_formatter/", + include( + [ + url( + r"^$", + login_required(test_formatter.TestFormatter.as_view()), + name="test_formatter", + ), + url( + r"^edit_page$", + login_required(test_formatter.EditTestFormatter.as_view()), + name="test_formatter_edit", + ), + url( + r"^download_page$", + login_required(test_formatter.DownloadTestFormatter.as_view()), + name="test_formatter_download", + ), ] ), ), @@ -471,6 +488,7 @@ urlpatterns = [ reverse("all_user_submissions", args=[user]) ), ), + url(r"^/toggle_follow/", user.toggle_follow, name="user_toggle_follow"), url( r"^/$", lambda _, user: HttpResponsePermanentRedirect( @@ -519,11 +537,37 @@ urlpatterns = [ ), url(r"^contests/", paged_list_view(contests.ContestList, "contest_list")), url( - r"^contests/summary/(?P\w+)$", - contests.contests_summary_view, - name="contests_summary", + r"^contests/summary/(?P\w+)/", + paged_list_view(contests.ContestsSummaryView, "contests_summary"), + ), + url( + r"^contests/official", + paged_list_view(contests.OfficialContestList, "official_contest_list"), + ), + url(r"^courses/", paged_list_view(course.CourseList, "course_list")), + url( + r"^course/(?P[\w-]*)", + include( + [ + url(r"^$", course.CourseDetail.as_view(), name="course_detail"), + url( + r"^/lesson/(?P\d+)$", + course.CourseLessonDetail.as_view(), + name="course_lesson_detail", + ), + url( + r"^/edit_lessons$", + course.EditCourseLessonsView.as_view(), + name="edit_course_lessons", + ), + url( + r"^/grades$", + course.CourseStudentResults.as_view(), + name="course_grades", + ), + ] + ), ), - url(r"^course/", paged_list_view(course.CourseList, "course_list")), url( r"^contests/(?P\d+)/(?P\d+)/$", contests.ContestCalendar.as_view(), @@ -587,6 +631,13 @@ urlpatterns = [ "contest_user_submissions_ajax", ), ), + url( + r"^/submissions", + paged_list_view( + submission.ContestSubmissions, + "contest_submissions", + ), + ), url( r"^/participations$", contests.ContestParticipationList.as_view(), @@ -852,6 +903,11 @@ urlpatterns = [ AssigneeSelect2View.as_view(), name="ticket_assignee_select2_ajax", ), + url( + r"^problem_authors$", + ProblemAuthorSearchSelect2View.as_view(), + name="problem_authors_select2_ajax", + ), ] ), ), @@ -910,19 +966,6 @@ urlpatterns = [ ] ), ), - url( - r"^feed/", - include( - [ - url(r"^problems/rss/$", ProblemFeed(), name="problem_rss"), - url(r"^problems/atom/$", AtomProblemFeed(), name="problem_atom"), - url(r"^comment/rss/$", CommentFeed(), name="comment_rss"), - url(r"^comment/atom/$", AtomCommentFeed(), name="comment_atom"), - url(r"^blog/rss/$", BlogFeed(), name="blog_rss"), - url(r"^blog/atom/$", AtomBlogFeed(), name="blog_atom"), - ] - ), - ), url( r"^stats/", include( @@ -1023,9 +1066,6 @@ urlpatterns = [ url( r"^contest/$", ContestSelect2View.as_view(), name="contest_select2" ), - url( - r"^comment/$", CommentSelect2View.as_view(), name="comment_select2" - ), ] ), ), @@ -1131,8 +1171,7 @@ urlpatterns = [ ), url( r"^notifications/", - login_required(notification.NotificationList.as_view()), - name="notification", + paged_list_view(notification.NotificationList, "notification"), ), url( r"^import_users/", @@ -1162,6 +1201,7 @@ urlpatterns = [ ), ), url(r"^resolver/(?P\w+)", resolver.Resolver.as_view(), name="resolver"), + url(r"^upload/$", custom_file_upload.file_upload, name="custom_file_upload"), ] + url_static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) # if hasattr(settings, "INTERNAL_IPS"): diff --git a/judge/admin/__init__.py b/judge/admin/__init__.py index 05032d6..d303048 100644 --- a/judge/admin/__init__.py +++ b/judge/admin/__init__.py @@ -20,9 +20,15 @@ from judge.admin.problem import ProblemAdmin, ProblemPointsVoteAdmin from judge.admin.profile import ProfileAdmin, UserAdmin from judge.admin.runtime import JudgeAdmin, LanguageAdmin from judge.admin.submission import SubmissionAdmin -from judge.admin.taxon import ProblemGroupAdmin, ProblemTypeAdmin +from judge.admin.taxon import ( + ProblemGroupAdmin, + ProblemTypeAdmin, + OfficialContestCategoryAdmin, + OfficialContestLocationAdmin, +) from judge.admin.ticket import TicketAdmin from judge.admin.volunteer import VolunteerProblemVoteAdmin +from judge.admin.course import CourseAdmin from judge.models import ( BlogPost, Comment, @@ -47,6 +53,8 @@ from judge.models import ( VolunteerProblemVote, Course, ContestsSummary, + OfficialContestCategory, + OfficialContestLocation, ) @@ -72,7 +80,9 @@ admin.site.register(Profile, ProfileAdmin) admin.site.register(Submission, SubmissionAdmin) admin.site.register(Ticket, TicketAdmin) admin.site.register(VolunteerProblemVote, VolunteerProblemVoteAdmin) -admin.site.register(Course) +admin.site.register(Course, CourseAdmin) admin.site.unregister(User) admin.site.register(User, UserAdmin) admin.site.register(ContestsSummary, ContestsSummaryAdmin) +admin.site.register(OfficialContestCategory, OfficialContestCategoryAdmin) +admin.site.register(OfficialContestLocation, OfficialContestLocationAdmin) diff --git a/judge/admin/comments.py b/judge/admin/comments.py index 0b2a8e1..c33b683 100644 --- a/judge/admin/comments.py +++ b/judge/admin/comments.py @@ -12,7 +12,6 @@ class CommentForm(ModelForm): class Meta: widgets = { "author": AdminHeavySelect2Widget(data_view="profile_select2"), - "parent": AdminHeavySelect2Widget(data_view="comment_select2"), } if HeavyPreviewAdminPageDownWidget is not None: widgets["body"] = HeavyPreviewAdminPageDownWidget( @@ -39,7 +38,7 @@ class CommentAdmin(VersionAdmin): ) list_display = ["author", "linked_object", "time"] search_fields = ["author__user__username", "body"] - readonly_fields = ["score"] + readonly_fields = ["score", "parent"] actions = ["hide_comment", "unhide_comment"] list_filter = ["hidden"] actions_on_top = True diff --git a/judge/admin/contest.py b/judge/admin/contest.py index b7b5457..5b157dc 100644 --- a/judge/admin/contest.py +++ b/judge/admin/contest.py @@ -14,7 +14,14 @@ from reversion.admin import VersionAdmin from reversion_compare.admin import CompareVersionAdmin from django_ace import AceWidget -from judge.models import Contest, ContestProblem, ContestSubmission, Profile, Rating +from judge.models import ( + Contest, + ContestProblem, + ContestSubmission, + Profile, + Rating, + OfficialContest, +) from judge.ratings import rate_contest from judge.widgets import ( AdminHeavySelect2MultipleWidget, @@ -24,6 +31,7 @@ from judge.widgets import ( AdminSelect2Widget, HeavyPreviewAdminPageDownWidget, ) +from judge.views.contests import recalculate_contest_summary_result class AdminHeavySelect2Widget(AdminHeavySelect2Widget): @@ -148,6 +156,26 @@ class ContestForm(ModelForm): ) +class OfficialContestInlineForm(ModelForm): + class Meta: + widgets = { + "category": AdminSelect2Widget, + "location": AdminSelect2Widget, + } + + +class OfficialContestInline(admin.StackedInline): + fields = ( + "category", + "year", + "location", + ) + model = OfficialContest + can_delete = True + form = OfficialContestInlineForm + extra = 0 + + class ContestAdmin(CompareVersionAdmin): fieldsets = ( (None, {"fields": ("key", "name", "authors", "curators", "testers")}), @@ -162,6 +190,7 @@ class ContestAdmin(CompareVersionAdmin): "scoreboard_visibility", "run_pretests_only", "points_precision", + "rate_limit", ) }, ), @@ -221,7 +250,7 @@ class ContestAdmin(CompareVersionAdmin): "user_count", ) search_fields = ("key", "name") - inlines = [ContestProblemInline] + inlines = [ContestProblemInline, OfficialContestInline] actions_on_top = True actions_on_bottom = True form = ContestForm @@ -297,15 +326,23 @@ class ContestAdmin(CompareVersionAdmin): self._rescore(obj.key) self._rescored = True + if form.changed_data and any( + f in form.changed_data + for f in ( + "authors", + "curators", + "testers", + ) + ): + Contest._author_ids.dirty(obj) + Contest._curator_ids.dirty(obj) + Contest._tester_ids.dirty(obj) + def save_related(self, request, form, formsets, change): super().save_related(request, form, formsets, change) # Only rescored if we did not already do so in `save_model` if not self._rescored and any(formset.has_changed() for formset in formsets): self._rescore(form.cleaned_data["key"]) - obj = form.instance - obj.is_organization_private = obj.organizations.count() > 0 - obj.is_private = obj.private_contestants.count() > 0 - obj.save() def has_change_permission(self, request, obj=None): if not request.user.has_perm("judge.edit_own_contest"): @@ -518,3 +555,9 @@ class ContestsSummaryAdmin(admin.ModelAdmin): list_display = ("key",) search_fields = ("key", "contests__key") form = ContestsSummaryForm + + def save_model(self, request, obj, form, change): + super(ContestsSummaryAdmin, self).save_model(request, obj, form, change) + obj.refresh_from_db() + obj.results = recalculate_contest_summary_result(obj) + obj.save() diff --git a/judge/admin/course.py b/judge/admin/course.py new file mode 100644 index 0000000..ac8c0fd --- /dev/null +++ b/judge/admin/course.py @@ -0,0 +1,52 @@ +from django.contrib import admin +from django.utils.html import format_html +from django.urls import reverse, reverse_lazy +from django.utils.translation import gettext, gettext_lazy as _, ungettext +from django.forms import ModelForm + +from judge.models import Course, CourseRole +from judge.widgets import AdminSelect2MultipleWidget +from judge.widgets import ( + AdminHeavySelect2MultipleWidget, + AdminHeavySelect2Widget, + HeavyPreviewAdminPageDownWidget, + AdminSelect2Widget, +) + + +class CourseRoleInlineForm(ModelForm): + class Meta: + widgets = { + "user": AdminHeavySelect2Widget( + data_view="profile_select2", attrs={"style": "width: 100%"} + ), + "role": AdminSelect2Widget, + } + + +class CourseRoleInline(admin.TabularInline): + model = CourseRole + extra = 1 + form = CourseRoleInlineForm + + +class CourseForm(ModelForm): + class Meta: + widgets = { + "organizations": AdminHeavySelect2MultipleWidget( + data_view="organization_select2" + ), + "about": HeavyPreviewAdminPageDownWidget( + preview=reverse_lazy("blog_preview") + ), + } + + +class CourseAdmin(admin.ModelAdmin): + prepopulated_fields = {"slug": ("name",)} + inlines = [ + CourseRoleInline, + ] + list_display = ("name", "is_public", "is_open") + search_fields = ("name",) + form = CourseForm diff --git a/judge/admin/interface.py b/judge/admin/interface.py index e82bb55..b377212 100644 --- a/judge/admin/interface.py +++ b/judge/admin/interface.py @@ -53,7 +53,8 @@ class NavigationBarAdmin(DraggableMPTTAdmin): class BlogPostForm(ModelForm): def __init__(self, *args, **kwargs): super(BlogPostForm, self).__init__(*args, **kwargs) - self.fields["authors"].widget.can_add_related = False + if "authors" in self.fields: + self.fields["authors"].widget.can_add_related = False class Meta: widgets = { diff --git a/judge/admin/problem.py b/judge/admin/problem.py index 7f0e473..bf590db 100644 --- a/judge/admin/problem.py +++ b/judge/admin/problem.py @@ -1,8 +1,8 @@ from operator import attrgetter from django import forms -from django.contrib import admin -from django.db import transaction +from django.contrib import admin, messages +from django.db import transaction, IntegrityError from django.db.models import Q, Avg, Count from django.db.models.aggregates import StdDev from django.forms import ModelForm, TextInput @@ -11,6 +11,7 @@ from django.utils.html import format_html from django.utils.translation import gettext, gettext_lazy as _, ungettext from django_ace import AceWidget from django.utils import timezone +from django.core.exceptions import ValidationError from reversion.admin import VersionAdmin from reversion_compare.admin import CompareVersionAdmin @@ -56,6 +57,16 @@ class ProblemForm(ModelForm): } ) + def clean_code(self): + code = self.cleaned_data.get("code") + if self.instance.pk: + return code + + if Problem.objects.filter(code=code).exists(): + raise ValidationError(_("A problem with this code already exists.")) + + return code + def clean(self): memory_unit = self.cleaned_data.get("memory_unit", "KB") if memory_unit == "MB": @@ -131,6 +142,7 @@ class LanguageLimitInline(admin.TabularInline): model = LanguageLimit fields = ("language", "time_limit", "memory_limit", "memory_unit") form = LanguageLimitInlineForm + extra = 0 class LanguageTemplateInlineForm(ModelForm): @@ -145,6 +157,7 @@ class LanguageTemplateInline(admin.TabularInline): model = LanguageTemplate fields = ("language", "source") form = LanguageTemplateInlineForm + extra = 0 class ProblemSolutionForm(ModelForm): @@ -370,8 +383,6 @@ class ProblemAdmin(CompareVersionAdmin): super().save_related(request, form, formsets, change) obj = form.instance obj.curators.add(request.profile) - obj.is_organization_private = obj.organizations.count() > 0 - obj.save() if "curators" in form.changed_data or "authors" in form.changed_data: del obj.editor_ids diff --git a/judge/admin/profile.py b/judge/admin/profile.py index 68ecee1..33fb091 100644 --- a/judge/admin/profile.py +++ b/judge/admin/profile.py @@ -6,7 +6,7 @@ from reversion.admin import VersionAdmin from django.contrib.auth.admin import UserAdmin as OldUserAdmin from django_ace import AceWidget -from judge.models import Profile +from judge.models import Profile, ProfileInfo from judge.widgets import AdminPagedownWidget, AdminSelect2Widget @@ -54,6 +54,13 @@ class TimezoneFilter(admin.SimpleListFilter): return queryset.filter(timezone=self.value()) +class ProfileInfoInline(admin.StackedInline): + model = ProfileInfo + can_delete = False + verbose_name_plural = "profile info" + fk_name = "profile" + + class ProfileAdmin(VersionAdmin): fields = ( "user", @@ -63,15 +70,12 @@ class ProfileAdmin(VersionAdmin): "timezone", "language", "ace_theme", - "math_engine", "last_access", "ip", "mute", "is_unlisted", - "is_banned_problem_voting", "notes", "is_totp_enabled", - "user_script", "current_contest", ) readonly_fields = ("user",) @@ -92,6 +96,7 @@ class ProfileAdmin(VersionAdmin): actions_on_top = True actions_on_bottom = True form = ProfileForm + inlines = (ProfileInfoInline,) def get_queryset(self, request): return super(ProfileAdmin, self).get_queryset(request).select_related("user") @@ -160,15 +165,6 @@ class ProfileAdmin(VersionAdmin): recalculate_points.short_description = _("Recalculate scores") - def get_form(self, request, obj=None, **kwargs): - form = super(ProfileAdmin, self).get_form(request, obj, **kwargs) - if "user_script" in form.base_fields: - # form.base_fields['user_script'] does not exist when the user has only view permission on the model. - form.base_fields["user_script"].widget = AceWidget( - "javascript", request.profile.ace_theme - ) - return form - class UserAdmin(OldUserAdmin): # Customize the fieldsets for adding and editing users diff --git a/judge/admin/taxon.py b/judge/admin/taxon.py index 4335efe..dfdc622 100644 --- a/judge/admin/taxon.py +++ b/judge/admin/taxon.py @@ -56,3 +56,11 @@ class ProblemTypeAdmin(admin.ModelAdmin): [o.pk for o in obj.problem_set.all()] if obj else [] ) return super(ProblemTypeAdmin, self).get_form(request, obj, **kwargs) + + +class OfficialContestCategoryAdmin(admin.ModelAdmin): + fields = ("name",) + + +class OfficialContestLocationAdmin(admin.ModelAdmin): + fields = ("name",) diff --git a/judge/apps.py b/judge/apps.py index f223d52..4df4c5a 100644 --- a/judge/apps.py +++ b/judge/apps.py @@ -12,7 +12,7 @@ class JudgeAppConfig(AppConfig): # OPERATIONS MAY HAVE SIDE EFFECTS. # DO NOT REMOVE THINKING THE IMPORT IS UNUSED. # noinspection PyUnresolvedReferences - from . import signals, jinja2 # noqa: F401, imported for side effects + from . import models, signals, jinja2 # noqa: F401, imported for side effects from django.contrib.flatpages.models import FlatPage from django.contrib.flatpages.admin import FlatPageAdmin diff --git a/judge/authentication.py b/judge/authentication.py new file mode 100644 index 0000000..c7ae7d6 --- /dev/null +++ b/judge/authentication.py @@ -0,0 +1,48 @@ +from django.contrib.auth.backends import ModelBackend +from django.contrib.auth.models import User +from django.contrib.auth.forms import PasswordChangeForm +from django.contrib.auth.views import PasswordChangeView +from django.urls import reverse_lazy +from django.utils.translation import gettext_lazy as _ + + +class CustomModelBackend(ModelBackend): + def authenticate(self, request, username=None, password=None, **kwargs): + try: + # Check if the username is an email + user = User.objects.get(username=username) + except User.DoesNotExist: + # If the username is not an email, try authenticating with the username field + user = User.objects.filter(email=username).first() + + if user and user.check_password(password): + return user + + +class CustomPasswordChangeForm(PasswordChangeForm): + def __init__(self, *args, **kwargs): + super(CustomPasswordChangeForm, self).__init__(*args, **kwargs) + if not self.user.has_usable_password(): + self.fields.pop("old_password") + + def clean_old_password(self): + if "old_password" not in self.cleaned_data: + return + return super(CustomPasswordChangeForm, self).clean_old_password() + + def clean(self): + cleaned_data = super(CustomPasswordChangeForm, self).clean() + if "old_password" not in self.cleaned_data and not self.errors: + cleaned_data["old_password"] = "" + return cleaned_data + + +class CustomPasswordChangeView(PasswordChangeView): + form_class = CustomPasswordChangeForm + success_url = reverse_lazy("password_change_done") + template_name = "registration/password_change_form.html" + + def get_form_kwargs(self): + kwargs = super(CustomPasswordChangeView, self).get_form_kwargs() + kwargs["user"] = self.request.user + return kwargs diff --git a/judge/bridge/judge_handler.py b/judge/bridge/judge_handler.py index 1ff1af1..bb80f5a 100644 --- a/judge/bridge/judge_handler.py +++ b/judge/bridge/judge_handler.py @@ -24,6 +24,8 @@ from judge.models import ( Submission, SubmissionTestCase, ) +from judge.bridge.utils import VanishedSubmission +from judge.caching import cache_wrapper logger = logging.getLogger("judge.bridge") json_log = logging.getLogger("judge.json.bridge") @@ -65,9 +67,8 @@ class JudgeHandler(ZlibPacketHandler): self._working = False self._working_data = {} self._no_response_job = None - self._problems = [] self.executors = {} - self.problems = {} + self.problems = set() self.latency = None self.time_delta = None self.load = 1e100 @@ -139,11 +140,52 @@ class JudgeHandler(ZlibPacketHandler): ) return result + def _update_supported_problems(self, problem_packet): + # problem_packet is a dict {code: mtimes} from judge-server + self.problems = set(p for p, _ in problem_packet) + + def _update_judge_problems(self): + chunk_size = 500 + + target_problem_codes = self.problems + current_problems = _get_judge_problems(self.judge) + + updated = False + problems_to_add = list(target_problem_codes - current_problems) + problems_to_remove = list(current_problems - target_problem_codes) + + if problems_to_add: + for i in range(0, len(problems_to_add), chunk_size): + chunk = problems_to_add[i : i + chunk_size] + problem_ids = Problem.objects.filter(code__in=chunk).values_list( + "id", flat=True + ) + if not problem_ids: + continue + logger.info("%s: Add %d problems", self.name, len(problem_ids)) + self.judge.problems.add(*problem_ids) + updated = True + + if problems_to_remove: + for i in range(0, len(problems_to_remove), chunk_size): + chunk = problems_to_remove[i : i + chunk_size] + problem_ids = Problem.objects.filter(code__in=chunk).values_list( + "id", flat=True + ) + if not problem_ids: + continue + logger.info("%s: Remove %d problems", self.name, len(problem_ids)) + self.judge.problems.remove(*problem_ids) + updated = True + + if updated: + _get_judge_problems.dirty(self.judge) + def _connected(self): judge = self.judge = Judge.objects.get(name=self.name) judge.start_time = timezone.now() judge.online = True - judge.problems.set(Problem.objects.filter(code__in=list(self.problems.keys()))) + self._update_judge_problems() judge.runtimes.set(Language.objects.filter(key__in=list(self.executors.keys()))) # Delete now in case we somehow crashed and left some over from the last connection @@ -178,6 +220,8 @@ class JudgeHandler(ZlibPacketHandler): def _disconnected(self): Judge.objects.filter(id=self.judge.id).update(online=False) RuntimeVersion.objects.filter(judge=self.judge).delete() + self.judge.problems.clear() + _get_judge_problems.dirty(self.judge) def _update_ping(self): try: @@ -208,8 +252,7 @@ class JudgeHandler(ZlibPacketHandler): return self.timeout = 60 - self._problems = packet["problems"] - self.problems = dict(self._problems) + self._update_supported_problems(packet["problems"]) self.executors = packet["executors"] self.name = packet["id"] @@ -310,6 +353,9 @@ class JudgeHandler(ZlibPacketHandler): def submit(self, id, problem, language, source): data = self.get_related_submission_data(id) + if not data: + self._update_internal_error_submission(id, "Submission vanished") + raise VanishedSubmission() self._working = id self._working_data = { "problem": problem, @@ -434,14 +480,12 @@ class JudgeHandler(ZlibPacketHandler): def on_supported_problems(self, packet): logger.info("%s: Updated problem list", self.name) - self._problems = packet["problems"] - self.problems = dict(self._problems) + self._update_supported_problems(packet["problems"]) + if not self.working: self.judges.update_problems(self) - self.judge.problems.set( - Problem.objects.filter(code__in=list(self.problems.keys())) - ) + self._update_judge_problems() json_log.info( self._make_json_log(action="update-problems", count=len(self.problems)) ) @@ -658,8 +702,11 @@ class JudgeHandler(ZlibPacketHandler): self._free_self(packet) id = packet["submission-id"] + self._update_internal_error_submission(id, packet["message"]) + + def _update_internal_error_submission(self, id, message): if Submission.objects.filter(id=id).update( - status="IE", result="IE", error=packet["message"] + status="IE", result="IE", error=message ): event.post( "sub_%s" % Submission.get_id_secret(id), {"type": "internal-error"} @@ -667,9 +714,9 @@ class JudgeHandler(ZlibPacketHandler): self._post_update_submission(id, "internal-error", done=True) json_log.info( self._make_json_log( - packet, + sub=id, action="internal-error", - message=packet["message"], + message=message, finish=True, result="IE", ) @@ -678,10 +725,10 @@ class JudgeHandler(ZlibPacketHandler): logger.warning("Unknown submission: %s", id) json_log.error( self._make_json_log( - packet, + sub=id, action="internal-error", info="unknown submission", - message=packet["message"], + message=message, finish=True, result="IE", ) @@ -912,3 +959,8 @@ class JudgeHandler(ZlibPacketHandler): def on_cleanup(self): db.connection.close() + + +@cache_wrapper(prefix="gjp", timeout=3600) +def _get_judge_problems(judge): + return set(judge.problems.values_list("code", flat=True)) diff --git a/judge/bridge/judge_list.py b/judge/bridge/judge_list.py index 0552de4..bf2b54a 100644 --- a/judge/bridge/judge_list.py +++ b/judge/bridge/judge_list.py @@ -3,6 +3,8 @@ from collections import namedtuple from operator import attrgetter from threading import RLock +from judge.bridge.utils import VanishedSubmission + try: from llist import dllist except ImportError: @@ -39,6 +41,8 @@ class JudgeList(object): ) try: judge.submit(id, problem, language, source) + except VanishedSubmission: + pass except Exception: logger.exception( "Failed to dispatch %d (%s, %s) to %s", diff --git a/judge/bridge/utils.py b/judge/bridge/utils.py new file mode 100644 index 0000000..dfb2ac9 --- /dev/null +++ b/judge/bridge/utils.py @@ -0,0 +1,2 @@ +class VanishedSubmission(Exception): + pass diff --git a/judge/caching.py b/judge/caching.py index 43479da..f40adb1 100644 --- a/judge/caching.py +++ b/judge/caching.py @@ -5,6 +5,8 @@ from django.core.handlers.wsgi import WSGIRequest import hashlib +from judge.logging import log_debug + MAX_NUM_CHAR = 50 NONE_RESULT = "__None__" @@ -26,7 +28,7 @@ def filter_args(args_list): l0_cache = caches["l0"] if "l0" in caches else None -def cache_wrapper(prefix, timeout=None): +def cache_wrapper(prefix, timeout=None, expected_type=None): def get_key(func, *args, **kwargs): args_list = list(args) signature_args = list(signature(func).parameters.keys()) @@ -40,7 +42,10 @@ def cache_wrapper(prefix, timeout=None): def _get(key): if not l0_cache: return cache.get(key) - return l0_cache.get(key) or cache.get(key) + result = l0_cache.get(key) + if result is None: + result = cache.get(key) + return result def _set_l0(key, value): if l0_cache: @@ -51,18 +56,33 @@ def cache_wrapper(prefix, timeout=None): cache.set(key, value, timeout) def decorator(func): + def _validate_type(cache_key, result): + if expected_type and not isinstance(result, expected_type): + data = { + "function": f"{func.__module__}.{func.__qualname__}", + "result": str(result)[:30], + "expected_type": expected_type, + "type": type(result), + "key": cache_key, + } + log_debug("invalid_key", data) + return False + return True + def wrapper(*args, **kwargs): cache_key = get_key(func, *args, **kwargs) result = _get(cache_key) - if result is not None: + if result is not None and _validate_type(cache_key, result): _set_l0(cache_key, result) - if result == NONE_RESULT: + if type(result) == str and result == NONE_RESULT: result = None return result result = func(*args, **kwargs) if result is None: - result = NONE_RESULT - _set(cache_key, result, timeout) + cache_result = NONE_RESULT + else: + cache_result = result + _set(cache_key, cache_result, timeout) return result def dirty(*args, **kwargs): @@ -71,7 +91,26 @@ def cache_wrapper(prefix, timeout=None): if l0_cache: l0_cache.delete(cache_key) + def prefetch_multi(args_list): + keys = [] + for args in args_list: + keys.append(get_key(func, *args)) + results = cache.get_many(keys) + for key, result in results.items(): + if result is not None: + _set_l0(key, result) + + def dirty_multi(args_list): + keys = [] + for args in args_list: + keys.append(get_key(func, *args)) + cache.delete_many(keys) + if l0_cache: + l0_cache.delete_many(keys) + wrapper.dirty = dirty + wrapper.prefetch_multi = prefetch_multi + wrapper.dirty_multi = dirty_multi return wrapper diff --git a/judge/comments.py b/judge/comments.py deleted file mode 100644 index 98434cf..0000000 --- a/judge/comments.py +++ /dev/null @@ -1,233 +0,0 @@ -from django import forms -from django.conf import settings -from django.contrib.auth.decorators import login_required -from django.contrib.contenttypes.models import ContentType -from django.core.exceptions import ValidationError -from django.db.models import Count, FilteredRelation, Q -from django.db.models.expressions import F, Value -from django.db.models.functions import Coalesce -from django.forms import ModelForm -from django.http import ( - HttpResponseForbidden, - HttpResponseNotFound, - HttpResponseRedirect, - Http404, -) -from django.urls import reverse_lazy -from django.utils.decorators import method_decorator -from django.utils.translation import gettext as _ -from django.views.generic import View -from django.views.generic.base import TemplateResponseMixin -from django.views.generic.detail import SingleObjectMixin -from reversion import revisions -from reversion.models import Revision, Version - -from judge.dblock import LockModel -from judge.models import Comment, Notification -from judge.widgets import HeavyPreviewPageDownWidget -from judge.jinja2.reference import get_user_from_text -from judge.models.notification import make_notification - - -DEFAULT_OFFSET = 10 - - -def _get_html_link_notification(comment): - return f'{comment.page_title}' - - -def add_mention_notifications(comment): - users_mentioned = get_user_from_text(comment.body).exclude(id=comment.author.id) - link = _get_html_link_notification(comment) - make_notification(users_mentioned, "Mention", link, comment.author) - - -class CommentForm(ModelForm): - class Meta: - model = Comment - fields = ["body", "parent"] - widgets = { - "parent": forms.HiddenInput(), - } - - if HeavyPreviewPageDownWidget is not None: - widgets["body"] = HeavyPreviewPageDownWidget( - preview=reverse_lazy("comment_preview"), - preview_timeout=1000, - hide_preview_button=True, - ) - - def __init__(self, request, *args, **kwargs): - self.request = request - super(CommentForm, self).__init__(*args, **kwargs) - self.fields["body"].widget.attrs.update({"placeholder": _("Comment body")}) - - def clean(self): - if self.request is not None and self.request.user.is_authenticated: - profile = self.request.profile - if profile.mute: - raise ValidationError(_("Your part is silent, little toad.")) - elif ( - not self.request.user.is_staff - and not profile.submission_set.filter( - points=F("problem__points") - ).exists() - ): - raise ValidationError( - _( - "You need to have solved at least one problem " - "before your voice can be heard." - ) - ) - return super(CommentForm, self).clean() - - -class CommentedDetailView(TemplateResponseMixin, SingleObjectMixin, View): - comment_page = None - - def is_comment_locked(self): - if self.request.user.has_perm("judge.override_comment_lock"): - return False - return ( - self.request.in_contest - and self.request.participation.contest.use_clarifications - ) - - @method_decorator(login_required) - def post(self, request, *args, **kwargs): - self.object = self.get_object() - if self.is_comment_locked(): - return HttpResponseForbidden() - - parent = request.POST.get("parent") - if parent: - try: - parent = int(parent) - except ValueError: - return HttpResponseNotFound() - else: - if not self.object.comments.filter(hidden=False, id=parent).exists(): - return HttpResponseNotFound() - - form = CommentForm(request, request.POST) - if form.is_valid(): - comment = form.save(commit=False) - comment.author = request.profile - comment.linked_object = self.object - - with LockModel( - write=(Comment, Revision, Version), read=(ContentType,) - ), revisions.create_revision(): - revisions.set_user(request.user) - revisions.set_comment(_("Posted comment")) - comment.save() - - # add notification for reply - comment_notif_link = _get_html_link_notification(comment) - if comment.parent and comment.parent.author != comment.author: - make_notification( - [comment.parent.author], "Reply", comment_notif_link, comment.author - ) - - # add notification for page authors - page_authors = comment.linked_object.authors.all() - make_notification( - page_authors, "Comment", comment_notif_link, comment.author - ) - - add_mention_notifications(comment) - - return HttpResponseRedirect(comment.get_absolute_url()) - - context = self.get_context_data(object=self.object, comment_form=form) - return self.render_to_response(context) - - def get(self, request, *args, **kwargs): - target_comment = None - self.object = self.get_object() - if "comment-id" in request.GET: - try: - comment_id = int(request.GET["comment-id"]) - comment_obj = Comment.objects.get(id=comment_id) - except (Comment.DoesNotExist, ValueError): - raise Http404 - if comment_obj.linked_object != self.object: - raise Http404 - target_comment = comment_obj.get_root() - return self.render_to_response( - self.get_context_data( - object=self.object, - target_comment=target_comment, - comment_form=CommentForm(request, initial={"parent": None}), - ) - ) - - def _get_queryset(self, target_comment): - if target_comment: - queryset = target_comment.get_descendants(include_self=True) - queryset = ( - queryset.select_related("author__user") - .filter(hidden=False) - .defer("author__about") - .annotate(revisions=Count("versions", distinct=True)) - ) - else: - queryset = self.object.comments - queryset = queryset.filter(parent=None, hidden=False) - queryset = ( - queryset.select_related("author__user") - .defer("author__about") - .filter(hidden=False) - .annotate( - count_replies=Count("replies", distinct=True), - revisions=Count("versions", distinct=True), - )[:DEFAULT_OFFSET] - ) - - if self.request.user.is_authenticated: - profile = self.request.profile - queryset = queryset.annotate( - my_vote=FilteredRelation( - "votes", condition=Q(votes__voter_id=profile.id) - ), - ).annotate(vote_score=Coalesce(F("my_vote__score"), Value(0))) - - return queryset - - def get_context_data(self, target_comment=None, **kwargs): - context = super(CommentedDetailView, self).get_context_data(**kwargs) - queryset = self._get_queryset(target_comment) - comment_count = self.object.comments.filter(parent=None, hidden=False).count() - context["target_comment"] = -1 - if target_comment != None: - context["target_comment"] = target_comment.id - - if self.request.user.is_authenticated: - context["is_new_user"] = ( - not self.request.user.is_staff - and not self.request.profile.submission_set.filter( - points=F("problem__points") - ).exists() - ) - - context["has_comments"] = queryset.exists() - context["comment_lock"] = self.is_comment_locked() - context["comment_list"] = list(queryset) - - context["vote_hide_threshold"] = settings.DMOJ_COMMENT_VOTE_HIDE_THRESHOLD - if queryset.exists(): - context["comment_root_id"] = context["comment_list"][0].id - else: - context["comment_root_id"] = 0 - context["comment_parent_none"] = 1 - if target_comment != None: - context["offset"] = 0 - context["comment_more"] = comment_count - 1 - else: - context["offset"] = DEFAULT_OFFSET - context["comment_more"] = comment_count - DEFAULT_OFFSET - - context["limit"] = DEFAULT_OFFSET - context["comment_count"] = comment_count - context["profile"] = self.request.profile - return context diff --git a/judge/contest_format/base.py b/judge/contest_format/base.py index bea3db4..3b47e59 100644 --- a/judge/contest_format/base.py +++ b/judge/contest_format/base.py @@ -109,6 +109,8 @@ class BaseContestFormat(metaclass=ABCMeta): ) for result in queryset: problem = str(result["problem_id"]) + if not (self.contest.freeze_after or hidden_subtasks.get(problem)): + continue if format_data.get(problem): is_after_freeze = ( self.contest.freeze_after diff --git a/judge/custom_translations.py b/judge/custom_translations.py new file mode 100644 index 0000000..efe4939 --- /dev/null +++ b/judge/custom_translations.py @@ -0,0 +1,22 @@ +from django.utils.translation import gettext_lazy as _, ngettext + + +def custom_trans(): + return [ + # Password reset + ngettext( + "This password is too short. It must contain at least %(min_length)d character.", + "This password is too short. It must contain at least %(min_length)d characters.", + 0, + ), + ngettext( + "Your password must contain at least %(min_length)d character.", + "Your password must contain at least %(min_length)d characters.", + 0, + ), + _("The two password fields didn’t match."), + _("Your password can’t be entirely numeric."), + # Navbar + _("Bug Report"), + _("Courses"), + ] diff --git a/judge/feed.py b/judge/feed.py deleted file mode 100644 index c7fcb07..0000000 --- a/judge/feed.py +++ /dev/null @@ -1,120 +0,0 @@ -from django.conf import settings -from django.contrib.auth.models import AnonymousUser -from django.contrib.syndication.views import Feed -from django.core.cache import cache -from django.utils import timezone -from django.utils.feedgenerator import Atom1Feed - -from judge.jinja2.markdown import markdown -from judge.models import BlogPost, Comment, Problem - -import re - - -# https://lsimons.wordpress.com/2011/03/17/stripping-illegal-characters-out-of-xml-in-python/ -def escape_xml_illegal_chars(val, replacement="?"): - _illegal_xml_chars_RE = re.compile( - "[\x00-\x08\x0b\x0c\x0e-\x1F\uD800-\uDFFF\uFFFE\uFFFF]" - ) - return _illegal_xml_chars_RE.sub(replacement, val) - - -class ProblemFeed(Feed): - title = "Recently Added %s Problems" % settings.SITE_NAME - link = "/" - description = ( - "The latest problems added on the %s website" % settings.SITE_LONG_NAME - ) - - def items(self): - return ( - Problem.objects.filter(is_public=True, is_organization_private=False) - .defer("description") - .order_by("-date", "-id")[:25] - ) - - def item_title(self, problem): - return problem.name - - def item_description(self, problem): - key = "problem_feed:%d" % problem.id - desc = cache.get(key) - if desc is None: - desc = str(markdown(problem.description))[:500] + "..." - desc = escape_xml_illegal_chars(desc) - cache.set(key, desc, 86400) - return desc - - def item_pubdate(self, problem): - return problem.date - - item_updateddate = item_pubdate - - -class AtomProblemFeed(ProblemFeed): - feed_type = Atom1Feed - subtitle = ProblemFeed.description - - -class CommentFeed(Feed): - title = "Latest %s Comments" % settings.SITE_NAME - link = "/" - description = "The latest comments on the %s website" % settings.SITE_LONG_NAME - - def items(self): - return Comment.most_recent(AnonymousUser(), 25) - - def item_title(self, comment): - return "%s -> %s" % (comment.author.user.username, comment.page_title) - - def item_description(self, comment): - key = "comment_feed:%d" % comment.id - desc = cache.get(key) - if desc is None: - desc = str(markdown(comment.body)) - desc = escape_xml_illegal_chars(desc) - cache.set(key, desc, 86400) - return desc - - def item_pubdate(self, comment): - return comment.time - - item_updateddate = item_pubdate - - -class AtomCommentFeed(CommentFeed): - feed_type = Atom1Feed - subtitle = CommentFeed.description - - -class BlogFeed(Feed): - title = "Latest %s Blog Posts" % settings.SITE_NAME - link = "/" - description = "The latest blog posts from the %s" % settings.SITE_LONG_NAME - - def items(self): - return BlogPost.objects.filter( - visible=True, publish_on__lte=timezone.now() - ).order_by("-sticky", "-publish_on") - - def item_title(self, post): - return post.title - - def item_description(self, post): - key = "blog_feed:%d" % post.id - summary = cache.get(key) - if summary is None: - summary = str(markdown(post.summary or post.content)) - summary = escape_xml_illegal_chars(summary) - cache.set(key, summary, 86400) - return summary - - def item_pubdate(self, post): - return post.publish_on - - item_updateddate = item_pubdate - - -class AtomBlogFeed(BlogFeed): - feed_type = Atom1Feed - subtitle = BlogFeed.description diff --git a/judge/fixtures/demo.json b/judge/fixtures/demo.json index 749128e..b9fbea7 100644 --- a/judge/fixtures/demo.json +++ b/judge/fixtures/demo.json @@ -8,7 +8,6 @@ "ip": "10.0.2.2", "language": 1, "last_access": "2017-12-02T08:57:10.093Z", - "math_engine": "auto", "mute": false, "organizations": [ 1 @@ -18,8 +17,7 @@ "problem_count": 0, "rating": null, "timezone": "America/Toronto", - "user": 1, - "user_script": "" + "user": 1 }, "model": "judge.profile", "pk": 1 diff --git a/judge/forms.py b/judge/forms.py index 35251ae..832e042 100644 --- a/judge/forms.py +++ b/judge/forms.py @@ -29,6 +29,7 @@ from django_ace import AceWidget from judge.models import ( Contest, Language, + TestFormatterModel, Organization, PrivateMessage, Problem, @@ -37,11 +38,12 @@ from judge.models import ( Submission, BlogPost, ContestProblem, + TestFormatterModel, + ProfileInfo, ) from judge.widgets import ( HeavyPreviewPageDownWidget, - MathJaxPagedownWidget, PagedownWidget, Select2MultipleWidget, Select2Widget, @@ -50,6 +52,7 @@ from judge.widgets import ( Select2MultipleWidget, DateTimePickerWidget, ImageWidget, + DatePickerWidget, ) @@ -68,6 +71,17 @@ class UserForm(ModelForm): ] +class ProfileInfoForm(ModelForm): + class Meta: + model = ProfileInfo + fields = ["tshirt_size", "date_of_birth", "address"] + widgets = { + "tshirt_size": Select2Widget(attrs={"style": "width:100%"}), + "date_of_birth": DatePickerWidget, + "address": forms.TextInput(attrs={"style": "width:100%"}), + } + + class ProfileForm(ModelForm): class Meta: model = Profile @@ -76,12 +90,10 @@ class ProfileForm(ModelForm): "timezone", "language", "ace_theme", - "user_script", "profile_image", "css_background", ] widgets = { - "user_script": AceWidget(theme="github"), "timezone": Select2Widget(attrs={"style": "width:200px"}), "language": Select2Widget(attrs={"style": "width:200px"}), "ace_theme": Select2Widget(attrs={"style": "width:200px"}), @@ -89,11 +101,6 @@ class ProfileForm(ModelForm): "css_background": forms.TextInput(), } - has_math_config = bool(settings.MATHOID_URL) - if has_math_config: - fields.append("math_engine") - widgets["math_engine"] = Select2Widget(attrs={"style": "width:200px"}) - if HeavyPreviewPageDownWidget is not None: widgets["about"] = HeavyPreviewPageDownWidget( preview=reverse_lazy("profile_preview"), @@ -301,8 +308,8 @@ class EditOrganizationContestForm(ModelForm): "hide_problem_tags", "public_scoreboard", "scoreboard_visibility", - "run_pretests_only", "points_precision", + "rate_limit", "description", "og_image", "logo_override_image", @@ -412,13 +419,15 @@ class NewMessageForm(ModelForm): fields = ["title", "content"] widgets = {} if PagedownWidget is not None: - widgets["content"] = MathJaxPagedownWidget() + widgets["content"] = PagedownWidget() class CustomAuthenticationForm(AuthenticationForm): def __init__(self, *args, **kwargs): super(CustomAuthenticationForm, self).__init__(*args, **kwargs) - self.fields["username"].widget.attrs.update({"placeholder": _("Username")}) + self.fields["username"].widget.attrs.update( + {"placeholder": _("Username/Email")} + ) self.fields["password"].widget.attrs.update({"placeholder": _("Password")}) self.has_google_auth = self._has_social_auth("GOOGLE_OAUTH2") @@ -566,3 +575,9 @@ class ContestProblemFormSet( ) ): model = ContestProblem + + +class TestFormatterForm(ModelForm): + class Meta: + model = TestFormatterModel + fields = ["file"] diff --git a/judge/highlight_code.py b/judge/highlight_code.py index ce407de..f5c91e3 100644 --- a/judge/highlight_code.py +++ b/judge/highlight_code.py @@ -1,44 +1,13 @@ from django.utils.html import escape, mark_safe +from judge.markdown import markdown __all__ = ["highlight_code"] -def _make_pre_code(code): - return mark_safe("
" + escape(code) + "
") +def highlight_code(code, language, linenos=True, title=None): + linenos_option = 'linenums="1"' if linenos else "" + title_option = f'title="{title}"' if title else "" + options = f"{{.{language} {linenos_option} {title_option}}}" - -try: - import pygments - import pygments.lexers - import pygments.formatters - import pygments.util -except ImportError: - - def highlight_code(code, language, cssclass=None): - return _make_pre_code(code) - -else: - - def highlight_code(code, language, cssclass="codehilite", linenos=True): - try: - lexer = pygments.lexers.get_lexer_by_name(language) - except pygments.util.ClassNotFound: - return _make_pre_code(code) - - if linenos: - return mark_safe( - pygments.highlight( - code, - lexer, - pygments.formatters.HtmlFormatter( - cssclass=cssclass, linenos="table", wrapcode=True - ), - ) - ) - return mark_safe( - pygments.highlight( - code, - lexer, - pygments.formatters.HtmlFormatter(cssclass=cssclass, wrapcode=True), - ) - ) + value = f"```{options}\n{code}\n```\n" + return mark_safe(markdown(value)) diff --git a/judge/jinja2/__init__.py b/judge/jinja2/__init__.py index 93ab0ad..e24ea8c 100644 --- a/judge/jinja2/__init__.py +++ b/judge/jinja2/__init__.py @@ -22,6 +22,7 @@ from . import ( social, spaceless, timedelta, + comment, ) from . import registry diff --git a/judge/jinja2/comment.py b/judge/jinja2/comment.py new file mode 100644 index 0000000..6baa365 --- /dev/null +++ b/judge/jinja2/comment.py @@ -0,0 +1,12 @@ +from . import registry + +from django.contrib.contenttypes.models import ContentType + +from judge.models.comment import get_visible_comment_count +from judge.caching import cache_wrapper + + +@registry.function +def comment_count(obj): + content_type = ContentType.objects.get_for_model(obj) + return get_visible_comment_count(content_type, obj.pk) diff --git a/judge/jinja2/datetime.py b/judge/jinja2/datetime.py index eb0ec41..ce7cf32 100644 --- a/judge/jinja2/datetime.py +++ b/judge/jinja2/datetime.py @@ -23,5 +23,5 @@ registry.filter(localtime_wrapper(time)) @registry.function @registry.render_with("widgets/relative-time.html") -def relative_time(time, format=_("N j, Y, g:i a"), rel=_("{time}"), abs=_("on {time}")): +def relative_time(time, format=_("N j, Y, g:i a"), rel=_("{time}"), abs=_("{time}")): return {"time": time, "format": format, "rel_format": rel, "abs_format": abs} diff --git a/judge/jinja2/gravatar.py b/judge/jinja2/gravatar.py index b6e8a83..175992f 100644 --- a/judge/jinja2/gravatar.py +++ b/judge/jinja2/gravatar.py @@ -10,10 +10,11 @@ from . import registry @registry.function def gravatar(profile, size=80, default=None, profile_image=None, email=None): - if profile_image: - return profile_image - if profile and profile.profile_image_url: - return profile.profile_image_url + if profile and not profile.is_muted: + if profile_image: + return profile_image + if profile and profile.profile_image_url: + return profile.profile_image_url if profile: email = email or profile.email if default is None: diff --git a/judge/jinja2/markdown/__init__.py b/judge/jinja2/markdown/__init__.py index fa78791..18355d4 100644 --- a/judge/jinja2/markdown/__init__.py +++ b/judge/jinja2/markdown/__init__.py @@ -1,112 +1,7 @@ from .. import registry -import markdown as _markdown -import bleach -from django.utils.html import escape -from bs4 import BeautifulSoup -from pymdownx import superfences - - -EXTENSIONS = [ - "pymdownx.arithmatex", - "pymdownx.magiclink", - "pymdownx.betterem", - "pymdownx.details", - "pymdownx.emoji", - "pymdownx.inlinehilite", - "pymdownx.superfences", - "pymdownx.tasklist", - "markdown.extensions.footnotes", - "markdown.extensions.attr_list", - "markdown.extensions.def_list", - "markdown.extensions.tables", - "markdown.extensions.admonition", - "nl2br", - "mdx_breakless_lists", -] - -EXTENSION_CONFIGS = { - "pymdownx.superfences": { - "custom_fences": [ - { - "name": "sample", - "class": "no-border", - "format": superfences.fence_code_format, - } - ] - }, -} - -ALLOWED_TAGS = list(bleach.sanitizer.ALLOWED_TAGS) + [ - "img", - "center", - "iframe", - "div", - "span", - "table", - "tr", - "td", - "th", - "tr", - "pre", - "code", - "p", - "hr", - "h1", - "h2", - "h3", - "h4", - "h5", - "h6", - "thead", - "tbody", - "sup", - "dl", - "dt", - "dd", - "br", - "details", - "summary", -] - -ALLOWED_ATTRS = ["src", "width", "height", "href", "class", "open"] +from judge.markdown import markdown as _markdown @registry.filter def markdown(value, lazy_load=False): - extensions = EXTENSIONS - html = _markdown.markdown( - value, extensions=extensions, extension_configs=EXTENSION_CONFIGS - ) - - # Don't clean mathjax - hash_script_tag = {} - soup = BeautifulSoup(html, "html.parser") - for script_tag in soup.find_all("script"): - allow_math_types = ["math/tex", "math/tex; mode=display"] - if script_tag.attrs.get("type", False) in allow_math_types: - hash_script_tag[str(hash(str(script_tag)))] = str(script_tag) - - for hashed_tag in hash_script_tag: - tag = hash_script_tag[hashed_tag] - html = html.replace(tag, hashed_tag) - - html = bleach.clean(html, tags=ALLOWED_TAGS, attributes=ALLOWED_ATTRS) - - for hashed_tag in hash_script_tag: - tag = hash_script_tag[hashed_tag] - html = html.replace(hashed_tag, tag) - - if not html: - html = escape(value) - if lazy_load: - soup = BeautifulSoup(html, features="html.parser") - for img in soup.findAll("img"): - if img.get("src"): - img["data-src"] = img["src"] - img["src"] = "" - for img in soup.findAll("iframe"): - if img.get("src"): - img["data-src"] = img["src"] - img["src"] = "" - html = str(soup) - return '
%s
' % html + return _markdown(value, lazy_load) diff --git a/judge/jinja2/reference.py b/judge/jinja2/reference.py index 312ac4f..274382e 100644 --- a/judge/jinja2/reference.py +++ b/judge/jinja2/reference.py @@ -155,16 +155,16 @@ def item_title(item): @registry.function @registry.render_with("user/link.html") -def link_user(user): +def link_user(user, show_image=False): if isinstance(user, Profile): profile = user elif isinstance(user, AbstractUser): profile = user.profile - elif type(user).__name__ == "ContestRankingProfile": - profile = user + elif isinstance(user, int): + profile = Profile(id=user) else: raise ValueError("Expected profile or user, got %s" % (type(user),)) - return {"profile": profile} + return {"profile": profile, "show_image": show_image} @registry.function diff --git a/judge/jinja2/social.py b/judge/jinja2/social.py index 645809d..f7ea1c5 100644 --- a/judge/jinja2/social.py +++ b/judge/jinja2/social.py @@ -48,5 +48,9 @@ for name, template, url_func in SHARES: @registry.function def recaptcha_init(language=None): return get_template("snowpenguin/recaptcha/recaptcha_init.html").render( - {"explicit": False, "language": language} + { + "explicit": False, + "language": language, + "recaptcha_host": "https://google.com", + } ) diff --git a/judge/logging.py b/judge/logging.py index 8d9f154..a1a25be 100644 --- a/judge/logging.py +++ b/judge/logging.py @@ -1,7 +1,12 @@ import logging error_log = logging.getLogger("judge.errors") +debug_log = logging.getLogger("judge.debug") def log_exception(msg): error_log.exception(msg) + + +def log_debug(category, data): + debug_log.info(f"{category}: {data}") diff --git a/judge/management/commands/render_pdf.py b/judge/management/commands/render_pdf.py index 238000f..87324b4 100644 --- a/judge/management/commands/render_pdf.py +++ b/judge/management/commands/render_pdf.py @@ -89,14 +89,13 @@ class Command(BaseCommand): if trans is None else trans.description, "url": "", - "math_engine": maker.math_engine, } ) .replace('"//', '"https://') .replace("'//", "'https://") ) maker.title = problem_name - for file in ("style.css", "pygment-github.css", "mathjax3_config.js"): + for file in "style.css": maker.load(file, os.path.join(settings.DMOJ_RESOURCES, file)) maker.make(debug=True) if not maker.success: diff --git a/judge/markdown.py b/judge/markdown.py new file mode 100644 index 0000000..80eb21a --- /dev/null +++ b/judge/markdown.py @@ -0,0 +1,149 @@ +import markdown as _markdown +import bleach +from django.utils.html import escape +from bs4 import BeautifulSoup +from pymdownx import superfences +from django.conf import settings +from urllib.parse import urlparse + +from judge.markdown_extensions import YouTubeExtension, EmoticonExtension + + +EXTENSIONS = [ + "pymdownx.arithmatex", + "pymdownx.magiclink", + "pymdownx.betterem", + "pymdownx.details", + "pymdownx.emoji", + "pymdownx.inlinehilite", + "pymdownx.superfences", + "pymdownx.highlight", + "pymdownx.tasklist", + "markdown.extensions.footnotes", + "markdown.extensions.attr_list", + "markdown.extensions.def_list", + "markdown.extensions.tables", + "markdown.extensions.admonition", + "nl2br", + "mdx_breakless_lists", + YouTubeExtension(), + EmoticonExtension(), +] + +EXTENSION_CONFIGS = { + "pymdownx.arithmatex": { + "generic": True, + }, + "pymdownx.superfences": { + "custom_fences": [ + { + "name": "sample", + "class": "no-border", + "format": superfences.fence_code_format, + } + ], + }, + "pymdownx.highlight": { + "auto_title": True, + "auto_title_map": { + "Text Only": "", + }, + }, +} + +ALLOWED_TAGS = list(bleach.sanitizer.ALLOWED_TAGS) + [ + "img", + "center", + "iframe", + "div", + "span", + "table", + "tr", + "td", + "th", + "tr", + "pre", + "code", + "p", + "hr", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "thead", + "tbody", + "sup", + "dl", + "dt", + "dd", + "br", + "details", + "summary", +] + +ALLOWED_ATTRS = [ + "src", + "width", + "height", + "href", + "class", + "open", + "title", + "frameborder", + "allow", + "allowfullscreen", + "loading", +] + + +def _wrap_img_iframe_with_lazy_load(soup): + for img in soup.findAll("img"): + if img.get("src"): + img["loading"] = "lazy" + for img in soup.findAll("iframe"): + if img.get("src"): + img["loading"] = "lazy" + return soup + + +def _wrap_images_with_featherlight(soup): + for img in soup.findAll("img"): + if img.get("src"): + link = soup.new_tag("a", href=img["src"], **{"data-featherlight": "image"}) + img.wrap(link) + return soup + + +def _open_external_links_in_new_tab(soup): + domain = settings.SITE_DOMAIN.lower() + for a in soup.findAll("a", href=True): + href = a["href"] + if href.startswith("http://") or href.startswith("https://"): + link_domain = urlparse(href).netloc.lower() + if link_domain != domain: + a["target"] = "_blank" + return soup + + +def markdown(value, lazy_load=False): + extensions = EXTENSIONS + html = _markdown.markdown( + value, extensions=extensions, extension_configs=EXTENSION_CONFIGS + ) + + html = bleach.clean(html, tags=ALLOWED_TAGS, attributes=ALLOWED_ATTRS) + + if not html: + html = escape(value) + + soup = BeautifulSoup(html, features="html.parser") + if lazy_load: + soup = _wrap_img_iframe_with_lazy_load(soup) + + soup = _wrap_images_with_featherlight(soup) + soup = _open_external_links_in_new_tab(soup) + html = str(soup) + + return '
%s
' % html diff --git a/judge/markdown_extensions/__init__.py b/judge/markdown_extensions/__init__.py new file mode 100644 index 0000000..bc405f3 --- /dev/null +++ b/judge/markdown_extensions/__init__.py @@ -0,0 +1,2 @@ +from .youtube import YouTubeExtension +from .emoticon import EmoticonExtension diff --git a/judge/markdown_extensions/emoticon.py b/judge/markdown_extensions/emoticon.py new file mode 100644 index 0000000..809b1d3 --- /dev/null +++ b/judge/markdown_extensions/emoticon.py @@ -0,0 +1,112 @@ +import markdown +from markdown.extensions import Extension +from markdown.inlinepatterns import InlineProcessor +import xml.etree.ElementTree as etree +import re + +EMOTICON_EMOJI_MAP = { + ":D": "\U0001F603", # Smiling Face with Open Mouth + ":)": "\U0001F642", # Slightly Smiling Face + ":-)": "\U0001F642", # Slightly Smiling Face with Nose + ":(": "\U0001F641", # Slightly Frowning Face + ":-(": "\U0001F641", # Slightly Frowning Face with Nose + ";)": "\U0001F609", # Winking Face + ";-)": "\U0001F609", # Winking Face with Nose + ":P": "\U0001F61B", # Face with Tongue + ":-P": "\U0001F61B", # Face with Tongue and Nose + ":p": "\U0001F61B", # Face with Tongue + ":-p": "\U0001F61B", # Face with Tongue and Nose + ";P": "\U0001F61C", # Winking Face with Tongue + ";-P": "\U0001F61C", # Winking Face with Tongue and Nose + ";p": "\U0001F61C", # Winking Face with Tongue + ";-p": "\U0001F61C", # Winking Face with Tongue and Nose + ":'(": "\U0001F622", # Crying Face + ":o": "\U0001F62E", # Face with Open Mouth + ":-o": "\U0001F62E", # Face with Open Mouth and Nose + ":O": "\U0001F62E", # Face with Open Mouth + ":-O": "\U0001F62E", # Face with Open Mouth and Nose + ":-0": "\U0001F62E", # Face with Open Mouth and Nose + ">:(": "\U0001F620", # Angry Face + ">:-(": "\U0001F620", # Angry Face with Nose + ">:)": "\U0001F608", # Smiling Face with Horns + ">:-)": "\U0001F608", # Smiling Face with Horns and Nose + "XD": "\U0001F606", # Grinning Squinting Face + "xD": "\U0001F606", # Grinning Squinting Face + "B)": "\U0001F60E", # Smiling Face with Sunglasses + "B-)": "\U0001F60E", # Smiling Face with Sunglasses and Nose + "O:)": "\U0001F607", # Smiling Face with Halo + "O:-)": "\U0001F607", # Smiling Face with Halo and Nose + "0:)": "\U0001F607", # Smiling Face with Halo + "0:-)": "\U0001F607", # Smiling Face with Halo and Nose + ">:P": "\U0001F92A", # Zany Face (sticking out tongue and winking) + ">:-P": "\U0001F92A", # Zany Face with Nose + ">:p": "\U0001F92A", # Zany Face (sticking out tongue and winking) + ">:-p": "\U0001F92A", # Zany Face with Nose + ":/": "\U0001F615", # Confused Face + ":-/": "\U0001F615", # Confused Face with Nose + ":\\": "\U0001F615", # Confused Face + ":-\\": "\U0001F615", # Confused Face with Nose + "3:)": "\U0001F608", # Smiling Face with Horns + "3:-)": "\U0001F608", # Smiling Face with Horns and Nose + "<3": "\u2764\uFE0F", # Red Heart + ":P": "\U0001F61D", # Face with Stuck-Out Tongue and Tightly-Closed Eyes + ":-/": "\U0001F615", # Confused Face + ":/": "\U0001F615", + ":\\": "\U0001F615", + ":-\\": "\U0001F615", + ":|": "\U0001F610", # Neutral Face + ":-|": "\U0001F610", + "8)": "\U0001F60E", # Smiling Face with Sunglasses + "8-)": "\U0001F60E", + "O:)": "\U0001F607", # Smiling Face with Halo + "O:-)": "\U0001F607", + ":3": "\U0001F60A", # Smiling Face with Smiling Eyes + "^.^": "\U0001F60A", + "-_-": "\U0001F611", # Expressionless Face + "T_T": "\U0001F62D", # Loudly Crying Face + "T.T": "\U0001F62D", + ">.<": "\U0001F623", # Persevering Face + "x_x": "\U0001F635", # Dizzy Face + "X_X": "\U0001F635", + ":]": "\U0001F600", # Grinning Face + ":[": "\U0001F641", # Slightly Frowning Face + "=]": "\U0001F600", + "=[": "\U0001F641", + "D:<": "\U0001F621", # Pouting Face + "D:": "\U0001F629", # Weary Face + "D=": "\U0001F6AB", # No Entry Sign (sometimes used to denote dismay or frustration) + ":'D": "\U0001F602", # Face with Tears of Joy + "D':": "\U0001F625", # Disappointed but Relieved Face + "D8": "\U0001F631", # Face Screaming in Fear + "-.-": "\U0001F644", # Face with Rolling Eyes + "-_-;": "\U0001F612", # Unamused +} + + +class EmoticonEmojiInlineProcessor(InlineProcessor): + def handleMatch(self, m, data): + emoticon = m.group(1) + emoji = EMOTICON_EMOJI_MAP.get(emoticon, "") + if emoji: + el = etree.Element("span") + el.text = markdown.util.AtomicString(emoji) + el.set("class", "big-emoji") + return el, m.start(0), m.end(0) + else: + return None, m.start(0), m.end(0) + + +class EmoticonExtension(Extension): + def extendMarkdown(self, md): + emoticon_pattern = ( + r"(?:(?<=\s)|^)" # Lookbehind for a whitespace character or the start of the string + r"(" + "|".join(map(re.escape, EMOTICON_EMOJI_MAP.keys())) + r")" + r"(?=\s|$)" # Lookahead for a whitespace character or the end of the string + ) + emoticon_processor = EmoticonEmojiInlineProcessor(emoticon_pattern, md) + md.inlinePatterns.register(emoticon_processor, "emoticon_to_emoji", 1) diff --git a/judge/markdown_extensions/youtube.py b/judge/markdown_extensions/youtube.py new file mode 100644 index 0000000..89a9fa8 --- /dev/null +++ b/judge/markdown_extensions/youtube.py @@ -0,0 +1,36 @@ +import markdown +from markdown.inlinepatterns import InlineProcessor +from markdown.extensions import Extension +import xml.etree.ElementTree as etree + +YOUTUBE_REGEX = ( + r"(https?://)?(www\.)?" "(youtube\.com/watch\?v=|youtu\.be/)" "([\w-]+)(&[\w=]*)?" +) + + +class YouTubeEmbedProcessor(InlineProcessor): + def handleMatch(self, m, data): + youtube_id = m.group(4) + if not youtube_id: + return None, None, None + + # Create an iframe element with the YouTube embed URL + iframe = etree.Element("iframe") + iframe.set("width", "100%") + iframe.set("height", "360") + iframe.set("src", f"https://www.youtube.com/embed/{youtube_id}") + iframe.set("frameborder", "0") + iframe.set("allowfullscreen", "true") + center = etree.Element("center") + center.append(iframe) + + # Return the iframe as the element to replace the match, along with the start and end indices + return center, m.start(0), m.end(0) + + +class YouTubeExtension(Extension): + def extendMarkdown(self, md): + # Create the YouTube link pattern + YOUTUBE_PATTERN = YouTubeEmbedProcessor(YOUTUBE_REGEX, md) + # Register the pattern to apply the YouTubeEmbedProcessor + md.inlinePatterns.register(YOUTUBE_PATTERN, "youtube", 175) diff --git a/judge/migrations/0174_contest_summary_result.py b/judge/migrations/0174_contest_summary_result.py new file mode 100644 index 0000000..1a4c9cc --- /dev/null +++ b/judge/migrations/0174_contest_summary_result.py @@ -0,0 +1,50 @@ +# Generated by Django 3.2.18 on 2023-11-24 05:45 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0173_fulltext"), + ] + + operations = [ + migrations.AddField( + model_name="contestssummary", + name="results", + field=models.JSONField(blank=True, null=True), + ), + migrations.AlterField( + model_name="contest", + name="authors", + field=models.ManyToManyField( + help_text="These users will be able to edit the contest.", + related_name="_judge_contest_authors_+", + to="judge.Profile", + verbose_name="authors", + ), + ), + migrations.AlterField( + model_name="contest", + name="curators", + field=models.ManyToManyField( + blank=True, + help_text="These users will be able to edit the contest, but will not be listed as authors.", + related_name="_judge_contest_curators_+", + to="judge.Profile", + verbose_name="curators", + ), + ), + migrations.AlterField( + model_name="contest", + name="testers", + field=models.ManyToManyField( + blank=True, + help_text="These users will be able to view the contest, but not edit it.", + related_name="_judge_contest_testers_+", + to="judge.Profile", + verbose_name="testers", + ), + ), + ] diff --git a/judge/migrations/0175_add_profile_index.py b/judge/migrations/0175_add_profile_index.py new file mode 100644 index 0000000..d9ec296 --- /dev/null +++ b/judge/migrations/0175_add_profile_index.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.18 on 2023-11-29 02:26 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0174_contest_summary_result"), + ] + + operations = [ + migrations.AddIndex( + model_name="profile", + index=models.Index( + fields=["is_unlisted", "performance_points"], + name="judge_profi_is_unli_d4034c_idx", + ), + ), + ] diff --git a/judge/migrations/0176_comment_revision_count.py b/judge/migrations/0176_comment_revision_count.py new file mode 100644 index 0000000..ed2a246 --- /dev/null +++ b/judge/migrations/0176_comment_revision_count.py @@ -0,0 +1,30 @@ +# Generated by Django 3.2.18 on 2023-12-06 01:28 + +from django.db import migrations, models + + +# Run this in shell +def migrate_revision(apps, schema_editor): + Comment = apps.get_model("judge", "Comment") + + for c in Comment.objects.all(): + c.revision_count = c.versions.count() + c.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0175_add_profile_index"), + ] + + operations = [ + migrations.AddField( + model_name="comment", + name="revision_count", + field=models.PositiveIntegerField(default=1), + ), + # migrations.RunPython( + # migrate_revision, migrations.RunPython.noop, atomic=True + # ), + ] diff --git a/judge/migrations/0177_test_formatter.py b/judge/migrations/0177_test_formatter.py new file mode 100644 index 0000000..78eadb5 --- /dev/null +++ b/judge/migrations/0177_test_formatter.py @@ -0,0 +1,35 @@ +from django.db import migrations, models +import judge.models.test_formatter + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0176_comment_revision_count"), + ] + + operations = [ + migrations.CreateModel( + name="TestFormatterModel", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "file", + models.FileField( + blank=True, + null=True, + upload_to=judge.models.test_formatter.test_formatter_path, + verbose_name="testcase file", + ), + ), + ], + ) + ] diff --git a/judge/migrations/0178_remove_user_script.py b/judge/migrations/0178_remove_user_script.py new file mode 100644 index 0000000..dc4b560 --- /dev/null +++ b/judge/migrations/0178_remove_user_script.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.18 on 2024-01-14 01:04 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0177_test_formatter"), + ] + + operations = [ + migrations.RemoveField( + model_name="profile", + name="user_script", + ), + ] diff --git a/judge/migrations/0179_submission_result_lang_index.py b/judge/migrations/0179_submission_result_lang_index.py new file mode 100644 index 0000000..3e43918 --- /dev/null +++ b/judge/migrations/0179_submission_result_lang_index.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.18 on 2024-01-23 00:32 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0178_remove_user_script"), + ] + + operations = [ + migrations.AddIndex( + model_name="submission", + index=models.Index( + fields=["language", "result"], name="judge_submi_languag_874af4_idx" + ), + ), + ] diff --git a/judge/migrations/0180_course.py b/judge/migrations/0180_course.py new file mode 100644 index 0000000..439d32e --- /dev/null +++ b/judge/migrations/0180_course.py @@ -0,0 +1,78 @@ +# Generated by Django 3.2.18 on 2024-02-15 02:12 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0179_submission_result_lang_index"), + ] + + operations = [ + migrations.CreateModel( + name="CourseLesson", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("title", models.TextField(verbose_name="course title")), + ("content", models.TextField(verbose_name="course content")), + ("order", models.IntegerField(default=0, verbose_name="order")), + ("points", models.IntegerField(verbose_name="points")), + ], + ), + migrations.RemoveField( + model_name="courseresource", + name="course", + ), + migrations.RemoveField( + model_name="course", + name="ending_time", + ), + migrations.AlterField( + model_name="courserole", + name="course", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to="judge.course", + verbose_name="course", + ), + ), + migrations.DeleteModel( + name="CourseAssignment", + ), + migrations.DeleteModel( + name="CourseResource", + ), + migrations.AddField( + model_name="courselesson", + name="course", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to="judge.course", + verbose_name="course", + ), + ), + migrations.AddField( + model_name="courselesson", + name="problems", + field=models.ManyToManyField(to="judge.Problem"), + ), + migrations.AlterUniqueTogether( + name="courserole", + unique_together={("course", "user")}, + ), + migrations.AlterField( + model_name="courselesson", + name="problems", + field=models.ManyToManyField(blank=True, to="judge.Problem"), + ), + ] diff --git a/judge/migrations/0181_remove_math_engine.py b/judge/migrations/0181_remove_math_engine.py new file mode 100644 index 0000000..99e4a85 --- /dev/null +++ b/judge/migrations/0181_remove_math_engine.py @@ -0,0 +1,50 @@ +# Generated by Django 3.2.18 on 2024-02-26 20:43 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0180_course"), + ] + + operations = [ + migrations.RemoveField( + model_name="profile", + name="math_engine", + ), + migrations.AlterField( + model_name="course", + name="about", + field=models.TextField(verbose_name="course description"), + ), + migrations.AlterField( + model_name="courselesson", + name="course", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="lessons", + to="judge.course", + verbose_name="course", + ), + ), + migrations.AlterField( + model_name="courselesson", + name="problems", + field=models.ManyToManyField( + blank=True, to="judge.Problem", verbose_name="problem" + ), + ), + migrations.AlterField( + model_name="courserole", + name="user", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="course_roles", + to="judge.profile", + verbose_name="user", + ), + ), + ] diff --git a/judge/migrations/0182_rename_customcpp.py b/judge/migrations/0182_rename_customcpp.py new file mode 100644 index 0000000..5f991be --- /dev/null +++ b/judge/migrations/0182_rename_customcpp.py @@ -0,0 +1,75 @@ +# Generated by Django 3.2.18 on 2024-03-19 04:28 + +from django.db import migrations, models + + +def migrate_checker(apps, schema_editor): + ProblemData = apps.get_model("judge", "ProblemData") + ProblemTestCase = apps.get_model("judge", "ProblemTestCase") + + for p in ProblemData.objects.all(): + if p.checker == "customval": + p.checker = "customcpp" + p.save() + + for p in ProblemTestCase.objects.all(): + if p.checker == "customval": + p.checker = "customcpp" + p.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0181_remove_math_engine"), + ] + + operations = [ + migrations.RunPython(migrate_checker, migrations.RunPython.noop, atomic=True), + migrations.AlterField( + model_name="problemdata", + name="checker", + field=models.CharField( + blank=True, + choices=[ + ("standard", "Standard"), + ("floats", "Floats"), + ("floatsabs", "Floats (absolute)"), + ("floatsrel", "Floats (relative)"), + ("rstripped", "Non-trailing spaces"), + ("sorted", "Unordered"), + ("identical", "Byte identical"), + ("linecount", "Line-by-line"), + ("custom", "Custom checker (PY)"), + ("customcpp", "Custom checker (CPP)"), + ("interact", "Interactive"), + ("testlib", "Testlib"), + ], + max_length=10, + verbose_name="checker", + ), + ), + migrations.AlterField( + model_name="problemtestcase", + name="checker", + field=models.CharField( + blank=True, + choices=[ + ("standard", "Standard"), + ("floats", "Floats"), + ("floatsabs", "Floats (absolute)"), + ("floatsrel", "Floats (relative)"), + ("rstripped", "Non-trailing spaces"), + ("sorted", "Unordered"), + ("identical", "Byte identical"), + ("linecount", "Line-by-line"), + ("custom", "Custom checker (PY)"), + ("customcpp", "Custom checker (CPP)"), + ("interact", "Interactive"), + ("testlib", "Testlib"), + ], + max_length=10, + verbose_name="checker", + ), + ), + ] diff --git a/judge/migrations/0183_rename_custom_checker_cpp.py b/judge/migrations/0183_rename_custom_checker_cpp.py new file mode 100644 index 0000000..65280ae --- /dev/null +++ b/judge/migrations/0183_rename_custom_checker_cpp.py @@ -0,0 +1,45 @@ +# Generated by Django 3.2.18 on 2024-03-19 04:45 + +import django.core.validators +from django.db import migrations, models +import judge.models.problem_data +import judge.utils.problem_data + + +def migrate_checker(apps, schema_editor): + ProblemData = apps.get_model("judge", "ProblemData") + + for p in ProblemData.objects.all(): + p.custom_checker_cpp = p.custom_validator + p.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0182_rename_customcpp"), + ] + + operations = [ + migrations.AddField( + model_name="problemdata", + name="custom_checker_cpp", + field=models.FileField( + blank=True, + null=True, + storage=judge.utils.problem_data.ProblemDataStorage(), + upload_to=judge.models.problem_data.problem_directory_file, + validators=[ + django.core.validators.FileExtensionValidator( + allowed_extensions=["cpp"] + ) + ], + verbose_name="custom cpp checker file", + ), + ), + migrations.RunPython(migrate_checker, migrations.RunPython.noop, atomic=True), + migrations.RemoveField( + model_name="problemdata", + name="custom_validator", + ), + ] diff --git a/judge/migrations/0184_contest_rate_limit.py b/judge/migrations/0184_contest_rate_limit.py new file mode 100644 index 0000000..c05174d --- /dev/null +++ b/judge/migrations/0184_contest_rate_limit.py @@ -0,0 +1,28 @@ +# Generated by Django 3.2.18 on 2024-03-23 04:07 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0183_rename_custom_checker_cpp"), + ] + + operations = [ + migrations.AddField( + model_name="contest", + name="rate_limit", + field=models.PositiveIntegerField( + blank=True, + help_text="Maximum number of submissions per minute. Leave empty if you don't want rate limit.", + null=True, + validators=[ + django.core.validators.MinValueValidator(1), + django.core.validators.MaxValueValidator(5), + ], + verbose_name="rate limit", + ), + ), + ] diff --git a/judge/migrations/0185_rename_org_profile_colum.py b/judge/migrations/0185_rename_org_profile_colum.py new file mode 100644 index 0000000..c184169 --- /dev/null +++ b/judge/migrations/0185_rename_org_profile_colum.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.18 on 2024-04-12 05:50 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0184_contest_rate_limit"), + ] + + operations = [ + migrations.RenameField( + model_name="organizationprofile", + old_name="users", + new_name="profile", + ), + ] diff --git a/judge/migrations/0186_change_about_fields_max_len.py b/judge/migrations/0186_change_about_fields_max_len.py new file mode 100644 index 0000000..9e8cf01 --- /dev/null +++ b/judge/migrations/0186_change_about_fields_max_len.py @@ -0,0 +1,43 @@ +# Generated by Django 3.2.18 on 2024-04-12 17:04 + +from django.db import migrations, models + + +def truncate_about_text(apps, schema_editor): + Organization = apps.get_model("judge", "Organization") + Profile = apps.get_model("judge", "Profile") + + for org in Organization.objects.all(): + if len(org.about) > 10000: + org.about = org.about[:10000] + org.save() + + for profile in Profile.objects.all(): + if profile.about and len(profile.about) > 10000: + profile.about = profile.about[:10000] + profile.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0185_rename_org_profile_colum"), + ] + + operations = [ + migrations.RunPython(truncate_about_text), + migrations.AlterField( + model_name="organization", + name="about", + field=models.CharField( + max_length=10000, verbose_name="organization description" + ), + ), + migrations.AlterField( + model_name="profile", + name="about", + field=models.CharField( + blank=True, max_length=10000, null=True, verbose_name="self-description" + ), + ), + ] diff --git a/judge/migrations/0187_profile_info.py b/judge/migrations/0187_profile_info.py new file mode 100644 index 0000000..c3b02c2 --- /dev/null +++ b/judge/migrations/0187_profile_info.py @@ -0,0 +1,69 @@ +# Generated by Django 3.2.18 on 2024-04-27 03:35 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0186_change_about_fields_max_len"), + ] + + operations = [ + migrations.RemoveField( + model_name="profile", + name="is_banned_problem_voting", + ), + migrations.CreateModel( + name="ProfileInfo", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "tshirt_size", + models.CharField( + blank=True, + choices=[ + ("S", "Small (S)"), + ("M", "Medium (M)"), + ("L", "Large (L)"), + ("XL", "Extra Large (XL)"), + ("XXL", "2 Extra Large (XXL)"), + ], + max_length=5, + null=True, + verbose_name="t-shirt size", + ), + ), + ( + "date_of_birth", + models.DateField( + blank=True, null=True, verbose_name="date of birth" + ), + ), + ( + "address", + models.CharField( + blank=True, max_length=255, null=True, verbose_name="address" + ), + ), + ( + "profile", + models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, + related_name="info", + to="judge.profile", + verbose_name="profile associated", + ), + ), + ], + ), + ] diff --git a/judge/migrations/0188_official_contest.py b/judge/migrations/0188_official_contest.py new file mode 100644 index 0000000..89414a7 --- /dev/null +++ b/judge/migrations/0188_official_contest.py @@ -0,0 +1,110 @@ +# Generated by Django 3.2.18 on 2024-05-30 04:32 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ("judge", "0187_profile_info"), + ] + + operations = [ + migrations.CreateModel( + name="OfficialContestCategory", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "name", + models.CharField( + max_length=50, + unique=True, + verbose_name="official contest category", + ), + ), + ], + options={ + "verbose_name": "official contest category", + "verbose_name_plural": "official contest categories", + }, + ), + migrations.CreateModel( + name="OfficialContestLocation", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "name", + models.CharField( + max_length=50, + unique=True, + verbose_name="official contest location", + ), + ), + ], + options={ + "verbose_name": "official contest location", + "verbose_name_plural": "official contest locations", + }, + ), + migrations.CreateModel( + name="OfficialContest", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("year", models.PositiveIntegerField(verbose_name="year")), + ( + "category", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to="judge.officialcontestcategory", + verbose_name="contest category", + ), + ), + ( + "contest", + models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, + related_name="official", + to="judge.contest", + verbose_name="contest", + ), + ), + ( + "location", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to="judge.officialcontestlocation", + verbose_name="contest location", + ), + ), + ], + options={ + "verbose_name": "official contest", + "verbose_name_plural": "official contests", + }, + ), + ] diff --git a/judge/ml/collab_filter.py b/judge/ml/collab_filter.py index 6a5d183..105a534 100644 --- a/judge/ml/collab_filter.py +++ b/judge/ml/collab_filter.py @@ -1,7 +1,9 @@ import numpy as np -from django.conf import settings import os +import hashlib + from django.core.cache import cache +from django.conf import settings from judge.caching import cache_wrapper @@ -12,67 +14,69 @@ class CollabFilter: # name = 'collab_filter' or 'collab_filter_time' def __init__(self, name): - embeddings = np.load( + self.embeddings = np.load( os.path.join(settings.ML_OUTPUT_PATH, name + "/embeddings.npz"), allow_pickle=True, ) - arr0, arr1 = embeddings.files + _, problem_arr = self.embeddings.files self.name = name - self.user_embeddings = embeddings[arr0] - self.problem_embeddings = embeddings[arr1] + self.problem_embeddings = self.embeddings[problem_arr].item() def __str__(self): return self.name def compute_scores(self, query_embedding, item_embeddings, measure=DOT): - """Computes the scores of the candidates given a query. - Args: - query_embedding: a vector of shape [k], representing the query embedding. - item_embeddings: a matrix of shape [N, k], such that row i is the embedding - of item i. - measure: a string specifying the similarity measure to be used. Can be - either DOT or COSINE. - Returns: - scores: a vector of shape [N], such that scores[i] is the score of item i. - """ + """Return {id: score}""" u = query_embedding - V = item_embeddings + V = np.stack(list(item_embeddings.values())) if measure == self.COSINE: V = V / np.linalg.norm(V, axis=1, keepdims=True) u = u / np.linalg.norm(u) scores = u.dot(V.T) - return scores + scores_by_id = {id_: s for id_, s in zip(item_embeddings.keys(), scores)} + return scores_by_id + + def _get_embedding_version(self): + first_problem = self.problem_embeddings[0] + array_bytes = first_problem.tobytes() + hash_object = hashlib.sha256(array_bytes) + hash_bytes = hash_object.digest() + return hash_bytes.hex()[:5] + + @cache_wrapper(prefix="CFgue", timeout=86400) + def _get_user_embedding(self, user_id, embedding_version): + user_arr, _ = self.embeddings.files + user_embeddings = self.embeddings[user_arr].item() + if user_id not in user_embeddings: + return user_embeddings[0] + return user_embeddings[user_id] + + def get_user_embedding(self, user_id): + version = self._get_embedding_version() + return self._get_user_embedding(user_id, version) @cache_wrapper(prefix="user_recommendations", timeout=3600) - def user_recommendations(self, user, problems, measure=DOT, limit=None): - uid = user.id - if uid >= len(self.user_embeddings): - uid = 0 - scores = self.compute_scores( - self.user_embeddings[uid], self.problem_embeddings, measure - ) - + def user_recommendations(self, user_id, problems, measure=DOT, limit=None): + user_embedding = self.get_user_embedding(user_id) + scores = self.compute_scores(user_embedding, self.problem_embeddings, measure) res = [] # [(score, problem)] for pid in problems: - # pid = problem.id - if pid < len(scores): + if pid in scores: res.append((scores[pid], pid)) res.sort(reverse=True, key=lambda x: x[0]) - res = res[:limit] - return res + return res[:limit] # return a list of pid def problem_neighbors(self, problem, problemset, measure=DOT, limit=None): pid = problem.id - if pid >= len(self.problem_embeddings): + if pid not in self.problem_embeddings: return [] - scores = self.compute_scores( - self.problem_embeddings[pid], self.problem_embeddings, measure - ) + embedding = self.problem_embeddings[pid] + scores = self.compute_scores(embedding, self.problem_embeddings, measure) res = [] for p in problemset: - if p < len(scores): + if p in scores: res.append((scores[p], p)) res.sort(reverse=True, key=lambda x: x[0]) return res[:limit] diff --git a/judge/models/__init__.py b/judge/models/__init__.py index 2b1d706..0c69602 100644 --- a/judge/models/__init__.py +++ b/judge/models/__init__.py @@ -2,8 +2,6 @@ from reversion import revisions from judge.models.choices import ( ACE_THEMES, - EFFECTIVE_MATH_ENGINES, - MATH_ENGINES_CHOICES, TIMEZONE, ) from judge.models.comment import Comment, CommentLock, CommentVote @@ -17,6 +15,9 @@ from judge.models.contest import ( Rating, ContestProblemClarification, ContestsSummary, + OfficialContestCategory, + OfficialContestLocation, + OfficialContest, ) from judge.models.interface import BlogPost, MiscConfig, NavigationBar, validate_regex from judge.models.message import PrivateMessage, PrivateMessageThread @@ -45,6 +46,7 @@ from judge.models.profile import ( Profile, Friend, OrganizationProfile, + ProfileInfo, ) from judge.models.runtime import Judge, Language, RuntimeVersion from judge.models.submission import ( @@ -53,12 +55,15 @@ from judge.models.submission import ( SubmissionSource, SubmissionTestCase, ) + +from judge.models.test_formatter import TestFormatterModel from judge.models.ticket import Ticket, TicketMessage from judge.models.volunteer import VolunteerProblemVote from judge.models.pagevote import PageVote, PageVoteVoter from judge.models.bookmark import BookMark, MakeBookMark -from judge.models.course import Course +from judge.models.course import Course, CourseRole, CourseLesson from judge.models.notification import Notification, NotificationProfile +from judge.models.test_formatter import TestFormatterModel revisions.register(Profile, exclude=["points", "last_access", "ip", "rating"]) revisions.register(Problem, follow=["language_limits"]) diff --git a/judge/models/bookmark.py b/judge/models/bookmark.py index 718141f..06be327 100644 --- a/judge/models/bookmark.py +++ b/judge/models/bookmark.py @@ -6,6 +6,7 @@ from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from judge.models.profile import Profile +from judge.caching import cache_wrapper __all__ = ["BookMark"] @@ -21,12 +22,9 @@ class BookMark(models.Model): object_id = models.PositiveIntegerField() linked_object = GenericForeignKey("content_type", "object_id") - def get_bookmark(self, user): - userqueryset = MakeBookMark.objects.filter(bookmark=self, user=user) - if userqueryset.exists(): - return True - else: - return False + @cache_wrapper(prefix="BMgb") + def is_bookmarked_by(self, user): + return MakeBookMark.objects.filter(bookmark=self, user=user).exists() class Meta: verbose_name = _("bookmark") @@ -55,11 +53,22 @@ class MakeBookMark(models.Model): verbose_name_plural = _("make bookmarks") +@cache_wrapper(prefix="gocb", expected_type=BookMark) +def _get_or_create_bookmark(content_type, object_id): + bookmark, created = BookMark.objects.get_or_create( + content_type=content_type, + object_id=object_id, + ) + return bookmark + + class Bookmarkable: def get_or_create_bookmark(self): - if self.bookmark.count(): - return self.bookmark.first() - new_bookmark = BookMark() - new_bookmark.linked_object = self - new_bookmark.save() - return new_bookmark + content_type = ContentType.objects.get_for_model(self) + object_id = self.pk + return _get_or_create_bookmark(content_type, object_id) + + +def dirty_bookmark(bookmark, profile): + bookmark.is_bookmarked_by.dirty(bookmark, profile) + _get_or_create_bookmark.dirty(bookmark.content_type, bookmark.object_id) diff --git a/judge/models/choices.py b/judge/models/choices.py index b6fab5c..105e7e7 100644 --- a/judge/models/choices.py +++ b/judge/models/choices.py @@ -54,13 +54,3 @@ ACE_THEMES = ( ("vibrant_ink", "Vibrant Ink"), ("xcode", "XCode"), ) - -MATH_ENGINES_CHOICES = ( - ("tex", _("Leave as LaTeX")), - ("svg", _("SVG with PNG fallback")), - ("mml", _("MathML only")), - ("jax", _("MathJax with SVG/PNG fallback")), - ("auto", _("Detect best quality")), -) - -EFFECTIVE_MATH_ENGINES = ("svg", "mml", "tex", "jax") diff --git a/judge/models/comment.py b/judge/models/comment.py index 2cbe20a..7e9f5bf 100644 --- a/judge/models/comment.py +++ b/judge/models/comment.py @@ -20,6 +20,7 @@ from judge.models.interface import BlogPost from judge.models.problem import Problem, Solution from judge.models.profile import Profile from judge.utils.cachedict import CacheDict +from judge.caching import cache_wrapper __all__ = ["Comment", "CommentLock", "CommentVote", "Notification"] @@ -56,6 +57,7 @@ class Comment(MPTTModel): related_name="replies", on_delete=CASCADE, ) + revision_count = models.PositiveIntegerField(default=1) versions = VersionRelation() @@ -71,19 +73,14 @@ class Comment(MPTTModel): @classmethod def most_recent(cls, user, n, batch=None, organization=None): - queryset = ( - cls.objects.filter(hidden=False) - .select_related("author__user") - .defer("author__about", "body") - .order_by("-id") - ) + queryset = cls.objects.filter(hidden=False).order_by("-id") if organization: queryset = queryset.filter(author__in=organization.members.all()) problem_access = CacheDict(lambda p: p.is_accessible_by(user)) contest_access = CacheDict(lambda c: c.is_accessible_by(user)) - blog_access = CacheDict(lambda b: b.can_see(user)) + blog_access = CacheDict(lambda b: b.is_accessible_by(user)) if n == -1: n = len(queryset) @@ -118,10 +115,6 @@ class Comment(MPTTModel): query = Comment.filter(parent=self) return len(query) - @cached_property - def get_revisions(self): - return self.versions.count() - @cached_property def page_title(self): if isinstance(self.linked_object, Problem): @@ -177,3 +170,10 @@ class CommentLock(models.Model): def __str__(self): return str(self.page) + + +@cache_wrapper(prefix="gcc") +def get_visible_comment_count(content_type, object_id): + return Comment.objects.filter( + content_type=content_type, object_id=object_id, hidden=False + ).count() diff --git a/judge/models/contest.py b/judge/models/contest.py index 1432d94..c6f4bb8 100644 --- a/judge/models/contest.py +++ b/judge/models/contest.py @@ -2,11 +2,14 @@ from django.core.exceptions import ValidationError from django.core.validators import MaxValueValidator, MinValueValidator, RegexValidator from django.db import models, transaction from django.db.models import CASCADE, Q +from django.db.models.signals import m2m_changed from django.urls import reverse from django.utils import timezone from django.utils.functional import cached_property from django.utils.translation import gettext, gettext_lazy as _ from django.contrib.contenttypes.fields import GenericRelation +from django.dispatch import receiver + from jsonfield import JSONField from lupa import LuaRuntime from moss import ( @@ -25,6 +28,7 @@ from judge.ratings import rate_contest from judge.models.pagevote import PageVotable from judge.models.bookmark import Bookmarkable from judge.fulltext import SearchManager +from judge.caching import cache_wrapper __all__ = [ "Contest", @@ -35,6 +39,9 @@ __all__ = [ "Rating", "ContestProblemClarification", "ContestsSummary", + "OfficialContest", + "OfficialContestCategory", + "OfficialContestLocation", ] @@ -310,6 +317,15 @@ class Contest(models.Model, PageVotable, Bookmarkable): validators=[MinValueValidator(0), MaxValueValidator(10)], help_text=_("Number of digits to round points to."), ) + rate_limit = models.PositiveIntegerField( + verbose_name=(_("rate limit")), + null=True, + blank=True, + validators=[MinValueValidator(1), MaxValueValidator(5)], + help_text=_( + "Maximum number of submissions per minute. Leave empty if you don't want rate limit." + ), + ) comments = GenericRelation("Comment") pagevote = GenericRelation("PageVote") bookmark = GenericRelation("BookMark") @@ -446,28 +462,44 @@ class Contest(models.Model, PageVotable, Bookmarkable): def ended(self): return self.end_time < self._now - @cached_property - def author_ids(self): - return Contest.authors.through.objects.filter(contest=self).values_list( - "profile_id", flat=True + @cache_wrapper(prefix="Coai") + def _author_ids(self): + return set( + Contest.authors.through.objects.filter(contest=self).values_list( + "profile_id", flat=True + ) ) - @cached_property - def editor_ids(self): - return self.author_ids.union( + @cache_wrapper(prefix="Coci") + def _curator_ids(self): + return set( Contest.curators.through.objects.filter(contest=self).values_list( "profile_id", flat=True ) ) - @cached_property - def tester_ids(self): - return Contest.testers.through.objects.filter(contest=self).values_list( - "profile_id", flat=True + @cache_wrapper(prefix="Coti") + def _tester_ids(self): + return set( + Contest.testers.through.objects.filter(contest=self).values_list( + "profile_id", flat=True + ) ) + @cached_property + def author_ids(self): + return self._author_ids() + + @cached_property + def editor_ids(self): + return self.author_ids.union(self._curator_ids()) + + @cached_property + def tester_ids(self): + return self._tester_ids() + def __str__(self): - return self.name + return f"{self.name} ({self.key})" def get_absolute_url(self): return reverse("contest_view", args=(self.key,)) @@ -632,6 +664,20 @@ class Contest(models.Model, PageVotable, Bookmarkable): verbose_name_plural = _("contests") +@receiver(m2m_changed, sender=Contest.organizations.through) +def update_organization_private(sender, instance, **kwargs): + if kwargs["action"] in ["post_add", "post_remove", "post_clear"]: + instance.is_organization_private = instance.organizations.exists() + instance.save(update_fields=["is_organization_private"]) + + +@receiver(m2m_changed, sender=Contest.private_contestants.through) +def update_private(sender, instance, **kwargs): + if kwargs["action"] in ["post_add", "post_remove", "post_clear"]: + instance.is_private = instance.private_contestants.exists() + instance.save(update_fields=["is_private"]) + + class ContestParticipation(models.Model): LIVE = 0 SPECTATE = -1 @@ -920,6 +966,7 @@ class ContestsSummary(models.Model): max_length=20, unique=True, ) + results = models.JSONField(null=True, blank=True) class Meta: verbose_name = _("contests summary") @@ -930,3 +977,53 @@ class ContestsSummary(models.Model): def get_absolute_url(self): return reverse("contests_summary", args=[self.key]) + + +class OfficialContestCategory(models.Model): + name = models.CharField( + max_length=50, verbose_name=_("official contest category"), unique=True + ) + + def __str__(self): + return self.name + + class Meta: + verbose_name = _("official contest category") + verbose_name_plural = _("official contest categories") + + +class OfficialContestLocation(models.Model): + name = models.CharField( + max_length=50, verbose_name=_("official contest location"), unique=True + ) + + def __str__(self): + return self.name + + class Meta: + verbose_name = _("official contest location") + verbose_name_plural = _("official contest locations") + + +class OfficialContest(models.Model): + contest = models.OneToOneField( + Contest, + verbose_name=_("contest"), + related_name="official", + on_delete=CASCADE, + ) + category = models.ForeignKey( + OfficialContestCategory, + verbose_name=_("contest category"), + on_delete=CASCADE, + ) + year = models.PositiveIntegerField(verbose_name=_("year")) + location = models.ForeignKey( + OfficialContestLocation, + verbose_name=_("contest location"), + on_delete=CASCADE, + ) + + class Meta: + verbose_name = _("official contest") + verbose_name_plural = _("official contests") diff --git a/judge/models/course.py b/judge/models/course.py index e4a155a..caee007 100644 --- a/judge/models/course.py +++ b/judge/models/course.py @@ -1,18 +1,20 @@ from django.core.validators import RegexValidator from django.db import models from django.utils.translation import gettext, gettext_lazy as _ +from django.urls import reverse +from django.db.models import Q -from judge.models import Contest +from judge.models import BlogPost, Problem from judge.models.profile import Organization, Profile -__all__ = [ - "Course", - "CourseRole", - "CourseResource", - "CourseAssignment", -] -course_directory_file = "" +class RoleInCourse(models.TextChoices): + STUDENT = "ST", _("Student") + ASSISTANT = "AS", _("Assistant") + TEACHER = "TE", _("Teacher") + + +EDITABLE_ROLES = (RoleInCourse.TEACHER, RoleInCourse.ASSISTANT) class Course(models.Model): @@ -20,10 +22,7 @@ class Course(models.Model): max_length=128, verbose_name=_("course name"), ) - about = models.TextField(verbose_name=_("organization description")) - ending_time = models.DateTimeField( - verbose_name=_("ending time"), - ) + about = models.TextField(verbose_name=_("course description")) is_public = models.BooleanField( verbose_name=_("publicly visible"), default=False, @@ -57,35 +56,50 @@ class Course(models.Model): def __str__(self): return self.name - @classmethod - def is_editable_by(course, profile): - if profile.is_superuser: - return True - userquery = CourseRole.objects.filter(course=course, user=profile) - if userquery.exists(): - if userquery[0].role == "AS" or userquery[0].role == "TE": - return True - return False + def get_absolute_url(self): + return reverse("course_detail", args=(self.slug,)) @classmethod - def is_accessible_by(cls, course, profile): - userqueryset = CourseRole.objects.filter(course=course, user=profile) - if userqueryset.exists(): - return True - else: + def is_editable_by(cls, course, profile): + try: + course_role = CourseRole.objects.get(course=course, user=profile) + return course_role.role in EDITABLE_ROLES + except CourseRole.DoesNotExist: return False @classmethod - def get_students(cls, course): - return CourseRole.objects.filter(course=course, role="ST").values("user") + def is_accessible_by(cls, course, profile): + if not profile: + return False + try: + course_role = CourseRole.objects.get(course=course, user=profile) + if course_role.course.is_public: + return True + return course_role.role in EDITABLE_ROLES + except CourseRole.DoesNotExist: + return False @classmethod - def get_assistants(cls, course): - return CourseRole.objects.filter(course=course, role="AS").values("user") + def get_accessible_courses(cls, profile): + return Course.objects.filter( + Q(is_public=True) | Q(courserole__role__in=EDITABLE_ROLES), + courserole__user=profile, + ).distinct() - @classmethod - def get_teachers(cls, course): - return CourseRole.objects.filter(course=course, role="TE").values("user") + def _get_users_by_role(self, role): + course_roles = CourseRole.objects.filter(course=self, role=role).select_related( + "user" + ) + return [course_role.user for course_role in course_roles] + + def get_students(self): + return self._get_users_by_role(RoleInCourse.STUDENT) + + def get_assistants(self): + return self._get_users_by_role(RoleInCourse.ASSISTANT) + + def get_teachers(self): + return self._get_users_by_role(RoleInCourse.TEACHER) @classmethod def add_student(cls, course, profiles): @@ -104,7 +118,7 @@ class Course(models.Model): class CourseRole(models.Model): - course = models.OneToOneField( + course = models.ForeignKey( Course, verbose_name=_("course"), on_delete=models.CASCADE, @@ -114,14 +128,9 @@ class CourseRole(models.Model): Profile, verbose_name=_("user"), on_delete=models.CASCADE, - related_name=_("user_of_course"), + related_name="course_roles", ) - class RoleInCourse(models.TextChoices): - STUDENT = "ST", _("Student") - ASSISTANT = "AS", _("Assistant") - TEACHER = "TE", _("Teacher") - role = models.CharField( max_length=2, choices=RoleInCourse.choices, @@ -140,44 +149,19 @@ class CourseRole(models.Model): couresrole.role = role couresrole.save() + class Meta: + unique_together = ("course", "user") -class CourseResource(models.Model): - course = models.OneToOneField( + +class CourseLesson(models.Model): + course = models.ForeignKey( Course, verbose_name=_("course"), - on_delete=models.CASCADE, - db_index=True, - ) - files = models.FileField( - verbose_name=_("course files"), - null=True, - blank=True, - upload_to=course_directory_file, - ) - description = models.CharField( - verbose_name=_("description"), - blank=True, - max_length=150, - ) - order = models.IntegerField(null=True, default=None) - is_public = models.BooleanField( - verbose_name=_("publicly visible"), - default=False, - ) - - -class CourseAssignment(models.Model): - course = models.OneToOneField( - Course, - verbose_name=_("course"), - on_delete=models.CASCADE, - db_index=True, - ) - contest = models.OneToOneField( - Contest, - verbose_name=_("contest"), + related_name="lessons", on_delete=models.CASCADE, ) - points = models.FloatField( - verbose_name=_("points"), - ) + title = models.TextField(verbose_name=_("course title")) + content = models.TextField(verbose_name=_("course content")) + problems = models.ManyToManyField(Problem, verbose_name=_("problem"), blank=True) + order = models.IntegerField(verbose_name=_("order"), default=0) + points = models.IntegerField(verbose_name=_("points")) diff --git a/judge/models/interface.py b/judge/models/interface.py index f7626dc..d9c6e2c 100644 --- a/judge/models/interface.py +++ b/judge/models/interface.py @@ -13,6 +13,7 @@ from mptt.models import MPTTModel from judge.models.profile import Organization, Profile from judge.models.pagevote import PageVotable from judge.models.bookmark import Bookmarkable +from judge.caching import cache_wrapper __all__ = ["MiscConfig", "validate_regex", "NavigationBar", "BlogPost"] @@ -105,7 +106,7 @@ class BlogPost(models.Model, PageVotable, Bookmarkable): def get_absolute_url(self): return reverse("blog_post", args=(self.id, self.slug)) - def can_see(self, user): + def is_accessible_by(self, user): if self.visible and self.publish_on <= timezone.now(): if not self.is_organization_private: return True @@ -132,6 +133,10 @@ class BlogPost(models.Model, PageVotable, Bookmarkable): and self.authors.filter(id=user.profile.id).exists() ) + @cache_wrapper(prefix="BPga", expected_type=models.query.QuerySet) + def get_authors(self): + return self.authors.only("id") + class Meta: permissions = (("edit_all_post", _("Edit all posts")),) verbose_name = _("blog post") diff --git a/judge/models/pagevote.py b/judge/models/pagevote.py index 7accd01..bc0224e 100644 --- a/judge/models/pagevote.py +++ b/judge/models/pagevote.py @@ -31,11 +31,8 @@ class PageVote(models.Model): @cache_wrapper(prefix="PVvs") def vote_score(self, user): - page_vote = PageVoteVoter.objects.filter(pagevote=self, voter=user) - if page_vote.exists(): - return page_vote.first().score - else: - return 0 + page_vote = PageVoteVoter.objects.filter(pagevote=self, voter=user).first() + return page_vote.score if page_vote else 0 def __str__(self): return f"pagevote for {self.linked_object}" @@ -52,11 +49,22 @@ class PageVoteVoter(models.Model): verbose_name_plural = _("pagevote votes") +@cache_wrapper(prefix="gocp", expected_type=PageVote) +def _get_or_create_pagevote(content_type, object_id): + pagevote, created = PageVote.objects.get_or_create( + content_type=content_type, + object_id=object_id, + ) + return pagevote + + class PageVotable: def get_or_create_pagevote(self): - if self.pagevote.count(): - return self.pagevote.first() - new_pagevote = PageVote() - new_pagevote.linked_object = self - new_pagevote.save() - return new_pagevote + content_type = ContentType.objects.get_for_model(self) + object_id = self.pk + return _get_or_create_pagevote(content_type, object_id) + + +def dirty_pagevote(pagevote, profile): + pagevote.vote_score.dirty(pagevote, profile) + _get_or_create_pagevote.dirty(pagevote.content_type, pagevote.object_id) diff --git a/judge/models/problem.py b/judge/models/problem.py index 98e477b..8114fb7 100644 --- a/judge/models/problem.py +++ b/judge/models/problem.py @@ -11,6 +11,8 @@ from django.db.models.functions import Coalesce from django.urls import reverse from django.utils.functional import cached_property from django.utils.translation import gettext_lazy as _ +from django.db.models.signals import m2m_changed +from django.dispatch import receiver from judge.fulltext import SearchQuerySet from judge.models.pagevote import PageVotable @@ -22,6 +24,7 @@ from judge.models.problem_data import ( problem_data_storage, problem_directory_file_helper, ) +from judge.caching import cache_wrapper __all__ = [ "ProblemGroup", @@ -437,6 +440,10 @@ class Problem(models.Model, PageVotable, Bookmarkable): "profile_id", flat=True ) + @cache_wrapper(prefix="Pga", expected_type=models.query.QuerySet) + def get_authors(self): + return self.authors.only("id") + @cached_property def editor_ids(self): return self.author_ids.union( @@ -554,21 +561,36 @@ class Problem(models.Model, PageVotable, Bookmarkable): cache.set(key, result) return result - def save(self, *args, **kwargs): + def handle_code_change(self): + has_data = hasattr(self, "data_files") + has_pdf = bool(self.pdf_description) + if not has_data and not has_pdf: + return + + try: + problem_data_storage.rename(self.__original_code, self.code) + except OSError as e: + if e.errno != errno.ENOENT: + raise + + if has_pdf: + self.pdf_description.name = problem_directory_file_helper( + self.code, self.pdf_description.name + ) + super().save(update_fields=["pdf_description"]) + + if has_data: + self.data_files._update_code(self.__original_code, self.code) + + def save(self, should_move_data=True, *args, **kwargs): + code_changed = self.__original_code and self.code != self.__original_code super(Problem, self).save(*args, **kwargs) - if self.__original_code and self.code != self.__original_code: - if hasattr(self, "data_files") or self.pdf_description: - try: - problem_data_storage.rename(self.__original_code, self.code) - except OSError as e: - if e.errno != errno.ENOENT: - raise - if self.pdf_description: - self.pdf_description.name = problem_directory_file_helper( - self.code, self.pdf_description.name - ) - if hasattr(self, "data_files"): - self.data_files._update_code(self.__original_code, self.code) + if code_changed and should_move_data: + self.handle_code_change() + + def delete(self, *args, **kwargs): + super().delete(*args, **kwargs) + problem_data_storage.delete_directory(self.code) save.alters_data = True @@ -682,6 +704,10 @@ class Solution(models.Model, PageVotable, Bookmarkable): else: return reverse("problem_editorial", args=[problem.code]) + @cache_wrapper(prefix="Sga", expected_type=models.query.QuerySet) + def get_authors(self): + return self.authors.only("id") + def __str__(self): return _("Editorial for %s") % self.problem.name @@ -719,3 +745,10 @@ class ProblemPointsVote(models.Model): def __str__(self): return f"{self.voter}: {self.points} for {self.problem.code}" + + +@receiver(m2m_changed, sender=Problem.organizations.through) +def update_organization_private(sender, instance, **kwargs): + if kwargs["action"] in ["post_add", "post_remove", "post_clear"]: + instance.is_organization_private = instance.organizations.exists() + instance.save(update_fields=["is_organization_private"]) diff --git a/judge/models/problem_data.py b/judge/models/problem_data.py index b04d2ab..adb92d8 100644 --- a/judge/models/problem_data.py +++ b/judge/models/problem_data.py @@ -38,7 +38,7 @@ CHECKERS = ( ("identical", _("Byte identical")), ("linecount", _("Line-by-line")), ("custom", _("Custom checker (PY)")), - ("customval", _("Custom validator (CPP)")), + ("customcpp", _("Custom checker (CPP)")), ("interact", _("Interactive")), ("testlib", _("Testlib")), ) @@ -90,8 +90,8 @@ class ProblemData(models.Model): upload_to=problem_directory_file, validators=[FileExtensionValidator(allowed_extensions=["py"])], ) - custom_validator = models.FileField( - verbose_name=_("custom validator file"), + custom_checker_cpp = models.FileField( + verbose_name=_("custom cpp checker file"), storage=problem_data_storage, null=True, blank=True, @@ -186,9 +186,9 @@ class ProblemData(models.Model): self.custom_checker.name = problem_directory_file_helper( new, self.custom_checker.name ) - if self.custom_validator: - self.custom_validator.name = problem_directory_file_helper( - new, self.custom_validator.name + if self.custom_checker_cpp: + self.custom_checker_cpp.name = problem_directory_file_helper( + new, self.custom_checker_cpp.name ) if self.interactive_judge: self.interactive_judge.name = problem_directory_file_helper( diff --git a/judge/models/profile.py b/judge/models/profile.py index 3692e39..14fc5f7 100644 --- a/judge/models/profile.py +++ b/judge/models/profile.py @@ -17,7 +17,7 @@ from django.db.models.signals import post_save, pre_save from fernet_fields import EncryptedCharField from sortedm2m.fields import SortedManyToManyField -from judge.models.choices import ACE_THEMES, MATH_ENGINES_CHOICES, TIMEZONE +from judge.models.choices import ACE_THEMES, TIMEZONE from judge.models.runtime import Language from judge.ratings import rating_class from judge.caching import cache_wrapper @@ -26,6 +26,15 @@ from judge.caching import cache_wrapper __all__ = ["Organization", "Profile", "OrganizationRequest", "Friend"] +TSHIRT_SIZES = ( + ("S", "Small (S)"), + ("M", "Medium (M)"), + ("L", "Large (L)"), + ("XL", "Extra Large (XL)"), + ("XXL", "2 Extra Large (XXL)"), +) + + class EncryptedNullCharField(EncryptedCharField): def get_prep_value(self, value): if not value: @@ -55,7 +64,9 @@ class Organization(models.Model): verbose_name=_("short name"), help_text=_("Displayed beside user name during contests"), ) - about = models.TextField(verbose_name=_("organization description")) + about = models.CharField( + max_length=10000, verbose_name=_("organization description") + ) registrant = models.ForeignKey( "Profile", verbose_name=_("registrant"), @@ -139,6 +150,14 @@ class Organization(models.Model): def get_submissions_url(self): return reverse("organization_submissions", args=(self.id, self.slug)) + @cache_wrapper("Oia") + def is_admin(self, profile): + return self.admins.filter(id=profile.id).exists() + + @cache_wrapper("Oim") + def is_member(self, profile): + return profile in self + class Meta: ordering = ["name"] permissions = ( @@ -154,7 +173,9 @@ class Profile(models.Model): user = models.OneToOneField( User, verbose_name=_("user associated"), on_delete=models.CASCADE ) - about = models.TextField(verbose_name=_("self-description"), null=True, blank=True) + about = models.CharField( + max_length=10000, verbose_name=_("self-description"), null=True, blank=True + ) timezone = models.CharField( max_length=50, verbose_name=_("location"), @@ -201,19 +222,7 @@ class Profile(models.Model): help_text=_("User will not be ranked."), default=False, ) - is_banned_problem_voting = models.BooleanField( - verbose_name=_("banned from voting"), - help_text=_("User will not be able to vote on problems' point values."), - default=False, - ) rating = models.IntegerField(null=True, default=None, db_index=True) - user_script = models.TextField( - verbose_name=_("user script"), - default="", - blank=True, - max_length=65536, - help_text=_("User-defined JavaScript for site customization."), - ) current_contest = models.OneToOneField( "ContestParticipation", verbose_name=_("current contest"), @@ -222,13 +231,6 @@ class Profile(models.Model): related_name="+", on_delete=models.SET_NULL, ) - math_engine = models.CharField( - verbose_name=_("math engine"), - choices=MATH_ENGINES_CHOICES, - max_length=4, - default=settings.MATHOID_DEFAULT_TYPE, - help_text=_("the rendering engine used to render math"), - ) is_totp_enabled = models.BooleanField( verbose_name=_("2FA enabled"), default=False, @@ -260,23 +262,9 @@ class Profile(models.Model): max_length=300, ) - @cache_wrapper(prefix="Pgbi2") - def _get_basic_info(self): - profile_image_url = None - if self.profile_image: - profile_image_url = self.profile_image.url - return { - "first_name": self.user.first_name, - "last_name": self.user.last_name, - "email": self.user.email, - "username": self.user.username, - "mute": self.mute, - "profile_image_url": profile_image_url, - } - @cached_property def _cached_info(self): - return self._get_basic_info() + return _get_basic_info(self.id) @cached_property def organization(self): @@ -290,11 +278,11 @@ class Profile(models.Model): @cached_property def first_name(self): - return self._cached_info["first_name"] + return self._cached_info.get("first_name", "") @cached_property def last_name(self): - return self._cached_info["last_name"] + return self._cached_info.get("last_name", "") @cached_property def email(self): @@ -304,9 +292,17 @@ class Profile(models.Model): def is_muted(self): return self._cached_info["mute"] + @cached_property + def cached_display_rank(self): + return self._cached_info.get("display_rank") + + @cached_property + def cached_rating(self): + return self._cached_info.get("rating") + @cached_property def profile_image_url(self): - return self._cached_info["profile_image_url"] + return self._cached_info.get("profile_image_url") @cached_property def count_unseen_notifications(self): @@ -398,7 +394,7 @@ class Profile(models.Model): @cached_property def css_class(self): - return self.get_user_css_class(self.display_rank, self.rating) + return self.get_user_css_class(self.cached_display_rank, self.cached_rating) def get_friends(self): # list of ids, including you friend_obj = self.following_users.prefetch_related("users") @@ -412,13 +408,16 @@ class Profile(models.Model): if not self.user.is_authenticated: return False profile_id = self.id - return ( - org.admins.filter(id=profile_id).exists() - or org.registrant_id == profile_id - or self.user.is_superuser - ) + return org.is_admin(self) or self.user.is_superuser + + @classmethod + def prefetch_profile_cache(self, profile_ids): + _get_basic_info.prefetch_multi([(pid,) for pid in profile_ids]) class Meta: + indexes = [ + models.Index(fields=["is_unlisted", "performance_points"]), + ] permissions = ( ("test_site", "Shows in-progress development stuff"), ("totp", "Edit TOTP settings"), @@ -427,6 +426,36 @@ class Profile(models.Model): verbose_name_plural = _("user profiles") +class ProfileInfo(models.Model): + profile = models.OneToOneField( + Profile, + verbose_name=_("profile associated"), + on_delete=models.CASCADE, + related_name="info", + ) + tshirt_size = models.CharField( + max_length=5, + choices=TSHIRT_SIZES, + verbose_name=_("t-shirt size"), + null=True, + blank=True, + ) + date_of_birth = models.DateField( + verbose_name=_("date of birth"), + null=True, + blank=True, + ) + address = models.CharField( + max_length=255, + verbose_name=_("address"), + null=True, + blank=True, + ) + + def __str__(self): + return f"{self.profile.user.username}'s Info" + + class OrganizationRequest(models.Model): user = models.ForeignKey( Profile, @@ -468,11 +497,7 @@ class Friend(models.Model): @classmethod def is_friend(self, current_user, new_friend): try: - return ( - current_user.following_users.get() - .users.filter(user=new_friend.user) - .exists() - ) + return current_user.following_users.filter(users=new_friend).exists() except: return False @@ -506,7 +531,7 @@ class Friend(models.Model): class OrganizationProfile(models.Model): - users = models.ForeignKey( + profile = models.ForeignKey( Profile, verbose_name=_("user"), related_name="last_visit", @@ -525,37 +550,66 @@ class OrganizationProfile(models.Model): ) @classmethod - def remove_organization(self, users, organization): - organizationprofile = self.objects.filter( - users=users, organization=organization + def remove_organization(self, profile, organization): + organization_profile = self.objects.filter( + profile=profile, organization=organization ) - if organizationprofile.exists(): - organizationprofile.delete() + if organization_profile.exists(): + organization_profile.delete() @classmethod - def add_organization(self, users, organization): - self.remove_organization(users, organization) - new_organization = OrganizationProfile(users=users, organization=organization) - new_organization.save() + def add_organization(self, profile, organization): + self.remove_organization(profile, organization) + new_row = OrganizationProfile(profile=profile, organization=organization) + new_row.save() @classmethod - def get_most_recent_organizations(self, users): - return self.objects.filter(users=users).order_by("-last_visit")[:5] + def get_most_recent_organizations(cls, profile): + queryset = cls.objects.filter(profile=profile).order_by("-last_visit")[:5] + queryset = queryset.select_related("organization").defer("organization__about") + organizations = [op.organization for op in queryset] + + return organizations @receiver([post_save], sender=User) def on_user_save(sender, instance, **kwargs): try: profile = instance.profile - profile._get_basic_info.dirty(profile) + _get_basic_info.dirty(profile.id) except: pass -@receiver([pre_save], sender=Profile) -def on_profile_save(sender, instance, **kwargs): - if instance.id is None: - return - prev = sender.objects.get(id=instance.id) - if prev.mute != instance.mute or prev.profile_image != instance.profile_image: - instance._get_basic_info.dirty(instance) +@cache_wrapper(prefix="Pgbi3", expected_type=dict) +def _get_basic_info(profile_id): + profile = ( + Profile.objects.select_related("user") + .only( + "id", + "mute", + "profile_image", + "user__username", + "user__email", + "user__first_name", + "user__last_name", + "display_rank", + "rating", + ) + .get(id=profile_id) + ) + user = profile.user + res = { + "email": user.email, + "username": user.username, + "mute": profile.mute, + "first_name": user.first_name or None, + "last_name": user.last_name or None, + "profile_image_url": profile.profile_image.url + if profile.profile_image + else None, + "display_rank": profile.display_rank, + "rating": profile.rating, + } + res = {k: v for k, v in res.items() if v is not None} + return res diff --git a/judge/models/runtime.py b/judge/models/runtime.py index 99825ec..97db711 100644 --- a/judge/models/runtime.py +++ b/judge/models/runtime.py @@ -11,6 +11,7 @@ from django.utils.functional import cached_property from django.utils.translation import gettext_lazy as _ from judge.judgeapi import disconnect_judge +from judge.caching import cache_wrapper __all__ = ["Language", "RuntimeVersion", "Judge"] @@ -147,14 +148,11 @@ class Language(models.Model): @classmethod def get_default_language(cls): - try: - return Language.objects.get(key=settings.DEFAULT_USER_LANGUAGE) - except Language.DoesNotExist: - return cls.get_python3() + return _get_default_language() @classmethod def get_default_language_pk(cls): - return cls.get_default_language().pk + return _get_default_language().pk class Meta: ordering = ["key"] @@ -162,6 +160,14 @@ class Language(models.Model): verbose_name_plural = _("languages") +@cache_wrapper(prefix="gdl") +def _get_default_language(): + try: + return Language.objects.get(key=settings.DEFAULT_USER_LANGUAGE) + except Language.DoesNotExist: + return cls.get_python3() + + class RuntimeVersion(models.Model): language = models.ForeignKey( Language, diff --git a/judge/models/submission.py b/judge/models/submission.py index 00c5941..814344d 100644 --- a/judge/models/submission.py +++ b/judge/models/submission.py @@ -220,13 +220,7 @@ class Submission(models.Model): def id_secret(self): return self.get_id_secret(self.id) - def is_accessible_by(self, profile): - from judge.utils.problems import ( - user_completed_ids, - user_tester_ids, - user_editable_ids, - ) - + def is_accessible_by(self, profile, check_contest=True): if not profile: return False @@ -236,15 +230,6 @@ class Submission(models.Model): if profile.id == self.user_id: return True - if problem_id in user_editable_ids(profile): - return True - - if self.problem_id in user_completed_ids(profile): - if self.problem.is_public: - return True - if problem_id in user_tester_ids(profile): - return True - if user.has_perm("judge.change_submission"): return True @@ -254,10 +239,26 @@ class Submission(models.Model): if self.problem.is_public and user.has_perm("judge.view_public_submission"): return True - contest = self.contest_object - if contest and contest.is_editable_by(user): + if check_contest: + contest = self.contest_object + if contest and contest.is_editable_by(user): + return True + + from judge.utils.problems import ( + user_completed_ids, + user_tester_ids, + user_editable_ids, + ) + + if problem_id in user_editable_ids(profile): return True + if self.problem_id in user_completed_ids(profile): + if self.problem.is_public: + return True + if problem_id in user_tester_ids(profile): + return True + return False class Meta: @@ -276,6 +277,7 @@ class Submission(models.Model): indexes = [ models.Index(fields=["problem", "user", "-points"]), models.Index(fields=["contest_object", "problem", "user", "-points"]), + models.Index(fields=["language", "result"]), ] diff --git a/judge/models/test_formatter.py b/judge/models/test_formatter.py new file mode 100644 index 0000000..b613b14 --- /dev/null +++ b/judge/models/test_formatter.py @@ -0,0 +1,26 @@ +import os +from django.db import models +from dmoj import settings +from django.utils.translation import gettext_lazy as _ + +__all__ = [ + "TestFormatterModel", +] + + +def test_formatter_path(test_formatter, filename): + tail = filename.split(".")[-1] + head = filename.split(".")[0] + if str(tail).lower() != "zip": + raise Exception("400: Only ZIP files are supported") + new_filename = f"{head}.{tail}" + return os.path.join(settings.DMOJ_TEST_FORMATTER_ROOT, new_filename) + + +class TestFormatterModel(models.Model): + file = models.FileField( + verbose_name=_("testcase file"), + null=True, + blank=True, + upload_to=test_formatter_path, + ) diff --git a/judge/ratings.py b/judge/ratings.py index de2c313..854bdcb 100644 --- a/judge/ratings.py +++ b/judge/ratings.py @@ -7,7 +7,6 @@ from django.db.models import Count, OuterRef, Subquery from django.db.models.functions import Coalesce from django.utils import timezone - BETA2 = 328.33**2 RATING_INIT = 1200 # Newcomer's rating when applying the rating floor/ceiling MEAN_INIT = 1400.0 @@ -146,6 +145,8 @@ def recalculate_ratings(ranking, old_mean, times_ranked, historical_p): def rate_contest(contest): from judge.models import Rating, Profile + from judge.models.profile import _get_basic_info + from judge.utils.users import get_contest_ratings, get_rating_rank rating_subquery = Rating.objects.filter(user=OuterRef("user")) rating_sorted = rating_subquery.order_by("-contest__end_time") @@ -237,6 +238,10 @@ def rate_contest(contest): ) ) + _get_basic_info.dirty_multi([(uid,) for uid in user_ids]) + get_contest_ratings.dirty_multi([(uid,) for uid in user_ids]) + get_rating_rank.dirty_multi([(uid,) for uid in user_ids]) + RATING_LEVELS = [ "Newbie", diff --git a/judge/signals.py b/judge/signals.py index 74ae833..c3029bb 100644 --- a/judge/signals.py +++ b/judge/signals.py @@ -8,13 +8,13 @@ from django.core.cache.utils import make_template_fragment_key from django.db.models.signals import post_delete, post_save from django.dispatch import receiver +import judge from judge.utils.problems import finished_submission from .models import ( BlogPost, Comment, Contest, ContestSubmission, - EFFECTIVE_MATH_ENGINES, Judge, Language, License, @@ -23,6 +23,8 @@ from .models import ( Problem, Profile, Submission, + NavigationBar, + Solution, ) @@ -46,21 +48,13 @@ def problem_update(sender, instance, **kwargs): cache.delete_many( [ make_template_fragment_key("submission_problem", (instance.id,)), - make_template_fragment_key("problem_feed", (instance.id,)), "problem_tls:%s" % instance.id, "problem_mls:%s" % instance.id, ] ) cache.delete_many( [ - make_template_fragment_key("problem_html", (instance.id, engine, lang)) - for lang, _ in settings.LANGUAGES - for engine in EFFECTIVE_MATH_ENGINES - ] - ) - cache.delete_many( - [ - make_template_fragment_key("problem_authors", (instance.id, lang)) + make_template_fragment_key("problem_html", (instance.id, lang)) for lang, _ in settings.LANGUAGES ] ) @@ -70,6 +64,7 @@ def problem_update(sender, instance, **kwargs): for lang, _ in settings.LANGUAGES ] ) + Problem.get_authors.dirty(instance) for lang, _ in settings.LANGUAGES: unlink_if_exists(get_pdf_path("%s.%s.pdf" % (instance.code, lang))) @@ -77,20 +72,21 @@ def problem_update(sender, instance, **kwargs): @receiver(post_save, sender=Profile) def profile_update(sender, instance, **kwargs): + judge.utils.users.get_points_rank.dirty(instance.id) + judge.utils.users.get_rating_rank.dirty(instance.id) if hasattr(instance, "_updating_stats_only"): return cache.delete_many( - [ - make_template_fragment_key("user_about", (instance.id, engine)) - for engine in EFFECTIVE_MATH_ENGINES - ] + [make_template_fragment_key("user_about", (instance.id,))] + [ make_template_fragment_key("org_member_count", (org_id,)) for org_id in instance.organizations.values_list("id", flat=True) ] ) + judge.models.profile._get_basic_info.dirty(instance.id) + @receiver(post_save, sender=Contest) def contest_update(sender, instance, **kwargs): @@ -99,10 +95,7 @@ def contest_update(sender, instance, **kwargs): cache.delete_many( ["generated-meta-contest:%d" % instance.id] - + [ - make_template_fragment_key("contest_html", (instance.id, engine)) - for engine in EFFECTIVE_MATH_ENGINES - ] + + [make_template_fragment_key("contest_html", (instance.id,))] ) @@ -130,19 +123,8 @@ def comment_update(sender, instance, **kwargs): @receiver(post_save, sender=BlogPost) def post_update(sender, instance, **kwargs): - cache.delete_many( - [ - make_template_fragment_key("post_summary", (instance.id,)), - "blog_slug:%d" % instance.id, - "blog_feed:%d" % instance.id, - ] - ) - cache.delete_many( - [ - make_template_fragment_key("post_content", (instance.id, engine)) - for engine in EFFECTIVE_MATH_ENGINES - ] - ) + cache.delete(make_template_fragment_key("post_content", (instance.id,))) + BlogPost.get_authors.dirty(instance) @receiver(post_delete, sender=Submission) @@ -159,12 +141,9 @@ def contest_submission_delete(sender, instance, **kwargs): @receiver(post_save, sender=Organization) def organization_update(sender, instance, **kwargs): - cache.delete_many( - [ - make_template_fragment_key("organization_html", (instance.id, engine)) - for engine in EFFECTIVE_MATH_ENGINES - ] - ) + cache.delete_many([make_template_fragment_key("organization_html", (instance.id,))]) + for admin in instance.admins.all(): + Organization.is_admin.dirty(instance, admin) _misc_config_i18n = [code for code, _ in settings.LANGUAGES] @@ -187,3 +166,13 @@ def contest_submission_update(sender, instance, **kwargs): Submission.objects.filter(id=instance.submission_id).update( contest_object_id=instance.participation.contest_id ) + + +@receiver(post_save, sender=NavigationBar) +def navbar_update(sender, instance, **kwargs): + judge.template_context._nav_bar.dirty() + + +@receiver(post_save, sender=Solution) +def solution_update(sender, instance, **kwargs): + cache.delete(make_template_fragment_key("solution_content", (instance.id,))) diff --git a/judge/social_auth.py b/judge/social_auth.py index 71a12bb..3f3bdcd 100644 --- a/judge/social_auth.py +++ b/judge/social_auth.py @@ -9,6 +9,7 @@ from django.db import transaction from django.http import HttpResponseRedirect from django.shortcuts import render from django.urls import reverse +from django.utils.translation import gettext as _ from requests import HTTPError from reversion import revisions from social_core.backends.github import GithubOAuth2 @@ -65,13 +66,13 @@ class UsernameForm(forms.Form): max_length=30, label="Username", error_messages={ - "invalid": "A username must contain letters, numbers, or underscores" + "invalid": _("A username must contain letters, numbers, or underscores") }, ) def clean_username(self): if User.objects.filter(username=self.cleaned_data["username"]).exists(): - raise forms.ValidationError("Sorry, the username is taken.") + raise forms.ValidationError(_("Sorry, the username is taken.")) return self.cleaned_data["username"] @@ -89,7 +90,7 @@ def choose_username(backend, user, username=None, *args, **kwargs): request, "registration/username_select.html", { - "title": "Choose a username", + "title": _("Choose a username"), "form": form, }, ) @@ -118,7 +119,7 @@ def make_profile(backend, user, response, is_new=False, *args, **kwargs): backend.strategy.request, "registration/profile_creation.html", { - "title": "Create your profile", + "title": _("Create your profile"), "form": form, }, ) diff --git a/judge/tasks/submission.py b/judge/tasks/submission.py index aa474f8..5333dba 100644 --- a/judge/tasks/submission.py +++ b/judge/tasks/submission.py @@ -8,7 +8,7 @@ from judge.utils.celery import Progress __all__ = ("apply_submission_filter", "rejudge_problem_filter", "rescore_problem") -def apply_submission_filter(queryset, id_range, languages, results, contest): +def apply_submission_filter(queryset, id_range, languages, results, contests): if id_range: start, end = id_range queryset = queryset.filter(id__gte=start, id__lte=end) @@ -16,8 +16,8 @@ def apply_submission_filter(queryset, id_range, languages, results, contest): queryset = queryset.filter(language_id__in=languages) if results: queryset = queryset.filter(result__in=results) - if contest: - queryset = queryset.filter(contest_object=contest) + if contests: + queryset = queryset.filter(contest_object__in=contests) queryset = queryset.exclude(status__in=Submission.IN_PROGRESS_GRADING_STATUS) return queryset diff --git a/judge/template_context.py b/judge/template_context.py index f72da6a..337d32a 100644 --- a/judge/template_context.py +++ b/judge/template_context.py @@ -1,3 +1,4 @@ +import re from functools import partial from django.conf import settings @@ -6,7 +7,10 @@ from django.contrib.sites.shortcuts import get_current_site from django.core.cache import cache from django.utils.functional import SimpleLazyObject, new_method_proxy +from mptt.querysets import TreeQuerySet + from .models import MiscConfig, NavigationBar, Profile +from judge.caching import cache_wrapper class FixedSimpleLazyObject(SimpleLazyObject): @@ -24,7 +28,6 @@ def get_resource(request): scheme = "http" return { - "PYGMENT_THEME": settings.PYGMENT_THEME, "INLINE_JQUERY": settings.INLINE_JQUERY, "INLINE_FONTAWESOME": settings.INLINE_FONTAWESOME, "JQUERY_JS": settings.JQUERY_JS, @@ -51,22 +54,28 @@ def comet_location(request): return {"EVENT_DAEMON_LOCATION": websocket, "EVENT_DAEMON_POLL_LOCATION": poll} +@cache_wrapper(prefix="nb", expected_type=TreeQuerySet) +def _nav_bar(): + return NavigationBar.objects.all() + + def __nav_tab(path): - result = list( - NavigationBar.objects.extra(where=["%s REGEXP BINARY regex"], params=[path])[:1] - ) - return ( - result[0].get_ancestors(include_self=True).values_list("key", flat=True) - if result - else [] - ) + nav_bar_list = list(_nav_bar()) + nav_bar_dict = {nb.id: nb for nb in nav_bar_list} + result = next((nb for nb in nav_bar_list if re.match(nb.regex, path)), None) + if result: + while result.parent_id: + result = nav_bar_dict.get(result.parent_id) + return result.key + else: + return [] def general_info(request): path = request.get_full_path() return { "nav_tab": FixedSimpleLazyObject(partial(__nav_tab, request.path)), - "nav_bar": NavigationBar.objects.all(), + "nav_bar": _nav_bar(), "LOGIN_RETURN_PATH": "" if path.startswith("/accounts/") else path, "perms": PermWrapper(request.user), } @@ -119,13 +128,3 @@ def site_name(request): "SITE_LONG_NAME": settings.SITE_LONG_NAME, "SITE_ADMIN_EMAIL": settings.SITE_ADMIN_EMAIL, } - - -def math_setting(request): - if request.user.is_authenticated: - engine = request.profile.math_engine - else: - engine = settings.MATHOID_DEFAULT_TYPE - if engine == "auto": - engine = "jax" - return {"MATH_ENGINE": engine, "REQUIRE_JAX": engine == "jax"} diff --git a/judge/user_log.py b/judge/user_log.py index b8aec43..b718b30 100644 --- a/judge/user_log.py +++ b/judge/user_log.py @@ -1,5 +1,6 @@ from django.utils.timezone import now from django.conf import settings +from django.core.cache import cache from judge.models import Profile @@ -15,11 +16,13 @@ class LogUserAccessMiddleware(object): hasattr(request, "user") and request.user.is_authenticated and not getattr(request, "no_profile_update", False) + and not cache.get(f"user_log_update_{request.user.id}") ): updates = {"last_access": now()} # Decided on using REMOTE_ADDR as nginx will translate it to the external IP that hits it. if request.META.get(settings.META_REMOTE_ADDRESS_KEY): updates["ip"] = request.META.get(settings.META_REMOTE_ADDRESS_KEY) Profile.objects.filter(user_id=request.user.pk).update(**updates) + cache.set(f"user_log_update_{request.user.id}", True, 120) return response diff --git a/judge/utils/email_render.py b/judge/utils/email_render.py index 5d790f5..a092f88 100644 --- a/judge/utils/email_render.py +++ b/judge/utils/email_render.py @@ -8,7 +8,6 @@ def render_email_message(request, contexts): email_contexts = { "username": request.user.username, "domain": current_site.domain, - "protocol": "https" if request.is_secure() else "http", "site_name": settings.SITE_NAME, "message": None, "title": None, diff --git a/judge/utils/infinite_paginator.py b/judge/utils/infinite_paginator.py index 5693481..afd004f 100644 --- a/judge/utils/infinite_paginator.py +++ b/judge/utils/infinite_paginator.py @@ -116,7 +116,7 @@ def infinite_paginate(queryset, page, page_size, pad_pages, paginator=None): class InfinitePaginationMixin: - pad_pages = 4 + pad_pages = 2 @property def use_infinite_pagination(self): diff --git a/judge/utils/problem_data.py b/judge/utils/problem_data.py index 023c0be..5cf9fe7 100644 --- a/judge/utils/problem_data.py +++ b/judge/utils/problem_data.py @@ -4,6 +4,7 @@ import os import re import yaml import zipfile +import shutil from django.conf import settings from django.core.files.base import ContentFile @@ -48,6 +49,13 @@ class ProblemDataStorage(FileSystemStorage): def rename(self, old, new): return os.rename(self.path(old), self.path(new)) + def delete_directory(self, name): + directory_path = self.path(name) + try: + shutil.rmtree(directory_path) + except FileNotFoundError: + pass + class ProblemDataError(Exception): def __init__(self, message): @@ -82,8 +90,8 @@ class ProblemDataCompiler(object): ) return custom_checker_path[1] - if case.checker == "customval": - custom_checker_path = split_path_first(case.custom_validator.name) + if case.checker == "customcpp": + custom_checker_path = split_path_first(case.custom_checker_cpp.name) if len(custom_checker_path) != 2: raise ProblemDataError( _("How did you corrupt the custom checker path?") @@ -98,7 +106,7 @@ class ProblemDataCompiler(object): } if case.checker == "testlib": - custom_checker_path = split_path_first(case.custom_validator.name) + custom_checker_path = split_path_first(case.custom_checker_cpp.name) if len(custom_checker_path) != 2: raise ProblemDataError( _("How did you corrupt the custom checker path?") diff --git a/judge/utils/problems.py b/judge/utils/problems.py index f35b546..6423c70 100644 --- a/judge/utils/problems.py +++ b/judge/utils/problems.py @@ -1,7 +1,8 @@ from collections import defaultdict from math import e -from datetime import datetime +from datetime import datetime, timedelta import random +from enum import Enum from django.conf import settings from django.core.cache import cache @@ -9,6 +10,7 @@ from django.db.models import Case, Count, ExpressionWrapper, F, Max, Q, When from django.db.models.fields import FloatField from django.utils import timezone from django.utils.translation import gettext as _, gettext_noop +from django.http import Http404 from judge.models import Problem, Submission from judge.ml.collab_filter import CollabFilter @@ -112,13 +114,21 @@ def _get_result_data(results): # Using gettext_noop here since this will be tacked into the cache, so it must be language neutral. # The caller, SubmissionList.get_result_data will run ugettext on the name. {"code": "AC", "name": gettext_noop("Accepted"), "count": results["AC"]}, - {"code": "WA", "name": gettext_noop("Wrong"), "count": results["WA"]}, + { + "code": "WA", + "name": gettext_noop("Wrong Answer"), + "count": results["WA"], + }, { "code": "CE", "name": gettext_noop("Compile Error"), "count": results["CE"], }, - {"code": "TLE", "name": gettext_noop("Timeout"), "count": results["TLE"]}, + { + "code": "TLE", + "name": gettext_noop("Time Limit Exceeded"), + "count": results["TLE"], + }, { "code": "ERR", "name": gettext_noop("Error"), @@ -165,7 +175,7 @@ def editable_problems(user, profile=None): return subquery -@cache_wrapper(prefix="hp", timeout=900) +@cache_wrapper(prefix="hp", timeout=14400) def hot_problems(duration, limit): qs = Problem.get_public_problems().filter( submission__date__gt=timezone.now() - duration @@ -222,7 +232,7 @@ def hot_problems(duration, limit): return qs -@cache_wrapper(prefix="grp", timeout=26400) +@cache_wrapper(prefix="grp", timeout=14400) def get_related_problems(profile, problem, limit=8): if not profile or not settings.ML_OUTPUT_PATH: return None @@ -248,3 +258,72 @@ def finished_submission(sub): keys += ["contest_complete:%d" % participation.id] keys += ["contest_attempted:%d" % participation.id] cache.delete_many(keys) + + +class RecommendationType(Enum): + HOT_PROBLEM = 1 + CF_DOT = 2 + CF_COSINE = 3 + CF_TIME_DOT = 4 + CF_TIME_COSINE = 5 + + +# Return a list of list. Each inner list correspond to each type in types +def get_user_recommended_problems( + user_id, + problem_ids, + recommendation_types, + limits, + shuffle=False, +): + cf_model = CollabFilter("collab_filter") + cf_time_model = CollabFilter("collab_filter_time") + + def get_problem_ids_from_type(rec_type, limit): + if type(rec_type) == int: + try: + rec_type = RecommendationType(rec_type) + except ValueError: + raise Http404() + if rec_type == RecommendationType.HOT_PROBLEM: + return [ + problem.id + for problem in hot_problems(timedelta(days=7), limit) + if problem.id in set(problem_ids) + ] + if rec_type == RecommendationType.CF_DOT: + return cf_model.user_recommendations( + user_id, problem_ids, cf_model.DOT, limit + ) + if rec_type == RecommendationType.CF_COSINE: + return cf_model.user_recommendations( + user_id, problem_ids, cf_model.COSINE, limit + ) + if rec_type == RecommendationType.CF_TIME_DOT: + return cf_time_model.user_recommendations( + user_id, problem_ids, cf_model.DOT, limit + ) + if rec_type == RecommendationType.CF_TIME_COSINE: + return cf_time_model.user_recommendations( + user_id, problem_ids, cf_model.COSINE, limit + ) + return [] + + all_problems = [] + for rec_type, limit in zip(recommendation_types, limits): + all_problems += get_problem_ids_from_type(rec_type, limit) + if shuffle: + seed = datetime.now().strftime("%d%m%Y") + random.Random(seed).shuffle(all_problems) + + # deduplicate problems + res = [] + used_pid = set() + + for obj in all_problems: + if type(obj) == tuple: + obj = obj[1] + if obj not in used_pid: + res.append(obj) + used_pid.add(obj) + return res diff --git a/judge/utils/users.py b/judge/utils/users.py new file mode 100644 index 0000000..9ac071c --- /dev/null +++ b/judge/utils/users.py @@ -0,0 +1,67 @@ +from django.urls import reverse +from django.utils.formats import date_format +from django.utils.translation import gettext as _, gettext_lazy + +from judge.caching import cache_wrapper +from judge.models import Profile, Rating, Submission, Friend, ProfileInfo + + +@cache_wrapper(prefix="grr") +def get_rating_rank(profile): + if profile.is_unlisted: + return None + rank = None + if profile.rating: + rank = ( + Profile.objects.filter( + is_unlisted=False, + rating__gt=profile.rating, + ).count() + + 1 + ) + return rank + + +@cache_wrapper(prefix="gpr") +def get_points_rank(profile): + if profile.is_unlisted: + return None + return ( + Profile.objects.filter( + is_unlisted=False, + performance_points__gt=profile.performance_points, + ).count() + + 1 + ) + + +@cache_wrapper(prefix="gcr") +def get_contest_ratings(profile): + return ( + profile.ratings.order_by("-contest__end_time") + .select_related("contest") + .defer("contest__description") + ) + + +def get_awards(profile): + ratings = get_contest_ratings(profile) + + sorted_ratings = sorted( + ratings, key=lambda x: (x.rank, -x.contest.end_time.timestamp()) + ) + + result = [ + { + "label": rating.contest.name, + "ranking": rating.rank, + "link": reverse("contest_ranking", args=(rating.contest.key,)) + + "#!" + + profile.username, + "date": date_format(rating.contest.end_time, _("M j, Y")), + } + for rating in sorted_ratings + if rating.rank <= 3 + ] + + return result diff --git a/judge/views/blog.py b/judge/views/blog.py index 0310e27..e5a6d78 100644 --- a/judge/views/blog.py +++ b/judge/views/blog.py @@ -6,7 +6,7 @@ from django.utils.functional import lazy from django.utils.translation import ugettext as _ from django.views.generic import ListView -from judge.comments import CommentedDetailView +from judge.views.comment import CommentedDetailView from judge.views.pagevote import PageVoteDetailView from judge.views.bookmark import BookMarkDetailView from judge.models import ( @@ -23,9 +23,9 @@ from judge.models import ( from judge.models.profile import Organization, OrganizationProfile from judge.utils.cachedict import CacheDict from judge.utils.diggpaginator import DiggPaginator -from judge.utils.problems import user_completed_ids from judge.utils.tickets import filter_visible_tickets from judge.utils.views import TitleMixin +from judge.utils.users import get_rating_rank, get_points_rank, get_awards from judge.views.feed import FeedView @@ -70,12 +70,37 @@ class HomeFeedView(FeedView): profile_queryset = Profile.objects if self.request.organization: profile_queryset = self.request.organization.members - context["top_rated"] = profile_queryset.filter(is_unlisted=False).order_by( - "-rating" - )[:10] - context["top_scorer"] = profile_queryset.filter(is_unlisted=False).order_by( - "-performance_points" - )[:10] + context["top_rated"] = ( + profile_queryset.filter(is_unlisted=False) + .order_by("-rating") + .only("id", "rating")[:10] + ) + context["top_scorer"] = ( + profile_queryset.filter(is_unlisted=False) + .order_by("-performance_points") + .only("id", "performance_points")[:10] + ) + Profile.prefetch_profile_cache([p.id for p in context["top_rated"]]) + Profile.prefetch_profile_cache([p.id for p in context["top_scorer"]]) + + if self.request.user.is_authenticated: + context["rating_rank"] = get_rating_rank(self.request.profile) + context["points_rank"] = get_points_rank(self.request.profile) + + medals_list = get_awards(self.request.profile) + context["awards"] = { + "medals": medals_list, + "gold_count": 0, + "silver_count": 0, + "bronze_count": 0, + } + for medal in medals_list: + if medal["ranking"] == 1: + context["awards"]["gold_count"] += 1 + elif medal["ranking"] == 2: + context["awards"]["silver_count"] += 1 + elif medal["ranking"] == 3: + context["awards"]["bronze_count"] += 1 return context @@ -91,7 +116,7 @@ class PostList(HomeFeedView): queryset = ( BlogPost.objects.filter(visible=True, publish_on__lte=timezone.now()) .order_by("-sticky", "-publish_on") - .prefetch_related("authors__user", "organizations") + .prefetch_related("organizations") ) filter = Q(is_organization_private=False) if self.request.user.is_authenticated: @@ -126,7 +151,6 @@ class TicketFeed(HomeFeedView): ) .order_by("-id") .prefetch_related("linked_item") - .select_related("user__user") ) else: return [] @@ -137,7 +161,6 @@ class TicketFeed(HomeFeedView): Ticket.objects.order_by("-id") .filter(is_open=True) .prefetch_related("linked_item") - .select_related("user__user") ) return filter_visible_tickets(tickets, self.request.user, profile) else: @@ -180,25 +203,24 @@ class PostView(TitleMixin, CommentedDetailView, PageVoteDetailView, BookMarkDeta def get_context_data(self, **kwargs): context = super(PostView, self).get_context_data(**kwargs) context["og_image"] = self.object.og_image - context["valid_user_to_show_edit"] = False - context["valid_org_to_show_edit"] = [] + context["editable_orgs"] = [] - if self.request.profile in self.object.authors.all(): - context["valid_user_to_show_edit"] = True + orgs = list(self.object.organizations.all()) - for valid_org_to_show_edit in self.object.organizations.all(): - if self.request.profile in valid_org_to_show_edit.admins.all(): - context["valid_user_to_show_edit"] = True - - if context["valid_user_to_show_edit"]: - for post_org in self.object.organizations.all(): - if post_org in self.request.profile.organizations.all(): - context["valid_org_to_show_edit"].append(post_org) + if self.request.profile: + if self.request.profile.id in self.object.get_authors(): + for org in orgs: + if org.is_member(self.request.profile): + context["editable_orgs"].append(org) + else: + for org in orgs: + if org.is_admin(self.request.profile): + context["editable_orgs"].append(org) return context def get_object(self, queryset=None): post = super(PostView, self).get_object(queryset) - if not post.can_see(self.request.user): + if not post.is_accessible_by(self.request.user): raise Http404() return post diff --git a/judge/views/bookmark.py b/judge/views/bookmark.py index 3f4224b..a05f715 100644 --- a/judge/views/bookmark.py +++ b/judge/views/bookmark.py @@ -8,13 +8,12 @@ from django.http import ( HttpResponseForbidden, ) from django.utils.translation import gettext as _ -from judge.models.bookmark import BookMark, MakeBookMark from django.views.generic.base import TemplateResponseMixin from django.views.generic.detail import SingleObjectMixin -from judge.dblock import LockModel from django.views.generic import View, ListView +from judge.models.bookmark import BookMark, MakeBookMark, dirty_bookmark __all__ = [ "dobookmark_page", @@ -33,30 +32,31 @@ def bookmark_page(request, delta): try: bookmark_id = int(request.POST["id"]) - bookmark_page = BookMark.objects.filter(id=bookmark_id) + bookmark = BookMark.objects.get(id=bookmark_id) except ValueError: return HttpResponseBadRequest() - else: - if not bookmark_page.exists(): - raise Http404() + except BookMark.DoesNotExist: + raise Http404() if delta == 0: bookmarklist = MakeBookMark.objects.filter( - bookmark=bookmark_page.first(), user=request.profile + bookmark=bookmark, user=request.profile ) if not bookmarklist.exists(): newbookmark = MakeBookMark( - bookmark=bookmark_page.first(), + bookmark=bookmark, user=request.profile, ) newbookmark.save() else: bookmarklist = MakeBookMark.objects.filter( - bookmark=bookmark_page.first(), user=request.profile + bookmark=bookmark, user=request.profile ) if bookmarklist.exists(): bookmarklist.delete() + dirty_bookmark(bookmark, request.profile) + return HttpResponse("success", content_type="text/plain") diff --git a/judge/views/comment.py b/judge/views/comment.py index caa4eb6..73506bf 100644 --- a/judge/views/comment.py +++ b/judge/views/comment.py @@ -1,35 +1,46 @@ -from django.conf import settings +import json +from django import forms +from django.conf import settings +from django.contrib.auth.context_processors import PermWrapper from django.contrib.auth.decorators import login_required from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin -from django.contrib.auth.context_processors import PermWrapper -from django.core.exceptions import PermissionDenied -from django.db import IntegrityError, transaction -from django.db.models import Q, F, Count, FilteredRelation +from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import PermissionDenied, ValidationError +from django.db import IntegrityError +from django.db.models import Count, F, FilteredRelation, Q +from django.db.models.expressions import Value from django.db.models.functions import Coalesce -from django.db.models.expressions import F, Value -from django.forms.models import ModelForm +from django.forms import ModelForm from django.http import ( Http404, HttpResponse, HttpResponseBadRequest, HttpResponseForbidden, + HttpResponseNotFound, + HttpResponseRedirect, ) from django.shortcuts import get_object_or_404, render -from django.utils.translation import gettext as _ -from django.views.decorators.http import require_POST -from django.views.generic import DetailView, UpdateView from django.urls import reverse_lazy +from django.utils.decorators import method_decorator +from django.utils.translation import gettext as _ +from django.utils.datastructures import MultiValueDictKeyError +from django.views.decorators.http import require_POST +from django.views.generic import DetailView, UpdateView, View +from django.views.generic.base import TemplateResponseMixin +from django.views.generic.detail import SingleObjectMixin +from django_ratelimit.decorators import ratelimit +from django.contrib.contenttypes.models import ContentType + from reversion import revisions -from reversion.models import Version +from reversion.models import Revision, Version -from judge.dblock import LockModel -from judge.models import Comment, CommentVote, Notification, BlogPost +from judge.jinja2.reference import get_user_from_text +from judge.models import BlogPost, Comment, CommentVote, Notification +from judge.models.notification import make_notification +from judge.models.comment import get_visible_comment_count from judge.utils.views import TitleMixin -from judge.widgets import MathJaxPagedownWidget, HeavyPreviewPageDownWidget -from judge.comments import add_mention_notifications - -import json +from judge.widgets import HeavyPreviewPageDownWidget __all__ = [ "upvote_comment", @@ -39,7 +50,20 @@ __all__ = [ "CommentEdit", ] +DEFAULT_OFFSET = 10 + +def _get_html_link_notification(comment): + return f'{comment.page_title}' + + +def add_mention_notifications(comment): + users_mentioned = get_user_from_text(comment.body).exclude(id=comment.author.id) + link = _get_html_link_notification(comment) + make_notification(users_mentioned, "Mention", link, comment.author) + + +@ratelimit(key="user", rate=settings.RL_VOTE) @login_required def vote_comment(request, delta): if abs(delta) != 1: @@ -77,27 +101,21 @@ def vote_comment(request, delta): vote.voter = request.profile vote.score = delta - while True: + try: + vote.save() + except IntegrityError: try: - vote.save() - except IntegrityError: - with LockModel(write=(CommentVote,)): - try: - vote = CommentVote.objects.get( - comment_id=comment_id, voter=request.profile - ) - except CommentVote.DoesNotExist: - # We must continue racing in case this is exploited to manipulate votes. - continue - if -vote.score != delta: - return HttpResponseBadRequest( - _("You already voted."), content_type="text/plain" - ) - vote.delete() - Comment.objects.filter(id=comment_id).update(score=F("score") - vote.score) - else: - Comment.objects.filter(id=comment_id).update(score=F("score") + delta) - break + vote = CommentVote.objects.get(comment_id=comment_id, voter=request.profile) + except CommentVote.DoesNotExist: + raise Http404() + if -vote.score != delta: + return HttpResponseBadRequest( + _("You already voted."), content_type="text/plain" + ) + vote.delete() + Comment.objects.filter(id=comment_id).update(score=F("score") - vote.score) + else: + Comment.objects.filter(id=comment_id).update(score=F("score") + delta) return HttpResponse("success", content_type="text/plain") @@ -113,7 +131,7 @@ def get_comments(request, limit=10): try: comment_id = int(request.GET["id"]) parent_none = int(request.GET["parent_none"]) - except ValueError: + except (ValueError, MultiValueDictKeyError): return HttpResponseBadRequest() else: if comment_id and not Comment.objects.filter(id=comment_id).exists(): @@ -121,7 +139,10 @@ def get_comments(request, limit=10): offset = 0 if "offset" in request.GET: - offset = int(request.GET["offset"]) + try: + offset = int(request.GET["offset"]) + except ValueError: + return HttpResponseBadRequest() target_comment = -1 if "target_comment" in request.GET: @@ -147,7 +168,6 @@ def get_comments(request, limit=10): .defer("author__about") .annotate( count_replies=Count("replies", distinct=True), - revisions=Count("versions", distinct=True), )[offset : offset + limit] ) profile = None @@ -241,8 +261,9 @@ class CommentEditAjax(LoginRequiredMixin, CommentMixin, UpdateView): # update notifications comment = form.instance add_mention_notifications(comment) - - with transaction.atomic(), revisions.create_revision(): + comment.revision_count = comment.versions.count() + 1 + comment.save(update_fields=["revision_count"]) + with revisions.create_revision(): revisions.set_comment(_("Edited from site")) revisions.set_user(self.request.user) return super(CommentEditAjax, self).form_valid(form) @@ -294,4 +315,195 @@ def comment_hide(request): comment = get_object_or_404(Comment, id=comment_id) comment.get_descendants(include_self=True).update(hidden=True) + get_visible_comment_count.dirty(comment.content_type, comment.object_id) return HttpResponse("ok") + + +class CommentForm(ModelForm): + class Meta: + model = Comment + fields = ["body", "parent"] + widgets = { + "parent": forms.HiddenInput(), + } + + if HeavyPreviewPageDownWidget is not None: + widgets["body"] = HeavyPreviewPageDownWidget( + preview=reverse_lazy("comment_preview"), + preview_timeout=1000, + hide_preview_button=True, + ) + + def __init__(self, request, *args, **kwargs): + self.request = request + super(CommentForm, self).__init__(*args, **kwargs) + self.fields["body"].widget.attrs.update({"placeholder": _("Comment body")}) + + def clean(self): + if self.request is not None and self.request.user.is_authenticated: + profile = self.request.profile + if profile.mute: + raise ValidationError(_("Your part is silent, little toad.")) + elif ( + not self.request.user.is_staff + and not profile.submission_set.filter( + points=F("problem__points") + ).exists() + ): + raise ValidationError( + _( + "You need to have solved at least one problem " + "before your voice can be heard." + ) + ) + return super(CommentForm, self).clean() + + +class CommentedDetailView(TemplateResponseMixin, SingleObjectMixin, View): + comment_page = None + + def is_comment_locked(self): + if self.request.user.has_perm("judge.override_comment_lock"): + return False + return ( + self.request.in_contest + and self.request.participation.contest.use_clarifications + ) + + @method_decorator(ratelimit(key="user", rate=settings.RL_COMMENT)) + @method_decorator(login_required) + def post(self, request, *args, **kwargs): + self.object = self.get_object() + if self.is_comment_locked(): + return HttpResponseForbidden() + + parent = request.POST.get("parent") + if parent: + try: + parent = int(parent) + except ValueError: + return HttpResponseNotFound() + else: + if not self.object.comments.filter(hidden=False, id=parent).exists(): + return HttpResponseNotFound() + + form = CommentForm(request, request.POST) + if form.is_valid(): + comment = form.save(commit=False) + comment.author = request.profile + comment.linked_object = self.object + + with revisions.create_revision(): + revisions.set_user(request.user) + revisions.set_comment(_("Posted comment")) + comment.save() + + # add notification for reply + comment_notif_link = _get_html_link_notification(comment) + if comment.parent and comment.parent.author != comment.author: + make_notification( + [comment.parent.author], "Reply", comment_notif_link, comment.author + ) + + # add notification for page authors + page_authors = comment.linked_object.authors.all() + make_notification( + page_authors, "Comment", comment_notif_link, comment.author + ) + + add_mention_notifications(comment) + get_visible_comment_count.dirty(comment.content_type, comment.object_id) + + return HttpResponseRedirect(comment.get_absolute_url()) + + context = self.get_context_data(object=self.object, comment_form=form) + return self.render_to_response(context) + + def get(self, request, *args, **kwargs): + target_comment = None + self.object = self.get_object() + if "comment-id" in request.GET: + try: + comment_id = int(request.GET["comment-id"]) + comment_obj = Comment.objects.get(id=comment_id) + except (Comment.DoesNotExist, ValueError): + raise Http404 + if comment_obj.linked_object != self.object: + raise Http404 + target_comment = comment_obj.get_root() + return self.render_to_response( + self.get_context_data( + object=self.object, + target_comment=target_comment, + comment_form=CommentForm(request, initial={"parent": None}), + ) + ) + + def _get_queryset(self, target_comment): + if target_comment: + queryset = target_comment.get_descendants(include_self=True) + queryset = queryset.filter(hidden=False) + else: + queryset = self.object.comments + queryset = queryset.filter(parent=None, hidden=False) + queryset = queryset.filter(hidden=False).annotate( + count_replies=Count("replies", distinct=True), + )[:DEFAULT_OFFSET] + + if self.request.user.is_authenticated: + profile = self.request.profile + queryset = queryset.annotate( + my_vote=FilteredRelation( + "votes", condition=Q(votes__voter_id=profile.id) + ), + ).annotate(vote_score=Coalesce(F("my_vote__score"), Value(0))) + + return queryset + + def get_context_data(self, target_comment=None, **kwargs): + context = super(CommentedDetailView, self).get_context_data(**kwargs) + queryset = self._get_queryset(target_comment) + comment_count = self.object.comments.filter(parent=None, hidden=False).count() + + content_type = ContentType.objects.get_for_model(self.object) + all_comment_count = get_visible_comment_count(content_type, self.object.pk) + + if target_comment != None: + context["target_comment"] = target_comment.id + else: + context["target_comment"] = -1 + + if self.request.user.is_authenticated: + context["is_new_user"] = ( + not self.request.user.is_staff + and not self.request.profile.submission_set.filter( + points=F("problem__points") + ).exists() + ) + + context["comment_lock"] = self.is_comment_locked() + context["comment_list"] = list(queryset) + context["has_comments"] = len(context["comment_list"]) > 0 + + context["vote_hide_threshold"] = settings.DMOJ_COMMENT_VOTE_HIDE_THRESHOLD + + if queryset.exists(): + context["comment_root_id"] = context["comment_list"][0].id + else: + context["comment_root_id"] = 0 + + context["comment_parent_none"] = 1 + + if target_comment != None: + context["offset"] = 0 + context["comment_more"] = comment_count - 1 + else: + context["offset"] = DEFAULT_OFFSET + context["comment_more"] = comment_count - DEFAULT_OFFSET + + context["limit"] = DEFAULT_OFFSET + context["comment_count"] = comment_count + context["profile"] = self.request.profile + context["all_comment_count"] = all_comment_count + + return context diff --git a/judge/views/contests.py b/judge/views/contests.py index ae21e40..6557fd4 100644 --- a/judge/views/contests.py +++ b/judge/views/contests.py @@ -27,7 +27,6 @@ from django.db.models import ( Value, When, ) -from django.db.models.signals import post_save, post_delete from django.dispatch import receiver from django.db.models.expressions import CombinedExpression from django.http import ( @@ -56,7 +55,7 @@ from django.views.generic.detail import ( ) from judge import event_poster as event -from judge.comments import CommentedDetailView +from judge.views.comment import CommentedDetailView from judge.forms import ContestCloneForm from judge.models import ( Contest, @@ -70,6 +69,8 @@ from judge.models import ( Submission, ContestProblemClarification, ContestsSummary, + OfficialContestCategory, + OfficialContestLocation, ) from judge.tasks import run_moss from judge.utils.celery import redirect_to_task_status @@ -107,6 +108,7 @@ __all__ = [ "base_contest_ranking_list", "ContestClarificationView", "update_contest_mode", + "OfficialContestList", ] @@ -130,8 +132,17 @@ def _find_contest(request, key): class ContestListMixin(object): + official = False + def get_queryset(self): - return Contest.get_visible_contests(self.request.user) + q = Contest.get_visible_contests(self.request.user) + if self.official: + q = q.filter(official__isnull=False).select_related( + "official", "official__category", "official__location" + ) + else: + q = q.filter(official__isnull=True) + return q class ContestList( @@ -141,119 +152,190 @@ class ContestList( paginate_by = 10 template_name = "contest/list.html" title = gettext_lazy("Contests") - context_object_name = "past_contests" all_sorts = frozenset(("name", "user_count", "start_time")) default_desc = frozenset(("name", "user_count")) - default_sort = "-start_time" + context_object_name = "contests" + + def get_default_sort_order(self, request): + if request.GET.get("contest") and settings.ENABLE_FTS: + return "-relevance" + if self.current_tab == "future": + return "start_time" + return "-start_time" @cached_property def _now(self): return timezone.now() - def get(self, request, *args, **kwargs): - self.contest_query = None - self.org_query = [] - self.show_orgs = 0 - if request.GET.get("show_orgs"): - self.show_orgs = 1 + def GET_with_session(self, request, key): + if not request.GET.get(key): + return request.session.get(key, False) + return request.GET.get(key, None) == "1" - if "orgs" in self.request.GET and self.request.profile: + def setup_contest_list(self, request): + self.contest_query = request.GET.get("contest", "") + + self.hide_organization_contests = 0 + if self.GET_with_session(request, "hide_organization_contests"): + self.hide_organization_contests = 1 + + self.org_query = [] + if request.GET.get("orgs") and request.profile: try: self.org_query = list(map(int, request.GET.getlist("orgs"))) - if not self.request.user.is_superuser: + if not request.user.is_superuser: self.org_query = [ i for i in self.org_query if i - in self.request.profile.organizations.values_list( - "id", flat=True + in set( + request.profile.organizations.values_list("id", flat=True) ) ] except ValueError: pass + def get(self, request, *args, **kwargs): + default_tab = "active" + if not self.request.user.is_authenticated: + default_tab = "current" + self.current_tab = self.request.GET.get("tab", default_tab) + + self.setup_contest_list(request) + return super(ContestList, self).get(request, *args, **kwargs) + def post(self, request, *args, **kwargs): + to_update = ("hide_organization_contests",) + for key in to_update: + if key in request.GET: + val = request.GET.get(key) == "1" + request.session[key] = val + else: + request.session[key] = False + return HttpResponseRedirect(request.get_full_path()) + + def extra_queryset_filters(self, queryset): + return queryset + def _get_queryset(self): queryset = ( super(ContestList, self) .get_queryset() - .prefetch_related("tags", "organizations", "authors", "curators", "testers") + .prefetch_related("tags", "organizations") ) - if "contest" in self.request.GET: - self.contest_query = query = " ".join( - self.request.GET.getlist("contest") - ).strip() - if query: - substr_queryset = queryset.filter( - Q(key__icontains=query) | Q(name__icontains=query) + if self.contest_query: + substr_queryset = queryset.filter( + Q(key__icontains=self.contest_query) + | Q(name__icontains=self.contest_query) + ) + if settings.ENABLE_FTS: + queryset = ( + queryset.search(self.contest_query).extra(order_by=["-relevance"]) + | substr_queryset ) - if settings.ENABLE_FTS: - queryset = ( - queryset.search(query).extra(order_by=["-relevance"]) - | substr_queryset - ) - else: - queryset = substr_queryset + else: + queryset = substr_queryset if not self.org_query and self.request.organization: self.org_query = [self.request.organization.id] - if self.show_orgs: + if self.hide_organization_contests: queryset = queryset.filter(organizations=None) if self.org_query: queryset = queryset.filter(organizations__in=self.org_query) - + queryset = self.extra_queryset_filters(queryset) return queryset - def get_queryset(self): + def _get_past_contests_queryset(self): return ( self._get_queryset() - .order_by(self.order, "key") .filter(end_time__lt=self._now) + .order_by(self.order, "key") ) + def _active_participations(self): + return ContestParticipation.objects.filter( + virtual=0, + user=self.request.profile, + contest__start_time__lte=self._now, + contest__end_time__gte=self._now, + ) + + @cached_property + def _active_contests_ids(self): + return [ + participation.contest_id + for participation in self._active_participations().select_related("contest") + if not participation.ended + ] + + def _get_current_contests_queryset(self): + return ( + self._get_queryset() + .exclude(id__in=self._active_contests_ids) + .filter(start_time__lte=self._now, end_time__gte=self._now) + .order_by(self.order, "key") + ) + + def _get_future_contests_queryset(self): + return ( + self._get_queryset() + .filter(start_time__gt=self._now) + .order_by(self.order, "key") + ) + + def _get_active_participations_queryset(self): + active_contests = ( + self._get_queryset() + .filter(id__in=self._active_contests_ids) + .order_by(self.order, "key") + ) + ordered_ids = list(active_contests.values_list("id", flat=True)) + + participations = self._active_participations().filter( + contest_id__in=ordered_ids + ) + participations = sorted( + participations, key=lambda p: ordered_ids.index(p.contest_id) + ) + return participations + + def get_queryset(self): + if self.current_tab == "past": + return self._get_past_contests_queryset() + elif self.current_tab == "current": + return self._get_current_contests_queryset() + elif self.current_tab == "future": + return self._get_future_contests_queryset() + else: # Default to active + return self._get_active_participations_queryset() + def get_context_data(self, **kwargs): context = super(ContestList, self).get_context_data(**kwargs) - present, active, future = [], [], [] - for contest in self._get_queryset().exclude(end_time__lt=self._now): - if contest.start_time > self._now: - future.append(contest) - else: - present.append(contest) - if self.request.user.is_authenticated: - for participation in ( - ContestParticipation.objects.filter( - virtual=0, user=self.request.profile, contest_id__in=present - ) - .select_related("contest") - .prefetch_related( - "contest__authors", "contest__curators", "contest__testers" - ) - .annotate(key=F("contest__key")) - ): - if not participation.ended: - active.append(participation) - present.remove(participation.contest) + context["current_tab"] = self.current_tab + + context["current_count"] = self._get_current_contests_queryset().count() + context["future_count"] = self._get_future_contests_queryset().count() + context["active_count"] = len(self._get_active_participations_queryset()) - if not ("contest" in self.request.GET and settings.ENABLE_FTS): - active.sort(key=attrgetter("end_time", "key")) - present.sort(key=attrgetter("end_time", "key")) - future.sort(key=attrgetter("start_time")) - context["active_participations"] = active - context["current_contests"] = present - context["future_contests"] = future context["now"] = self._now context["first_page_href"] = "." context["contest_query"] = self.contest_query context["org_query"] = self.org_query - context["show_orgs"] = int(self.show_orgs) + context["hide_organization_contests"] = int(self.hide_organization_contests) if self.request.profile: - if self.request.user.is_superuser: - context["organizations"] = Organization.objects.all() - else: - context["organizations"] = self.request.profile.organizations.all() + context["organizations"] = self.request.profile.organizations.all() context["page_type"] = "list" + context["selected_order"] = self.request.GET.get("order") + context["all_sort_options"] = [ + ("start_time", _("Start time (asc.)")), + ("-start_time", _("Start time (desc.)")), + ("name", _("Name (asc.)")), + ("-name", _("Name (desc.)")), + ("user_count", _("User count (asc.)")), + ("-user_count", _("User count (desc.)")), + ] context.update(self.get_sort_context()) context.update(self.get_sort_paginate_context()) return context @@ -346,6 +428,19 @@ class ContestMixin(object): return context + def contest_access_check(self, contest): + try: + contest.access_check(self.request.user) + except Contest.PrivateContest: + raise PrivateContestError( + contest.name, + contest.is_private, + contest.is_organization_private, + contest.organizations.all(), + ) + except Contest.Inaccessible: + raise Http404() + def get_object(self, queryset=None): contest = super(ContestMixin, self).get_object(queryset) profile = self.request.profile @@ -361,19 +456,9 @@ class ContestMixin(object): if self.should_bypass_access_check(contest): return contest - try: - contest.access_check(self.request.user) - except Contest.PrivateContest: - raise PrivateContestError( - contest.name, - contest.is_private, - contest.is_organization_private, - contest.organizations.all(), - ) - except Contest.Inaccessible: - raise Http404() - else: - return contest + self.contest_access_check(contest) + + return contest def dispatch(self, request, *args, **kwargs): try: @@ -449,6 +534,10 @@ class ContestDetail( ) context["editable_organizations"] = self.get_editable_organizations() context["is_clonable"] = is_contest_clonable(self.request, self.object) + if self.request.in_contest: + context["current_contest"] = self.request.participation.contest + else: + context["current_contest"] = None return context @@ -459,7 +548,12 @@ def is_contest_clonable(request, contest): return False if request.user.has_perm("judge.clone_contest"): return True - if contest.ended: + if contest.access_code and not contest.is_editable_by(request.user): + return False + if ( + contest.end_time is not None + and contest.end_time + timedelta(days=1) < contest._now + ): return True return False @@ -498,6 +592,7 @@ class ContestClone(ContestMixin, TitleMixin, SingleObjectFormView): contest.is_visible = False contest.user_count = 0 contest.key = form.cleaned_data["key"] + contest.is_rated = False contest.save() contest.tags.set(tags) @@ -562,12 +657,7 @@ class ContestJoin(LoginRequiredMixin, ContestMixin, BaseDetailView): profile = request.profile if profile.current_contest is not None: - return generic_message( - request, - _("Already in contest"), - _('You are already in a contest: "%s".') - % profile.current_contest.contest.name, - ) + profile.remove_contest() if ( not request.user.is_superuser @@ -646,6 +736,7 @@ class ContestJoin(LoginRequiredMixin, ContestMixin, BaseDetailView): profile.save() contest._updating_stats_only = True contest.update_user_count() + request.session["contest_mode"] = True return HttpResponseRedirect(reverse("problem_list")) def ask_for_access_code(self, form=None): @@ -882,7 +973,10 @@ class ContestStats(TitleMixin, ContestMixin, DetailView): if (point == None) or (problem_code not in codes): continue problem_idx = codes.index(problem_code) - bin_idx = math.floor(point * self.POINT_BIN / max_point) + if max_point > 0: + bin_idx = math.floor(point * self.POINT_BIN / max_point) + else: + bin_idx = 0 bin_idx = max(min(bin_idx, self.POINT_BIN), 0) counter[problem_idx][bin_idx] += count for i in range(num_problems): @@ -936,7 +1030,7 @@ class ContestStats(TitleMixin, ContestMixin, DetailView): ContestRankingProfile = namedtuple( "ContestRankingProfile", - "id user css_class username points cumtime tiebreaker organization participation " + "id user username points cumtime tiebreaker participation " "participation_rating problem_cells result_cell", ) @@ -956,13 +1050,11 @@ def make_contest_ranking_profile( user = participation.user return ContestRankingProfile( id=user.id, - user=user.user, - css_class=user.css_class, + user=user, username=user.username, points=points, cumtime=cumtime, tiebreaker=participation.tiebreaker, - organization=user.organization, participation_rating=participation.rating.rating if hasattr(participation, "rating") else None, @@ -979,45 +1071,60 @@ def make_contest_ranking_profile( ) -def base_contest_ranking_list(contest, problems, queryset, show_final=False): - return [ - make_contest_ranking_profile(contest, participation, problems, show_final) - for participation in queryset.select_related("user__user", "rating").defer( - "user__about", "user__organizations__about" - ) +def base_contest_ranking_list( + contest, problems, queryset, show_final=False, extra_participation=None +): + participation_fields = [ + field.name + for field in ContestParticipation._meta.get_fields() + if field.concrete and not field.many_to_many + ] + fields_to_fetch = participation_fields + [ + "user__id", + "rating__rating", ] + res = [ + make_contest_ranking_profile(contest, participation, problems, show_final) + for participation in queryset.select_related("user", "rating").only( + *fields_to_fetch + ) + ] + Profile.prefetch_profile_cache([p.id for p in res]) + return res -def contest_ranking_list(contest, problems, queryset=None, show_final=False): - if not queryset: + +def contest_ranking_list( + contest, problems, queryset=None, show_final=False, extra_participation=None +): + if queryset is None: queryset = contest.users.filter(virtual=0) - if not show_final: - return base_contest_ranking_list( - contest, - problems, - queryset.prefetch_related("user__organizations") - .extra(select={"round_score": "round(score, 6)"}) - .order_by("is_disqualified", "-round_score", "cumtime", "tiebreaker"), - show_final, + if extra_participation and extra_participation.virtual: + queryset = queryset | contest.users.filter(id=extra_participation.id) + + if show_final: + queryset = queryset.order_by( + "is_disqualified", "-score_final", "cumtime_final", "tiebreaker" ) else: - return base_contest_ranking_list( - contest, - problems, - queryset.prefetch_related("user__organizations") - .extra(select={"round_score": "round(score_final, 6)"}) - .order_by("is_disqualified", "-round_score", "cumtime_final", "tiebreaker"), - show_final, + queryset = queryset.order_by( + "is_disqualified", "-score", "cumtime", "tiebreaker" ) + return base_contest_ranking_list( + contest, + problems, + queryset, + show_final, + ) + def get_contest_ranking_list( request, contest, participation=None, ranking_list=contest_ranking_list, - show_current_virtual=False, ranker=ranker, show_final=False, ): @@ -1027,21 +1134,17 @@ def get_contest_ranking_list( .order_by("order") ) - users = ranker( - ranking_list(contest, problems, show_final=show_final), - key=attrgetter("points", "cumtime", "tiebreaker"), + if participation is None: + participation = _get_current_virtual_participation(request, contest) + + ranking_list_result = ranking_list( + contest, problems, show_final=show_final, extra_participation=participation ) - if show_current_virtual: - if participation is None and request.user.is_authenticated: - participation = request.profile.current_contest - if participation is None or participation.contest_id != contest.id: - participation = None - if participation is not None and participation.virtual: - users = chain( - [("-", make_contest_ranking_profile(contest, participation, problems))], - users, - ) + users = ranker( + ranking_list_result, + key=attrgetter("points", "cumtime", "tiebreaker"), + ) return users, problems @@ -1061,6 +1164,9 @@ def contest_ranking_ajax(request, contest, participation=None): ): raise Http404() + if participation is None: + participation = _get_current_virtual_participation(request, contest) + queryset = contest.users.filter(virtual__gte=0) if request.GET.get("friend") == "true" and request.profile: friends = request.profile.get_friends() @@ -1072,7 +1178,9 @@ def contest_ranking_ajax(request, contest, participation=None): request, contest, participation, - ranking_list=partial(contest_ranking_list, queryset=queryset), + ranking_list=partial( + contest_ranking_list, queryset=queryset, extra_participation=participation + ), show_final=show_final, ) return render( @@ -1088,6 +1196,19 @@ def contest_ranking_ajax(request, contest, participation=None): ) +def _get_current_virtual_participation(request, contest): + # Return None if not eligible + if not request.user.is_authenticated: + return None + + participation = request.profile.current_contest + + if participation is None or participation.contest_id != contest.id: + return None + + return participation + + class ContestRankingBase(ContestMixin, TitleMixin, DetailView): template_name = "contest/ranking.html" page_type = None @@ -1182,7 +1303,6 @@ class ContestParticipationList(LoginRequiredMixin, ContestRankingBase): return get_contest_ranking_list( self.request, self.object, - show_current_virtual=False, ranking_list=partial(base_contest_ranking_list, queryset=queryset), ranker=lambda users, key: ( (user.participation.virtual or live_link, user) for user in users @@ -1418,30 +1538,43 @@ def update_contest_mode(request): ContestsSummaryData = namedtuple( "ContestsSummaryData", - "user points point_contests css_class", + "username first_name last_name points point_contests css_class", ) -def contests_summary_view(request, key): - try: - contests_summary = ContestsSummary.objects.get(key=key) - except: - raise Http404() +class ContestsSummaryView(DiggPaginatorMixin, ListView): + paginate_by = 50 + template_name = "contest/contests_summary.html" - cache_key = "csv:" + key - context = cache.get(cache_key) - if context: - return render(request, "contest/contests_summary.html", context) + def get(self, *args, **kwargs): + try: + self.contests_summary = ContestsSummary.objects.get(key=kwargs["key"]) + except: + raise Http404() + return super().get(*args, **kwargs) - scores_system = contests_summary.scores - contests = contests_summary.contests.all() + def get_queryset(self): + total_rank = self.contests_summary.results + return total_rank + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context["contests"] = self.contests_summary.contests.all() + context["title"] = _("Contests") + context["first_page_href"] = "." + return context + + +def recalculate_contest_summary_result(contest_summary): + scores_system = contest_summary.scores + contests = contest_summary.contests.all() total_points = defaultdict(int) result_per_contest = defaultdict(lambda: [(0, 0)] * len(contests)) user_css_class = {} for i in range(len(contests)): contest = contests[i] - users, problems = get_contest_ranking_list(request, contest) + users, problems = get_contest_ranking_list(None, contest) for rank, user in users: curr_score = 0 if rank - 1 < len(scores_system): @@ -1452,7 +1585,9 @@ def contests_summary_view(request, key): sorted_total_points = [ ContestsSummaryData( - user=user, + username=user.username, + first_name=user.first_name, + last_name=user.last_name, points=total_points[user], point_contests=result_per_contest[user], css_class=user_css_class[user], @@ -1462,17 +1597,68 @@ def contests_summary_view(request, key): sorted_total_points.sort(key=lambda x: x.points, reverse=True) total_rank = ranker(sorted_total_points) - - context = { - "total_rank": list(total_rank), - "title": _("Contests Summary"), - "contests": contests, - } - cache.set(cache_key, context) - - return render(request, "contest/contests_summary.html", context) + return [(rank, item._asdict()) for rank, item in total_rank] -@receiver([post_save, post_delete], sender=ContestsSummary) -def clear_cache(sender, instance, **kwargs): - cache.delete("csv:" + instance.key) +class OfficialContestList(ContestList): + official = True + template_name = "contest/official_list.html" + + def setup_contest_list(self, request): + self.contest_query = request.GET.get("contest", "") + self.org_query = [] + self.hide_organization_contests = False + + self.selected_categories = [] + self.selected_locations = [] + self.year_from = None + self.year_to = None + + if "category" in request.GET: + try: + self.selected_categories = list( + map(int, request.GET.getlist("category")) + ) + except ValueError: + pass + if "location" in request.GET: + try: + self.selected_locations = list( + map(int, request.GET.getlist("location")) + ) + except ValueError: + pass + if "year_from" in request.GET: + try: + self.year_from = int(request.GET.get("year_from")) + except ValueError: + pass + if "year_to" in request.GET: + try: + self.year_to = int(request.GET.get("year_to")) + except ValueError: + pass + + def extra_queryset_filters(self, queryset): + if self.selected_categories: + queryset = queryset.filter(official__category__in=self.selected_categories) + if self.selected_locations: + queryset = queryset.filter(official__location__in=self.selected_locations) + if self.year_from: + queryset = queryset.filter(official__year__gte=self.year_from) + if self.year_to: + queryset = queryset.filter(official__year__lte=self.year_to) + return queryset + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context["page_type"] = "official" + context["is_official"] = True + context["categories"] = OfficialContestCategory.objects.all() + context["locations"] = OfficialContestLocation.objects.all() + context["selected_categories"] = self.selected_categories + context["selected_locations"] = self.selected_locations + context["year_from"] = self.year_from + context["year_to"] = self.year_to + + return context diff --git a/judge/views/course.py b/judge/views/course.py index d8582af..8ab5c92 100644 --- a/judge/views/course.py +++ b/judge/views/course.py @@ -1,24 +1,68 @@ +from django.utils.html import mark_safe from django.db import models -from judge.models.course import Course -from django.views.generic import ListView +from django.views.generic import ListView, DetailView, View +from django.utils.translation import gettext, gettext_lazy as _ +from django.http import Http404 +from django import forms +from django.forms import inlineformset_factory +from django.views.generic.edit import FormView +from django.shortcuts import get_object_or_404 +from django.urls import reverse_lazy +from django.db.models import Max, F +from django.core.exceptions import ObjectDoesNotExist -__all__ = [ - "CourseList", - "CourseDetail", - "CourseResource", - "CourseResourceDetail", - "CourseStudentResults", - "CourseEdit", - "CourseResourceDetailEdit", - "CourseResourceEdit", -] - -course_directory_file = "" +from judge.models import Course, CourseLesson, Submission, Profile, CourseRole +from judge.models.course import RoleInCourse +from judge.widgets import HeavyPreviewPageDownWidget, HeavySelect2MultipleWidget +from judge.utils.problems import ( + user_attempted_ids, + user_completed_ids, +) -class CourseListMixin(object): - def get_queryset(self): - return Course.objects.filter(is_open="true").values() +def max_case_points_per_problem(profile, problems): + # return a dict {problem_id: {case_points, case_total}} + q = ( + Submission.objects.filter(user=profile, problem__in=problems) + .values("problem") + .annotate(case_points=Max("case_points"), case_total=F("case_total")) + .order_by("problem") + ) + res = {} + for problem in q: + res[problem["problem"]] = problem + return res + + +def calculate_lessons_progress(profile, lessons): + res = {} + total_achieved_points = 0 + total_points = 0 + for lesson in lessons: + problems = list(lesson.problems.all()) + if not problems: + res[lesson.id] = {"achieved_points": 0, "percentage": 0} + total_points += lesson.points + continue + problem_points = max_case_points_per_problem(profile, problems) + num_problems = len(problems) + percentage = 0 + for val in problem_points.values(): + score = val["case_points"] / val["case_total"] + percentage += score / num_problems + res[lesson.id] = { + "achieved_points": percentage * lesson.points, + "percentage": percentage * 100, + } + total_achieved_points += percentage * lesson.points + total_points += lesson.points + + res["total"] = { + "achieved_points": total_achieved_points, + "total_points": total_points, + "percentage": total_achieved_points / total_points * 100 if total_points else 0, + } + return res class CourseList(ListView): @@ -28,12 +72,179 @@ class CourseList(ListView): def get_context_data(self, **kwargs): context = super(CourseList, self).get_context_data(**kwargs) - available, enrolling = [], [] - for course in Course.objects.filter(is_public=True).filter(is_open=True): - if Course.is_accessible_by(course, self.request.profile): - enrolling.append(course) - else: - available.append(course) - context["available"] = available - context["enrolling"] = enrolling + context["courses"] = Course.get_accessible_courses(self.request.profile) + context["title"] = _("Courses") + context["page_type"] = "list" + return context + + +class CourseDetailMixin(object): + def dispatch(self, request, *args, **kwargs): + self.course = get_object_or_404(Course, slug=self.kwargs["slug"]) + if not Course.is_accessible_by(self.course, self.request.profile): + raise Http404() + self.is_editable = Course.is_editable_by(self.course, self.request.profile) + return super(CourseDetailMixin, self).dispatch(request, *args, **kwargs) + + def get_context_data(self, **kwargs): + context = super(CourseDetailMixin, self).get_context_data(**kwargs) + context["course"] = self.course + context["is_editable"] = self.is_editable + return context + + +class CourseEditableMixin(CourseDetailMixin): + def dispatch(self, request, *args, **kwargs): + res = super(CourseEditableMixin, self).dispatch(request, *args, **kwargs) + if not self.is_editable: + raise Http404() + return res + + +class CourseDetail(CourseDetailMixin, DetailView): + model = Course + template_name = "course/course.html" + + def get_object(self): + return self.course + + def get_context_data(self, **kwargs): + context = super(CourseDetail, self).get_context_data(**kwargs) + lessons = self.course.lessons.prefetch_related("problems").all() + context["title"] = self.course.name + context["page_type"] = "home" + context["lessons"] = lessons + context["lesson_progress"] = calculate_lessons_progress( + self.request.profile, lessons + ) + return context + + +class CourseLessonDetail(CourseDetailMixin, DetailView): + model = CourseLesson + template_name = "course/lesson.html" + + def get_object(self): + try: + self.lesson = CourseLesson.objects.get( + course=self.course, id=self.kwargs["id"] + ) + return self.lesson + except ObjectDoesNotExist: + raise Http404() + + def get_profile(self): + username = self.request.GET.get("user") + if not username: + return self.request.profile + + is_editable = Course.is_editable_by(self.course, self.request.profile) + if not is_editable: + raise Http404() + + try: + profile = Profile.objects.get(user__username=username) + is_student = profile.course_roles.filter( + role=RoleInCourse.STUDENT, course=self.course + ).exists() + if not is_student: + raise Http404() + return profile + except ObjectDoesNotExist: + raise Http404() + + def get_context_data(self, **kwargs): + context = super(CourseLessonDetail, self).get_context_data(**kwargs) + profile = self.get_profile() + context["title"] = self.lesson.title + context["lesson"] = self.lesson + context["completed_problem_ids"] = user_completed_ids(profile) + context["attempted_problems"] = user_attempted_ids(profile) + context["problem_points"] = max_case_points_per_problem( + profile, self.lesson.problems.all() + ) + return context + + +class CourseLessonForm(forms.ModelForm): + class Meta: + model = CourseLesson + fields = ["order", "title", "points", "content", "problems"] + widgets = { + "title": forms.TextInput(), + "content": HeavyPreviewPageDownWidget(preview=reverse_lazy("blog_preview")), + "problems": HeavySelect2MultipleWidget(data_view="problem_select2"), + } + + +CourseLessonFormSet = inlineformset_factory( + Course, CourseLesson, form=CourseLessonForm, extra=1, can_delete=True +) + + +class EditCourseLessonsView(CourseEditableMixin, FormView): + template_name = "course/edit_lesson.html" + form_class = CourseLessonFormSet + + def get_context_data(self, **kwargs): + context = super(EditCourseLessonsView, self).get_context_data(**kwargs) + if self.request.method == "POST": + context["formset"] = self.form_class( + self.request.POST, self.request.FILES, instance=self.course + ) + else: + context["formset"] = self.form_class( + instance=self.course, queryset=self.course.lessons.order_by("order") + ) + context["title"] = _("Edit lessons for %(course_name)s") % { + "course_name": self.course.name + } + context["content_title"] = mark_safe( + _("Edit lessons for %(course_name)s") + % { + "course_name": self.course.name, + "url": self.course.get_absolute_url(), + } + ) + context["page_type"] = "edit_lesson" + + return context + + def post(self, request, *args, **kwargs): + formset = self.form_class(request.POST, instance=self.course) + if formset.is_valid(): + formset.save() + return self.form_valid(formset) + else: + return self.form_invalid(formset) + + def get_success_url(self): + return self.request.path + + +class CourseStudentResults(CourseEditableMixin, DetailView): + model = Course + template_name = "course/grades.html" + + def get_object(self): + return self.course + + def get_grades(self): + students = self.course.get_students() + students.sort(key=lambda u: u.username.lower()) + lessons = self.course.lessons.prefetch_related("problems").all() + grades = {s: calculate_lessons_progress(s, lessons) for s in students} + return grades + + def get_context_data(self, **kwargs): + context = super(CourseStudentResults, self).get_context_data(**kwargs) + context["title"] = mark_safe( + _("Grades in %(course_name)s") + % { + "course_name": self.course.name, + "url": self.course.get_absolute_url(), + } + ) + context["page_type"] = "grades" + context["grades"] = self.get_grades() return context diff --git a/judge/views/custom_file_upload.py b/judge/views/custom_file_upload.py new file mode 100644 index 0000000..cdc4f8e --- /dev/null +++ b/judge/views/custom_file_upload.py @@ -0,0 +1,43 @@ +from django.shortcuts import render +from django.core.files.storage import FileSystemStorage +from django import forms +from django.utils.translation import gettext as _ +from django.conf import settings +from django.http import Http404 + +import os +import secrets +from urllib.parse import urljoin + +MEDIA_PATH = "uploads" + + +class FileUploadForm(forms.Form): + file = forms.FileField() + + +def file_upload(request): + if not request.user.is_superuser: + raise Http404() + file_url = None + if request.method == "POST": + form = FileUploadForm(request.POST, request.FILES) + if form.is_valid(): + file = request.FILES["file"] + random_str = secrets.token_urlsafe(5) + file_name, file_extension = os.path.splitext(file.name) + new_filename = f"{file_name}_{random_str}{file_extension}" + + fs = FileSystemStorage( + location=os.path.join(settings.MEDIA_ROOT, MEDIA_PATH) + ) + filename = fs.save(new_filename, file) + file_url = urljoin(settings.MEDIA_URL, os.path.join(MEDIA_PATH, filename)) + else: + form = FileUploadForm() + + return render( + request, + "custom_file_upload.html", + {"form": form, "file_url": file_url, "title": _("File Upload")}, + ) diff --git a/judge/views/notification.py b/judge/views/notification.py index bb79317..ee720c1 100644 --- a/judge/views/notification.py +++ b/judge/views/notification.py @@ -2,24 +2,27 @@ from django.contrib.auth.decorators import login_required from django.views.generic import ListView from django.utils.translation import ugettext as _ from django.utils.timezone import now +from django.http import Http404 from judge.models import Profile, Notification, NotificationProfile from judge.models.notification import unseen_notifications_count +from judge.utils.infinite_paginator import InfinitePaginationMixin __all__ = ["NotificationList"] -class NotificationList(ListView): +class NotificationList(InfinitePaginationMixin, ListView): model = Notification context_object_name = "notifications" template_name = "notification/list.html" + paginate_by = 50 def get_queryset(self): self.unseen_cnt = unseen_notifications_count(self.request.profile) self.queryset = Notification.objects.filter( owner=self.request.profile - ).order_by("-id")[:100] + ).order_by("-id") return self.queryset @@ -27,11 +30,13 @@ class NotificationList(ListView): context = super().get_context_data(**kwargs) context["unseen_count"] = self.unseen_cnt context["title"] = _("Notifications (%d unseen)") % context["unseen_count"] - context["has_notifications"] = self.queryset.exists() + context["first_page_href"] = "." return context def get(self, request, *args, **kwargs): ret = super().get(request, *args, **kwargs) + if not request.user.is_authenticated: + raise Http404() NotificationProfile.objects.filter(user=request.profile).update(unread_count=0) unseen_notifications_count.dirty(self.request.profile) return ret diff --git a/judge/views/organization.py b/judge/views/organization.py index eff02d4..54d6adb 100644 --- a/judge/views/organization.py +++ b/judge/views/organization.py @@ -71,7 +71,7 @@ from judge.utils.views import ( from judge.utils.problems import user_attempted_ids, user_completed_ids from judge.views.problem import ProblemList from judge.views.contests import ContestList -from judge.views.submission import AllSubmissions, SubmissionsListBase +from judge.views.submission import SubmissionsListBase from judge.views.feed import FeedView from judge.tasks import rescore_contest @@ -104,15 +104,15 @@ class OrganizationBase(object): def is_member(self, org=None): if org is None: org = self.object - return ( - self.request.profile in org if self.request.user.is_authenticated else False - ) + if self.request.profile: + return org.is_member(self.request.profile) + return False def is_admin(self, org=None): if org is None: org = self.object if self.request.profile: - return org.admins.filter(id=self.request.profile.id).exists() + return org.is_admin(self.request.profile) return False def can_access(self, org): @@ -131,6 +131,13 @@ class OrganizationMixin(OrganizationBase): context["can_edit"] = self.can_edit_organization(self.organization) context["organization"] = self.organization context["logo_override_image"] = self.organization.logo_override_image + context["organization_subdomain"] = ( + ("http" if settings.DMOJ_SSL == 0 else "https") + + "://" + + self.organization.slug + + "." + + get_current_site(self.request).domain + ) if "organizations" in context: context.pop("organizations") return context @@ -215,41 +222,103 @@ class OrganizationHomeView(OrganizationMixin): organizations=self.organization, authors=self.request.profile, ).count() - context["top_rated"] = self.organization.members.filter( - is_unlisted=False - ).order_by("-rating")[:10] - context["top_scorer"] = self.organization.members.filter( - is_unlisted=False - ).order_by("-performance_points")[:10] + context["top_rated"] = ( + self.organization.members.filter(is_unlisted=False) + .order_by("-rating") + .only("id", "rating")[:10] + ) + context["top_scorer"] = ( + self.organization.members.filter(is_unlisted=False) + .order_by("-performance_points") + .only("id", "performance_points")[:10] + ) + Profile.prefetch_profile_cache([p.id for p in context["top_rated"]]) + Profile.prefetch_profile_cache([p.id for p in context["top_scorer"]]) + return context -class OrganizationList(TitleMixin, ListView, OrganizationBase): +class OrganizationList( + QueryStringSortMixin, DiggPaginatorMixin, TitleMixin, ListView, OrganizationBase +): model = Organization context_object_name = "organizations" template_name = "organization/list.html" title = gettext_lazy("Groups") + paginate_by = 12 + all_sorts = frozenset(("name", "member_count")) + default_desc = frozenset(("name", "member_count")) - def get_queryset(self): - return ( + def get_default_sort_order(self, request): + return "-member_count" + + def get(self, request, *args, **kwargs): + default_tab = "mine" + if not self.request.user.is_authenticated: + default_tab = "public" + self.current_tab = self.request.GET.get("tab", default_tab) + self.organization_query = request.GET.get("organization", "") + + return super(OrganizationList, self).get(request, *args, **kwargs) + + def _get_queryset(self): + queryset = ( super(OrganizationList, self) .get_queryset() .annotate(member_count=Count("member")) + .defer("about") ) + if self.organization_query: + queryset = queryset.filter( + Q(slug__icontains=self.organization_query) + | Q(name__icontains=self.organization_query) + | Q(short_name__icontains=self.organization_query) + ) + return queryset + + def get_queryset(self): + organization_list = self._get_queryset() + + my_organizations = [] + if self.request.profile: + my_organizations = organization_list.filter( + id__in=self.request.profile.organizations.values("id") + ) + + if self.current_tab == "public": + queryset = organization_list.exclude(id__in=my_organizations).filter( + is_open=True + ) + elif self.current_tab == "private": + queryset = organization_list.exclude(id__in=my_organizations).filter( + is_open=False + ) + else: + queryset = my_organizations + + if queryset: + queryset = queryset.order_by(self.order) + return queryset + def get_context_data(self, **kwargs): context = super(OrganizationList, self).get_context_data(**kwargs) - context["my_organizations"] = [] - context["page_type"] = "organizations" - if self.request.profile: - context["my_organizations"] = context["organizations"].filter( - id__in=self.request.profile.organizations.values("id") - ) - other_organizations = context["organizations"].exclude( - id__in=context["my_organizations"] - ) - context["open_organizations"] = other_organizations.filter(is_open=True) - context["private_organizations"] = other_organizations.filter(is_open=False) + + context["first_page_href"] = "." + context["current_tab"] = self.current_tab + context["page_type"] = self.current_tab + context["organization_query"] = self.organization_query + context["selected_order"] = self.request.GET.get("order") + context["all_sort_options"] = [ + ("name", _("Name (asc.)")), + ("-name", _("Name (desc.)")), + ("member_count", _("Member count (asc.)")), + ("-member_count", _("Member count (desc.)")), + ] + + context.update(self.get_sort_context()) + context.update(self.get_sort_paginate_context()) + return context @@ -274,14 +343,6 @@ class OrganizationHome(OrganizationHomeView, FeedView): def get_context_data(self, **kwargs): context = super(OrganizationHome, self).get_context_data(**kwargs) context["title"] = self.organization.name - http = "http" if settings.DMOJ_SSL == 0 else "https" - context["organization_subdomain"] = ( - http - + "://" - + self.organization.slug - + "." - + get_current_site(self.request).domain - ) now = timezone.now() visible_contests = ( @@ -407,6 +468,7 @@ class OrganizationContests( def get_queryset(self): self.org_query = [self.organization_id] + self.hide_organization_contests = False return super().get_queryset() def set_editable_contest(self, contest): @@ -417,21 +479,20 @@ class OrganizationContests( def get_context_data(self, **kwargs): context = super(OrganizationContests, self).get_context_data(**kwargs) context["page_type"] = "contests" - context["hide_contest_orgs"] = True context.pop("organizations") - context["create_url"] = reverse( - "organization_contest_add", - args=[self.organization.id, self.organization.slug], - ) - for participation in context["active_participations"]: - self.set_editable_contest(participation.contest) - for contest in context["past_contests"]: - self.set_editable_contest(contest) - for contest in context["current_contests"]: - self.set_editable_contest(contest) - for contest in context["future_contests"]: - self.set_editable_contest(contest) + if self.can_edit_organization(self.organization): + context["create_url"] = reverse( + "organization_contest_add", + args=[self.organization.id, self.organization.slug], + ) + + if self.current_tab == "active": + for participation in context["contests"]: + self.set_editable_contest(participation.contest) + else: + for contest in context["contests"]: + self.set_editable_contest(contest) return context @@ -471,6 +532,9 @@ class OrganizationSubmissions( ), ) + def get_title(self): + return _("Submissions in") + f" {self.organization}" + class OrganizationMembershipChange( LoginRequiredMixin, OrganizationMixin, SingleObjectMixin, View @@ -516,6 +580,7 @@ class JoinOrganization(OrganizationMembershipChange): profile.organizations.add(org) profile.save() cache.delete(make_template_fragment_key("org_member_count", (org.id,))) + Organization.is_member.dirty(org, profile) class LeaveOrganization(OrganizationMembershipChange): @@ -528,6 +593,7 @@ class LeaveOrganization(OrganizationMembershipChange): ) profile.organizations.remove(org) cache.delete(make_template_fragment_key("org_member_count", (org.id,))) + Organization.is_member.dirty(org, profile) class OrganizationRequestForm(Form): @@ -737,7 +803,7 @@ class AddOrganizationMember( def form_valid(self, form): new_users = form.cleaned_data["new_users"] self.object.members.add(*new_users) - with transaction.atomic(), revisions.create_revision(): + with revisions.create_revision(): revisions.set_comment(_("Added members from site")) revisions.set_user(self.request.user) return super(AddOrganizationMember, self).form_valid(form) @@ -804,7 +870,7 @@ class EditOrganization( return form def form_valid(self, form): - with transaction.atomic(), revisions.create_revision(): + with revisions.create_revision(): revisions.set_comment(_("Edited from site")) revisions.set_user(self.request.user) return super(EditOrganization, self).form_valid(form) @@ -836,7 +902,7 @@ class AddOrganization(LoginRequiredMixin, TitleMixin, CreateView): % settings.DMOJ_USER_MAX_ORGANIZATION_ADD, status=400, ) - with transaction.atomic(), revisions.create_revision(): + with revisions.create_revision(): revisions.set_comment(_("Added from site")) revisions.set_user(self.request.user) res = super(AddOrganization, self).form_valid(form) @@ -861,7 +927,7 @@ class AddOrganizationContest( return kwargs def form_valid(self, form): - with transaction.atomic(), revisions.create_revision(): + with revisions.create_revision(): revisions.set_comment(_("Added from site")) revisions.set_user(self.request.user) @@ -954,7 +1020,7 @@ class EditOrganizationContest( return self.contest def form_valid(self, form): - with transaction.atomic(), revisions.create_revision(): + with revisions.create_revision(): revisions.set_comment(_("Edited from site")) revisions.set_user(self.request.user) res = super(EditOrganizationContest, self).form_valid(form) @@ -974,6 +1040,18 @@ class EditOrganizationContest( ) ): transaction.on_commit(rescore_contest.s(self.object.key).delay) + + if any( + f in form.changed_data + for f in ( + "authors", + "curators", + "testers", + ) + ): + Contest._author_ids.dirty(self.object) + Contest._curator_ids.dirty(self.object) + Contest._tester_ids.dirty(self.object) return res def get_problem_formset(self, post=False): @@ -1015,7 +1093,7 @@ class AddOrganizationBlog( return _("Add blog for %s") % self.organization.name def form_valid(self, form): - with transaction.atomic(), revisions.create_revision(): + with revisions.create_revision(): res = super(AddOrganizationBlog, self).form_valid(form) self.object.is_organization_private = True self.object.authors.add(self.request.profile) @@ -1038,6 +1116,11 @@ class AddOrganizationBlog( ) return res + def get_success_url(self): + return reverse( + "organization_home", args=[self.organization.id, self.organization.slug] + ) + class EditOrganizationBlog( LoginRequiredMixin, @@ -1061,7 +1144,7 @@ class EditOrganizationBlog( if self.organization not in self.blog.organizations.all(): raise Exception("This blog does not belong to this organization") if ( - self.request.profile not in self.blog.authors.all() + self.request.profile.id not in self.blog.get_authors() and not self.can_edit_organization(self.organization) ): raise Exception("Not allowed to edit this blog") @@ -1115,13 +1198,18 @@ class EditOrganizationBlog( make_notification(posible_users, action, html, self.request.profile) def form_valid(self, form): - with transaction.atomic(), revisions.create_revision(): + with revisions.create_revision(): res = super(EditOrganizationBlog, self).form_valid(form) revisions.set_comment(_("Edited from site")) revisions.set_user(self.request.user) self.create_notification("Edit blog") return res + def get_success_url(self): + return reverse( + "organization_home", args=[self.organization.id, self.organization.slug] + ) + class PendingBlogs( LoginRequiredMixin, diff --git a/judge/views/pagevote.py b/judge/views/pagevote.py index 988d355..a24680c 100644 --- a/judge/views/pagevote.py +++ b/judge/views/pagevote.py @@ -8,13 +8,13 @@ from django.http import ( HttpResponseForbidden, ) from django.utils.translation import gettext as _ -from judge.models.pagevote import PageVote, PageVoteVoter from django.views.generic.base import TemplateResponseMixin from django.views.generic.detail import SingleObjectMixin - -from judge.dblock import LockModel from django.views.generic import View, ListView +from django_ratelimit.decorators import ratelimit +from django.conf import settings +from judge.models.pagevote import PageVote, PageVoteVoter, dirty_pagevote __all__ = [ "upvote_page", @@ -24,6 +24,7 @@ __all__ = [ ] +@ratelimit(key="user", rate=settings.RL_VOTE) @login_required def vote_page(request, delta): if abs(delta) != 1: @@ -52,35 +53,33 @@ def vote_page(request, delta): pagevote_id = int(request.POST["id"]) except ValueError: return HttpResponseBadRequest() - else: - if not PageVote.objects.filter(id=pagevote_id).exists(): - raise Http404() + + try: + pagevote = PageVote.objects.get(id=pagevote_id) + except PageVote.DoesNotExist: + raise Http404() vote = PageVoteVoter() vote.pagevote_id = pagevote_id vote.voter = request.profile vote.score = delta - while True: + try: + vote.save() + except IntegrityError: try: - vote.save() - except IntegrityError: - with LockModel(write=(PageVoteVoter,)): - try: - vote = PageVoteVoter.objects.get( - pagevote_id=pagevote_id, voter=request.profile - ) - except PageVoteVoter.DoesNotExist: - # We must continue racing in case this is exploited to manipulate votes. - continue - vote.delete() - PageVote.objects.filter(id=pagevote_id).update( - score=F("score") - vote.score + vote = PageVoteVoter.objects.get( + pagevote_id=pagevote_id, voter=request.profile ) - else: - PageVote.objects.filter(id=pagevote_id).update(score=F("score") + delta) - break - _dirty_vote_score(pagevote_id, request.profile) + except PageVoteVoter.DoesNotExist: + raise Http404() + vote.delete() + PageVote.objects.filter(id=pagevote_id).update(score=F("score") - vote.score) + else: + PageVote.objects.filter(id=pagevote_id).update(score=F("score") + delta) + + dirty_pagevote(pagevote, request.profile) + return HttpResponse("success", content_type="text/plain") @@ -104,8 +103,3 @@ class PageVoteDetailView(TemplateResponseMixin, SingleObjectMixin, View): context = super(PageVoteDetailView, self).get_context_data(**kwargs) context["pagevote"] = self.object.get_or_create_pagevote() return context - - -def _dirty_vote_score(pagevote_id, profile): - pv = PageVote(id=pagevote_id) - pv.vote_score.dirty(pv, profile) diff --git a/judge/views/problem.py b/judge/views/problem.py index 0bf304b..ad57692 100644 --- a/judge/views/problem.py +++ b/judge/views/problem.py @@ -1,10 +1,8 @@ import logging import os import shutil -from datetime import timedelta, datetime from operator import itemgetter from random import randrange -import random from copy import deepcopy from django.core.cache import cache @@ -24,6 +22,7 @@ from django.db.models import ( Q, When, IntegerField, + Sum, ) from django.db.models.functions import Coalesce from django.db.utils import ProgrammingError @@ -46,7 +45,7 @@ from django.views.generic import ListView, View from django.views.generic.base import TemplateResponseMixin from django.views.generic.detail import SingleObjectMixin -from judge.comments import CommentedDetailView +from judge.views.comment import CommentedDetailView from judge.forms import ProblemCloneForm, ProblemSubmitForm, ProblemPointsVoteForm from judge.models import ( ContestProblem, @@ -66,6 +65,7 @@ from judge.models import ( Organization, Profile, LanguageTemplate, + Contest, ) from judge.pdf_problems import DefaultPdfMaker, HAS_PDF from judge.utils.diggpaginator import DiggPaginator @@ -77,6 +77,8 @@ from judge.utils.problems import ( user_attempted_ids, user_completed_ids, get_related_problems, + get_user_recommended_problems, + RecommendationType, ) from judge.utils.strings import safe_float_or_none, safe_int_or_none from judge.utils.tickets import own_ticket_filter @@ -351,7 +353,7 @@ class ProblemDetail( else: context["fileio_input"] = None context["fileio_output"] = None - if not self.in_contest: + if not self.in_contest and settings.ML_OUTPUT_PATH: context["related_problems"] = get_related_problems( self.profile, self.object ) @@ -399,16 +401,13 @@ class ProblemPdfView(ProblemMixin, SingleObjectMixin, View): if trans is None else trans.description, "url": request.build_absolute_uri(), - "math_engine": maker.math_engine, } ) .replace('"//', '"https://') .replace("'//", "'https://") ) maker.title = problem_name - assets = ["style.css", "pygment-github.css"] - if maker.math_engine == "jax": - assets.append("mathjax3_config.js") + assets = ["style.css"] for file in assets: maker.load(file, os.path.join(settings.DMOJ_RESOURCES, file)) maker.make() @@ -590,7 +589,7 @@ class ProblemList(QueryStringSortMixin, TitleMixin, SolvedProblemMixin, ListView i for i in query if i in self.profile.organizations.values_list("id", flat=True) - ] + ][:3] def get_normal_queryset(self): queryset = Problem.get_visible_problems(self.request.user) @@ -602,9 +601,14 @@ class ProblemList(QueryStringSortMixin, TitleMixin, SolvedProblemMixin, ListView self.org_query = [self.request.organization.id] if self.org_query: self.org_query = self.get_org_query(self.org_query) + contest_problems = ( + Contest.objects.filter(organizations__in=self.org_query) + .select_related("problems") + .values_list("contest_problems__problem__id") + .distinct() + ) queryset = queryset.filter( - Q(organizations__in=self.org_query) - | Q(contests__contest__organizations__in=self.org_query) + Q(organizations__in=self.org_query) | Q(id__in=contest_problems) ) if self.author_query: queryset = queryset.filter(authors__in=self.author_query) @@ -641,6 +645,16 @@ class ProblemList(QueryStringSortMixin, TitleMixin, SolvedProblemMixin, ListView queryset = queryset.filter(points__gte=self.point_start) if self.point_end is not None: queryset = queryset.filter(points__lte=self.point_end) + + queryset = queryset.annotate( + has_public_editorial=Sum( + Case( + When(solution__is_public=True, then=1), + default=0, + output_field=IntegerField(), + ) + ) + ) return queryset.distinct() def get_queryset(self): @@ -664,12 +678,6 @@ class ProblemList(QueryStringSortMixin, TitleMixin, SolvedProblemMixin, ListView if self.request.profile: context["organizations"] = self.request.profile.organizations.all() - all_authors_ids = Problem.objects.values_list("authors", flat=True) - context["all_authors"] = ( - Profile.objects.filter(id__in=all_authors_ids) - .select_related("user") - .values("id", "user__username") - ) context["category"] = self.category context["categories"] = ProblemGroup.objects.all() if self.show_types: @@ -677,7 +685,7 @@ class ProblemList(QueryStringSortMixin, TitleMixin, SolvedProblemMixin, ListView context["problem_types"] = ProblemType.objects.all() context["has_fts"] = settings.ENABLE_FTS context["org_query"] = self.org_query - context["author_query"] = self.author_query + context["author_query"] = Profile.objects.filter(id__in=self.author_query) context["search_query"] = self.search_query context["completed_problem_ids"] = self.get_completed_problems() context["attempted_problems"] = self.get_attempted_problems() @@ -829,29 +837,39 @@ class ProblemFeed(ProblemList, FeedView): model = Problem context_object_name = "problems" template_name = "problem/feed.html" - feed_content_template_name = "problem/feed/problems.html" + feed_content_template_name = "problem/feed/items.html" paginate_by = 4 title = _("Problem feed") feed_type = None - # arr = [[], [], ..] - def merge_recommendation(self, arr): - seed = datetime.now().strftime("%d%m%Y") - merged_array = [] - for a in arr: - merged_array += a - random.Random(seed).shuffle(merged_array) + def get_recommended_problem_ids(self, queryset): + user_id = self.request.profile.id + problem_ids = queryset.values_list("id", flat=True) + rec_types = [ + RecommendationType.CF_DOT, + RecommendationType.CF_COSINE, + RecommendationType.CF_TIME_DOT, + RecommendationType.CF_TIME_COSINE, + RecommendationType.HOT_PROBLEM, + ] + limits = [100, 100, 100, 100, 20] + shuffle = True - res = [] - used_pid = set() + allow_debug_type = ( + self.request.user.is_impersonate or self.request.user.is_superuser + ) + if allow_debug_type and "debug_type" in self.request.GET: + try: + debug_type = int(self.request.GET.get("debug_type")) + except ValueError: + raise Http404() + rec_types = [debug_type] + limits = [100] + shuffle = False - for obj in merged_array: - if type(obj) == tuple: - obj = obj[1] - if obj not in used_pid: - res.append(obj) - used_pid.add(obj) - return res + return get_user_recommended_problems( + user_id, problem_ids, rec_types, limits, shuffle + ) def get_queryset(self): if self.feed_type == "volunteer": @@ -885,40 +903,8 @@ class ProblemFeed(ProblemList, FeedView): if not settings.ML_OUTPUT_PATH or not user: return queryset.order_by("?").add_i18n_name(self.request.LANGUAGE_CODE) - cf_model = CollabFilter("collab_filter") - cf_time_model = CollabFilter("collab_filter_time") + q = self.get_recommended_problem_ids(queryset) - queryset = queryset.values_list("id", flat=True) - hot_problems_recommendations = [ - problem.id - for problem in hot_problems(timedelta(days=7), 20) - if problem.id in set(queryset) - ] - - q = self.merge_recommendation( - [ - cf_model.user_recommendations(user, queryset, cf_model.DOT, 100), - cf_model.user_recommendations( - user, - queryset, - cf_model.COSINE, - 100, - ), - cf_time_model.user_recommendations( - user, - queryset, - cf_time_model.COSINE, - 100, - ), - cf_time_model.user_recommendations( - user, - queryset, - cf_time_model.DOT, - 100, - ), - hot_problems_recommendations, - ] - ) queryset = Problem.objects.filter(id__in=q) queryset = queryset.add_i18n_name(self.request.LANGUAGE_CODE) @@ -974,6 +960,12 @@ class LanguageTemplateAjax(View): class RandomProblem(ProblemList): def get(self, request, *args, **kwargs): self.setup_problem_list(request) + + try: + return super().get(request, *args, **kwargs) + except ProgrammingError as e: + return generic_message(request, "FTS syntax error", e.args[1], status=400) + if self.in_contest: raise Http404() @@ -994,6 +986,15 @@ class RandomProblem(ProblemList): user_logger = logging.getLogger("judge.user") +def last_nth_submitted_date_in_contest(profile, contest, n): + submissions = Submission.objects.filter( + user=profile, contest_object=contest + ).order_by("-id")[:n] + if submissions.count() >= n: + return submissions[n - 1].date + return None + + @login_required def problem_submit(request, problem, submission=None): if ( @@ -1042,7 +1043,7 @@ def problem_submit(request, problem, submission=None): >= settings.DMOJ_SUBMISSION_LIMIT ): return HttpResponse( - "

You submitted too many submissions.

", status=429 + _("

You have submitted too many submissions.

"), status=429 ) if not problem.allowed_languages.filter( id=form.cleaned_data["language"].id @@ -1063,7 +1064,22 @@ def problem_submit(request, problem, submission=None): with transaction.atomic(): if profile.current_contest is not None: + contest = profile.current_contest.contest contest_id = profile.current_contest.contest_id + rate_limit = contest.rate_limit + + if rate_limit: + t = last_nth_submitted_date_in_contest( + profile, contest, rate_limit + ) + if t is not None and timezone.now() - t < timezone.timedelta( + minutes=1 + ): + return HttpResponse( + _("

You have submitted too many submissions.

"), + status=429, + ) + try: contest_problem = problem.contests.get(contest_id=contest_id) except ContestProblem.DoesNotExist: @@ -1143,11 +1159,11 @@ def problem_submit(request, problem, submission=None): default_lang = request.profile.language submission_limit = submissions_left = None + next_valid_submit_time = None if profile.current_contest is not None: + contest = profile.current_contest.contest try: - submission_limit = problem.contests.get( - contest=profile.current_contest.contest - ).max_submissions + submission_limit = problem.contests.get(contest=contest).max_submissions except ContestProblem.DoesNotExist: pass else: @@ -1155,6 +1171,12 @@ def problem_submit(request, problem, submission=None): submissions_left = submission_limit - get_contest_submission_count( problem, profile, profile.current_contest.virtual ) + if contest.rate_limit: + t = last_nth_submitted_date_in_contest(profile, contest, contest.rate_limit) + if t is not None: + next_valid_submit_time = t + timezone.timedelta(minutes=1) + next_valid_submit_time = next_valid_submit_time.isoformat() + return render( request, "problem/submit.html", @@ -1184,6 +1206,7 @@ def problem_submit(request, problem, submission=None): "output_only": problem.data_files.output_only if hasattr(problem, "data_files") else False, + "next_valid_submit_time": next_valid_submit_time, }, ) @@ -1208,7 +1231,7 @@ class ProblemClone( problem.ac_rate = 0 problem.user_count = 0 problem.code = form.cleaned_data["code"] - problem.save() + problem.save(should_move_data=False) problem.authors.add(self.request.profile) problem.allowed_languages.set(languages) problem.language_limits.set(language_limits) diff --git a/judge/views/problem_data.py b/judge/views/problem_data.py index 0525395..006a304 100644 --- a/judge/views/problem_data.py +++ b/judge/views/problem_data.py @@ -89,7 +89,7 @@ class ProblemDataForm(ModelForm): "checker", "checker_args", "custom_checker", - "custom_validator", + "custom_checker_cpp", "interactive_judge", "fileio_input", "fileio_output", @@ -344,7 +344,7 @@ def problem_init_view(request, problem): "problem/yaml.html", { "raw_source": data, - "highlighted_source": highlight_code(data, "yaml", linenos=False), + "highlighted_source": highlight_code(data, "yaml", linenos=True), "title": _("Generated init.yml for %s") % problem.name, "content_title": mark_safe( escape(_("Generated init.yml for %s")) diff --git a/judge/views/problem_manage.py b/judge/views/problem_manage.py index 36d09ee..dfce739 100644 --- a/judge/views/problem_manage.py +++ b/judge/views/problem_manage.py @@ -78,12 +78,12 @@ class ManageProblemSubmissionView(TitleMixin, ManageProblemSubmissionMixin, Deta ) ] context["results"] = sorted(map(itemgetter(0), Submission.RESULT)) - context["in_contest"] = False + context["current_contest"] = None if ( self.request.in_contest_mode and self.object in self.request.participation.contest.problems.all() ): - context["in_contest"] = True + context["current_contest"] = self.request.participation.contest return context @@ -106,20 +106,12 @@ class BaseActionSubmissionsView( try: languages = list(map(int, self.request.POST.getlist("language"))) + results = list(map(str, self.request.POST.getlist("result"))) + contests = list(map(int, self.request.POST.getlist("contest"))) except ValueError: return HttpResponseBadRequest() - contest = None - try: - in_contest = bool(self.request.POST.get("in_contest", False)) - if in_contest: - contest = self.request.participation.contest - except (KeyError, ValueError): - return HttpResponseBadRequest() - - return self.generate_response( - id_range, languages, self.request.POST.getlist("result"), contest - ) + return self.generate_response(id_range, languages, results, contests) def generate_response(self, id_range, languages, results, contest): raise NotImplementedError() diff --git a/judge/views/resolver.py b/judge/views/resolver.py index cf8a193..84e5dff 100644 --- a/judge/views/resolver.py +++ b/judge/views/resolver.py @@ -1,6 +1,6 @@ from django.views.generic import TemplateView from django.utils.translation import gettext as _ -from django.http import HttpResponseForbidden +from django.http import HttpResponseForbidden, JsonResponse from judge.models import Contest from django.utils.safestring import mark_safe @@ -21,7 +21,7 @@ class Resolver(TemplateView): hidden_subtasks = self.contest.format.get_hidden_subtasks() num_problems = len(problems) problem_sub = [0] * num_problems - sub_frozen = [0] * num_problems + sub_frozen = [[] for _ in range(num_problems)] problems_json = {str(i): {} for i in range(1, num_problems + 1)} users = {} @@ -126,10 +126,8 @@ class Resolver(TemplateView): for i in hidden_subtasks: order = id_to_order[i] - if hidden_subtasks[i]: - sub_frozen[order - 1] = min(hidden_subtasks[i]) - else: - sub_frozen[order - 1] = problem_sub[order - 1] + 1 + sub_frozen[order - 1] = list(hidden_subtasks[i]) + return { "problem_sub": problem_sub, "sub_frozen": sub_frozen, @@ -143,8 +141,15 @@ class Resolver(TemplateView): return context def get(self, request, *args, **kwargs): - if request.user.is_superuser: - self.contest = Contest.objects.get(key=kwargs.get("contest")) - if self.contest.format.has_hidden_subtasks: - return super(Resolver, self).get(request, *args, **kwargs) - return HttpResponseForbidden() + if not request.user.is_superuser: + return HttpResponseForbidden() + self.contest = Contest.objects.get(key=kwargs.get("contest")) + if not self.contest.format.has_hidden_subtasks: + return HttpResponseForbidden() + + if self.request.GET.get("json"): + json_dumps_params = {"ensure_ascii": False} + return JsonResponse( + self.get_contest_json(), json_dumps_params=json_dumps_params + ) + return super(Resolver, self).get(request, *args, **kwargs) diff --git a/judge/views/select2.py b/judge/views/select2.py index 34d0778..62a850c 100644 --- a/judge/views/select2.py +++ b/judge/views/select2.py @@ -85,15 +85,17 @@ class ProblemSelect2View(Select2View): class ContestSelect2View(Select2View): + def get(self, request, *args, **kwargs): + self.problem_id = kwargs.get("problem_id", request.GET.get("problem_id", "")) + return super(ContestSelect2View, self).get(request, *args, **kwargs) + def get_queryset(self): - return Contest.get_visible_contests(self.request.user).filter( + q = Contest.get_visible_contests(self.request.user).filter( Q(key__icontains=self.term) | Q(name__icontains=self.term) ) - - -class CommentSelect2View(Select2View): - def get_queryset(self): - return Comment.objects.filter(page__icontains=self.term) + if self.problem_id: + q = q.filter(problems=self.problem_id) + return q class UserSearchSelect2View(BaseListView): @@ -193,3 +195,17 @@ class ChatUserSearchSelect2View(UserSearchSelect2View): ), "display_rank": display_rank, } + + +class ProblemAuthorSearchSelect2View(UserSearchSelect2View): + def get_queryset(self): + return Profile.objects.filter( + authored_problems__isnull=False, user__username__icontains=self.term + ).distinct() + + def get_json_result_from_object(self, user_tuple): + pk, username, email, display_rank, profile_image = user_tuple + return { + "text": username, + "id": pk, + } diff --git a/judge/views/submission.py b/judge/views/submission.py index 26300b0..d1bc3f3 100644 --- a/judge/views/submission.py +++ b/judge/views/submission.py @@ -33,29 +33,31 @@ from django.views import View from judge import event_poster as event from judge.highlight_code import highlight_code -from judge.models import Contest, ContestParticipation -from judge.models import Language -from judge.models import Problem -from judge.models import ProblemTestCase -from judge.models import ProblemTranslation -from judge.models import Profile -from judge.models import Submission +from judge.models import ( + Contest, + ContestParticipation, + Language, + Problem, + ProblemTestCase, + ProblemTranslation, + Profile, + Submission, +) from judge.utils.problems import get_result_data -from judge.utils.problems import user_completed_ids, user_editable_ids, user_tester_ids from judge.utils.problem_data import get_problem_case from judge.utils.raw_sql import join_sql_subquery, use_straight_join from judge.utils.views import DiggPaginatorMixin from judge.utils.infinite_paginator import InfinitePaginationMixin from judge.utils.views import TitleMixin from judge.utils.timedelta import nice_repr +from judge.views.contests import ContestMixin +from judge.caching import cache_wrapper def submission_related(queryset): - return queryset.select_related("user__user", "problem", "language").only( + return queryset.select_related("user", "problem", "language").only( "id", - "user__user__username", - "user__display_rank", - "user__rating", + "user__id", "problem__name", "problem__code", "problem__is_public", @@ -70,7 +72,8 @@ def submission_related(queryset): "case_points", "case_total", "current_testcase", - "contest_object", + "contest_object__key", + "contest_object__name", ) @@ -81,6 +84,10 @@ class SubmissionMixin(object): class SubmissionDetailBase(LoginRequiredMixin, TitleMixin, SubmissionMixin, DetailView): + queryset = Submission.objects.select_related( + "language", "problem", "user", "contest_object" + ).defer("problem__description", "user__about", "contest_object__description") + def get_object(self, queryset=None): submission = super(SubmissionDetailBase, self).get_object(queryset) if submission.is_accessible_by(self.request.profile): @@ -92,7 +99,7 @@ class SubmissionDetailBase(LoginRequiredMixin, TitleMixin, SubmissionMixin, Deta submission = self.object return _("Submission of %(problem)s by %(user)s") % { "problem": submission.problem.translated_name(self.request.LANGUAGE_CODE), - "user": submission.user.user.username, + "user": submission.user.username, } def get_content_title(self): @@ -107,29 +114,13 @@ class SubmissionDetailBase(LoginRequiredMixin, TitleMixin, SubmissionMixin, Deta ), "user": format_html( '{1}', - reverse("user_page", args=[submission.user.user.username]), - submission.user.user.username, + reverse("user_page", args=[submission.user.username]), + submission.user.username, ), } ) -class SubmissionSource(SubmissionDetailBase): - template_name = "submission/source.html" - - def get_queryset(self): - return super().get_queryset().select_related("source") - - def get_context_data(self, **kwargs): - context = super(SubmissionSource, self).get_context_data(**kwargs) - submission = self.object - context["raw_source"] = submission.source.source.rstrip("\n") - context["highlighted_source"] = highlight_code( - submission.source.source, submission.language.pygments, linenos=False - ) - return context - - def get_hidden_subtasks(request, submission): contest = submission.contest_object if contest and contest.is_editable_by(request.user): @@ -205,15 +196,28 @@ def get_cases_data(submission): class SubmissionStatus(SubmissionDetailBase): template_name = "submission/status.html" - def access_testcases_in_contest(self): - contest = self.object.contest_or_none - if contest is None: - return False - if contest.problem.problem.is_editable_by(self.request.user): + def can_see_testcases(self): + contest_submission = self.object.contest_or_none + if contest_submission is None: return True - if contest.problem.contest.is_in_contest(self.request.user): + + contest_problem = contest_submission.problem + problem = self.object.problem + contest = self.object.contest_object + + if contest_problem.show_testcases: + return True + if problem.is_editable_by(self.request.user): + return True + if contest.is_editable_by(self.request.user): + return True + if not problem.is_public: return False - if contest.participation.ended: + if contest.is_in_contest(self.request.user): + return False + if not contest.ended: + return False + if contest_submission.participation.ended: return True return False @@ -228,19 +232,14 @@ class SubmissionStatus(SubmissionDetailBase): ) context["time_limit"] = submission.problem.time_limit context["can_see_testcases"] = False - context["raw_source"] = submission.source.source.rstrip("\n") context["highlighted_source"] = highlight_code( - submission.source.source, submission.language.pygments, linenos=False + submission.source.source, + submission.language.pygments, + linenos=True, + title=submission.language, ) - contest = submission.contest_or_none - show_testcases = False - can_see_testcases = self.access_testcases_in_contest() - - if contest is not None: - show_testcases = contest.problem.show_testcases or False - - if contest is None or show_testcases or can_see_testcases: + if self.can_see_testcases(): context["cases_data"] = get_cases_data(submission) context["can_see_testcases"] = True try: @@ -266,7 +265,7 @@ class SubmissionTestCaseQuery(SubmissionStatus): return super(SubmissionTestCaseQuery, self).get(request, *args, **kwargs) -class SubmissionSourceRaw(SubmissionSource): +class SubmissionSourceRaw(SubmissionDetailBase): def get(self, request, *args, **kwargs): submission = self.get_object() return HttpResponse(submission.source.source, content_type="text/plain") @@ -311,6 +310,9 @@ class SubmissionsListBase(DiggPaginatorMixin, TitleMixin, ListView): def access_check(self, request): pass + def hide_contest_in_row(self): + return self.request.in_contest_mode + @cached_property def in_contest(self): return ( @@ -379,17 +381,7 @@ class SubmissionsListBase(DiggPaginatorMixin, TitleMixin, ListView): ) if self.selected_languages: - # Note (DMOJ): MariaDB can't optimize this subquery for some insane, unknown reason, - # so we are forcing an eager evaluation to get the IDs right here. - # Otherwise, with multiple language filters, MariaDB refuses to use an index - # (or runs the subquery for every submission, which is even more horrifying to think about). - queryset = queryset.filter( - language__in=list( - Language.objects.filter( - key__in=self.selected_languages - ).values_list("id", flat=True) - ) - ) + queryset = queryset.filter(language__in=self.selected_languages) if self.selected_statuses: submission_results = [i for i, _ in Submission.RESULT] if self.selected_statuses[0] in submission_results: @@ -460,7 +452,7 @@ class SubmissionsListBase(DiggPaginatorMixin, TitleMixin, ListView): context["show_problem"] = self.show_problem context["profile"] = self.request.profile context["all_languages"] = Language.objects.all().values_list("key", "name") - context["selected_languages"] = self.selected_languages + context["selected_languages"] = self.selected_languages_key context["all_statuses"] = self.get_searchable_status_codes() context["selected_statuses"] = self.selected_statuses @@ -480,11 +472,16 @@ class SubmissionsListBase(DiggPaginatorMixin, TitleMixin, ListView): context["friend_submissions_link"] = self.get_friend_submissions_page() context["all_submissions_link"] = self.get_all_submissions_page() context["page_type"] = self.page_type + context["hide_contest_in_row"] = self.hide_contest_in_row() context["in_hidden_subtasks_contest"] = self.in_hidden_subtasks_contest() if context["in_hidden_subtasks_contest"]: for submission in context["submissions"]: self.modify_attrs(submission) + context[ + "is_in_editable_contest" + ] = self.in_contest and self.contest.is_editable_by(self.request.user) + return context def get(self, request, *args, **kwargs): @@ -494,6 +491,19 @@ class SubmissionsListBase(DiggPaginatorMixin, TitleMixin, ListView): self.selected_languages = request.GET.getlist("language") self.selected_statuses = request.GET.getlist("status") + self.selected_languages_key = [] + + if self.selected_languages: + languages = Language.objects.filter(key__in=self.selected_languages).values( + "id", "key" + ) + self.selected_languages = [i["id"] for i in languages] + self.selected_languages_key = [i["key"] for i in languages] + if self.selected_statuses: + allowed_statuses = [i for i, _ in Submission.RESULT + Submission.STATUS] + self.selected_statuses = [ + i for i in self.selected_statuses if i in allowed_statuses + ] if self.in_contest and self.contest.is_editable_by(self.request.user): self.include_frozen = True @@ -736,6 +746,11 @@ def single_submission(request, submission_id, show_problem=True): submission_related(Submission.objects.all()), id=int(submission_id) ) + is_in_editable_contest = False + if authenticated and request.in_contest_mode: + contest = request.profile.current_contest.contest + is_in_editable_contest = contest.is_editable_by(request.user) + if not submission.problem.is_accessible_by(request.user): raise Http404() @@ -748,6 +763,7 @@ def single_submission(request, submission_id, show_problem=True): "problem_name": show_problem and submission.problem.translated_name(request.LANGUAGE_CODE), "profile": request.profile if authenticated else None, + "is_in_editable_contest": is_in_editable_contest, }, ) @@ -783,28 +799,9 @@ class AllSubmissions(InfinitePaginationMixin, GeneralSubmissions): if self.request.organization or self.in_contest: return super(AllSubmissions, self)._get_result_data() - key = "global_submission_result_data" - if self.selected_statuses: - key += ":" + ",".join(self.selected_statuses) - if self.selected_languages: - key += ":" + ",".join(self.selected_languages) - result = cache.get(key) - if result: - return result - queryset = Submission.objects - if self.selected_languages: - queryset = queryset.filter( - language__in=Language.objects.filter(key__in=self.selected_languages) - ) - if self.selected_statuses: - submission_results = [i for i, _ in Submission.RESULT] - if self.selected_statuses[0] in submission_results: - queryset = queryset.filter(result__in=self.selected_statuses) - else: - queryset = queryset.filter(status__in=self.selected_statuses) - result = get_result_data(queryset) - cache.set(key, result, self.stats_update_interval) - return result + return _get_global_submission_result_data( + self.selected_statuses, self.selected_languages + ) class ForceContestMixin(object): @@ -842,6 +839,38 @@ class ForceContestMixin(object): return super(ForceContestMixin, self).get(request, *args, **kwargs) +class ContestSubmissions( + LoginRequiredMixin, ContestMixin, ForceContestMixin, SubmissionsListBase +): + check_contest_in_access_check = True + template_name = "contest/submissions.html" + context_object_name = "submissions" + + def hide_contest_in_row(self): + return True + + def access_check(self, request): + super().contest_access_check(self.contest) + super().access_check(request) + + def get_title(self): + return _("Submissions in") + " " + self.contest.name + + def get_content_title(self): + return format_html( + _('Submissions in {1}'), + reverse("contest_view", args=[self.contest.key]), + self.contest.name, + ) + + def get_context_data(self, **kwargs): + self.object = self.contest + context = super(ContestSubmissions, self).get_context_data(**kwargs) + context["contest"] = self.contest + context["page_type"] = "submissions" + return context + + class UserContestSubmissions(ForceContestMixin, UserProblemSubmissions): check_contest_in_access_check = True @@ -1027,3 +1056,19 @@ class SubmissionSourceFileView(View): response["Content-Type"] = "application/octet-stream" response["Content-Disposition"] = "attachment; filename=%s" % (filename,) return response + + +@cache_wrapper(prefix="gsrd", timeout=3600, expected_type=dict) +def _get_global_submission_result_data(statuses, languages): + queryset = Submission.objects + if languages: + queryset = queryset.filter( + language__in=Language.objects.filter(id__in=languages) + ) + if statuses: + submission_results = [i for i, _ in Submission.RESULT] + if statuses[0] in submission_results: + queryset = queryset.filter(result__in=statuses) + else: + queryset = queryset.filter(status__in=statuses) + return get_result_data(queryset) diff --git a/judge/views/test_formatter/test_formatter.py b/judge/views/test_formatter/test_formatter.py new file mode 100644 index 0000000..4818bcc --- /dev/null +++ b/judge/views/test_formatter/test_formatter.py @@ -0,0 +1,207 @@ +from django.views import View +from django.shortcuts import render, redirect, get_object_or_404 +from django.urls import reverse +from django.core.files import File +from django.core.files.base import ContentFile +from django.http import ( + FileResponse, + HttpResponseRedirect, + HttpResponseBadRequest, + HttpResponse, +) +from judge.models import TestFormatterModel +from judge.forms import TestFormatterForm +from judge.views.test_formatter import tf_logic, tf_utils +from django.utils.translation import gettext_lazy as _ +from zipfile import ZipFile, ZIP_DEFLATED + +import os +import uuid +from dmoj import settings + + +def id_to_path(id): + return os.path.join(settings.MEDIA_ROOT, "test_formatter/" + id + "/") + + +def get_names_in_archive(file_path): + suffixes = ("inp", "out", "INP", "OUT") + with ZipFile(os.path.join(settings.MEDIA_ROOT, file_path)) as f: + result = [ + x for x in f.namelist() if not x.endswith("/") and x.endswith(suffixes) + ] + return list(sorted(result, key=tf_utils.natural_sorting_key)) + + +def get_renamed_archive(file_str, file_name, file_path, bef, aft): + target_file_id = str(uuid.uuid4()) + source_path = os.path.join(settings.MEDIA_ROOT, file_str) + target_path = os.path.join(settings.MEDIA_ROOT, file_str + "_" + target_file_id) + new_path = os.path.join(settings.MEDIA_ROOT, "test_formatter/" + file_name) + + source = ZipFile(source_path, "r") + target = ZipFile(target_path, "w", ZIP_DEFLATED) + + for bef_name, aft_name in zip(bef, aft): + target.writestr(aft_name, source.read(bef_name)) + + os.remove(source_path) + os.rename(target_path, new_path) + + target.close() + source.close() + + return {"file_path": "test_formatter/" + file_name} + + +class TestFormatter(View): + form_class = TestFormatterForm() + + def get(self, request): + return render( + request, + "test_formatter/test_formatter.html", + {"title": _("Test Formatter"), "form": self.form_class}, + ) + + def post(self, request): + form = TestFormatterForm(request.POST, request.FILES) + if form.is_valid(): + form.save() + return HttpResponseRedirect("edit_page") + return render( + request, "test_formatter/test_formatter.html", {"form": self.form_class} + ) + + +class EditTestFormatter(View): + file_path = "" + + def get(self, request): + file = TestFormatterModel.objects.last() + filestr = str(file.file) + filename = filestr.split("/")[-1] + filepath = filestr.split("/")[0] + + bef_file = get_names_in_archive(filestr) + preview_data = { + "bef_inp_format": bef_file[0], + "bef_out_format": bef_file[1], + "aft_inp_format": "input.000", + "aft_out_format": "output.000", + "file_str": filestr, + } + + preview = tf_logic.preview(preview_data) + + response = "" + for i in range(len(bef_file)): + bef = preview["bef_preview"][i]["value"] + aft = preview["aft_preview"][i]["value"] + response = response + f"

{bef} => {aft}

\n" + + return render( + request, + "test_formatter/edit_test_formatter.html", + { + "title": _("Test Formatter"), + "check": 0, + "files_list": bef_file, + "file_name": filename, + "res": response, + }, + ) + + def post(self, request, *args, **kwargs): + action = request.POST.get("action") + if action == "convert": + try: + file = TestFormatterModel.objects.last() + filestr = str(file.file) + filename = filestr.split("/")[-1] + filepath = filestr.split("/")[0] + bef_inp_format = request.POST["bef_inp_format"] + bef_out_format = request.POST["bef_out_format"] + aft_inp_format = request.POST["aft_inp_format"] + aft_out_format = request.POST["aft_out_format"] + aft_file_name = request.POST["file_name"] + except KeyError: + return HttpResponseBadRequest("No data.") + + if filename != aft_file_name: + source_path = os.path.join(settings.MEDIA_ROOT, filestr) + new_path = os.path.join( + settings.MEDIA_ROOT, "test_formatter/" + aft_file_name + ) + os.rename(source_path, new_path) + filename = aft_file_name + + preview_data = { + "bef_inp_format": bef_inp_format, + "bef_out_format": bef_out_format, + "aft_inp_format": aft_inp_format, + "aft_out_format": aft_out_format, + "file_name": filename, + "file_path": filepath, + "file_str": filepath + "/" + filename, + } + + converted_zip = tf_logic.convert(preview_data) + + global file_path + file_path = converted_zip["file_path"] + + zip_instance = TestFormatterModel() + zip_instance.file = file_path + zip_instance.save() + + preview = tf_logic.preview(preview_data) + response = HttpResponse() + + for i in range(len(preview["bef_preview"])): + bef = preview["bef_preview"][i]["value"] + aft = preview["aft_preview"][i]["value"] + response.write(f"

{bef} => {aft}

") + + return response + + elif action == "download": + return HttpResponse(file_path) + + return HttpResponseBadRequest("Invalid action") + + +class DownloadTestFormatter(View): + def get(self, request): + file_path = request.GET.get("file_path") + file_name = file_path.split("/")[-1] + preview_file = tf_logic.preview_file(file_path) + + response = "" + for i in range(len(preview_file)): + response = response + (f"

{preview_file[i]}

\n") + + files_list = [preview_file[0], preview_file[1]] + + return render( + request, + "test_formatter/download_test_formatter.html", + { + "title": _("Test Formatter"), + "response": response, + "files_list": files_list, + "file_path": os.path.join(settings.MEDIA_ROOT, file_path), + "file_path_getnames": file_path, + "file_name": file_name, + }, + ) + + def post(self, request): + file_path = request.POST.get("file_path") + + with open(file_path, "rb") as zip_file: + response = HttpResponse(zip_file.read(), content_type="application/zip") + response[ + "Content-Disposition" + ] = f"attachment; filename={os.path.basename(file_path)}" + return response diff --git a/judge/views/test_formatter/tf_logic.py b/judge/views/test_formatter/tf_logic.py new file mode 100644 index 0000000..f981745 --- /dev/null +++ b/judge/views/test_formatter/tf_logic.py @@ -0,0 +1,116 @@ +import os +from judge.views.test_formatter import test_formatter as tf +from judge.views.test_formatter import tf_pattern as pattern + + +class TestSuite: + def __init__( + self, + file_id: str, + pattern_pair: pattern.PatternPair, + test_id_list: list, + extra_files: list, + ): + self.file_id = file_id + self.pattern_pair = pattern_pair + self.test_id_list = test_id_list + self.extra_files = extra_files + + @classmethod + def get_test_suite(cls, file_name: str, inp_format: str, out_format: str): + pattern_pair = pattern.PatternPair.from_string_pair(inp_format, out_format) + names = tf.get_names_in_archive(file_name) + test_id_list, extra_files = pattern_pair.matches( + names, returns="test_id_with_extra_files" + ) + return cls(file_name, pattern_pair, test_id_list, extra_files) + + def get_name_list(self, add_extra_info=False): + important_files = [] + + for index, t in enumerate(self.test_id_list): + inp_name = self.pattern_pair.x.get_name(t, index=index, use_index=True) + out_name = self.pattern_pair.y.get_name(t, index=index, use_index=True) + important_files.extend([inp_name, out_name]) + + result = [] + + for name in important_files: + if add_extra_info: + result.append({"value": name, "is_extra_file": False}) + else: + result.append(name) + + for name in self.extra_files: + if add_extra_info: + result.append({"value": name, "is_extra_file": True}) + else: + result.append(name) + + return result + + +def is_valid_file_type(file_name): + _, ext = os.path.splitext(file_name) + return ext in [".zip", ".ZIP"] + + +def preview(params): + bif = params["bef_inp_format"] + bof = params["bef_out_format"] + aif = params["aft_inp_format"] + aof = params["aft_out_format"] + file_str = params["file_str"] + + try: + test_suite = TestSuite.get_test_suite(file_str, bif, bof) + bef_preview = test_suite.get_name_list(add_extra_info=True) + try: + test_suite.pattern_pair = pattern.PatternPair.from_string_pair(aif, aof) + aft_preview = test_suite.get_name_list(add_extra_info=True) + return {"bef_preview": bef_preview, "aft_preview": aft_preview} + except: + return {"bef_preview": bef_preview, "aft_preview": []} + except: + test_suite = TestSuite.get_test_suite(file_id, "*", "*") + preview = test_suite.get_name_list(add_extra_info=True) + return {"bef_preview": preview, "aft_preview": []} + + +def convert(params): + bif = params["bef_inp_format"] + bof = params["bef_out_format"] + aif = params["aft_inp_format"] + aof = params["aft_out_format"] + file_str = params["file_str"] + file_name = params["file_name"] + file_path = params["file_path"] + + test_suite = TestSuite.get_test_suite(file_str, bif, bof) + bef_preview = test_suite.get_name_list() + test_suite.pattern_pair = pattern.PatternPair.from_string_pair(aif, aof) + aft_preview = test_suite.get_name_list() + + result = tf.get_renamed_archive( + file_str, file_name, file_path, bef_preview, aft_preview + ) + return result + + +def prefill(params): + file_str = params["file_str"] + file_name = params["file_name"] + + names = tf.get_names_in_archive(file_str) + pattern_pair = pattern.find_best_pattern_pair(names) + + return { + "file_name": file_name, + "inp_format": pattern_pair.x.to_string(), + "out_format": pattern_pair.y.to_string(), + } + + +def preview_file(file_str): + names = tf.get_names_in_archive(file_str) + return names diff --git a/judge/views/test_formatter/tf_pattern.py b/judge/views/test_formatter/tf_pattern.py new file mode 100644 index 0000000..071976d --- /dev/null +++ b/judge/views/test_formatter/tf_pattern.py @@ -0,0 +1,268 @@ +import os +import random +from judge.views.test_formatter import tf_utils as utils + +SAMPLE_SIZE = 16 +NUMBERED_MM = ["0", "1", "00", "01", "000", "001", "0000", "0001"] +VALID_MM = ["*"] + NUMBERED_MM + +MSG_TOO_MANY_OCCURRENCES = ( + "400: Invalid pattern: Pattern cannot have more than one '{}'" +) +MSG_MM_NOT_FOUND = "400: Invalid pattern: Wildcard not found. Wildcard list: {}" + + +class Pattern: + def __init__(self, ll, mm, rr): + assert mm in VALID_MM, "Invalid wildcard" + self.ll = ll + self.mm = mm + self.rr = rr + + def __repr__(self): + return "Pattern('{}', '{}', '{}')".format(self.ll, self.mm, self.rr) + + def __eq__(self, other): + return self.__repr__() == other.__repr__() + + def __hash__(self): + return self.__repr__().__hash__() + + @classmethod + def from_string(cls, text): + for mm in ["*"] + sorted(NUMBERED_MM, key=len, reverse=True): + if mm in text: + if text.count(mm) > 1: + raise Exception(MSG_TOO_MANY_OCCURRENCES.format(mm)) + i = text.index(mm) + return cls(text[:i], mm, text[i + len(mm) :]) + raise Exception(MSG_MM_NOT_FOUND.format(",".join(VALID_MM))) + + def to_string(self): + return self.ll + self.mm + self.rr + + def is_valid_test_id(self, test_id): + if self.mm == "*": + return True + if self.mm in NUMBERED_MM: + return test_id.isdigit() and len(test_id) >= len(self.mm) + raise NotImplementedError + + def matched(self, name): + return ( + name.startswith(self.ll) + and name.endswith(self.rr) + and len(name) >= len(self.ll) + len(self.rr) + and self.is_valid_test_id(self.get_test_id(name)) + ) + + def get_test_id(self, name): + return name[len(self.ll) : len(name) - len(self.rr)] + + def get_test_id_from_index(self, index): + assert self.mm in NUMBERED_MM, "Wildcard is not a number" + return str(int(self.mm) + index).zfill(len(self.mm)) + + def get_name(self, test_id, index=None, use_index=False): + if use_index and self.mm in NUMBERED_MM: + return self.ll + self.get_test_id_from_index(index) + self.rr + return self.ll + test_id + self.rr + + def matches(self, names, returns): + if returns == "test_id": + result = [n for n in names] + result = [n for n in result if self.matched(n)] + result = [self.get_test_id(n) for n in result] + return result + else: + raise NotImplementedError + + +class PatternPair: + def __init__(self, x: Pattern, y: Pattern): + assert x.mm == y.mm, "Input wildcard and output wildcard must be equal" + self.x = x + self.y = y + + def __repr__(self): + return "PatternPair({}, {})".format(self.x, self.y) + + def __eq__(self, other): + return self.__repr__() == other.__repr__() + + def __hash__(self): + return self.__repr__().__hash__() + + @classmethod + def from_string_pair(cls, inp_format, out_format): + return cls(Pattern.from_string(inp_format), Pattern.from_string(out_format)) + + def matches(self, names, returns): + x_test_ids = self.x.matches(names, returns="test_id") + y_test_ids = self.y.matches(names, returns="test_id") + + test_ids = set(x_test_ids) & set(y_test_ids) + test_ids = list(sorted(test_ids, key=utils.natural_sorting_key)) + + if returns == "fast_count": + if self.x.mm == "*": + return len(test_ids) + elif self.x.mm in NUMBERED_MM: + count_valid = 0 + for t in test_ids: + if t == self.x.get_test_id_from_index(count_valid): + count_valid += 1 + + return count_valid + + extra_files = list(names) + valid_test_ids = [] + for t in test_ids: + if self.x.mm in NUMBERED_MM: + if t != self.x.get_test_id_from_index(len(valid_test_ids)): + continue + + inp_name = self.x.get_name(t) + out_name = self.y.get_name(t) + + if inp_name == out_name: + continue + if inp_name not in extra_files: + continue + if out_name not in extra_files: + continue + + valid_test_ids.append(t) + extra_files.remove(inp_name) + extra_files.remove(out_name) + + if returns == "count": + return len(valid_test_ids) + elif returns == "test_id": + return valid_test_ids + elif returns == "test_id_with_extra_files": + return valid_test_ids, extra_files + else: + raise NotImplementedError + + def score(self, names): + def ls(s): + return len(s) - s.count("0") + + def zs(s): + return -s.count("0") + + def vs(s): + return sum( + s.lower().count(c) * w + for c, w in [("a", -1), ("e", -1), ("i", +1), ("o", -1), ("u", -1)] + ) + + count_score = self.matches(names, returns="fast_count") + + len_score = ls(self.x.ll + self.x.rr + self.y.ll + self.y.rr) + zero_score = zs(self.x.ll + self.x.rr + self.y.ll + self.y.rr) + + assert self.x.mm in ["*"] + NUMBERED_MM + specific_score = 0 if self.x.mm == "*" else len(self.x.mm) + + vowel_score = vs(self.x.ll + self.x.rr) - vs(self.y.ll + self.y.rr) + + return count_score, specific_score, len_score, zero_score, vowel_score + + def is_string_safe(self): + try: + x = Pattern.from_string(self.x.to_string()) + y = Pattern.from_string(self.y.to_string()) + return self == PatternPair(x, y) + except: + return False + + +def maximal(a, key): + max_score = max(map(key, a)) + result = [x for x in a if key(x) == max_score] + if len(result) == 1: + return result[0] + else: + print(result) + raise Exception("More than one maximum values") + + +def get_all_star_pattern_pairs(names): + sample = random.sample(names, min(len(names), SAMPLE_SIZE)) + + star_pattern_pairs = [] + + all_prefixes = [n[:i] for n in sample for i in range(len(n) + 1)] + all_prefixes = list(sorted(set(all_prefixes))) + all_suffixes = [n[i:] for n in sample for i in range(len(n) + 1)] + all_suffixes = list(sorted(set(all_suffixes))) + + for prefix in all_prefixes: + matched_names = [n for n in names if n.startswith(prefix)] + if len(matched_names) == 2: + mn0, mn1 = matched_names + for i in range(len(prefix) + 1): + x = Pattern(prefix[:i], "*", mn0[len(prefix) :]) + y = Pattern(prefix[:i], "*", mn1[len(prefix) :]) + star_pattern_pairs.append(PatternPair(x, y)) + + for suffix in all_suffixes: + matched_names = [n for n in names if n.endswith(suffix)] + if len(matched_names) == 2: + mn0, mn1 = matched_names + for i in range(len(suffix) + 1): + x = Pattern(mn0[: len(mn0) - len(suffix)], "*", suffix[i:]) + y = Pattern(mn1[: len(mn1) - len(suffix)], "*", suffix[i:]) + star_pattern_pairs.append(PatternPair(x, y)) + + star_pattern_pairs = list(set(star_pattern_pairs)) + return star_pattern_pairs + + +def get_variant_pattern_pairs(pp): + return [ + PatternPair(Pattern(pp.x.ll, mm, pp.x.rr), Pattern(pp.y.ll, mm, pp.y.rr)) + for mm in VALID_MM + ] + [ + PatternPair(Pattern(pp.y.ll, mm, pp.y.rr), Pattern(pp.x.ll, mm, pp.x.rr)) + for mm in VALID_MM + ] + + +def find_best_pattern_pair(names): + star_pattern_pairs = get_all_star_pattern_pairs(names) + star_pattern_pairs = [ + pp for pp in star_pattern_pairs if pp.matches(names, returns="fast_count") >= 2 + ] + # for pp in star_pattern_pairs: + # print(pp, pp.is_string_safe(), pp.score(names)) + + if len(star_pattern_pairs) == 0: + return PatternPair(Pattern("", "*", ""), Pattern("", "*", "")) + best_star_pattern_pair = maximal(star_pattern_pairs, key=lambda pp: pp.score(names)) + + pattern_pairs = get_variant_pattern_pairs(best_star_pattern_pair) + # for pp in pattern_pairs: + # print(pp, pp.is_string_safe(), pp.score(names)) + pattern_pairs = [pp for pp in pattern_pairs if pp.is_string_safe()] + best_pattern_pair = maximal(pattern_pairs, key=lambda pp: pp.score(names)) + + return best_pattern_pair + + +def list_dir_recursively(folder): + old_cwd = os.getcwd() + os.chdir(folder) + result = [] + for root, _, filenames in os.walk("."): + for filename in filenames: + result.append(os.path.join(root, filename)) + os.chdir(old_cwd) + return result + + +def test_with_dir(folder): + names = list_dir_recursively(folder) + print(folder, find_best_pattern_pair(names)) diff --git a/judge/views/test_formatter/tf_utils.py b/judge/views/test_formatter/tf_utils.py new file mode 100644 index 0000000..919b069 --- /dev/null +++ b/judge/views/test_formatter/tf_utils.py @@ -0,0 +1,15 @@ +def get_char_kind(char): + return 1 if char.isdigit() else 2 if char.isalpha() else 3 + + +def natural_sorting_key(name): + result = [] + last_kind = -1 + for char in name: + curr_kind = get_char_kind(char) + if curr_kind != last_kind: + result.append("") + result[-1] += char + last_kind = curr_kind + + return [x.zfill(16) if x.isdigit() else x for x in result] diff --git a/judge/views/user.py b/judge/views/user.py index db073f1..6feaffa 100644 --- a/judge/views/user.py +++ b/judge/views/user.py @@ -35,23 +35,42 @@ from django.views.generic import DetailView, ListView, TemplateView from django.template.loader import render_to_string from reversion import revisions -from judge.forms import UserForm, ProfileForm -from judge.models import Profile, Rating, Submission, Friend +from judge.forms import UserForm, ProfileForm, ProfileInfoForm +from judge.models import ( + Profile, + Rating, + Submission, + Friend, + ProfileInfo, + BlogPost, + Problem, + Contest, + Solution, +) from judge.performance_points import get_pp_breakdown from judge.ratings import rating_class, rating_progress from judge.tasks import import_users from judge.utils.problems import contest_completed_ids, user_completed_ids from judge.utils.ranker import ranker from judge.utils.unicode import utf8text +from judge.utils.users import ( + get_rating_rank, + get_points_rank, + get_awards, + get_contest_ratings, +) from judge.utils.views import ( QueryStringSortMixin, TitleMixin, generic_message, SingleObjectFormView, + DiggPaginatorMixin, ) from judge.utils.infinite_paginator import InfinitePaginationMixin +from judge.views.problem import ProblemList from .contests import ContestRanking + __all__ = [ "UserPage", "UserAboutPage", @@ -100,12 +119,12 @@ class UserPage(TitleMixin, UserMixin, DetailView): def get_title(self): return ( _("My account") - if self.request.user == self.object.user - else _("User %s") % self.object.user.username + if self.request.profile == self.object + else _("User %s") % self.object.username ) def get_content_title(self): - username = self.object.user.username + username = self.object.username css_class = self.object.css_class return mark_safe(f'{username}') @@ -142,22 +161,10 @@ class UserPage(TitleMixin, UserMixin, DetailView): rating = self.object.ratings.order_by("-contest__end_time")[:1] context["rating"] = rating[0] if rating else None - context["rank"] = ( - Profile.objects.filter( - is_unlisted=False, - performance_points__gt=self.object.performance_points, - ).count() - + 1 - ) + context["points_rank"] = get_points_rank(self.object) if rating: - context["rating_rank"] = ( - Profile.objects.filter( - is_unlisted=False, - rating__gt=self.object.rating, - ).count() - + 1 - ) + context["rating_rank"] = get_rating_rank(self.object) context["rated_users"] = Profile.objects.filter( is_unlisted=False, rating__isnull=False ).count() @@ -185,42 +192,9 @@ EPOCH = datetime(1970, 1, 1, tzinfo=timezone.utc) class UserAboutPage(UserPage): template_name = "user/user-about.html" - def get_awards(self, ratings): - result = {} - - sorted_ratings = sorted( - ratings, key=lambda x: (x.rank, -x.contest.end_time.timestamp()) - ) - - result["medals"] = [ - { - "label": rating.contest.name, - "ranking": rating.rank, - "link": reverse("contest_ranking", args=(rating.contest.key,)) - + "#!" - + self.object.username, - "date": date_format(rating.contest.end_time, _("M j, Y")), - } - for rating in sorted_ratings - if rating.rank <= 3 - ] - - num_awards = 0 - for i in result: - num_awards += len(result[i]) - - if num_awards == 0: - result = None - - return result - def get_context_data(self, **kwargs): context = super(UserAboutPage, self).get_context_data(**kwargs) - ratings = context["ratings"] = ( - self.object.ratings.order_by("-contest__end_time") - .select_related("contest") - .defer("contest__description") - ) + ratings = context["ratings"] = get_contest_ratings(self.object) context["rating_data"] = mark_safe( json.dumps( @@ -229,7 +203,9 @@ class UserAboutPage(UserPage): "label": rating.contest.name, "rating": rating.rating, "ranking": rating.rank, - "link": reverse("contest_ranking", args=(rating.contest.key,)), + "link": reverse("contest_ranking", args=(rating.contest.key,)) + + "#!" + + self.object.username, "timestamp": (rating.contest.end_time - EPOCH).total_seconds() * 1000, "date": date_format( @@ -244,7 +220,7 @@ class UserAboutPage(UserPage): ) ) - context["awards"] = self.get_awards(ratings) + context["awards"] = get_awards(self.object) if ratings: user_data = self.object.ratings.aggregate(Min("rating"), Max("rating")) @@ -288,19 +264,6 @@ class UserAboutPage(UserPage): return context - # follow/unfollow user - def post(self, request, user, *args, **kwargs): - try: - if not request.profile: - raise Exception("You have to login") - if request.profile.username == user: - raise Exception("Cannot make friend with yourself") - - following_profile = Profile.objects.get(user__username=user) - Friend.toggle_friend(request.profile, following_profile) - finally: - return HttpResponseRedirect(request.path_info) - class UserProblemsPage(UserPage): template_name = "user/user-problems.html" @@ -357,17 +320,49 @@ class UserProblemsPage(UserPage): return context -class UserBookMarkPage(UserPage): +class UserBookMarkPage(DiggPaginatorMixin, ListView, UserPage): template_name = "user/user-bookmarks.html" + context_object_name = "bookmarks" + paginate_by = 10 + + def get(self, request, *args, **kwargs): + self.current_tab = self.request.GET.get("tab", "problems") + self.user = self.object = self.get_object() + return super(UserBookMarkPage, self).get(request, *args, **kwargs) + + def get_queryset(self): + model = None + if self.current_tab == "posts": + model = BlogPost + elif self.current_tab == "contests": + model = Contest + elif self.current_tab == "editorials": + model = Solution + else: + model = Problem + + q = MakeBookMark.objects.filter(user=self.user).select_related("bookmark") + q = q.filter(bookmark__content_type=ContentType.objects.get_for_model(model)) + object_ids = q.values_list("bookmark__object_id", flat=True) + + res = model.objects.filter(id__in=object_ids) + if self.current_tab == "contests": + res = res.prefetch_related("organizations", "tags") + elif self.current_tab == "editorials": + res = res.select_related("problem") + + return res def get_context_data(self, **kwargs): context = super(UserBookMarkPage, self).get_context_data(**kwargs) - bookmark_list = MakeBookMark.objects.filter(user=self.object) - context["blogs"] = bookmark_list.filter(bookmark__page__startswith="b") - context["problems"] = bookmark_list.filter(bookmark__page__startswith="p") - context["contests"] = bookmark_list.filter(bookmark__page__startswith="c") - context["solutions"] = bookmark_list.filter(bookmark__page__startswith="s") + context["current_tab"] = self.current_tab + context["user"] = self.user + + context["page_prefix"] = ( + self.request.path + "?tab=" + self.current_tab + "&page=" + ) + context["first_page_href"] = self.request.path return context @@ -403,21 +398,25 @@ class UserPerformancePointsAjax(UserProblemsPage): @login_required def edit_profile(request): profile = request.profile + profile_info, created = ProfileInfo.objects.get_or_create(profile=profile) if request.method == "POST": form_user = UserForm(request.POST, instance=request.user) form = ProfileForm( request.POST, request.FILES, instance=profile, user=request.user ) + form_info = ProfileInfoForm(request.POST, instance=profile_info) if form_user.is_valid() and form.is_valid(): - with transaction.atomic(), revisions.create_revision(): + with revisions.create_revision(): form_user.save() form.save() + form_info.save() revisions.set_user(request.user) revisions.set_comment(_("Updated on site")) return HttpResponseRedirect(request.path) else: form_user = UserForm(instance=request.user) form = ProfileForm(instance=profile, user=request.user) + form_info = ProfileInfoForm(instance=profile_info) tzmap = settings.TIMEZONE_MAP @@ -428,9 +427,9 @@ def edit_profile(request): "require_staff_2fa": settings.DMOJ_REQUIRE_STAFF_2FA, "form_user": form_user, "form": form, + "form_info": form_info, "title": _("Edit profile"), "profile": profile, - "has_math_config": bool(settings.MATHOID_URL), "TIMEZONE_MAP": tzmap or "http://momentjs.com/static/img/world.png", "TIMEZONE_BG": settings.TIMEZONE_BG if tzmap else "#4E7CAD", }, @@ -457,14 +456,13 @@ class UserList(QueryStringSortMixin, InfinitePaginationMixin, TitleMixin, ListVi queryset = ( Profile.objects.filter(is_unlisted=False) .order_by(self.order, "id") - .select_related("user") .only( "display_rank", - "user__username", "points", "rating", "performance_points", "problem_count", + "about", ) ) if self.request.organization: @@ -472,11 +470,11 @@ class UserList(QueryStringSortMixin, InfinitePaginationMixin, TitleMixin, ListVi if (self.request.GET.get("friend") == "true") and self.request.profile: queryset = self.filter_friend_queryset(queryset) self.filter_friend = True - return queryset def get_context_data(self, **kwargs): context = super(UserList, self).get_context_data(**kwargs) + Profile.prefetch_profile_cache([u.id for u in context["users"]]) context["users"] = ranker( context["users"], rank=self.paginate_by * (context["page_obj"].number - 1) ) @@ -592,3 +590,17 @@ def toggle_darkmode(request): return HttpResponseBadRequest() request.session["darkmode"] = not request.session.get("darkmode", False) return HttpResponseRedirect(path) + + +@login_required +def toggle_follow(request, user): + if request.method != "POST": + raise Http404() + + profile_to_follow = get_object_or_404(Profile, user__username=user) + + if request.profile.id == profile_to_follow.id: + raise Http404() + + Friend.toggle_friend(request.profile, profile_to_follow) + return HttpResponseRedirect(reverse("user_page", args=(user,))) diff --git a/judge/views/volunteer.py b/judge/views/volunteer.py index 64c58f9..acd3469 100644 --- a/judge/views/volunteer.py +++ b/judge/views/volunteer.py @@ -19,15 +19,14 @@ def vote_problem(request): except Exception as e: return HttpResponseBadRequest() - with transaction.atomic(): - vote, _ = VolunteerProblemVote.objects.get_or_create( - voter=request.profile, - problem=problem, - defaults={"knowledge_points": 0, "thinking_points": 0}, - ) - vote.knowledge_points = knowledge_points - vote.thinking_points = thinking_points - vote.feedback = feedback - vote.types.set(types) - vote.save() + vote, _ = VolunteerProblemVote.objects.get_or_create( + voter=request.profile, + problem=problem, + defaults={"knowledge_points": 0, "thinking_points": 0}, + ) + vote.knowledge_points = knowledge_points + vote.thinking_points = thinking_points + vote.feedback = feedback + vote.types.set(types) + vote.save() return JsonResponse({}) diff --git a/judge/widgets/datetime.py b/judge/widgets/datetime.py index 15bb383..d205e1c 100644 --- a/judge/widgets/datetime.py +++ b/judge/widgets/datetime.py @@ -1,24 +1,49 @@ from django import forms +from django.templatetags.static import static +from django.utils.html import format_html +from django.forms.utils import flatatt +from django.utils.dateparse import parse_datetime, parse_date class DateTimePickerWidget(forms.DateTimeInput): - template_name = "widgets/datetimepicker.html" + input_type = "datetime-local" - def get_context(self, name, value, attrs): - datetimepicker_id = "datetimepicker_{name}".format(name=name) - if attrs is None: - attrs = dict() - attrs["data-target"] = "#{id}".format(id=datetimepicker_id) - attrs["class"] = "form-control datetimepicker-input" - context = super().get_context(name, value, attrs) - context["widget"]["datetimepicker_id"] = datetimepicker_id - return context + def render(self, name, value, attrs=None, renderer=None): + if value is None: + value = "" + elif isinstance(value, str): + # Attempt to parse the string back to datetime + parsed_date = parse_datetime(value) + if parsed_date is not None: + value = parsed_date.strftime("%Y-%m-%dT%H:%M") + else: + value = "" + else: + value = value.strftime("%Y-%m-%dT%H:%M") - @property - def media(self): - css_url = "/static/datetime-picker/datetimepicker.min.css" - js_url = "/static/datetime-picker/datetimepicker.full.min.js" - return forms.Media( - js=[js_url], - css={"screen": [css_url]}, + final_attrs = self.build_attrs( + attrs, {"type": self.input_type, "name": name, "value": value} ) + return format_html("", flatatt(final_attrs)) + + +class DatePickerWidget(forms.DateInput): + input_type = "date" + + def render(self, name, value, attrs=None, renderer=None): + if value is None: + value = "" + elif isinstance(value, str): + # Attempt to parse the string back to date + parsed_date = parse_date(value) + if parsed_date is not None: + value = parsed_date.strftime("%Y-%m-%d") + else: + value = "" + else: + value = value.strftime("%Y-%m-%d") + + final_attrs = self.build_attrs( + attrs, {"type": self.input_type, "name": name, "value": value} + ) + return format_html("", flatatt(final_attrs)) diff --git a/judge/widgets/pagedown.py b/judge/widgets/pagedown.py index c30940b..b0403d5 100644 --- a/judge/widgets/pagedown.py +++ b/judge/widgets/pagedown.py @@ -10,8 +10,8 @@ from judge.widgets.mixins import CompressorWidgetMixin __all__ = [ "PagedownWidget", "AdminPagedownWidget", - "MathJaxPagedownWidget", - "MathJaxAdminPagedownWidget", + "KatexPagedownWidget", + "KatexAdminPagedownWidget", "HeavyPreviewPageDownWidget", "HeavyPreviewAdminPageDownWidget", ] @@ -21,8 +21,8 @@ try: except ImportError: PagedownWidget = None AdminPagedownWidget = None - MathJaxPagedownWidget = None - MathJaxAdminPagedownWidget = None + KatexPagedownWidget = None + KatexAdminPagedownWidget = None HeavyPreviewPageDownWidget = None HeavyPreviewAdminPageDownWidget = None else: @@ -61,15 +61,19 @@ else: } js = ["admin/js/pagedown.js"] - class MathJaxPagedownWidget(PagedownWidget): + class KatexPagedownWidget(PagedownWidget): class Media: + css = { + "all": ["https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css"] + } js = [ - "mathjax3_config.js", - "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js", + "katex_config.js", + "https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js", + "https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js", "pagedown_math.js", ] - class MathJaxAdminPagedownWidget(AdminPagedownWidget, MathJaxPagedownWidget): + class KatexAdminPagedownWidget(AdminPagedownWidget, KatexPagedownWidget): pass class HeavyPreviewPageDownWidget(PagedownWidget): @@ -112,12 +116,11 @@ else: js = ["dmmd-preview.js"] class HeavyPreviewAdminPageDownWidget( - AdminPagedownWidget, HeavyPreviewPageDownWidget + KatexPagedownWidget, AdminPagedownWidget, HeavyPreviewPageDownWidget ): class Media: css = { "all": [ - "pygment-github.css", "table.css", "ranks.css", "dmmd-preview.css", diff --git a/locale/vi/LC_MESSAGES/django.po b/locale/vi/LC_MESSAGES/django.po index 338f920..a6c4b1d 100644 --- a/locale/vi/LC_MESSAGES/django.po +++ b/locale/vi/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: lqdoj2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-02 08:11+0700\n" +"POT-Creation-Date: 2024-06-19 05:23+0700\n" "PO-Revision-Date: 2021-07-20 03:44\n" "Last-Translator: Icyene\n" "Language-Team: Vietnamese\n" @@ -18,301 +18,310 @@ msgstr "" "X-Crowdin-Project-ID: 466004\n" "X-Crowdin-File-ID: 5\n" -#: chat_box/models.py:54 chat_box/models.py:80 chat_box/models.py:96 -#: judge/admin/interface.py:150 judge/models/contest.py:647 -#: judge/models/contest.py:853 judge/models/course.py:115 -#: judge/models/profile.py:433 judge/models/profile.py:511 +#: chat_box/models.py:22 chat_box/models.py:83 +msgid "last seen" +msgstr "xem lần cuối" + +#: chat_box/models.py:54 chat_box/models.py:79 chat_box/models.py:95 +#: judge/admin/interface.py:151 judge/models/contest.py:693 +#: judge/models/contest.py:899 judge/models/course.py:129 +#: judge/models/profile.py:462 judge/models/profile.py:536 msgid "user" msgstr "người dùng" -#: chat_box/models.py:56 judge/models/comment.py:44 +#: chat_box/models.py:56 judge/models/comment.py:45 #: judge/models/notification.py:17 msgid "posted time" msgstr "thời gian đăng" -#: chat_box/models.py:58 judge/models/comment.py:49 +#: chat_box/models.py:58 judge/models/comment.py:50 msgid "body of comment" msgstr "nội dung bình luận" -#: chat_box/models.py:84 -msgid "last seen" -msgstr "xem lần cuối" - #: chat_box/views.py:44 msgid "LQDOJ Chat" msgstr "" -#: chat_box/views.py:417 +#: chat_box/views.py:444 msgid "Recent" msgstr "Gần đây" -#: chat_box/views.py:421 templates/base.html:187 -#: templates/comments/content-list.html:78 -#: templates/contest/contest-list-tabs.html:4 -#: templates/contest/ranking-table.html:47 templates/internal/problem.html:62 +#: chat_box/views.py:448 templates/base.html:196 +#: templates/comments/content-list.html:72 +#: templates/contest/contest-list-tabs.html:6 +#: templates/contest/ranking-table.html:52 templates/course/left_sidebar.html:8 +#: templates/internal/problem/problem.html:63 #: templates/organization/org-left-sidebar.html:12 #: templates/problem/left-sidebar.html:6 #: templates/problem/problem-list-tabs.html:6 -#: templates/submission/info-base.html:12 templates/submission/list.html:395 +#: templates/submission/info-base.html:12 templates/submission/list.html:394 #: templates/submission/submission-list-tabs.html:15 msgid "Admin" msgstr "Admin" -#: dmoj/settings.py:364 +#: dmoj/settings.py:365 msgid "Vietnamese" msgstr "Tiếng Việt" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "English" msgstr "" -#: dmoj/urls.py:109 +#: dmoj/urls.py:107 msgid "Activation key invalid" msgstr "Mã kích hoạt không hợp lệ" -#: dmoj/urls.py:114 +#: dmoj/urls.py:112 msgid "Register" msgstr "Đăng ký" -#: dmoj/urls.py:121 +#: dmoj/urls.py:119 msgid "Registration Completed" msgstr "Đăng ký hoàn thành" -#: dmoj/urls.py:129 +#: dmoj/urls.py:127 msgid "Registration not allowed" msgstr "Đăng ký không thành công" -#: dmoj/urls.py:137 +#: dmoj/urls.py:135 msgid "Login" msgstr "Đăng nhập" -#: dmoj/urls.py:225 templates/base.html:111 +#: dmoj/urls.py:221 templates/base.html:118 +#: templates/course/left_sidebar.html:2 #: templates/organization/org-left-sidebar.html:2 msgid "Home" msgstr "Trang chủ" -#: judge/admin/comments.py:58 +#: judge/admin/comments.py:57 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "Đã ẩn %d bình luận." -#: judge/admin/comments.py:65 +#: judge/admin/comments.py:64 msgid "Hide comments" msgstr "Ẩn bình luận" -#: judge/admin/comments.py:72 +#: judge/admin/comments.py:71 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "Không ẩn được %d bình luận." -#: judge/admin/comments.py:79 +#: judge/admin/comments.py:78 msgid "Unhide comments" msgstr "Hiện bình luận" -#: judge/admin/contest.py:37 +#: judge/admin/contest.py:45 msgid "Included contests" msgstr "" -#: judge/admin/contest.py:79 judge/admin/volunteer.py:54 -#: templates/contest/clarification.html:42 templates/contest/contest.html:105 +#: judge/admin/contest.py:87 judge/admin/volunteer.py:54 +#: templates/contest/clarification.html:42 templates/contest/contest.html:116 #: templates/contest/moss.html:41 templates/internal/left-sidebar.html:2 -#: templates/internal/problem.html:40 templates/problem/list.html:17 +#: templates/internal/problem/problem.html:41 templates/problem/list.html:17 #: templates/problem/list.html:34 templates/problem/list.html:153 #: templates/user/user-problems.html:56 templates/user/user-problems.html:98 msgid "Problem" msgstr "Bài tập" -#: judge/admin/contest.py:155 +#: judge/admin/contest.py:183 templates/base.html:211 msgid "Settings" msgstr "Cài đặt" -#: judge/admin/contest.py:169 +#: judge/admin/contest.py:198 msgid "Scheduling" msgstr "" -#: judge/admin/contest.py:173 +#: judge/admin/contest.py:202 msgid "Details" msgstr "Chi tiết" -#: judge/admin/contest.py:185 templates/contest/list.html:263 -#: templates/contest/list.html:304 templates/contest/list.html:349 -#: templates/contest/list.html:386 +#: judge/admin/contest.py:214 templates/contest/macros.html:83 +#: templates/contest/macros.html:93 msgid "Format" msgstr "Thể thức" -#: judge/admin/contest.py:189 templates/contest/ranking-table.html:5 -#: templates/user/user-about.html:15 templates/user/user-about.html:45 +#: judge/admin/contest.py:218 templates/contest/ranking-table.html:5 +#: templates/profile-table.html:14 templates/profile-table.html:37 +#: templates/user/user-about.html:15 templates/user/user-about.html:44 msgid "Rating" msgstr "" -#: judge/admin/contest.py:201 +#: judge/admin/contest.py:230 msgid "Access" msgstr "Truy cập" -#: judge/admin/contest.py:211 judge/admin/problem.py:220 +#: judge/admin/contest.py:240 judge/admin/problem.py:233 msgid "Justice" msgstr "Xử phạt" -#: judge/admin/contest.py:331 +#: judge/admin/contest.py:368 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "%d kỳ thi đã được đánh dấu hiển thị." -#: judge/admin/contest.py:338 +#: judge/admin/contest.py:375 msgid "Mark contests as visible" msgstr "Đánh dấu hiển thị các kỳ thi" -#: judge/admin/contest.py:349 +#: judge/admin/contest.py:386 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "%d kỳ thi đã được đánh dấu ẩn." -#: judge/admin/contest.py:356 +#: judge/admin/contest.py:393 msgid "Mark contests as hidden" msgstr "Ẩn các kỳ thi" -#: judge/admin/contest.py:377 judge/admin/submission.py:241 +#: judge/admin/contest.py:414 judge/admin/submission.py:241 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." msgstr[0] "%d bài nộp đã được lên lịch thành công để chấm lại." -#: judge/admin/contest.py:485 +#: judge/admin/contest.py:522 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "%d thí sinh đã được tính điểm lại." -#: judge/admin/contest.py:492 +#: judge/admin/contest.py:529 msgid "Recalculate results" msgstr "Tính toán lại kết quả" -#: judge/admin/contest.py:497 judge/admin/organization.py:99 +#: judge/admin/contest.py:534 judge/admin/organization.py:99 msgid "username" msgstr "tên đăng nhập" -#: judge/admin/contest.py:503 templates/base.html:239 +#: judge/admin/contest.py:540 templates/base.html:251 msgid "virtual" msgstr "ảo" -#: judge/admin/interface.py:35 judge/models/interface.py:50 +#: judge/admin/interface.py:35 judge/models/interface.py:51 msgid "link path" msgstr "đường dẫn" -#: judge/admin/interface.py:94 +#: judge/admin/interface.py:95 templates/course/lesson.html:10 msgid "Content" msgstr "Nội dung" -#: judge/admin/interface.py:95 +#: judge/admin/interface.py:96 msgid "Summary" msgstr "Tổng kết" -#: judge/admin/interface.py:217 +#: judge/admin/interface.py:218 msgid "object" msgstr "" -#: judge/admin/interface.py:227 +#: judge/admin/interface.py:228 msgid "Diff" msgstr "" -#: judge/admin/interface.py:232 +#: judge/admin/interface.py:233 msgid "diff" msgstr "" -#: judge/admin/organization.py:61 judge/admin/problem.py:277 -#: judge/admin/profile.py:117 +#: judge/admin/organization.py:61 judge/admin/problem.py:290 +#: judge/admin/profile.py:122 msgid "View on site" msgstr "Xem trên trang" -#: judge/admin/problem.py:55 +#: judge/admin/problem.py:56 msgid "Describe the changes you made (optional)" msgstr "Mô tả các thay đổi (tùy chọn)" -#: judge/admin/problem.py:111 +#: judge/admin/problem.py:66 +#, fuzzy +#| msgid "Problem with code already exists." +msgid "A problem with this code already exists." +msgstr "Mã bài đã tồn tại." + +#: judge/admin/problem.py:122 msgid "Memory unit" msgstr "Đơn vị bộ nhớ" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:226 msgid "Social Media" msgstr "Mạng Xã Hội" -#: judge/admin/problem.py:216 +#: judge/admin/problem.py:229 msgid "Taxonomy" msgstr "" -#: judge/admin/problem.py:217 judge/admin/problem.py:452 -#: templates/contest/contest.html:106 -#: templates/contest/contests_summary.html:41 templates/problem/data.html:533 +#: judge/admin/problem.py:230 judge/admin/problem.py:463 +#: templates/contest/contest.html:117 +#: templates/contest/contests_summary.html:41 templates/problem/data.html:535 #: templates/problem/list.html:22 templates/problem/list.html:48 +#: templates/profile-table.html:31 templates/profile-table.html:41 #: templates/user/base-users-table.html:10 templates/user/user-about.html:36 -#: templates/user/user-about.html:52 templates/user/user-problems.html:58 +#: templates/user/user-about.html:50 templates/user/user-problems.html:58 msgid "Points" msgstr "Điểm" -#: judge/admin/problem.py:218 +#: judge/admin/problem.py:231 msgid "Limits" msgstr "Giới hạn" -#: judge/admin/problem.py:219 judge/admin/submission.py:351 -#: templates/base.html:155 templates/stats/tab.html:4 -#: templates/submission/list.html:347 +#: judge/admin/problem.py:232 judge/admin/submission.py:351 +#: templates/base.html:162 templates/stats/tab.html:4 +#: templates/submission/list.html:346 msgid "Language" msgstr "Ngôn ngữ" -#: judge/admin/problem.py:221 +#: judge/admin/problem.py:234 msgid "History" msgstr "Lịch sử" -#: judge/admin/problem.py:273 templates/problem/list-base.html:93 +#: judge/admin/problem.py:286 templates/problem/list-base.html:93 msgid "Authors" msgstr "Các tác giả" -#: judge/admin/problem.py:294 +#: judge/admin/problem.py:307 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." msgstr[0] "%d bài tập đã được đánh dấu công khai." -#: judge/admin/problem.py:301 +#: judge/admin/problem.py:314 msgid "Mark problems as public" msgstr "Công khai bài tập" -#: judge/admin/problem.py:310 +#: judge/admin/problem.py:323 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." msgstr[0] "%d bài tập đã được đánh dấu riêng tư." -#: judge/admin/problem.py:317 +#: judge/admin/problem.py:330 msgid "Mark problems as private" msgstr "Đánh dấu các bài tập là riêng tư" -#: judge/admin/problem.py:446 judge/admin/submission.py:314 +#: judge/admin/problem.py:457 judge/admin/submission.py:314 #: templates/problem/list.html:18 templates/problem/list.html:37 msgid "Problem code" msgstr "Mã bài" -#: judge/admin/problem.py:458 judge/admin/submission.py:320 +#: judge/admin/problem.py:469 judge/admin/submission.py:320 msgid "Problem name" msgstr "Tên bài" -#: judge/admin/problem.py:464 +#: judge/admin/problem.py:475 #, fuzzy #| msgid "contest rating" msgid "Voter rating" msgstr "rating kỳ thi" -#: judge/admin/problem.py:470 +#: judge/admin/problem.py:481 #, fuzzy #| msgid "Total points" msgid "Voter point" msgstr "Tổng điểm" -#: judge/admin/problem.py:476 +#: judge/admin/problem.py:487 msgid "Vote" msgstr "" @@ -320,36 +329,36 @@ msgstr "" msgid "timezone" msgstr "múi giờ" -#: judge/admin/profile.py:126 judge/admin/submission.py:327 +#: judge/admin/profile.py:131 judge/admin/submission.py:327 #: templates/notification/list.html:9 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:19 -#: templates/ticket/list.html:263 +#: templates/ticket/list.html:265 msgid "User" msgstr "Thành viên" -#: judge/admin/profile.py:132 templates/registration/registration_form.html:40 -#: templates/user/edit-profile.html:116 templates/user/import/table_csv.html:8 +#: judge/admin/profile.py:137 templates/registration/registration_form.html:40 +#: templates/user/edit-profile.html:123 templates/user/import/table_csv.html:8 msgid "Email" msgstr "Email" -#: judge/admin/profile.py:138 judge/views/register.py:36 +#: judge/admin/profile.py:143 judge/views/register.py:36 #: templates/registration/registration_form.html:68 -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:147 msgid "Timezone" msgstr "Múi giờ" -#: judge/admin/profile.py:144 +#: judge/admin/profile.py:149 msgid "date joined" msgstr "ngày tham gia" -#: judge/admin/profile.py:154 +#: judge/admin/profile.py:159 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." msgstr[0] "%d người dùng đã được tính điểm lại." -#: judge/admin/profile.py:161 +#: judge/admin/profile.py:166 msgid "Recalculate scores" msgstr "Tính điểm lại" @@ -408,7 +417,7 @@ msgstr "Bạn không có quyền chấm lại nhiều bài nộp như vậy." msgid "Rejudge the selected submissions" msgstr "Chấm lại các bài nộp đã chọn" -#: judge/admin/submission.py:302 judge/views/problem_manage.py:226 +#: judge/admin/submission.py:302 judge/views/problem_manage.py:218 #, python-format msgid "%d submission were successfully rescored." msgid_plural "%d submissions were successfully rescored." @@ -418,14 +427,15 @@ msgstr[0] "%d bài nộp đã được tính điểm lại." msgid "Rescore the selected submissions" msgstr "Tính điểm lại cái bài nộp" -#: judge/admin/submission.py:332 templates/contest/list.html:248 -#: templates/contest/list.html:293 templates/contest/list.html:338 -#: templates/contest/list.html:380 templates/notification/list.html:12 +#: judge/admin/submission.py:332 templates/contest/list.html:174 +#: templates/contest/list.html:216 templates/contest/list.html:253 +#: templates/contest/list.html:287 templates/notification/list.html:12 #: templates/organization/requests/log.html:10 #: templates/organization/requests/pending.html:20 #: templates/problem/list.html:154 #: templates/submission/status-testcases.html:139 #: templates/submission/status-testcases.html:141 +#: templates/user/user-bookmarks.html:84 msgid "Time" msgstr "Thời gian" @@ -455,7 +465,7 @@ msgstr "Các bài tập trong nhóm này" msgid "These problems are included in this type of problems" msgstr "Các bài tập dạng này" -#: judge/admin/volunteer.py:60 templates/internal/problem.html:81 +#: judge/admin/volunteer.py:60 templates/internal/problem/votes.html:17 #: templates/problem/list.html:20 templates/problem/list.html:44 msgid "Types" msgstr "Dạng" @@ -464,23 +474,6 @@ msgstr "Dạng" msgid "Online Judge" msgstr "" -#: judge/comments.py:63 -msgid "Comment body" -msgstr "Nội dung bình luận" - -#: judge/comments.py:69 judge/views/ticket.py:73 -msgid "Your part is silent, little toad." -msgstr "Bạn không được phép bình luận." - -#: judge/comments.py:78 templates/comments/list.html:17 -msgid "" -"You need to have solved at least one problem before your voice can be heard." -msgstr "Bạn phải giải ít nhất một bài trước khi được phép bình luận." - -#: judge/comments.py:122 -msgid "Posted comment" -msgstr "Bình luận đã đăng" - #: judge/contest_format/atcoder.py:19 msgid "AtCoder" msgstr "" @@ -509,79 +502,109 @@ msgstr "IOI mới" msgid "Ultimate" msgstr "" -#: judge/forms.py:113 +#: judge/custom_translations.py:8 +#, python-format +msgid "" +"This password is too short. It must contain at least %(min_length)d " +"character." +msgid_plural "" +"This password is too short. It must contain at least %(min_length)d " +"characters." +msgstr[0] "Mật khẩu phải chứa ít nhất %(min_length)d ký tự." + +#: judge/custom_translations.py:13 +#, python-format +msgid "Your password must contain at least %(min_length)d character." +msgid_plural "Your password must contain at least %(min_length)d characters." +msgstr[0] "Mật khẩu phải chứa ít nhất %(min_length)d ký tự." + +#: judge/custom_translations.py:17 +msgid "The two password fields didn’t match." +msgstr "Mật khẩu xác nhận không khớp." + +#: judge/custom_translations.py:18 +msgid "Your password can’t be entirely numeric." +msgstr "Mật khẩu không được toàn chữ số." + +#: judge/custom_translations.py:20 +msgid "Bug Report" +msgstr "Báo cáo lỗi" + +#: judge/custom_translations.py:21 judge/views/course.py:76 +#: templates/course/list.html:8 +msgid "Courses" +msgstr "Khóa học" + +#: judge/forms.py:120 msgid "File size exceeds the maximum allowed limit of 5MB." msgstr "File tải lên không được quá 5MB." -#: judge/forms.py:144 +#: judge/forms.py:151 msgid "Any judge" msgstr "" -#: judge/forms.py:344 +#: judge/forms.py:351 msgid "Enter usernames separating by space" msgstr "Nhập các tên đăng nhập, cách nhau bởi dấu cách" -#: judge/forms.py:345 judge/views/stats.py:166 templates/stats/site.html:27 +#: judge/forms.py:352 judge/views/stats.py:166 templates/stats/site.html:27 msgid "New users" msgstr "Thành viên mới" -#: judge/forms.py:362 +#: judge/forms.py:369 #, python-brace-format msgid "These usernames don't exist: {usernames}" msgstr "Các tên đăng nhập này không tồn tại: {usernames}" -#: judge/forms.py:421 judge/views/register.py:30 -#: templates/registration/registration_form.html:34 -#: templates/user/base-users-table.html:5 -#: templates/user/import/table_csv.html:4 -msgid "Username" -msgstr "Tên đăng nhập" +#: judge/forms.py:429 +msgid "Username/Email" +msgstr "Tên đăng nhập / Email" -#: judge/forms.py:422 judge/views/email.py:22 +#: judge/forms.py:431 judge/views/email.py:22 #: templates/registration/registration_form.html:46 #: templates/registration/registration_form.html:60 -#: templates/user/edit-profile.html:108 templates/user/import/table_csv.html:5 +#: templates/user/edit-profile.html:115 templates/user/import/table_csv.html:5 msgid "Password" msgstr "Mật khẩu" -#: judge/forms.py:448 +#: judge/forms.py:457 msgid "Two Factor Authentication tokens must be 6 decimal digits." msgstr "Two Factor Authentication phải chứa 6 chữ số." -#: judge/forms.py:461 templates/registration/totp_auth.html:32 +#: judge/forms.py:470 templates/registration/totp_auth.html:32 msgid "Invalid Two Factor Authentication token." msgstr "Token Two Factor Authentication không hợp lệ." -#: judge/forms.py:468 judge/models/problem.py:130 +#: judge/forms.py:477 judge/models/problem.py:133 msgid "Problem code must be ^[a-z0-9]+$" msgstr "Mã bài phải có dạng ^[a-z0-9]+$" -#: judge/forms.py:475 +#: judge/forms.py:484 msgid "Problem with code already exists." msgstr "Mã bài đã tồn tại." -#: judge/forms.py:482 judge/models/contest.py:95 +#: judge/forms.py:491 judge/models/contest.py:102 msgid "Contest id must be ^[a-z0-9]+$" msgstr "Mã kỳ thi phải có dạng ^[a-z0-9]+$" -#: judge/forms.py:489 templates/contest/clone.html:47 -#: templates/problem/search-form.html:39 +#: judge/forms.py:498 templates/contest/clone.html:47 +#: templates/contest/search-form.html:12 templates/problem/search-form.html:39 msgid "Group" msgstr "Nhóm" -#: judge/forms.py:497 +#: judge/forms.py:506 msgid "Contest with key already exists." msgstr "Mã kỳ thi đã tồn tại." -#: judge/forms.py:505 +#: judge/forms.py:514 msgid "Group doesn't exist." msgstr "Nhóm không tồn tại." -#: judge/forms.py:507 +#: judge/forms.py:516 msgid "You don't have permission in this group." msgstr "Bạn không có quyền trong nhóm này." -#: judge/forms.py:557 +#: judge/forms.py:566 msgid "This problem is duplicated." msgstr "Bài này bị lặp" @@ -591,16 +614,11 @@ msgid "N j, Y, g:i a" msgstr "g:i a j b, Y" #: judge/jinja2/datetime.py:26 templates/chat/message.html:13 -#: templates/comments/content-list.html:33 +#: templates/comments/content-list.html:28 #, python-brace-format msgid "{time}" msgstr "{time}" -#: judge/jinja2/datetime.py:26 templates/blog/content.html:12 -#, python-brace-format -msgid "on {time}" -msgstr "vào {time}" - #: judge/middleware.py:135 msgid "No permission" msgstr "Không có quyền truy cập" @@ -613,209 +631,178 @@ msgstr "Bạn phải là thành viên của nhóm." msgid "No such group" msgstr "Nhóm không tồn tại" -#: judge/models/bookmark.py:16 judge/models/comment.py:171 +#: judge/models/bookmark.py:17 judge/models/comment.py:164 #: judge/models/pagevote.py:16 msgid "associated page" msgstr "trang tương ứng" -#: judge/models/bookmark.py:19 judge/models/comment.py:48 -#: judge/models/pagevote.py:19 judge/models/problem.py:718 +#: judge/models/bookmark.py:20 judge/models/comment.py:49 +#: judge/models/pagevote.py:19 judge/models/problem.py:744 msgid "votes" msgstr "bình chọn" -#: judge/models/bookmark.py:32 -#, fuzzy -#| msgid "Bookmark" +#: judge/models/bookmark.py:30 msgid "bookmark" msgstr "Lưu" -#: judge/models/bookmark.py:33 -#, fuzzy -#| msgid "Bookmark" +#: judge/models/bookmark.py:31 msgid "bookmarks" msgstr "Lưu" -#: judge/models/bookmark.py:54 -#, fuzzy -#| msgid "Bookmark" +#: judge/models/bookmark.py:52 msgid "make bookmark" msgstr "Lưu" -#: judge/models/bookmark.py:55 -#, fuzzy -#| msgid "Bookmark" +#: judge/models/bookmark.py:53 msgid "make bookmarks" msgstr "Lưu" -#: judge/models/choices.py:59 -msgid "Leave as LaTeX" -msgstr "Để định dạng LaTeX" - -#: judge/models/choices.py:60 -msgid "SVG with PNG fallback" -msgstr "" - -#: judge/models/choices.py:61 -msgid "MathML only" -msgstr "chỉ dùng MathML" - -#: judge/models/choices.py:62 -msgid "MathJax with SVG/PNG fallback" -msgstr "" - -#: judge/models/choices.py:63 -msgid "Detect best quality" -msgstr "" - -#: judge/models/comment.py:43 +#: judge/models/comment.py:44 msgid "commenter" msgstr "người bình luận" -#: judge/models/comment.py:50 +#: judge/models/comment.py:51 msgid "hide the comment" msgstr "ẩn bình luận" -#: judge/models/comment.py:53 +#: judge/models/comment.py:54 msgid "parent" msgstr "" -#: judge/models/comment.py:63 judge/models/notification.py:31 +#: judge/models/comment.py:65 judge/models/notification.py:31 msgid "comment" msgstr "bình luận" -#: judge/models/comment.py:64 +#: judge/models/comment.py:66 msgid "comments" msgstr "" -#: judge/models/comment.py:132 -#, fuzzy -#| msgid "Editorial for {0}" +#: judge/models/comment.py:125 msgid "Editorial for " msgstr "Hướng dẫn cho {0}" -#: judge/models/comment.py:164 +#: judge/models/comment.py:157 msgid "comment vote" msgstr "" -#: judge/models/comment.py:165 +#: judge/models/comment.py:158 msgid "comment votes" msgstr "" -#: judge/models/comment.py:176 +#: judge/models/comment.py:169 msgid "Override comment lock" msgstr "" -#: judge/models/contest.py:42 +#: judge/models/contest.py:49 msgid "Invalid colour." msgstr "" -#: judge/models/contest.py:46 +#: judge/models/contest.py:53 msgid "tag name" msgstr "" -#: judge/models/contest.py:50 +#: judge/models/contest.py:57 msgid "Lowercase letters and hyphens only." msgstr "" -#: judge/models/contest.py:55 +#: judge/models/contest.py:62 msgid "tag colour" msgstr "" -#: judge/models/contest.py:57 +#: judge/models/contest.py:64 msgid "tag description" msgstr "" -#: judge/models/contest.py:78 +#: judge/models/contest.py:85 msgid "contest tag" msgstr "" -#: judge/models/contest.py:79 judge/models/contest.py:255 +#: judge/models/contest.py:86 judge/models/contest.py:262 msgid "contest tags" msgstr "nhãn kỳ thi" -#: judge/models/contest.py:87 +#: judge/models/contest.py:94 msgid "Visible" msgstr "Hiển thị" -#: judge/models/contest.py:88 +#: judge/models/contest.py:95 msgid "Hidden for duration of contest" msgstr "Ẩn trong thời gian kỳ thi" -#: judge/models/contest.py:89 +#: judge/models/contest.py:96 msgid "Hidden for duration of participation" msgstr "Ẩn trong thời gian tham gia" -#: judge/models/contest.py:93 +#: judge/models/contest.py:100 msgid "contest id" msgstr "ID kỳ thi" -#: judge/models/contest.py:98 +#: judge/models/contest.py:105 msgid "contest name" msgstr "tên kỳ thi" -#: judge/models/contest.py:102 judge/models/interface.py:79 -#: judge/models/problem.py:672 +#: judge/models/contest.py:109 judge/models/interface.py:80 +#: judge/models/problem.py:694 msgid "authors" msgstr "tác giả" -#: judge/models/contest.py:103 +#: judge/models/contest.py:110 msgid "These users will be able to edit the contest." msgstr "Những người dùng này có quyền chỉnh sửa kỳ thi." -#: judge/models/contest.py:108 judge/models/problem.py:154 +#: judge/models/contest.py:115 judge/models/problem.py:157 msgid "curators" msgstr "quản lý" -#: judge/models/contest.py:110 +#: judge/models/contest.py:117 msgid "" "These users will be able to edit the contest, but will not be listed as " "authors." msgstr "Những người dùng này là tác giả và có quyền chỉnh sửa kỳ thi." -#: judge/models/contest.py:118 judge/models/problem.py:164 +#: judge/models/contest.py:125 judge/models/problem.py:167 msgid "testers" msgstr "" -#: judge/models/contest.py:120 +#: judge/models/contest.py:127 msgid "These users will be able to view the contest, but not edit it." msgstr "" "Những người dùng này có thể thấy kỳ thi nhưng không có quyền chỉnh sửa." -#: judge/models/contest.py:125 judge/models/course.py:158 -#: judge/models/runtime.py:211 +#: judge/models/contest.py:132 judge/models/runtime.py:217 msgid "description" msgstr "mô tả" -#: judge/models/contest.py:127 judge/models/problem.py:588 -#: judge/models/runtime.py:216 +#: judge/models/contest.py:134 judge/models/problem.py:610 +#: judge/models/runtime.py:222 msgid "problems" msgstr "bài tập" -#: judge/models/contest.py:129 judge/models/contest.py:652 +#: judge/models/contest.py:136 judge/models/contest.py:698 msgid "start time" msgstr "thời gian bắt đầu" -#: judge/models/contest.py:130 +#: judge/models/contest.py:137 msgid "end time" msgstr "thời gian kết thúc" -#: judge/models/contest.py:132 judge/models/problem.py:183 -#: judge/models/problem.py:623 +#: judge/models/contest.py:139 judge/models/problem.py:186 +#: judge/models/problem.py:645 msgid "time limit" msgstr "giới hạn thời gian" -#: judge/models/contest.py:136 +#: judge/models/contest.py:143 msgid "" "Format hh:mm:ss. For example, if you want a 2-hour contest, enter 02:00:00" msgstr "" "Định dạng hh:mm:ss (giờ:phút:giây). Ví dụ, nếu muốn tạo kỳ thi dài 2h, hãy " "nhập 02:00:00" -#: judge/models/contest.py:140 +#: judge/models/contest.py:147 msgid "freeze after" msgstr "đóng băng sau" -#: judge/models/contest.py:144 +#: judge/models/contest.py:151 msgid "" "Format hh:mm:ss. For example, if you want to freeze contest after 2 hours, " "enter 02:00:00" @@ -823,12 +810,12 @@ msgstr "" "Định dạng hh:mm:ss (giờ:phút:giây). Ví dụ, nếu muốn đóng băng kỳ thi sau 2h, " "hãy nhập 02:00:00" -#: judge/models/contest.py:148 judge/models/course.py:28 -#: judge/models/course.py:164 judge/models/problem.py:222 +#: judge/models/contest.py:155 judge/models/course.py:27 +#: judge/models/problem.py:225 msgid "publicly visible" msgstr "công khai" -#: judge/models/contest.py:151 +#: judge/models/contest.py:158 msgid "" "Should be set even for organization-private contests, where it determines " "whether the contest is visible to members of the specified organizations." @@ -836,92 +823,92 @@ msgstr "" "Đánh dấu ngay cả với các kỳ thi riêng tư của nhóm, quyết định việc kỳ thi có " "được hiển thị với các thành viên hay không." -#: judge/models/contest.py:157 +#: judge/models/contest.py:164 msgid "contest rated" msgstr "kỳ thi được xếp hạng" -#: judge/models/contest.py:158 +#: judge/models/contest.py:165 msgid "Whether this contest can be rated." msgstr "Quyết định kỳ thi có được xếp hạng không." -#: judge/models/contest.py:162 +#: judge/models/contest.py:169 msgid "scoreboard visibility" msgstr "khả năng hiển thị của bảng điểm" -#: judge/models/contest.py:165 +#: judge/models/contest.py:172 msgid "Scoreboard visibility through the duration of the contest" msgstr "Khả năng hiển thị của bảng điểm trong thời gian kỳ thi" -#: judge/models/contest.py:170 +#: judge/models/contest.py:177 msgid "view contest scoreboard" msgstr "xem bảng điểm kỳ thi" -#: judge/models/contest.py:173 +#: judge/models/contest.py:180 msgid "These users will be able to view the scoreboard." msgstr "Những người dùng này được phép xem bảng điểm." -#: judge/models/contest.py:176 +#: judge/models/contest.py:183 msgid "public scoreboard" msgstr "công khai bảng điểm" -#: judge/models/contest.py:177 +#: judge/models/contest.py:184 msgid "Ranking page is public even for private contests." msgstr "Trang xếp hạng được công khai, kể cả cho kỳ thi riêng tư." -#: judge/models/contest.py:181 +#: judge/models/contest.py:188 msgid "no comments" msgstr "không bình luận" -#: judge/models/contest.py:182 +#: judge/models/contest.py:189 msgid "Use clarification system instead of comments." msgstr "Dùng hệ thống thông báo thay vì bình luận." -#: judge/models/contest.py:187 +#: judge/models/contest.py:194 msgid "Rating floor for contest" msgstr "Cận dưới rating được xếp hạng trong kỳ thi" -#: judge/models/contest.py:193 +#: judge/models/contest.py:200 msgid "Rating ceiling for contest" msgstr "Cận trên rating được xếp hạng trong kỳ thi" -#: judge/models/contest.py:198 +#: judge/models/contest.py:205 msgid "rate all" msgstr "xếp hạng tất cả" -#: judge/models/contest.py:199 +#: judge/models/contest.py:206 msgid "Rate all users who joined." msgstr "Xếp hạng tất cả người dùng đã tham gia (kể cả không nộp)." -#: judge/models/contest.py:204 +#: judge/models/contest.py:211 msgid "exclude from ratings" msgstr "không xếp hạng" -#: judge/models/contest.py:209 +#: judge/models/contest.py:216 msgid "private to specific users" msgstr "riêng tư với các người dùng này" -#: judge/models/contest.py:214 +#: judge/models/contest.py:221 msgid "private contestants" msgstr "thí sinh riêng tư" -#: judge/models/contest.py:215 +#: judge/models/contest.py:222 msgid "If private, only these users may see the contest" msgstr "Nếu riêng tư, chỉ những người dùng này mới thấy kỳ thi" -#: judge/models/contest.py:219 +#: judge/models/contest.py:226 msgid "hide problem tags" msgstr "ẩn nhãn kỳ thi" -#: judge/models/contest.py:220 +#: judge/models/contest.py:227 msgid "Whether problem tags should be hidden by default." msgstr "" "Quyết định việc nhãn bài tập (DP, Tham lam, ...) được ẩn trong kỳ thi không." -#: judge/models/contest.py:224 +#: judge/models/contest.py:231 msgid "run pretests only" msgstr "chỉ chạy pretests" -#: judge/models/contest.py:226 +#: judge/models/contest.py:233 msgid "" "Whether judges should grade pretests only, versus all testcases. Commonly " "set during a contest, then unset prior to rejudging user submissions when " @@ -930,51 +917,51 @@ msgstr "" "Quyết định việc các máy chấm chỉ chấm pretests thay vì tất cả các test. Sau " "kỳ thi, hãy bỏ đánh dấu ô này và chấm lại tất cả các bài." -#: judge/models/contest.py:233 judge/models/interface.py:96 -#: judge/models/problem.py:282 +#: judge/models/contest.py:240 judge/models/interface.py:97 +#: judge/models/problem.py:285 msgid "private to organizations" msgstr "riêng tư với các tổ chức" -#: judge/models/contest.py:238 judge/models/course.py:34 -#: judge/models/interface.py:92 judge/models/problem.py:278 -#: judge/models/profile.py:149 +#: judge/models/contest.py:245 judge/models/course.py:33 +#: judge/models/interface.py:93 judge/models/problem.py:281 +#: judge/models/profile.py:168 msgid "organizations" msgstr "tổ chức" -#: judge/models/contest.py:239 +#: judge/models/contest.py:246 msgid "If private, only these organizations may see the contest" msgstr "Nếu riêng tư, chỉ những tổ chức này thấy được kỳ thi" -#: judge/models/contest.py:242 judge/models/problem.py:253 +#: judge/models/contest.py:249 judge/models/problem.py:256 msgid "OpenGraph image" msgstr "Hình ảnh OpenGraph" -#: judge/models/contest.py:245 judge/models/profile.py:97 +#: judge/models/contest.py:252 judge/models/profile.py:108 msgid "Logo override image" msgstr "Hình ảnh ghi đè logo" -#: judge/models/contest.py:250 +#: judge/models/contest.py:257 msgid "" "This image will replace the default site logo for users inside the contest." msgstr "Ảnh này sẽ thay thế cho logo mặc định trong kỳ thi." -#: judge/models/contest.py:258 +#: judge/models/contest.py:265 msgid "the amount of live participants" msgstr "số lượng thí sinh thi trực tiếp" -#: judge/models/contest.py:262 +#: judge/models/contest.py:269 msgid "contest summary" msgstr "tổng kết kỳ thi" -#: judge/models/contest.py:264 judge/models/problem.py:259 +#: judge/models/contest.py:271 judge/models/problem.py:262 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:268 judge/models/profile.py:92 +#: judge/models/contest.py:275 judge/models/profile.py:103 msgid "access code" msgstr "mật khẩu truy cập" -#: judge/models/contest.py:273 +#: judge/models/contest.py:280 msgid "" "An optional code to prompt contestants before they are allowed to join the " "contest. Leave it blank to disable." @@ -982,457 +969,478 @@ msgstr "" "Mật khẩu truy cập cho các thí sinh muốn tham gia kỳ thi. Để trống nếu không " "dùng." -#: judge/models/contest.py:279 judge/models/problem.py:241 +#: judge/models/contest.py:286 judge/models/problem.py:244 msgid "personae non gratae" msgstr "Chặn tham gia" -#: judge/models/contest.py:281 +#: judge/models/contest.py:288 msgid "Bans the selected users from joining this contest." msgstr "Cấm những người dùng được chọn tham gia kỳ thi." -#: judge/models/contest.py:284 +#: judge/models/contest.py:291 msgid "contest format" msgstr "format kỳ thi" -#: judge/models/contest.py:288 +#: judge/models/contest.py:295 msgid "The contest format module to use." msgstr "Format kỳ thi sử dụng." -#: judge/models/contest.py:291 +#: judge/models/contest.py:298 msgid "contest format configuration" msgstr "Tùy chỉnh format kỳ thi" -#: judge/models/contest.py:295 +#: judge/models/contest.py:302 msgid "" "A JSON object to serve as the configuration for the chosen contest format " "module. Leave empty to use None. Exact format depends on the contest format " "selected." msgstr "" -#: judge/models/contest.py:308 +#: judge/models/contest.py:315 msgid "precision points" msgstr "Hiển thị điểm" -#: judge/models/contest.py:311 +#: judge/models/contest.py:318 msgid "Number of digits to round points to." msgstr "Số chữ số thập phân trên bảng điểm." -#: judge/models/contest.py:620 +#: judge/models/contest.py:321 +msgid "rate limit" +msgstr "giới hạn bài nộp" + +#: judge/models/contest.py:326 +msgid "" +"Maximum number of submissions per minute. Leave empty if you don't want rate " +"limit." +msgstr "Số bài nộp tối đa mỗi phút. Để trống nếu không muốn giới hạn." + +#: judge/models/contest.py:652 msgid "See private contests" msgstr "" -#: judge/models/contest.py:621 +#: judge/models/contest.py:653 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:622 +#: judge/models/contest.py:654 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:623 +#: judge/models/contest.py:655 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:624 templates/contest/moss.html:72 +#: judge/models/contest.py:656 templates/contest/moss.html:72 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:625 +#: judge/models/contest.py:657 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:626 +#: judge/models/contest.py:658 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:627 +#: judge/models/contest.py:659 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:628 +#: judge/models/contest.py:660 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:629 +#: judge/models/contest.py:661 msgid "Edit contest problem label script" msgstr "Cách hiển thị thứ tự bài tập" -#: judge/models/contest.py:631 judge/models/contest.py:778 -#: judge/models/contest.py:856 judge/models/contest.py:886 -#: judge/models/course.py:178 judge/models/submission.py:116 +#: judge/models/contest.py:663 judge/models/contest.py:824 +#: judge/models/contest.py:902 judge/models/contest.py:932 +#: judge/models/contest.py:1011 judge/models/submission.py:116 msgid "contest" msgstr "kỳ thi" -#: judge/models/contest.py:632 +#: judge/models/contest.py:664 msgid "contests" msgstr "kỳ thi" -#: judge/models/contest.py:641 +#: judge/models/contest.py:687 msgid "associated contest" msgstr "" -#: judge/models/contest.py:654 +#: judge/models/contest.py:700 msgid "score" msgstr "điểm" -#: judge/models/contest.py:655 +#: judge/models/contest.py:701 msgid "cumulative time" msgstr "tổng thời gian" -#: judge/models/contest.py:657 +#: judge/models/contest.py:703 msgid "is disqualified" msgstr "đã bị loại" -#: judge/models/contest.py:659 +#: judge/models/contest.py:705 msgid "Whether this participation is disqualified." msgstr "Quyết định thí sinh có bị loại không." -#: judge/models/contest.py:661 +#: judge/models/contest.py:707 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:663 +#: judge/models/contest.py:709 msgid "virtual participation id" msgstr "id lần tham gia ảo" -#: judge/models/contest.py:665 +#: judge/models/contest.py:711 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "0 nghĩa là tham gia chính thức, ngược lại là lần tham gia ảo thứ n." -#: judge/models/contest.py:668 +#: judge/models/contest.py:714 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:671 +#: judge/models/contest.py:717 msgid "same as format_data, but including frozen results" msgstr "" -#: judge/models/contest.py:675 -#, fuzzy -#| msgid "score" +#: judge/models/contest.py:721 msgid "final score" msgstr "điểm" -#: judge/models/contest.py:677 -#, fuzzy -#| msgid "cumulative time" +#: judge/models/contest.py:723 msgid "final cumulative time" msgstr "tổng thời gian" -#: judge/models/contest.py:753 +#: judge/models/contest.py:799 #, python-format msgid "%s spectating in %s" msgstr "%s đang theo dõi trong %s" -#: judge/models/contest.py:758 +#: judge/models/contest.py:804 #, python-format msgid "%s in %s, v%d" msgstr "%s trong %s, v%d" -#: judge/models/contest.py:763 +#: judge/models/contest.py:809 #, python-format msgid "%s in %s" msgstr "%s trong %s" -#: judge/models/contest.py:766 +#: judge/models/contest.py:812 msgid "contest participation" msgstr "lần tham gia kỳ thi" -#: judge/models/contest.py:767 +#: judge/models/contest.py:813 msgid "contest participations" msgstr "lần tham gia kỳ thi" -#: judge/models/contest.py:774 judge/models/contest.py:827 -#: judge/models/contest.py:889 judge/models/problem.py:587 -#: judge/models/problem.py:594 judge/models/problem.py:615 -#: judge/models/problem.py:646 judge/models/problem_data.py:50 +#: judge/models/contest.py:820 judge/models/contest.py:873 +#: judge/models/contest.py:935 judge/models/course.py:165 +#: judge/models/problem.py:609 judge/models/problem.py:616 +#: judge/models/problem.py:637 judge/models/problem.py:668 +#: judge/models/problem_data.py:50 msgid "problem" msgstr "bài tập" -#: judge/models/contest.py:782 judge/models/contest.py:839 -#: judge/models/course.py:182 judge/models/problem.py:206 +#: judge/models/contest.py:828 judge/models/contest.py:885 +#: judge/models/course.py:167 judge/models/problem.py:209 msgid "points" msgstr "điểm" -#: judge/models/contest.py:783 +#: judge/models/contest.py:829 msgid "partial" msgstr "thành phần" -#: judge/models/contest.py:784 judge/models/contest.py:841 +#: judge/models/contest.py:830 judge/models/contest.py:887 msgid "is pretested" msgstr "dùng pretest" -#: judge/models/contest.py:785 judge/models/interface.py:47 +#: judge/models/contest.py:831 judge/models/course.py:166 +#: judge/models/interface.py:48 msgid "order" msgstr "thứ tự" -#: judge/models/contest.py:787 +#: judge/models/contest.py:833 msgid "visible testcases" msgstr "hiển thị test" -#: judge/models/contest.py:792 +#: judge/models/contest.py:838 msgid "Maximum number of submissions for this problem, or 0 for no limit." msgstr "Số lần nộp tối đa, đặt là 0 nếu không có giới hạn." -#: judge/models/contest.py:794 +#: judge/models/contest.py:840 msgid "max submissions" msgstr "số lần nộp tối đa" -#: judge/models/contest.py:797 +#: judge/models/contest.py:843 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:801 +#: judge/models/contest.py:847 #, fuzzy #| msgid "Only for format new IOI. Separated by commas, e.g: 2, 3" msgid "Separated by commas, e.g: 2, 3" msgstr "" "Chỉ dùng với format IOI mới. Các sub cách nhau bởi dấu phẩy. Ví dụ: 2, 3" -#: judge/models/contest.py:802 -#, fuzzy -#| msgid "frozen subtasks" +#: judge/models/contest.py:848 msgid "hidden subtasks" msgstr "Đóng băng subtasks" -#: judge/models/contest.py:814 +#: judge/models/contest.py:860 msgid "contest problem" msgstr "bài trong kỳ thi" -#: judge/models/contest.py:815 +#: judge/models/contest.py:861 msgid "contest problems" msgstr "bài trong kỳ thi" -#: judge/models/contest.py:821 judge/models/submission.py:273 +#: judge/models/contest.py:867 judge/models/submission.py:274 msgid "submission" msgstr "bài nộp" -#: judge/models/contest.py:834 judge/models/contest.py:860 +#: judge/models/contest.py:880 judge/models/contest.py:906 msgid "participation" msgstr "lần tham gia" -#: judge/models/contest.py:842 +#: judge/models/contest.py:888 msgid "Whether this submission was ran only on pretests." msgstr "Quyết định bài nộp chỉ được chạy trên pretest không." -#: judge/models/contest.py:847 +#: judge/models/contest.py:893 msgid "contest submission" msgstr "bài nộp kỳ thi" -#: judge/models/contest.py:848 +#: judge/models/contest.py:894 msgid "contest submissions" msgstr "bài nộp kỳ thi" -#: judge/models/contest.py:864 +#: judge/models/contest.py:910 msgid "rank" msgstr "rank" -#: judge/models/contest.py:865 +#: judge/models/contest.py:911 msgid "rating" msgstr "rating" -#: judge/models/contest.py:866 +#: judge/models/contest.py:912 msgid "raw rating" msgstr "rating thật" -#: judge/models/contest.py:867 +#: judge/models/contest.py:913 msgid "contest performance" msgstr "" -#: judge/models/contest.py:868 +#: judge/models/contest.py:914 msgid "last rated" msgstr "lần cuối được xếp hạng" -#: judge/models/contest.py:872 +#: judge/models/contest.py:918 msgid "contest rating" msgstr "rating kỳ thi" -#: judge/models/contest.py:873 +#: judge/models/contest.py:919 msgid "contest ratings" msgstr "rating kỳ thi" -#: judge/models/contest.py:897 +#: judge/models/contest.py:943 msgid "contest moss result" msgstr "kết quả MOSS kỳ thi" -#: judge/models/contest.py:898 +#: judge/models/contest.py:944 msgid "contest moss results" msgstr "kết quả MOSS kỳ thi" -#: judge/models/contest.py:903 +#: judge/models/contest.py:949 msgid "clarified problem" msgstr "" -#: judge/models/contest.py:905 +#: judge/models/contest.py:951 msgid "clarification body" msgstr "" -#: judge/models/contest.py:907 +#: judge/models/contest.py:953 msgid "clarification timestamp" msgstr "" -#: judge/models/contest.py:925 -#, fuzzy -#| msgid "contest summary" +#: judge/models/contest.py:972 msgid "contests summary" msgstr "tổng kết kỳ thi" -#: judge/models/contest.py:926 -#, fuzzy -#| msgid "contest summary" +#: judge/models/contest.py:973 msgid "contests summaries" msgstr "tổng kết kỳ thi" -#: judge/models/course.py:21 -#, fuzzy -#| msgid "username" -msgid "course name" -msgstr "tên đăng nhập" +#: judge/models/contest.py:984 judge/models/contest.py:991 +msgid "official contest category" +msgstr "loại kỳ thi chính thức" -#: judge/models/course.py:23 judge/models/profile.py:58 -msgid "organization description" -msgstr "mô tả tổ chức" +#: judge/models/contest.py:992 +msgid "official contest categories" +msgstr "các loại kỳ thi chính thức" + +#: judge/models/contest.py:997 judge/models/contest.py:1004 +msgid "official contest location" +msgstr "địa điểm kỳ thi chính thức" + +#: judge/models/contest.py:1005 +msgid "official contest locations" +msgstr "các địa điểm kỳ thi chính thức" + +#: judge/models/contest.py:1017 +msgid "contest category" +msgstr "loại kỳ thi" + +#: judge/models/contest.py:1020 +msgid "year" +msgstr "năm" + +#: judge/models/contest.py:1023 +msgid "contest location" +msgstr "địa điểm kỳ thi" + +#: judge/models/contest.py:1028 +msgid "official contest" +msgstr "kỳ thi chính thức" + +#: judge/models/contest.py:1029 +msgid "official contests" +msgstr "các kỳ thi chính thức" + +#: judge/models/course.py:12 templates/course/grades.html:88 +msgid "Student" +msgstr "Học sinh" + +#: judge/models/course.py:13 +msgid "Assistant" +msgstr "Trợ giảng" + +#: judge/models/course.py:14 +msgid "Teacher" +msgstr "Giáo viên" + +#: judge/models/course.py:23 +msgid "course name" +msgstr "tên khóa học" #: judge/models/course.py:25 -#, fuzzy -#| msgid "end time" -msgid "ending time" -msgstr "thời gian kết thúc" +msgid "course description" +msgstr "Mô tả khóa học" -#: judge/models/course.py:35 -#, fuzzy -#| msgid "If private, only these organizations may see the contest" +#: judge/models/course.py:34 msgid "If private, only these organizations may see the course" -msgstr "Nếu riêng tư, chỉ những tổ chức này thấy được kỳ thi" +msgstr "Nếu riêng tư, chỉ những tổ chức này thấy được khóa học" + +#: judge/models/course.py:38 +msgid "course slug" +msgstr "url khóa học" #: judge/models/course.py:39 -msgid "course slug" -msgstr "" - -#: judge/models/course.py:40 -#, fuzzy -#| msgid "Organization name shown in URL" msgid "Course name shown in URL" msgstr "Tên được hiển thị trong đường dẫn" -#: judge/models/course.py:43 judge/models/profile.py:50 +#: judge/models/course.py:42 judge/models/profile.py:59 msgid "Only alphanumeric and hyphens" -msgstr "" +msgstr "Chỉ chứa chữ cái và dấu gạch ngang (-)" -#: judge/models/course.py:47 -#, fuzzy -#| msgid "Registration" +#: judge/models/course.py:46 msgid "public registration" -msgstr "Đăng ký" +msgstr "Cho phép đăng ký" -#: judge/models/course.py:51 +#: judge/models/course.py:50 msgid "course image" -msgstr "" +msgstr "hình ảnh khóa học" -#: judge/models/course.py:109 judge/models/course.py:147 -#: judge/models/course.py:172 +#: judge/models/course.py:123 judge/models/course.py:159 msgid "course" -msgstr "" +msgstr "khóa học" -#: judge/models/course.py:117 -msgid "user_of_course" -msgstr "" +#: judge/models/course.py:163 +msgid "course title" +msgstr "tiêu đề khóa học" -#: judge/models/course.py:121 -msgid "Student" -msgstr "" +#: judge/models/course.py:164 +msgid "course content" +msgstr "nội dung khóa học" -#: judge/models/course.py:122 -msgid "Assistant" -msgstr "" - -#: judge/models/course.py:123 -msgid "Teacher" -msgstr "" - -#: judge/models/course.py:152 -#, fuzzy -#| msgid "user profiles" -msgid "course files" -msgstr "thông tin người dùng" - -#: judge/models/interface.py:28 +#: judge/models/interface.py:29 msgid "configuration item" msgstr "" -#: judge/models/interface.py:29 +#: judge/models/interface.py:30 msgid "miscellaneous configuration" msgstr "" -#: judge/models/interface.py:41 +#: judge/models/interface.py:42 msgid "navigation item" msgstr "mục điều hướng" -#: judge/models/interface.py:42 +#: judge/models/interface.py:43 msgid "navigation bar" msgstr "thanh điều hướng" -#: judge/models/interface.py:48 +#: judge/models/interface.py:49 msgid "identifier" msgstr "" -#: judge/models/interface.py:49 +#: judge/models/interface.py:50 msgid "label" msgstr "nhãn" -#: judge/models/interface.py:52 +#: judge/models/interface.py:53 msgid "highlight regex" msgstr "" -#: judge/models/interface.py:56 +#: judge/models/interface.py:57 msgid "parent item" msgstr "mục cha" -#: judge/models/interface.py:78 +#: judge/models/interface.py:79 msgid "post title" msgstr "tiêu đề bài đăng" -#: judge/models/interface.py:80 +#: judge/models/interface.py:81 msgid "slug" msgstr "slug" -#: judge/models/interface.py:81 judge/models/problem.py:670 +#: judge/models/interface.py:82 judge/models/problem.py:692 msgid "public visibility" msgstr "khả năng hiển thị công khai" -#: judge/models/interface.py:82 +#: judge/models/interface.py:83 msgid "sticky" msgstr "nổi lên đầu" -#: judge/models/interface.py:83 +#: judge/models/interface.py:84 msgid "publish after" msgstr "đăng sau khi" -#: judge/models/interface.py:84 +#: judge/models/interface.py:85 msgid "post content" msgstr "đăng nội dung" -#: judge/models/interface.py:85 +#: judge/models/interface.py:86 msgid "post summary" msgstr "đăng tổng kết" -#: judge/models/interface.py:87 +#: judge/models/interface.py:88 msgid "openGraph image" msgstr "hình ảnh openGraph" -#: judge/models/interface.py:93 +#: judge/models/interface.py:94 msgid "If private, only these organizations may see the blog post." msgstr "Nếu riêng tư, chỉ những tổ chức này thấy được bài đăng." -#: judge/models/interface.py:136 +#: judge/models/interface.py:141 msgid "Edit all posts" msgstr "Chỉnh sửa tất cả bài đăng" -#: judge/models/interface.py:137 +#: judge/models/interface.py:142 msgid "blog post" msgstr "bài đăng" -#: judge/models/interface.py:138 +#: judge/models/interface.py:143 msgid "blog posts" msgstr "bài đăng" @@ -1492,144 +1500,144 @@ msgstr "bình chọn" msgid "pagevotes" msgstr "bình chọn" -#: judge/models/pagevote.py:51 +#: judge/models/pagevote.py:48 #, fuzzy #| msgid "volunteer vote" msgid "pagevote vote" msgstr "vote từ TNV" -#: judge/models/pagevote.py:52 +#: judge/models/pagevote.py:49 #, fuzzy #| msgid "volunteer votes" msgid "pagevote votes" msgstr "vote từ TNV" -#: judge/models/problem.py:43 +#: judge/models/problem.py:46 msgid "problem category ID" msgstr "mã của nhóm bài" -#: judge/models/problem.py:46 +#: judge/models/problem.py:49 msgid "problem category name" msgstr "tên nhóm bài" -#: judge/models/problem.py:54 +#: judge/models/problem.py:57 msgid "problem type" msgstr "dạng bài" -#: judge/models/problem.py:55 judge/models/problem.py:173 +#: judge/models/problem.py:58 judge/models/problem.py:176 #: judge/models/volunteer.py:28 msgid "problem types" msgstr "dạng bài" -#: judge/models/problem.py:60 +#: judge/models/problem.py:63 msgid "problem group ID" msgstr "mã của nhóm bài" -#: judge/models/problem.py:62 +#: judge/models/problem.py:65 msgid "problem group name" msgstr "tên nhóm bài" -#: judge/models/problem.py:69 judge/models/problem.py:178 +#: judge/models/problem.py:72 judge/models/problem.py:181 msgid "problem group" msgstr "nhóm bài" -#: judge/models/problem.py:70 +#: judge/models/problem.py:73 msgid "problem groups" msgstr "nhóm bài" -#: judge/models/problem.py:77 +#: judge/models/problem.py:80 msgid "key" msgstr "" -#: judge/models/problem.py:80 +#: judge/models/problem.py:83 msgid "link" msgstr "đường dẫn" -#: judge/models/problem.py:81 +#: judge/models/problem.py:84 msgid "full name" msgstr "tên đầy đủ" -#: judge/models/problem.py:85 judge/models/profile.py:55 -#: judge/models/runtime.py:34 +#: judge/models/problem.py:88 judge/models/profile.py:64 +#: judge/models/runtime.py:35 msgid "short name" msgstr "tên ngắn" -#: judge/models/problem.py:86 +#: judge/models/problem.py:89 msgid "Displayed on pages under this license" msgstr "Được hiển thị trên các trang theo giấy phép này" -#: judge/models/problem.py:91 +#: judge/models/problem.py:94 msgid "icon" msgstr "icon" -#: judge/models/problem.py:92 +#: judge/models/problem.py:95 msgid "URL to the icon" msgstr "Đường dẫn icon" -#: judge/models/problem.py:94 +#: judge/models/problem.py:97 msgid "license text" msgstr "văn bản giấy phép" -#: judge/models/problem.py:103 +#: judge/models/problem.py:106 msgid "license" msgstr "" -#: judge/models/problem.py:104 +#: judge/models/problem.py:107 msgid "licenses" msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:130 msgid "problem code" msgstr "mã bài" -#: judge/models/problem.py:133 +#: judge/models/problem.py:136 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "Mã bài ngắn, độc nhất cho bài tập, được dùng trong url sau /problem/" -#: judge/models/problem.py:138 +#: judge/models/problem.py:141 msgid "problem name" msgstr "Tên bài" -#: judge/models/problem.py:140 +#: judge/models/problem.py:143 msgid "The full name of the problem, as shown in the problem list." msgstr "Tên đầy đủ của bài, như được hiển thị trên danh sách bài tập" -#: judge/models/problem.py:142 +#: judge/models/problem.py:145 msgid "problem body" msgstr "Nội dung" -#: judge/models/problem.py:145 +#: judge/models/problem.py:148 msgid "creators" msgstr "" -#: judge/models/problem.py:149 +#: judge/models/problem.py:152 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" "Những người dùng này sẽ có thể chỉnh sửa bài tập, và nằm trong danh sách các " "tác giả" -#: judge/models/problem.py:158 +#: judge/models/problem.py:161 msgid "" "These users will be able to edit the problem, but not be listed as authors." msgstr "" "Những người dùng này sẽ có thể chỉnh sửa bài tập, nhưng không nằm trong danh " "sách các tác giả" -#: judge/models/problem.py:168 +#: judge/models/problem.py:171 msgid "These users will be able to view the private problem, but not edit it." msgstr "" "Những người dùng này sẽ thấy được bài tập này (dù riêng tư), nhưng không " "chỉnh sửa được" -#: judge/models/problem.py:174 judge/models/volunteer.py:29 +#: judge/models/problem.py:177 judge/models/volunteer.py:29 msgid "The type of problem, as shown on the problem's page." msgstr "Dạng bài, giống như trên trang bài tập" -#: judge/models/problem.py:180 +#: judge/models/problem.py:183 msgid "The group of problem, shown under Category in the problem list." msgstr "Nhóm bài, hiện ở mục Nhóm bài trong danh sách bài tập" -#: judge/models/problem.py:185 +#: judge/models/problem.py:188 msgid "" "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) " "are supported." @@ -1637,11 +1645,11 @@ msgstr "" "Giới hạn thời gian cho bài tập này, theo đơn vị giây. Có thể nhập số thực " "(ví dụ 1.5)" -#: judge/models/problem.py:194 judge/models/problem.py:630 +#: judge/models/problem.py:197 judge/models/problem.py:652 msgid "memory limit" msgstr "Giới hạn bộ nhớ" -#: judge/models/problem.py:196 +#: judge/models/problem.py:199 msgid "" "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 " "kilobytes)." @@ -1649,7 +1657,7 @@ msgstr "" "Giới hạn bộ nhớ cho bài này, theo đơn vị kilobytes (ví dụ 256mb = 262144 " "kilobytes)" -#: judge/models/problem.py:208 +#: judge/models/problem.py:211 msgid "" "Points awarded for problem completion. Points are displayed with a 'p' " "suffix if partial." @@ -1657,148 +1665,148 @@ msgstr "" "Điểm thưởng khi hoàn thành bài tập. Điểm có thêm chữ 'p' ở sau cùng nếu như " "chấp nhận cho điểm thành phần (có điểm ngay khi không đúng toàn bộ test)" -#: judge/models/problem.py:214 +#: judge/models/problem.py:217 msgid "allows partial points" msgstr "cho phép điểm thành phần" -#: judge/models/problem.py:218 +#: judge/models/problem.py:221 msgid "allowed languages" msgstr "các ngôn ngữ được cho phép" -#: judge/models/problem.py:219 +#: judge/models/problem.py:222 msgid "List of allowed submission languages." msgstr "Danh sách các ngôn ngữ lập trình cho phép" -#: judge/models/problem.py:225 +#: judge/models/problem.py:228 msgid "manually managed" msgstr "" -#: judge/models/problem.py:228 +#: judge/models/problem.py:231 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:231 +#: judge/models/problem.py:234 msgid "date of publishing" msgstr "Ngày công bố" -#: judge/models/problem.py:236 +#: judge/models/problem.py:239 msgid "" "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:243 +#: judge/models/problem.py:246 msgid "Bans the selected users from submitting to this problem." msgstr "Cấm những người dùng được chọn nộp bài tập này." -#: judge/models/problem.py:250 +#: judge/models/problem.py:253 msgid "The license under which this problem is published." msgstr "Giấy phép xuất bản bài tập" -#: judge/models/problem.py:257 +#: judge/models/problem.py:260 msgid "problem summary" msgstr "Tóm tắt bài tập" -#: judge/models/problem.py:263 +#: judge/models/problem.py:266 msgid "number of users" msgstr "" -#: judge/models/problem.py:265 +#: judge/models/problem.py:268 msgid "The number of users who solved the problem." msgstr "Số lượng người dùng đã giải được bài" -#: judge/models/problem.py:267 +#: judge/models/problem.py:270 msgid "solve rate" msgstr "Tỉ lệ giải đúng" -#: judge/models/problem.py:279 +#: judge/models/problem.py:282 msgid "If private, only these organizations may see the problem." msgstr "Nếu bài riêng tư, chỉ những tổ chức này thấy được" -#: judge/models/problem.py:285 +#: judge/models/problem.py:288 msgid "pdf statement" msgstr "Đề bài bằng file pdf" -#: judge/models/problem.py:599 judge/models/problem.py:620 -#: judge/models/problem.py:651 judge/models/runtime.py:161 +#: judge/models/problem.py:621 judge/models/problem.py:642 +#: judge/models/problem.py:673 judge/models/runtime.py:159 msgid "language" msgstr "" -#: judge/models/problem.py:602 +#: judge/models/problem.py:624 msgid "translated name" msgstr "" -#: judge/models/problem.py:604 +#: judge/models/problem.py:626 msgid "translated description" msgstr "" -#: judge/models/problem.py:608 +#: judge/models/problem.py:630 msgid "problem translation" msgstr "" -#: judge/models/problem.py:609 +#: judge/models/problem.py:631 msgid "problem translations" msgstr "" -#: judge/models/problem.py:639 +#: judge/models/problem.py:661 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:640 +#: judge/models/problem.py:662 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:653 judge/models/submission.py:289 +#: judge/models/problem.py:675 judge/models/submission.py:291 msgid "source code" msgstr "mã nguồn" -#: judge/models/problem.py:657 +#: judge/models/problem.py:679 msgid "language-specific template" msgstr "" -#: judge/models/problem.py:658 +#: judge/models/problem.py:680 msgid "language-specific templates" msgstr "" -#: judge/models/problem.py:665 +#: judge/models/problem.py:687 msgid "associated problem" msgstr "" -#: judge/models/problem.py:671 +#: judge/models/problem.py:693 msgid "publish date" msgstr "" -#: judge/models/problem.py:673 +#: judge/models/problem.py:695 msgid "editorial content" msgstr "nội dung lời giải" -#: judge/models/problem.py:686 +#: judge/models/problem.py:712 #, python-format msgid "Editorial for %s" msgstr "" -#: judge/models/problem.py:690 +#: judge/models/problem.py:716 msgid "solution" msgstr "lời giải" -#: judge/models/problem.py:691 +#: judge/models/problem.py:717 msgid "solutions" msgstr "lời giải" -#: judge/models/problem.py:696 +#: judge/models/problem.py:722 #, fuzzy #| msgid "point value" msgid "proposed point value" msgstr "điểm" -#: judge/models/problem.py:697 +#: judge/models/problem.py:723 msgid "The amount of points you think this problem deserves." msgstr "Bạn nghĩ bài này đáng bao nhiêu điểm?" -#: judge/models/problem.py:711 +#: judge/models/problem.py:737 msgid "The time this vote was cast" msgstr "" -#: judge/models/problem.py:717 +#: judge/models/problem.py:743 msgid "vote" msgstr "" @@ -1839,8 +1847,8 @@ msgid "Custom checker (PY)" msgstr "Trình chấm tự viết (Python)" #: judge/models/problem_data.py:41 -msgid "Custom validator (CPP)" -msgstr "Trình chấm tự viết (C++)" +msgid "Custom checker (CPP)" +msgstr "Trình chấm tự viết (CPP)" #: judge/models/problem_data.py:42 msgid "Interactive" @@ -1884,15 +1892,15 @@ msgstr "các biến trong trình chấm theo dạng JSON" #: judge/models/problem_data.py:86 msgid "custom checker file" -msgstr "file trình chấm" +msgstr "trình chấm" #: judge/models/problem_data.py:94 -msgid "custom validator file" -msgstr "file trình chấm" +msgid "custom cpp checker file" +msgstr "trình chấm C++" #: judge/models/problem_data.py:102 msgid "interactive judge" -msgstr "" +msgstr "trình chấm interactive" #: judge/models/problem_data.py:110 judge/models/problem_data.py:229 msgid "input file name" @@ -1970,394 +1978,394 @@ msgstr "điểm" msgid "case is pretest?" msgstr "test là pretest?" -#: judge/models/profile.py:43 +#: judge/models/profile.py:52 msgid "organization title" msgstr "tiêu đề tổ chức" -#: judge/models/profile.py:46 +#: judge/models/profile.py:55 msgid "organization slug" msgstr "tên ngắn đường dẫn" -#: judge/models/profile.py:47 +#: judge/models/profile.py:56 msgid "Organization name shown in URL" msgstr "Tên được hiển thị trong đường dẫn" -#: judge/models/profile.py:56 +#: judge/models/profile.py:65 msgid "Displayed beside user name during contests" msgstr "Hiển thị bên cạnh tên người dùng trong kỳ thi" -#: judge/models/profile.py:61 +#: judge/models/profile.py:68 +msgid "organization description" +msgstr "mô tả tổ chức" + +#: judge/models/profile.py:72 msgid "registrant" msgstr "người tạo" -#: judge/models/profile.py:64 +#: judge/models/profile.py:75 msgid "User who registered this organization" msgstr "Người tạo tổ chức" -#: judge/models/profile.py:68 +#: judge/models/profile.py:79 msgid "administrators" msgstr "người quản lý" -#: judge/models/profile.py:70 +#: judge/models/profile.py:81 msgid "Those who can edit this organization" msgstr "Những người có thể chỉnh sửa tổ chức" -#: judge/models/profile.py:73 +#: judge/models/profile.py:84 msgid "creation date" msgstr "ngày tạo" -#: judge/models/profile.py:76 +#: judge/models/profile.py:87 msgid "is open organization?" msgstr "tổ chức mở?" -#: judge/models/profile.py:77 +#: judge/models/profile.py:88 msgid "Allow joining organization" msgstr "Cho phép mọi người tham gia tổ chức" -#: judge/models/profile.py:81 +#: judge/models/profile.py:92 msgid "maximum size" msgstr "số lượng thành viên tối đa" -#: judge/models/profile.py:85 +#: judge/models/profile.py:96 msgid "" "Maximum amount of users in this organization, only applicable to private " "organizations" msgstr "Số người tối đa trong tổ chức, chỉ áp dụng với tổ chức riêng tư" -#: judge/models/profile.py:91 +#: judge/models/profile.py:102 msgid "Student access code" msgstr "Mã truy cập cho học sinh" -#: judge/models/profile.py:102 +#: judge/models/profile.py:113 msgid "" "This image will replace the default site logo for users viewing the " "organization." msgstr "Ảnh này sẽ thay thế logo mặc định khi ở trong tổ chức." -#: judge/models/profile.py:148 judge/models/profile.py:178 -#: judge/models/profile.py:439 judge/models/profile.py:518 +#: judge/models/profile.py:167 judge/models/profile.py:199 +#: judge/models/profile.py:468 judge/models/profile.py:543 msgid "organization" msgstr "" -#: judge/models/profile.py:155 +#: judge/models/profile.py:174 msgid "user associated" msgstr "" -#: judge/models/profile.py:157 +#: judge/models/profile.py:177 msgid "self-description" msgstr "" -#: judge/models/profile.py:160 +#: judge/models/profile.py:181 msgid "location" msgstr "" -#: judge/models/profile.py:166 +#: judge/models/profile.py:187 msgid "preferred language" msgstr "" -#: judge/models/profile.py:174 +#: judge/models/profile.py:195 msgid "last access time" msgstr "" -#: judge/models/profile.py:175 +#: judge/models/profile.py:196 msgid "last IP" msgstr "" -#: judge/models/profile.py:186 +#: judge/models/profile.py:207 msgid "display rank" msgstr "" -#: judge/models/profile.py:195 +#: judge/models/profile.py:216 msgid "comment mute" msgstr "" -#: judge/models/profile.py:196 +#: judge/models/profile.py:217 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:221 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:201 +#: judge/models/profile.py:222 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:205 -#, fuzzy -#| msgid "Banned from joining" -msgid "banned from voting" -msgstr "Bị cấm tham gia" - -#: judge/models/profile.py:206 -msgid "User will not be able to vote on problems' point values." -msgstr "" - -#: judge/models/profile.py:211 -msgid "user script" -msgstr "" - -#: judge/models/profile.py:215 -msgid "User-defined JavaScript for site customization." -msgstr "" - -#: judge/models/profile.py:219 +#: judge/models/profile.py:228 msgid "current contest" msgstr "kỳ thi hiện tại" -#: judge/models/profile.py:226 -msgid "math engine" -msgstr "" - -#: judge/models/profile.py:230 -msgid "the rendering engine used to render math" -msgstr "" - -#: judge/models/profile.py:233 +#: judge/models/profile.py:235 msgid "2FA enabled" msgstr "" -#: judge/models/profile.py:235 +#: judge/models/profile.py:237 msgid "check to enable TOTP-based two factor authentication" msgstr "đánh dấu để sử dụng TOTP-based two factor authentication" -#: judge/models/profile.py:241 +#: judge/models/profile.py:243 msgid "TOTP key" msgstr "mã TOTP" -#: judge/models/profile.py:242 +#: judge/models/profile.py:244 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:244 +#: judge/models/profile.py:246 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:248 +#: judge/models/profile.py:250 msgid "internal notes" msgstr "ghi chú nội bộ" -#: judge/models/profile.py:251 +#: judge/models/profile.py:253 msgid "Notes for administrators regarding this user." msgstr "Ghi chú riêng cho quản trị viên." -#: judge/models/profile.py:256 +#: judge/models/profile.py:258 msgid "Custom background" msgstr "Background tự chọn" -#: judge/models/profile.py:259 +#: judge/models/profile.py:261 msgid "CSS custom background properties: url(\"image_url\"), color, etc" msgstr "CSS background tự chọn. Ví dụ: url(\"image_url\"), white, ..." -#: judge/models/profile.py:426 +#: judge/models/profile.py:425 msgid "user profile" msgstr "thông tin người dùng" -#: judge/models/profile.py:427 +#: judge/models/profile.py:426 msgid "user profiles" msgstr "thông tin người dùng" -#: judge/models/profile.py:443 +#: judge/models/profile.py:432 +#, fuzzy +#| msgid "associated page" +msgid "profile associated" +msgstr "trang tương ứng" + +#: judge/models/profile.py:439 +msgid "t-shirt size" +msgstr "" + +#: judge/models/profile.py:444 +#, fuzzy +#| msgid "date of publishing" +msgid "date of birth" +msgstr "Ngày công bố" + +#: judge/models/profile.py:450 +msgid "address" +msgstr "" + +#: judge/models/profile.py:472 msgid "request time" msgstr "thời gian đăng ký" -#: judge/models/profile.py:446 +#: judge/models/profile.py:475 msgid "state" msgstr "trạng thái" -#: judge/models/profile.py:453 +#: judge/models/profile.py:482 msgid "reason" msgstr "lý do" -#: judge/models/profile.py:456 +#: judge/models/profile.py:485 msgid "organization join request" msgstr "đơn đăng ký tham gia" -#: judge/models/profile.py:457 +#: judge/models/profile.py:486 msgid "organization join requests" msgstr "đơn đăng ký tham gia" -#: judge/models/profile.py:523 +#: judge/models/profile.py:548 #, fuzzy #| msgid "last seen" msgid "last visit" msgstr "xem lần cuối" -#: judge/models/runtime.py:21 +#: judge/models/runtime.py:22 msgid "short identifier" msgstr "tên ngắn" -#: judge/models/runtime.py:23 +#: judge/models/runtime.py:24 msgid "" "The identifier for this language; the same as its executor id for judges." msgstr "" -#: judge/models/runtime.py:29 +#: judge/models/runtime.py:30 msgid "long name" msgstr "tên dài" -#: judge/models/runtime.py:30 +#: judge/models/runtime.py:31 msgid "Longer name for the language, e.g. \"Python 2\" or \"C++11\"." msgstr "Tên dài, ví dụ \"Python 2\" or \"C++11\"." -#: judge/models/runtime.py:36 +#: judge/models/runtime.py:37 msgid "" "More readable, but short, name to display publicly; e.g. \"PY2\" or \"C+" "+11\". If left blank, it will default to the short identifier." msgstr "" -#: judge/models/runtime.py:45 +#: judge/models/runtime.py:46 msgid "common name" msgstr "" -#: judge/models/runtime.py:47 +#: judge/models/runtime.py:48 msgid "" "Common name for the language. For example, the common name for C++03, C++11, " "and C++14 would be \"C++\"" msgstr "" -#: judge/models/runtime.py:53 +#: judge/models/runtime.py:54 msgid "ace mode name" msgstr "" -#: judge/models/runtime.py:55 +#: judge/models/runtime.py:56 msgid "" "Language ID for Ace.js editor highlighting, appended to \"mode-\" to " "determine the Ace JavaScript file to use, e.g., \"python\"." msgstr "" -#: judge/models/runtime.py:61 +#: judge/models/runtime.py:62 msgid "pygments name" msgstr "" -#: judge/models/runtime.py:62 +#: judge/models/runtime.py:63 msgid "Language ID for Pygments highlighting in source windows." msgstr "" -#: judge/models/runtime.py:65 +#: judge/models/runtime.py:66 msgid "code template" msgstr "" -#: judge/models/runtime.py:66 +#: judge/models/runtime.py:67 msgid "Code template to display in submission editor." msgstr "" -#: judge/models/runtime.py:71 +#: judge/models/runtime.py:72 msgid "runtime info override" msgstr "" -#: judge/models/runtime.py:74 +#: judge/models/runtime.py:75 msgid "" "Do not set this unless you know what you're doing! It will override the " "usually more specific, judge-provided runtime info!" msgstr "" -#: judge/models/runtime.py:79 +#: judge/models/runtime.py:80 msgid "language description" msgstr "" -#: judge/models/runtime.py:81 +#: judge/models/runtime.py:82 msgid "" "Use this field to inform users of quirks with your environment, additional " "restrictions, etc." msgstr "" -#: judge/models/runtime.py:88 +#: judge/models/runtime.py:89 msgid "extension" msgstr "" -#: judge/models/runtime.py:89 +#: judge/models/runtime.py:90 msgid "The extension of source files, e.g., \"py\" or \"cpp\"." msgstr "" -#: judge/models/runtime.py:162 +#: judge/models/runtime.py:160 msgid "languages" msgstr "ngôn ngữ" -#: judge/models/runtime.py:168 +#: judge/models/runtime.py:174 msgid "language to which this runtime belongs" msgstr "" -#: judge/models/runtime.py:172 +#: judge/models/runtime.py:178 msgid "judge on which this runtime exists" msgstr "" -#: judge/models/runtime.py:174 +#: judge/models/runtime.py:180 msgid "runtime name" msgstr "" -#: judge/models/runtime.py:176 +#: judge/models/runtime.py:182 msgid "runtime version" msgstr "" -#: judge/models/runtime.py:179 +#: judge/models/runtime.py:185 msgid "order in which to display this runtime" msgstr "" -#: judge/models/runtime.py:185 +#: judge/models/runtime.py:191 msgid "Server name, hostname-style" msgstr "Tên web" -#: judge/models/runtime.py:188 +#: judge/models/runtime.py:194 msgid "time of creation" msgstr "ngày tạo" -#: judge/models/runtime.py:192 +#: judge/models/runtime.py:198 msgid "A key to authenticate this judge" msgstr "Chìa khóa xác thực" -#: judge/models/runtime.py:193 +#: judge/models/runtime.py:199 msgid "authentication key" msgstr "mã xác thực" -#: judge/models/runtime.py:196 +#: judge/models/runtime.py:202 msgid "block judge" msgstr "chặn máy chấm" -#: judge/models/runtime.py:199 +#: judge/models/runtime.py:205 msgid "" "Whether this judge should be blocked from connecting, even if its key is " "correct." msgstr "Quyết định có chặn máy chấm, ngay cả khi mã xác thực đúng." -#: judge/models/runtime.py:203 +#: judge/models/runtime.py:209 msgid "judge online status" msgstr "trạng thái online của máy chấm" -#: judge/models/runtime.py:204 +#: judge/models/runtime.py:210 msgid "judge start time" msgstr "thời gian khởi đầu máy chấm" -#: judge/models/runtime.py:205 +#: judge/models/runtime.py:211 msgid "response time" msgstr "thời gian trả lời" -#: judge/models/runtime.py:207 +#: judge/models/runtime.py:213 msgid "system load" msgstr "lưu lượng xử lý" -#: judge/models/runtime.py:209 +#: judge/models/runtime.py:215 msgid "Load for the last minute, divided by processors to be fair." msgstr "Lưu lượng được chia đều." -#: judge/models/runtime.py:219 judge/models/runtime.py:261 +#: judge/models/runtime.py:225 judge/models/runtime.py:267 msgid "judges" msgstr "máy chấm" -#: judge/models/runtime.py:260 +#: judge/models/runtime.py:266 msgid "judge" msgstr "máy chấm" #: judge/models/submission.py:20 judge/models/submission.py:47 -#: judge/utils/problems.py:114 +#: judge/utils/problems.py:116 msgid "Accepted" msgstr "Accepted" #: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/utils/problems.py:119 msgid "Wrong Answer" msgstr "Wrong Answer" #: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/utils/problems.py:129 msgid "Time Limit Exceeded" msgstr "Time Limit Exceeded" @@ -2378,7 +2386,7 @@ msgid "Runtime Error" msgstr "Runtime Error" #: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:118 +#: judge/models/submission.py:55 judge/utils/problems.py:124 msgid "Compile Error" msgstr "Compile Error" @@ -2419,15 +2427,15 @@ msgstr "Lỗi máy chấm" msgid "submission time" msgstr "thời gian bài nộp" -#: judge/models/submission.py:69 judge/models/submission.py:308 +#: judge/models/submission.py:69 judge/models/submission.py:310 msgid "execution time" msgstr "thời gian chạy" -#: judge/models/submission.py:70 judge/models/submission.py:309 +#: judge/models/submission.py:70 judge/models/submission.py:311 msgid "memory usage" msgstr "bộ nhớ sử dụng" -#: judge/models/submission.py:72 judge/models/submission.py:310 +#: judge/models/submission.py:72 judge/models/submission.py:312 msgid "points granted" msgstr "điểm" @@ -2475,50 +2483,56 @@ msgstr "được chấm lại bởi admin" msgid "was ran on pretests only" msgstr "chỉ chấm pretest" -#: judge/models/submission.py:274 templates/contest/moss.html:56 +#: judge/models/submission.py:275 templates/contest/moss.html:56 msgid "submissions" msgstr "bài nộp" -#: judge/models/submission.py:286 judge/models/submission.py:300 +#: judge/models/submission.py:288 judge/models/submission.py:302 msgid "associated submission" msgstr "bài nộp tương ứng" -#: judge/models/submission.py:304 +#: judge/models/submission.py:306 msgid "test case ID" msgstr "test case ID" -#: judge/models/submission.py:306 +#: judge/models/submission.py:308 msgid "status flag" msgstr "" -#: judge/models/submission.py:311 +#: judge/models/submission.py:313 msgid "points possible" msgstr "" -#: judge/models/submission.py:312 +#: judge/models/submission.py:314 msgid "batch number" msgstr "số thứ tự của nhóm" -#: judge/models/submission.py:314 +#: judge/models/submission.py:316 msgid "judging feedback" msgstr "phản hồi từ máy chấm" -#: judge/models/submission.py:317 +#: judge/models/submission.py:319 msgid "extended judging feedback" msgstr "phản hồi thêm từ máy chấm" -#: judge/models/submission.py:319 +#: judge/models/submission.py:321 msgid "program output" msgstr "output chương trình" -#: judge/models/submission.py:327 +#: judge/models/submission.py:329 msgid "submission test case" msgstr "cái testcase trong bài nộp" -#: judge/models/submission.py:328 +#: judge/models/submission.py:330 msgid "submission test cases" msgstr "cái testcase trong bài nộp" +#: judge/models/test_formatter.py:22 +#, fuzzy +#| msgid "test case ID" +msgid "testcase file" +msgstr "test case ID" + #: judge/models/ticket.py:10 msgid "ticket title" msgstr "tiêu đề báo cáo" @@ -2605,6 +2619,22 @@ msgstr "Trang [page]/[topage]" msgid "Page %s of %s" msgstr "Trang %s/%s" +#: judge/social_auth.py:69 judge/views/register.py:32 +msgid "A username must contain letters, numbers, or underscores" +msgstr "Tên đăng nhập phải chứa ký tự, chữ số, hoặc dấu gạch dưới" + +#: judge/social_auth.py:75 +msgid "Sorry, the username is taken." +msgstr "Xin lỗi, tên đăng nhập đã bị trùng." + +#: judge/social_auth.py:93 +msgid "Choose a username" +msgstr "Chọn tên đăng nhập" + +#: judge/social_auth.py:122 +msgid "Create your profile" +msgstr "Khởi tạo thông tin" + #: judge/tasks/contest.py:20 msgid "Recalculating contest scores" msgstr "Tính lại điểm kỳ thi" @@ -2621,75 +2651,67 @@ msgstr "Chỉnh sửa bài nộp" msgid "Recalculating user points" msgstr "Tính lại điểm người dùng" -#: judge/utils/problem_data.py:73 +#: judge/utils/problem_data.py:81 msgid "Empty batches not allowed." msgstr "Nhóm test trống là không hợp lệ." -#: judge/utils/problem_data.py:81 judge/utils/problem_data.py:89 -#: judge/utils/problem_data.py:104 +#: judge/utils/problem_data.py:89 judge/utils/problem_data.py:97 +#: judge/utils/problem_data.py:112 msgid "How did you corrupt the custom checker path?" msgstr "How did you corrupt the custom checker path?" -#: judge/utils/problem_data.py:132 +#: judge/utils/problem_data.py:140 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "Ô điểm số cho test #%d phải được điền." -#: judge/utils/problem_data.py:139 +#: judge/utils/problem_data.py:147 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "File input cho test %d không tồn tại: %s" -#: judge/utils/problem_data.py:144 +#: judge/utils/problem_data.py:152 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "File output cho test %d không tồn tại: %s" -#: judge/utils/problem_data.py:171 +#: judge/utils/problem_data.py:179 #, python-format msgid "Batch start case #%d requires points." msgstr "Nhóm test #%d cần được điền điểm số." -#: judge/utils/problem_data.py:194 +#: judge/utils/problem_data.py:202 #, python-format msgid "Attempt to end batch outside of one in case #%d" msgstr "Nhóm test #%d kết thúc không hợp lệ" -#: judge/utils/problem_data.py:213 +#: judge/utils/problem_data.py:221 msgid "How did you corrupt the zip path?" msgstr "" -#: judge/utils/problem_data.py:219 +#: judge/utils/problem_data.py:227 msgid "How did you corrupt the generator path?" msgstr "" -#: judge/utils/problem_data.py:237 +#: judge/utils/problem_data.py:245 msgid "Invalid interactor judge" msgstr "" -#: judge/utils/problem_data.py:261 +#: judge/utils/problem_data.py:269 #, fuzzy #| msgid "Invalid Return" msgid "Invalid signature handler" msgstr "Invalid Return" -#: judge/utils/problem_data.py:264 +#: judge/utils/problem_data.py:272 msgid "Invalid signature header" msgstr "" -#: judge/utils/problems.py:115 -msgid "Wrong" -msgstr "Sai" - -#: judge/utils/problems.py:121 -msgid "Timeout" -msgstr "Quá thời gian" - -#: judge/utils/problems.py:124 +#: judge/utils/problems.py:134 msgid "Error" msgstr "Lỗi" -#: judge/utils/problems.py:141 +#: judge/utils/problems.py:151 msgid "Can't pass both queryset and keyword filters" msgstr "" @@ -2729,9 +2751,14 @@ msgctxt "hours and minutes" msgid "%h:%m" msgstr "%h:%m" -#: judge/views/about.py:10 templates/organization/home.html:47 -#: templates/organization/org-right-sidebar.html:72 -#: templates/user/user-about.html:72 templates/user/user-tabs.html:4 +#: judge/utils/users.py:61 +msgid "M j, Y" +msgstr "j M, Y" + +#: judge/views/about.py:10 templates/course/course.html:5 +#: templates/organization/home.html:41 +#: templates/organization/org-right-sidebar.html:74 +#: templates/user/user-about.html:70 templates/user/user-tabs.html:4 #: templates/user/users-table.html:22 msgid "About" msgstr "Giới thiệu" @@ -2740,183 +2767,229 @@ msgstr "Giới thiệu" msgid "Custom Checker Sample" msgstr "Hướng dẫn viết trình chấm" -#: judge/views/blog.py:107 +#: judge/views/blog.py:132 #, python-format msgid "Page %d of Posts" msgstr "Trang %d" -#: judge/views/blog.py:149 +#: judge/views/blog.py:172 msgid "Ticket feed" msgstr "Báo cáo" -#: judge/views/blog.py:166 +#: judge/views/blog.py:189 msgid "Comment feed" msgstr "Bình luận" -#: judge/views/comment.py:47 judge/views/pagevote.py:31 +#: judge/views/comment.py:71 judge/views/pagevote.py:32 msgid "Messing around, are we?" msgstr "Messing around, are we?" -#: judge/views/comment.py:63 judge/views/pagevote.py:47 +#: judge/views/comment.py:87 judge/views/pagevote.py:48 msgid "You must solve at least one problem before you can vote." msgstr "Bạn phải giải ít nhất 1 bài trước khi được vote." -#: judge/views/comment.py:94 +#: judge/views/comment.py:113 msgid "You already voted." msgstr "Bạn đã vote." -#: judge/views/comment.py:246 judge/views/organization.py:808 -#: judge/views/organization.py:958 judge/views/organization.py:1120 +#: judge/views/comment.py:267 judge/views/organization.py:872 +#: judge/views/organization.py:1022 judge/views/organization.py:1201 msgid "Edited from site" msgstr "Chỉnh sửa từ web" -#: judge/views/comment.py:267 +#: judge/views/comment.py:288 msgid "Editing comment" msgstr "Chỉnh sửa bình luận" -#: judge/views/contests.py:123 judge/views/contests.py:386 -#: judge/views/contests.py:391 judge/views/contests.py:685 +#: judge/views/comment.py:340 +msgid "Comment body" +msgstr "Nội dung bình luận" + +#: judge/views/comment.py:346 judge/views/ticket.py:73 +msgid "Your part is silent, little toad." +msgstr "Bạn không được phép bình luận." + +#: judge/views/comment.py:355 templates/comments/list.html:17 +msgid "" +"You need to have solved at least one problem before your voice can be heard." +msgstr "Bạn phải giải ít nhất một bài trước khi được phép bình luận." + +#: judge/views/comment.py:398 +msgid "Posted comment" +msgstr "Bình luận đã đăng" + +#: judge/views/contests.py:125 judge/views/contests.py:463 +#: judge/views/contests.py:468 judge/views/contests.py:768 msgid "No such contest" msgstr "Không có contest nào như vậy" -#: judge/views/contests.py:124 judge/views/contests.py:387 +#: judge/views/contests.py:126 judge/views/contests.py:464 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "Không tìm thấy kỳ thi với mã \"%s\"." -#: judge/views/contests.py:143 judge/views/stats.py:178 -#: templates/contest/list.html:244 templates/contest/list.html:289 -#: templates/contest/list.html:334 templates/contest/list.html:376 +#: judge/views/contests.py:154 judge/views/contests.py:1555 +#: judge/views/stats.py:178 templates/contest/list.html:170 +#: templates/contest/list.html:212 templates/contest/list.html:249 +#: templates/contest/list.html:283 #: templates/organization/org-left-sidebar.html:5 templates/stats/site.html:21 -#: templates/user/user-bookmarks.html:56 +#: templates/user/user-bookmarks.html:19 templates/user/user-bookmarks.html:80 msgid "Contests" msgstr "Kỳ thi" -#: judge/views/contests.py:391 +#: judge/views/contests.py:324 +msgid "Start time (asc.)" +msgstr "Thời gian bắt đầu (tăng)" + +#: judge/views/contests.py:325 +msgid "Start time (desc.)" +msgstr "Thời gian bắt đầu (giảm)" + +#: judge/views/contests.py:326 judge/views/organization.py:311 +msgid "Name (asc.)" +msgstr "Tên (tăng)" + +#: judge/views/contests.py:327 judge/views/organization.py:312 +msgid "Name (desc.)" +msgstr "Tên (giảm)" + +#: judge/views/contests.py:328 +msgid "User count (asc.)" +msgstr "Số lượng tham gia (tăng)" + +#: judge/views/contests.py:329 +msgid "User count (desc.)" +msgstr "Số lượng tham gia (giảm)" + +#: judge/views/contests.py:468 msgid "Could not find such contest." msgstr "Không tìm thấy kỳ thi nào như vậy." -#: judge/views/contests.py:399 +#: judge/views/contests.py:476 #, python-format msgid "Access to contest \"%s\" denied" msgstr "Truy cập tới kỳ thi \"%s\" bị từ chối" -#: judge/views/contests.py:468 +#: judge/views/contests.py:554 msgid "Clone Contest" msgstr "Nhân bản kỳ thi" -#: judge/views/contests.py:559 +#: judge/views/contests.py:646 msgid "Contest not ongoing" msgstr "Kỳ thi đang không diễn ra" -#: judge/views/contests.py:560 +#: judge/views/contests.py:647 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "\"%s\" kỳ thi đang không diễn ra." -#: judge/views/contests.py:567 -msgid "Already in contest" -msgstr "Đã ở trong kỳ thi" - -#: judge/views/contests.py:568 -#, python-format -msgid "You are already in a contest: \"%s\"." -msgstr "Bạn đã ở trong kỳ thi: \"%s\"." - -#: judge/views/contests.py:578 +#: judge/views/contests.py:660 msgid "Banned from joining" msgstr "Bị cấm tham gia" -#: judge/views/contests.py:580 +#: judge/views/contests.py:662 msgid "" "You have been declared persona non grata for this contest. You are " "permanently barred from joining this contest." msgstr "Bạn không được phép tham gia kỳ thi này." -#: judge/views/contests.py:669 +#: judge/views/contests.py:752 #, python-format msgid "Enter access code for \"%s\"" msgstr "Nhập mật khẩu truy cập cho \"%s\"" -#: judge/views/contests.py:686 +#: judge/views/contests.py:769 #, python-format msgid "You are not in contest \"%s\"." msgstr "Bạn không ở trong kỳ thi \"%s\"." -#: judge/views/contests.py:709 +#: judge/views/contests.py:792 msgid "ContestCalendar requires integer year and month" msgstr "Lịch thi yêu cầu giá trị cho năm và tháng là số nguyên" -#: judge/views/contests.py:767 +#: judge/views/contests.py:850 #, python-format msgid "Contests in %(month)s" msgstr "Các kỳ thi trong %(month)s" -#: judge/views/contests.py:768 +#: judge/views/contests.py:851 msgid "F Y" msgstr "F Y" -#: judge/views/contests.py:828 +#: judge/views/contests.py:911 #, python-format msgid "%s Statistics" msgstr "%s Thống kê" -#: judge/views/contests.py:1124 +#: judge/views/contests.py:1237 #, python-format msgid "%s Rankings" msgstr "%s Bảng điểm" -#: judge/views/contests.py:1135 +#: judge/views/contests.py:1248 msgid "???" msgstr "???" -#: judge/views/contests.py:1162 +#: judge/views/contests.py:1275 #, python-format msgid "Your participation in %s" msgstr "Lần tham gia trong %s" -#: judge/views/contests.py:1163 +#: judge/views/contests.py:1276 #, python-format msgid "%s's participation in %s" msgstr "Lần tham gia của %s trong %s" -#: judge/views/contests.py:1177 +#: judge/views/contests.py:1290 msgid "Live" msgstr "Trực tiếp" -#: judge/views/contests.py:1196 templates/contest/contest-tabs.html:21 +#: judge/views/contests.py:1308 templates/contest/contest-tabs.html:21 msgid "Participation" msgstr "Lần tham gia" -#: judge/views/contests.py:1245 +#: judge/views/contests.py:1357 #, python-format msgid "%s MOSS Results" msgstr "%s Kết quả MOSS" -#: judge/views/contests.py:1281 +#: judge/views/contests.py:1393 #, python-format msgid "Running MOSS for %s..." msgstr "Đang chạy MOSS cho %s..." -#: judge/views/contests.py:1304 +#: judge/views/contests.py:1416 #, python-format msgid "Contest tag: %s" msgstr "Nhãn kỳ thi: %s" -#: judge/views/contests.py:1319 judge/views/ticket.py:67 +#: judge/views/contests.py:1431 judge/views/ticket.py:67 msgid "Issue description" msgstr "Mô tả vấn đề" -#: judge/views/contests.py:1362 +#: judge/views/contests.py:1474 #, python-format msgid "New clarification for %s" msgstr "Thông báo mới cho %s" -#: judge/views/contests.py:1468 -#, fuzzy -#| msgid "contest summary" -msgid "Contests Summary" -msgstr "tổng kết kỳ thi" +#: judge/views/course.py:199 +#, python-format +msgid "Edit lessons for %(course_name)s" +msgstr "Chỉnh sửa bài học cho %(course_name)s" + +#: judge/views/course.py:203 +#, python-format +msgid "Edit lessons for %(course_name)s" +msgstr "Chỉnh sửa bài học cho %(course_name)s" + +#: judge/views/course.py:242 +#, python-format +msgid "Grades in %(course_name)s" +msgstr "Điểm trong %(course_name)s" + +#: judge/views/custom_file_upload.py:42 +msgid "File Upload" +msgstr "Tải file lên" #: judge/views/email.py:21 msgid "New Email" @@ -2946,7 +3019,7 @@ msgstr "Thay đổi Email" msgid "Change Email" msgstr "Thay đổi Email" -#: judge/views/email.py:83 templates/user/edit-profile.html:120 +#: judge/views/email.py:83 templates/user/edit-profile.html:127 msgid "Change email" msgstr "Thay đổi email" @@ -2981,13 +3054,13 @@ msgstr "không có quyền cho %s" msgid "corrupt page %s" msgstr "trang bị sập %s" -#: judge/views/internal.py:23 +#: judge/views/internal.py:24 #, fuzzy #| msgid "contest problems" msgid "Internal problems" msgstr "bài trong kỳ thi" -#: judge/views/internal.py:83 +#: judge/views/internal.py:106 #, fuzzy #| msgid "request time" msgid "Request times" @@ -3002,103 +3075,115 @@ msgstr "Runtimes" msgid "Markdown Editor" msgstr "" -#: judge/views/notification.py:29 +#: judge/views/notification.py:32 #, python-format msgid "Notifications (%d unseen)" msgstr "Thông báo (%d chưa xem)" -#: judge/views/organization.py:149 judge/views/organization.py:156 +#: judge/views/organization.py:156 judge/views/organization.py:163 msgid "No such organization" msgstr "Không có tổ chức như vậy" -#: judge/views/organization.py:150 +#: judge/views/organization.py:157 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "Không tìm thấy tổ chức với mã \"%s\"." -#: judge/views/organization.py:157 +#: judge/views/organization.py:164 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:181 +#: judge/views/organization.py:188 msgid "Can't edit organization" msgstr "Không thể chỉnh sửa tổ chức" -#: judge/views/organization.py:182 +#: judge/views/organization.py:189 msgid "You are not allowed to edit this organization." msgstr "Bạn không được phép chỉnh sửa tổ chức này." -#: judge/views/organization.py:194 judge/views/organization.py:338 +#: judge/views/organization.py:201 judge/views/organization.py:397 msgid "Can't access organization" msgstr "Không thể truy cập nhóm" -#: judge/views/organization.py:195 judge/views/organization.py:339 +#: judge/views/organization.py:202 judge/views/organization.py:398 msgid "You are not allowed to access this organization." msgstr "Bạn không được phép chỉnh sửa tổ chức này." -#: judge/views/organization.py:231 judge/views/stats.py:184 -#: templates/contest/list.html:93 templates/problem/list-base.html:91 +#: judge/views/organization.py:245 judge/views/stats.py:184 +#: templates/contest/list.html:77 templates/problem/list-base.html:90 #: templates/stats/site.html:33 templates/user/user-left-sidebar.html:4 #: templates/user/user-list-tabs.html:6 msgid "Groups" msgstr "Nhóm" -#: judge/views/organization.py:345 +#: judge/views/organization.py:313 +msgid "Member count (asc.)" +msgstr "Số lượng thành viên (tăng)" + +#: judge/views/organization.py:314 +msgid "Member count (desc.)" +msgstr "Số lượng thành viên (giảm)" + +#: judge/views/organization.py:404 #, python-format msgid "%s Members" msgstr "%s Thành viên" -#: judge/views/organization.py:467 +#: judge/views/organization.py:526 #, python-brace-format msgid "All submissions in {0}" msgstr "Bài nộp trong {0}" -#: judge/views/organization.py:497 judge/views/organization.py:503 -#: judge/views/organization.py:510 +#: judge/views/organization.py:534 judge/views/submission.py:857 +msgid "Submissions in" +msgstr "Bài nộp trong" + +#: judge/views/organization.py:559 judge/views/organization.py:565 +#: judge/views/organization.py:572 msgid "Joining group" msgstr "Tham gia nhóm" -#: judge/views/organization.py:498 +#: judge/views/organization.py:560 msgid "You are already in the group." msgstr "Bạn đã ở trong nhóm." -#: judge/views/organization.py:503 +#: judge/views/organization.py:565 msgid "This group is not open." msgstr "Nhóm này là nhóm kín." -#: judge/views/organization.py:511 +#: judge/views/organization.py:573 #, python-brace-format msgid "You may not be part of more than {count} public groups." msgstr "Bạn không thể tham gia nhiều hơn {count} nhóm công khai." -#: judge/views/organization.py:526 +#: judge/views/organization.py:589 msgid "Leaving group" msgstr "Rời nhóm" -#: judge/views/organization.py:527 +#: judge/views/organization.py:590 #, python-format msgid "You are not in \"%s\"." msgstr "Bạn không ở trong \"%s\"." -#: judge/views/organization.py:552 +#: judge/views/organization.py:616 #, python-format msgid "Request to join %s" msgstr "Đăng ký tham gia %s" -#: judge/views/organization.py:582 +#: judge/views/organization.py:646 msgid "Join request detail" msgstr "Chi tiết đơn đăng ký" -#: judge/views/organization.py:624 +#: judge/views/organization.py:688 msgid "Manage join requests" msgstr "Quản lý đơn đăng ký" -#: judge/views/organization.py:628 +#: judge/views/organization.py:692 #, python-format msgid "Managing join requests for %s" msgstr "Quản lý đơn đăng ký cho %s" -#: judge/views/organization.py:668 +#: judge/views/organization.py:732 #, python-format msgid "" "Your organization can only receive %d more members. You cannot approve %d " @@ -3107,163 +3192,170 @@ msgstr "" "Tổ chức chỉ có thể chứa %d thành viên. Bạn không thể chấp thuận nhiều hơn %d " "người." -#: judge/views/organization.py:686 +#: judge/views/organization.py:750 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "Đã chấp thuận %d người." -#: judge/views/organization.py:689 +#: judge/views/organization.py:753 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "Đã từ chối %d người." -#: judge/views/organization.py:729 +#: judge/views/organization.py:793 #, python-format msgid "Add member for %s" msgstr "Thêm thành viên cho %s" -#: judge/views/organization.py:741 +#: judge/views/organization.py:805 #, fuzzy #| msgid "Edited from site" msgid "Added members from site" msgstr "Chỉnh sửa từ web" -#: judge/views/organization.py:761 judge/views/organization.py:769 +#: judge/views/organization.py:825 judge/views/organization.py:833 msgid "Can't kick user" msgstr "Không thể đuổi" -#: judge/views/organization.py:762 +#: judge/views/organization.py:826 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:770 +#: judge/views/organization.py:834 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/organization.py:791 judge/views/organization.py:947 +#: judge/views/organization.py:855 judge/views/organization.py:1011 #, python-format msgid "Edit %s" msgstr "Chỉnh sửa %s" -#: judge/views/organization.py:819 templates/organization/list.html:45 +#: judge/views/organization.py:883 templates/organization/search-form.html:19 msgid "Create group" msgstr "Tạo nhóm" -#: judge/views/organization.py:834 +#: judge/views/organization.py:898 msgid "Exceeded limit" msgstr "" -#: judge/views/organization.py:835 +#: judge/views/organization.py:899 #, python-format msgid "You created too many groups. You can only create at most %d groups" msgstr "" -#: judge/views/organization.py:840 judge/views/organization.py:865 -#: judge/views/organization.py:1026 +#: judge/views/organization.py:904 judge/views/organization.py:929 +#: judge/views/organization.py:1102 msgid "Added from site" msgstr "Thêm từ web" -#: judge/views/organization.py:856 -#: templates/organization/org-right-sidebar.html:52 +#: judge/views/organization.py:920 +#: templates/organization/org-right-sidebar.html:47 msgid "Add contest" msgstr "Thêm kỳ thi" -#: judge/views/organization.py:899 judge/views/organization.py:1071 +#: judge/views/organization.py:963 judge/views/organization.py:1152 msgid "Permission denied" msgstr "Truy cập bị từ chối" -#: judge/views/organization.py:900 +#: judge/views/organization.py:964 #, fuzzy #| msgid "You are not allowed to edit this organization." msgid "You are not allowed to edit this contest" msgstr "Bạn không được phép chỉnh sửa tổ chức này." -#: judge/views/organization.py:951 templates/blog/blog.html:31 -#: templates/comments/content-list.html:59 -#: templates/comments/content-list.html:73 -#: templates/contest/contest-tabs.html:37 templates/contest/list.html:128 +#: judge/views/organization.py:1015 templates/blog/blog.html:31 +#: templates/comments/content-list.html:53 +#: templates/comments/content-list.html:66 +#: templates/contest/contest-tabs.html:36 templates/contest/macros.html:14 #: templates/contest/tag-title.html:9 templates/flatpages/admin_link.html:3 #: templates/license.html:10 templates/problem/editorial.html:15 -#: templates/problem/feed/problems.html:50 +#: templates/problem/feed/items.html:50 +#: templates/test_formatter/download_test_formatter.html:83 msgid "Edit" msgstr "Chỉnh sửa" -#: judge/views/organization.py:1015 +#: judge/views/organization.py:1091 #, python-format msgid "Add blog for %s" msgstr "Thêm bài đăng cho %s" -#: judge/views/organization.py:1072 +#: judge/views/organization.py:1153 msgid "Not allowed to edit this blog" msgstr "Bạn không được phép chỉnh sửa bài đăng này." -#: judge/views/organization.py:1104 +#: judge/views/organization.py:1185 #, python-format msgid "Edit blog %s" msgstr "Chỉnh sửa %s" -#: judge/views/organization.py:1146 +#: judge/views/organization.py:1232 #, python-format msgid "Pending blogs in %s" msgstr "Bài đang đợi duyệt trong %s" -#: judge/views/problem.py:133 +#: judge/views/problem.py:135 msgid "No such problem" msgstr "Không có bài nào như vậy" -#: judge/views/problem.py:134 +#: judge/views/problem.py:136 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "Không tìm thấy bài tập với mã bài \"%s\"." -#: judge/views/problem.py:201 +#: judge/views/problem.py:203 #, python-brace-format msgid "Editorial for {0}" msgstr "Hướng dẫn cho {0}" -#: judge/views/problem.py:205 +#: judge/views/problem.py:207 #, python-brace-format msgid "Editorial for {0}" msgstr "Hướng dẫn cho {0}" -#: judge/views/problem.py:461 templates/contest/contest.html:101 +#: judge/views/problem.py:460 templates/contest/contest.html:112 +#: templates/course/lesson.html:14 #: templates/organization/org-left-sidebar.html:4 -#: templates/user/user-about.html:28 templates/user/user-bookmarks.html:35 -#: templates/user/user-tabs.html:5 templates/user/users-table.html:19 +#: templates/profile-table.html:25 templates/user/user-about.html:28 +#: templates/user/user-bookmarks.html:16 templates/user/user-tabs.html:5 +#: templates/user/users-table.html:19 msgid "Problems" msgstr "Bài tập" -#: judge/views/problem.py:834 +#: judge/views/problem.py:842 msgid "Problem feed" msgstr "Bài tập" -#: judge/views/problem.py:1057 +#: judge/views/problem.py:1046 judge/views/problem.py:1079 +msgid "

You have submitted too many submissions.

" +msgstr "

Bạn nộp quá nhiều bài.

" + +#: judge/views/problem.py:1058 msgid "Banned from submitting" msgstr "Bị cấm nộp bài" -#: judge/views/problem.py:1059 +#: judge/views/problem.py:1060 msgid "" "You have been declared persona non grata for this problem. You are " "permanently barred from submitting this problem." msgstr "Bạn đã bị cấm nộp bài này." -#: judge/views/problem.py:1082 +#: judge/views/problem.py:1098 msgid "Too many submissions" msgstr "Quá nhiều lần nộp" -#: judge/views/problem.py:1084 +#: judge/views/problem.py:1100 msgid "You have exceeded the submission limit for this problem." msgstr "Bạn đã vượt quá số lần nộp cho bài này." -#: judge/views/problem.py:1163 judge/views/problem.py:1168 +#: judge/views/problem.py:1185 judge/views/problem.py:1190 #, python-format msgid "Submit to %(problem)s" msgstr "Nộp bài cho %(problem)s" -#: judge/views/problem.py:1194 +#: judge/views/problem.py:1217 msgid "Clone Problem" msgstr "Nhân bản bài tập" @@ -3309,17 +3401,17 @@ msgstr "File init.yml cho %s" msgid "Managing submissions for %s" msgstr "Quản lý bài nộp cho %s" -#: judge/views/problem_manage.py:135 +#: judge/views/problem_manage.py:127 #, python-format msgid "Rejudging selected submissions for %s..." msgstr "Đang chấm lại các bài nộp cho %s..." -#: judge/views/problem_manage.py:195 +#: judge/views/problem_manage.py:187 #, python-format msgid "Rescoring all submissions for %s..." msgstr "Đang tính điểm lại các bài nộp cho %s..." -#: judge/views/problem_manage.py:210 +#: judge/views/problem_manage.py:202 #, python-format msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." @@ -3335,11 +3427,14 @@ msgstr "Các bài nộp tốt nhất cho %s" msgid "Best solutions for {0}" msgstr "Các bài nộp tốt nhất cho {0}" -#: judge/views/register.py:32 -msgid "A username must contain letters, numbers, or underscores" -msgstr "Tên đăng nhập phải chứa ký tự, chữ số, hoặc dấu gạch dưới" +#: judge/views/register.py:30 templates/course/grades.html:81 +#: templates/registration/registration_form.html:34 +#: templates/user/base-users-table.html:5 +#: templates/user/import/table_csv.html:4 +msgid "Username" +msgstr "Tên đăng nhập" -#: judge/views/register.py:42 templates/user/edit-profile.html:144 +#: judge/views/register.py:42 templates/user/edit-profile.html:151 msgid "Preferred language" msgstr "Ngôn ngữ ưa thích" @@ -3367,7 +3462,7 @@ msgstr "Đăng ký" msgid "Authentication failure" msgstr "Xác thực thất bại" -#: judge/views/resolver.py:11 templates/contest/contest-tabs.html:28 +#: judge/views/resolver.py:11 templates/contest/contest-tabs.html:27 #, fuzzy #| msgid "solve rate" msgid "Resolver" @@ -3377,8 +3472,9 @@ msgstr "Tỉ lệ giải đúng" msgid "Language statistics" msgstr "Thống kê ngôn ngữ" -#: judge/views/stats.py:154 templates/organization/org-left-sidebar.html:6 -#: templates/stats/site.html:15 +#: judge/views/stats.py:154 templates/contest/contest-tabs.html:22 +#: templates/organization/org-left-sidebar.html:6 templates/stats/site.html:15 +#: templates/user/user-tabs.html:6 msgid "Submissions" msgstr "Bài nộp" @@ -3399,7 +3495,7 @@ msgstr "Tin nhắn mới" msgid "Site statistics" msgstr "Thống kê" -#: judge/views/status.py:26 templates/submission/list.html:338 +#: judge/views/status.py:26 templates/submission/list.html:337 msgid "Status" msgstr "Kết quả chấm" @@ -3407,69 +3503,74 @@ msgstr "Kết quả chấm" msgid "Version matrix" msgstr "Ma trận phiên bản" -#: judge/views/submission.py:93 judge/views/submission.py:101 +#: judge/views/submission.py:100 judge/views/submission.py:108 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "Bài nộp của %(user)s cho bài %(problem)s" -#: judge/views/submission.py:293 judge/views/submission.py:294 -#: templates/problem/problem.html:168 +#: judge/views/submission.py:292 judge/views/submission.py:293 +#: templates/problem/problem.html:192 msgid "All submissions" msgstr "Tất cả bài nộp" -#: judge/views/submission.py:560 judge/views/submission.py:565 +#: judge/views/submission.py:570 judge/views/submission.py:575 msgid "All my submissions" msgstr "Tất cả bài nộp của tôi" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-format msgid "All submissions by %s" msgstr "Tất cả bài nộp của %s" -#: judge/views/submission.py:567 +#: judge/views/submission.py:577 #, python-brace-format msgid "All submissions by {0}" msgstr "Tất cả bài nộp của {0}" -#: judge/views/submission.py:588 +#: judge/views/submission.py:598 #, fuzzy #| msgid "All submissions" msgid "All friend submissions" msgstr "Tất cả bài nộp" -#: judge/views/submission.py:617 +#: judge/views/submission.py:627 #, python-format msgid "All submissions for %s" msgstr "Tất cả bài nộp cho %s" -#: judge/views/submission.py:645 +#: judge/views/submission.py:655 msgid "Must pass a problem" msgstr "Phải làm được một bài" -#: judge/views/submission.py:703 +#: judge/views/submission.py:713 #, python-format msgid "My submissions for %(problem)s" msgstr "Bài nộp của tôi cho %(problem)s" -#: judge/views/submission.py:704 +#: judge/views/submission.py:714 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "Các bài nộp của %(user)s cho %(problem)s" -#: judge/views/submission.py:840 +#: judge/views/submission.py:837 msgid "Must pass a contest" msgstr "Phải qua một kỳ thi" -#: judge/views/submission.py:870 +#: judge/views/submission.py:861 +#, python-brace-format +msgid "Submissions in {1}" +msgstr "Bài nộp trong {1}" + +#: judge/views/submission.py:899 #, python-brace-format msgid "" -"{0}'s submissions for {2} in {4}" +"{0}'s submissions for {2} in {4}" msgstr "" "Các bài nộp của {0} cho {2} trong {4}" -#: judge/views/submission.py:882 +#: judge/views/submission.py:911 #, python-brace-format msgid "" "{0}'s submissions for problem {2} in {3}" @@ -3478,11 +3579,17 @@ msgstr "" "Các bài nộp của {0} cho bài {2} trong {3}" "" -#: judge/views/submission.py:1016 -#, fuzzy -#| msgid "You do not have the permission to rejudge submissions." +#: judge/views/submission.py:1045 msgid "You don't have permission to access." -msgstr "Bạn không có quyền chấm lại bài." +msgstr "Bạn không có quyền truy cập." + +#: judge/views/test_formatter/test_formatter.py:64 +#: judge/views/test_formatter/test_formatter.py:107 +#: judge/views/test_formatter/test_formatter.py:190 +#, fuzzy +#| msgid "contest format" +msgid "Test Formatter" +msgstr "format kỳ thi" #: judge/views/ticket.py:60 judge/views/ticket.py:66 msgid "Ticket title" @@ -3538,48 +3645,44 @@ msgstr "Hủy kích hoạt Two Factor Authentication" msgid "Perform Two Factor Authentication" msgstr "Thực hiện Two Factor Authentication" -#: judge/views/user.py:96 +#: judge/views/user.py:115 msgid "No such user" msgstr "Không người dùng nào như vậy" -#: judge/views/user.py:97 +#: judge/views/user.py:116 #, python-format msgid "No user handle \"%s\"." msgstr "Không tồn tại tên người dùng \"%s\"." -#: judge/views/user.py:102 +#: judge/views/user.py:121 msgid "My account" msgstr "Tài khoản của tôi" -#: judge/views/user.py:104 +#: judge/views/user.py:123 #, python-format msgid "User %s" msgstr "Thành viên %s" -#: judge/views/user.py:202 -msgid "M j, Y" -msgstr "j M, Y" - -#: judge/views/user.py:237 +#: judge/views/user.py:213 msgid "M j, Y, G:i" msgstr "j M, Y, G:i" -#: judge/views/user.py:416 +#: judge/views/user.py:414 msgid "Updated on site" msgstr "Được cập nhật trên web" #: judge/views/user.py:431 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:199 -#: templates/user/user-tabs.html:11 +#: templates/admin/auth/user/change_form.html:17 +#: templates/user/user-tabs.html:12 msgid "Edit profile" msgstr "Chỉnh sửa thông tin" -#: judge/views/user.py:442 templates/user/user-left-sidebar.html:2 +#: judge/views/user.py:441 templates/user/user-left-sidebar.html:2 #: templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "Xếp hạng" -#: judge/views/user.py:543 +#: judge/views/user.py:541 msgid "Import Users" msgstr "" @@ -3596,11 +3699,11 @@ msgstr "Kinh độ / Vĩ độ không hợp lệ" msgid "Like" msgstr "Thích" -#: templates/actionbar/list.html:28 templates/blog/list.html:45 +#: templates/actionbar/list.html:28 templates/blog/list.html:46 msgid "Comment" msgstr "Bình luận" -#: templates/actionbar/list.html:43 templates/user/user-tabs.html:10 +#: templates/actionbar/list.html:43 msgid "Bookmark" msgstr "Lưu" @@ -3644,7 +3747,6 @@ msgid "View Submissions" msgstr "Xem Bài Nộp" #: templates/admin/judge/problem/change_form.html:18 -#: templates/user/user-base.html:109 msgid "View submissions" msgstr "Xem bài nộp" @@ -3660,60 +3762,70 @@ msgstr "Chỉnh sửa thông tin" #: templates/admin/judge/submission/change_form.html:14 #: templates/admin/judge/submission/change_form.html:17 -#: templates/submission/source.html:39 templates/submission/status.html:145 +#: templates/submission/status.html:148 msgid "Rejudge" msgstr "Chấm lại" -#: templates/base.html:137 +#: templates/base.html:144 msgid "Chat" msgstr "Chat" -#: templates/base.html:147 +#: templates/base.html:154 msgid "Notification" msgstr "Thông báo" -#: templates/base.html:173 +#: templates/base.html:181 msgid "Dark Mode" msgstr "" -#: templates/base.html:183 +#: templates/base.html:192 templates/profile-table.html:3 msgid "Profile" msgstr "Trang cá nhân" -#: templates/base.html:192 +#: templates/base.html:201 msgid "Internal" msgstr "Nội bộ" -#: templates/base.html:195 +#: templates/base.html:204 msgid "Stats" msgstr "Thống kê" -#: templates/base.html:208 +#: templates/base.html:208 templates/user/user-tabs.html:11 +msgid "Bookmarks" +msgstr "Đã lưu" + +#: templates/base.html:215 +#, fuzzy +#| msgid "Stop spectating" +msgid "Stop impersonating" +msgstr "Ngừng theo dõi" + +#: templates/base.html:220 msgid "Log out" msgstr "Đăng xuất" -#: templates/base.html:218 +#: templates/base.html:230 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "Đăng nhập" -#: templates/base.html:219 +#: templates/base.html:231 msgid "Sign up" msgstr "Đăng ký" -#: templates/base.html:233 +#: templates/base.html:245 msgid "spectating" msgstr "đang theo dõi" -#: templates/base.html:245 -msgid "Compete" -msgstr "Thi" +#: templates/base.html:257 templates/contest/list.html:110 +msgid "In contest" +msgstr "Trong kỳ thi" -#: templates/base.html:247 -msgid "General" -msgstr "Chung" +#: templates/base.html:259 +msgid "Out contest" +msgstr "Ngoài kỳ thi" -#: templates/base.html:254 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "" @@ -3722,12 +3834,14 @@ msgstr "" msgid " posted on %(time)s" msgstr "đã đăng vào %(time)s" -#: templates/blog/blog.html:35 templates/contest/contest.html:88 +#: templates/blog/blog.html:35 templates/contest/contest.html:93 msgid "Edit in" msgstr "Chỉnh sửa trong" -#: templates/blog/content.html:46 templates/comments/feed.html:18 -#: templates/problem/feed/problems.html:109 templates/ticket/feed.html:25 +#: templates/blog/content.html:43 templates/comments/feed.html:18 +#: templates/problem/feed/items.html:109 templates/ticket/feed.html:26 +#: templates/user/user-bookmarks.html:61 templates/user/user-bookmarks.html:131 +#: templates/user/user-bookmarks.html:180 msgid "...More" msgstr "...Xem thêm" @@ -3746,59 +3860,59 @@ msgstr "" " vào %(time)s\n" " " -#: templates/blog/list.html:44 +#: templates/blog/list.html:45 msgid "News" msgstr "Tin tức" -#: templates/blog/list.html:46 +#: templates/blog/list.html:47 msgid "Ticket" msgstr "Báo cáo" -#: templates/blog/list.html:47 +#: templates/blog/list.html:48 msgid "Events" msgstr "Sự kiện" -#: templates/blog/list.html:59 +#: templates/blog/list.html:60 msgid "You have no ticket" msgstr "Bạn không có báo cáo" -#: templates/blog/list.html:72 templates/problem/list.html:150 -#: templates/problem/problem.html:383 +#: templates/blog/list.html:73 templates/problem/list.html:150 +#: templates/problem/problem.html:448 msgid "Clarifications" msgstr "Thông báo" -#: templates/blog/list.html:77 +#: templates/blog/list.html:78 msgid "Add" msgstr "Thêm mới" -#: templates/blog/list.html:97 templates/problem/list.html:172 -#: templates/problem/problem.html:394 +#: templates/blog/list.html:98 templates/problem/list.html:172 +#: templates/problem/problem.html:459 msgid "No clarifications have been made at this time." msgstr "Không có thông báo nào." -#: templates/chat/chat.html:5 templates/chat/chat_js.html:539 +#: templates/chat/chat.html:5 templates/chat/chat_js.html:564 msgid "Chat Box" msgstr "Chat Box" -#: templates/chat/chat.html:72 templates/chat/chat_js.html:501 +#: templates/chat/chat.html:69 templates/chat/chat_js.html:524 #: templates/user/base-users-js.html:10 #: templates/user/base-users-two-col.html:19 msgid "Search by handle..." msgstr "Tìm kiếm theo tên..." -#: templates/chat/chat.html:91 +#: templates/chat/chat.html:90 msgid "Enter your message" msgstr "Nhập tin nhắn" -#: templates/chat/chat.html:92 +#: templates/chat/chat.html:91 msgid "Emoji" msgstr "" -#: templates/chat/chat_js.html:118 +#: templates/chat/chat_js.html:131 msgid "New message(s)" msgstr "Tin nhắn mới" -#: templates/chat/chat_js.html:412 +#: templates/chat/chat_js.html:434 msgid "Mute this user and delete all messages?" msgstr "Mute người dùng này và xóa tất cả tin nhắn chung?" @@ -3820,20 +3934,21 @@ msgstr "Các bạn đã kết nối. Nhắn gì đó để bắt đầu cuộc t msgid "Lobby" msgstr "Sảnh chung" +#: templates/chat/online_status.html:52 +#: templates/chat/user_online_status.html:39 +msgid "Ignore" +msgstr "Tắt thông báo" + #: templates/chat/user_online_status.html:26 #, python-brace-format msgid "Last online on {time}" msgstr "Trực tuyến vào {time}" -#: templates/chat/user_online_status.html:38 +#: templates/chat/user_online_status.html:37 msgid "Unignore" msgstr "Mở lại thông báo" -#: templates/chat/user_online_status.html:40 -msgid "Ignore" -msgstr "Tắt thông báo" - -#: templates/chat/user_online_status.html:47 +#: templates/chat/user_online_status.html:45 msgid "users are online" msgstr "người đang trực tuyến" @@ -3844,29 +3959,29 @@ msgstr "người đang trực tuyến" msgid "Please login to vote" msgstr "Đăng nhập để vote" -#: templates/comments/content-list.html:41 +#: templates/comments/content-list.html:36 #, python-format msgid "edit %(edits)s" msgstr "chỉnh sửa %(edits)s" -#: templates/comments/content-list.html:43 templates/comments/media-js.html:97 +#: templates/comments/content-list.html:38 templates/comments/media-js.html:67 msgid "edited" msgstr "đã chỉnh sửa" -#: templates/comments/content-list.html:52 templates/notification/list.html:11 +#: templates/comments/content-list.html:47 templates/notification/list.html:11 msgid "Link" msgstr "Link" +#: templates/comments/content-list.html:57 #: templates/comments/content-list.html:63 -#: templates/comments/content-list.html:69 msgid "Reply" msgstr "Phản hồi" -#: templates/comments/content-list.html:76 +#: templates/comments/content-list.html:70 msgid "Hide" msgstr "Ẩn" -#: templates/comments/content-list.html:91 +#: templates/comments/content-list.html:85 #, python-format msgid "" "This comment is hidden due to too much negative feedback. Click đây để mở." -#: templates/comments/content-list.html:108 +#: templates/comments/content-list.html:102 msgid "reply" msgid_plural "replies" msgstr[0] "phản hồi" -#: templates/comments/content-list.html:133 +#: templates/comments/content-list.html:127 msgid "more comment" msgid_plural "more comments" msgstr[0] "bình luận nữa" @@ -3910,16 +4025,16 @@ msgstr "Không có bình luận nào." msgid "Comments are disabled on this page." msgstr "Bình luận bị tắt trong trang này." -#: templates/comments/media-js.html:40 +#: templates/comments/media-js.html:12 msgid "Replying to comment" msgstr "Trả lời bình luận" -#: templates/comments/media-js.html:92 +#: templates/comments/media-js.html:62 #, python-brace-format msgid "edit {edits}" msgstr "chỉnh sửa {edits}" -#: templates/comments/media-js.html:95 +#: templates/comments/media-js.html:65 msgid "original" msgstr "original" @@ -3975,8 +4090,9 @@ msgstr "Thứ sáu" msgid "Saturday" msgstr "Thứ bảy" -#: templates/contest/clarification.html:52 templates/contest/list.html:230 -#: templates/organization/new.html:10 templates/ticket/new.html:38 +#: templates/contest/clarification.html:52 +#: templates/contest/search-form.html:35 templates/organization/new.html:10 +#: templates/ticket/new.html:38 msgid "Create" msgstr "Tạo mới" @@ -3988,78 +4104,82 @@ msgstr "Nhập mã kỳ thi cho kỳ thi nhân bản:" msgid "Clone!" msgstr "Nhân bản!" -#: templates/contest/contest-datetime.html:13 +#: templates/contest/contest-datetime.html:6 #, python-format msgid "Spectating, contest ends in %(countdown)s." msgstr "Đang theo dõi, kỳ thi còn %(countdown)s." -#: templates/contest/contest-datetime.html:15 +#: templates/contest/contest-datetime.html:8 #, python-format msgid "Participating virtually, %(countdown)s remaining." msgstr "Đang tham gia ảo, còn %(countdown)s." -#: templates/contest/contest-datetime.html:17 +#: templates/contest/contest-datetime.html:10 msgid "Participating virtually." msgstr "Đang tham gia ảo." -#: templates/contest/contest-datetime.html:21 +#: templates/contest/contest-datetime.html:14 #, python-format msgid "Starting in %(countdown)s." msgstr "Kỳ thi bắt đầu trong %(countdown)s nữa." -#: templates/contest/contest-datetime.html:23 +#: templates/contest/contest-datetime.html:16 msgid "Contest is over." msgstr "Kỳ thi đã kết thúc." -#: templates/contest/contest-datetime.html:27 +#: templates/contest/contest-datetime.html:20 #, python-format msgid "Your time is up! Contest ends in %(countdown)s." msgstr "Hết giờ! Kỳ thi kết thúc trong %(countdown)s." -#: templates/contest/contest-datetime.html:29 +#: templates/contest/contest-datetime.html:22 #, python-format msgid "You have %(countdown)s remaining." msgstr "Bạn còn %(countdown)s." -#: templates/contest/contest-datetime.html:32 +#: templates/contest/contest-datetime.html:25 #, python-format msgid "Contest ends in %(countdown)s." msgstr "Kỳ thi kết thúc trong %(countdown)s" -#: templates/contest/contest-datetime.html:39 -#: templates/contest/contest-datetime.html:43 +#: templates/contest/contest-datetime.html:32 +#: templates/contest/contest-datetime.html:36 msgid "F j, Y, G:i T" msgstr "G:i T, j F, Y" -#: templates/contest/contest-datetime.html:39 +#: templates/contest/contest-datetime.html:32 #, python-format msgid "" -"%(time_limit)s window between %(start_time)s and " -"%(end_time)s" +"%(time_limit)s window between %(start_time)s and " +"%(end_time)s" msgstr "" -"Kéo dài %(time_limit)s từ %(start_time)s đến %(end_time)s" +"Dài %(time_limit)s từ %(start_time)s đến %(end_time)s" -#: templates/contest/contest-datetime.html:43 +#: templates/contest/contest-datetime.html:36 #, python-format msgid "%(length)s long starting on %(start_time)s" -msgstr "Kéo dài %(length)s bắt đầu từ %(start_time)s" +msgstr "Dài %(length)s bắt đầu từ %(start_time)s" -#: templates/contest/contest-datetime.html:50 +#: templates/contest/contest-datetime.html:43 msgid "Standing was frozen" msgstr "Bảng điểm đã đóng băng" -#: templates/contest/contest-datetime.html:50 +#: templates/contest/contest-datetime.html:43 msgid "at" msgstr "lúc" #: templates/contest/contest-list-tabs.html:2 -#: templates/problem/left-sidebar.html:4 -#: templates/problem/problem-list-tabs.html:5 -msgid "List" -msgstr "Danh sách" +#: templates/problem/search-form.html:75 templates/problem/search-form.html:77 +#: templates/submission/list.html:380 +#: templates/submission/submission-list-tabs.html:4 +msgid "All" +msgstr "Tất cả" #: templates/contest/contest-list-tabs.html:3 +msgid "Official" +msgstr "Chính thức" + +#: templates/contest/contest-list-tabs.html:4 msgid "Calendar" msgstr "Lịch" @@ -4067,7 +4187,7 @@ msgstr "Lịch" msgid "Info" msgstr "Thông tin" -#: templates/contest/contest-tabs.html:13 templates/submission/list.html:363 +#: templates/contest/contest-tabs.html:13 templates/submission/list.html:362 msgid "Statistics" msgstr "Thống kê" @@ -4075,63 +4195,56 @@ msgstr "Thống kê" msgid "Rankings" msgstr "Bảng xếp hạng" -#: templates/contest/contest-tabs.html:24 -msgid "Hidden Rankings" -msgstr "Bảng xếp hạng ẩn" - -#: templates/contest/contest-tabs.html:31 +#: templates/contest/contest-tabs.html:30 msgid "Final rankings" msgstr "BXH chung cuộc" -#: templates/contest/contest-tabs.html:35 +#: templates/contest/contest-tabs.html:34 msgid "MOSS" msgstr "MOSS" -#: templates/contest/contest.html:35 templates/contest/contest.html:55 +#: templates/contest/contest.html:36 templates/contest/contest.html:56 msgid "Leave contest" msgstr "Rời kỳ thi" -#: templates/contest/contest.html:42 templates/contest/list.html:398 +#: templates/contest/contest.html:43 templates/contest/list.html:115 msgid "Virtual join" msgstr "Tham gia ảo" -#: templates/contest/contest.html:53 +#: templates/contest/contest.html:54 msgid "Stop spectating" msgstr "Ngừng theo dõi" -#: templates/contest/contest.html:61 +#: templates/contest/contest.html:62 msgid "Spectate contest" msgstr "Theo dõi kỳ thi" -#: templates/contest/contest.html:67 +#: templates/contest/contest.html:68 msgid "Join contest" msgstr "Tham gia kỳ thi" -#: templates/contest/contest.html:76 +#: templates/contest/contest.html:77 msgid "Login to participate" msgstr "Đăng nhập để tham gia" -#: templates/contest/contest.html:92 +#: templates/contest/contest.html:97 msgid "Clone" msgstr "Nhân bản" -#: templates/contest/contest.html:107 +#: templates/contest/contest.html:118 msgid "AC Rate" msgstr "Tỷ lệ AC" -#: templates/contest/contest.html:108 templates/contest/list.html:267 -#: templates/contest/list.html:308 templates/contest/list.html:390 -#: templates/problem/list.html:24 +#: templates/contest/contest.html:119 templates/problem/list.html:24 msgid "Users" msgstr "Người nộp" -#: templates/contest/contest.html:133 templates/problem/list.html:58 +#: templates/contest/contest.html:144 templates/problem/list.html:58 #: templates/problem/list.html:133 msgid "Editorial" msgstr "Hướng dẫn" #: templates/contest/contests_summary.html:36 -#: templates/user/base-users-table.html:3 msgid "Rank" msgstr "Rank" @@ -4141,11 +4254,11 @@ msgstr "Rank" msgid "Name" msgstr "Tên" -#: templates/contest/list.html:89 templates/contest/media-js.html:152 +#: templates/contest/list.html:57 templates/contest/media-js.html:152 msgid "Are you sure you want to join?" msgstr "Bạn có chắc tham gia?" -#: templates/contest/list.html:90 +#: templates/contest/list.html:58 msgid "" "Joining a contest for the first time starts your timer, after which it " "becomes unstoppable." @@ -4153,86 +4266,112 @@ msgstr "" "Tham gia kỳ thi lần đầu sẽ kích hoạt thời gian đếm ngược, không thể dừng lại " "sau đó." -#: templates/contest/list.html:122 -msgid "hidden" -msgstr "ẩn" +#: templates/contest/list.html:60 templates/contest/media-js.html:155 +msgid "By joining in this contest, you will automatically leave contest" +msgstr "Khi tham gia kỳ thi này, bạn sẽ tự động rời khỏi kỳ thi" -#: templates/contest/list.html:134 -msgid "private" -msgstr "riêng tư" - -#: templates/contest/list.html:150 -msgid "rated" -msgstr "rated" - -#: templates/contest/list.html:175 -#, python-format -msgid "%(time_limit)s window" -msgstr "Cửa sổ thi dài %(time_limit)s" - -#: templates/contest/list.html:177 -#, python-format -msgid "%(duration)s long" -msgstr "Kéo dài %(duration)s" - -#: templates/contest/list.html:196 +#: templates/contest/list.html:121 msgid "Spectate" msgstr "Theo dõi" -#: templates/contest/list.html:202 templates/organization/home.html:30 +#: templates/contest/list.html:127 templates/organization/home.html:23 +#: templates/organization/list.html:72 msgid "Join" msgstr "Tham gia" -#: templates/contest/list.html:212 -msgid "Search contests..." -msgstr "Tìm kiếm kỳ thi..." +#: templates/contest/list.html:137 +msgid "Active" +msgstr "Đang tham gia" -#: templates/contest/list.html:222 templates/internal/problem.html:33 -msgid "Search" -msgstr "Tìm kiếm" +#: templates/contest/list.html:145 +msgid "Ongoing" +msgstr "Đang diễn ra" -#: templates/contest/list.html:226 -msgid "Hide organization contests" -msgstr "Ẩn các kỳ thi riêng tư của nhóm" +#: templates/contest/list.html:152 +msgid "Upcoming" +msgstr "Sắp diễn ra" -#: templates/contest/list.html:236 -msgid "Active Contests" -msgstr "Kỳ thi bạn đang tham gia" +#: templates/contest/list.html:159 +msgid "Past" +msgstr "Đã diễn ra" -#: templates/contest/list.html:253 +#: templates/contest/list.html:180 #, python-format msgid "Window ends in %(countdown)s" msgstr "Cửa số thi còn %(countdown)s" -#: templates/contest/list.html:256 templates/contest/list.html:297 +#: templates/contest/list.html:183 templates/contest/list.html:221 #, python-format msgid "Ends in %(countdown)s" msgstr "Kết thúc trong %(countdown)s" -#: templates/contest/list.html:282 -msgid "Ongoing Contests" -msgstr "Kỳ thi đang diễn ra" +#: templates/contest/list.html:203 +msgid "There is no active contest at this time." +msgstr "Không có kỳ thi nào đang tham gia." -#: templates/contest/list.html:320 +#: templates/contest/list.html:240 msgid "There is no ongoing contest at this time." msgstr "Không có kỳ thi nào đang diễn ra hiện tại." -#: templates/contest/list.html:327 -msgid "Upcoming Contests" -msgstr "Kỳ thi sắp tới" - -#: templates/contest/list.html:357 +#: templates/contest/list.html:274 msgid "There is no scheduled contest at this time." msgstr "Không có kỳ thi nào được lên lịch hiện tại." -#: templates/contest/list.html:364 -msgid "Past Contests" -msgstr "Kỳ thi trong quá khứ" - -#: templates/contest/list.html:411 +#: templates/contest/list.html:306 msgid "There is no past contest." msgstr "Không có kỳ thi nào trong quá khứ." +#: templates/contest/macros.html:8 +msgid "hidden" +msgstr "ẩn" + +#: templates/contest/macros.html:20 +msgid "private" +msgstr "riêng tư" + +#: templates/contest/macros.html:32 +msgid "rated" +msgstr "rated" + +#: templates/contest/macros.html:51 templates/contest/macros.html:58 +msgid "Start" +msgstr "Bắt đầu" + +#: templates/contest/macros.html:54 +msgid "End" +msgstr "Kết thúc" + +#: templates/contest/macros.html:62 +msgid "Length" +msgstr "Dài" + +#: templates/contest/macros.html:64 +#, python-format +msgid "%(time_limit)s" +msgstr "%(time_limit)s" + +#: templates/contest/macros.html:66 +#, python-format +msgid "%(duration)s" +msgstr "%(duration)s" + +#: templates/contest/macros.html:84 +#: templates/contest/official-search-form.html:19 +#: templates/problem/list.html:40 templates/problem/search-form.html:72 +#: templates/user/user-problems.html:57 +msgid "Category" +msgstr "Loại" + +#: templates/contest/macros.html:85 +#: templates/contest/official-search-form.html:30 +msgid "Location" +msgstr "Địa điểm" + +#: templates/contest/macros.html:86 +#: templates/contest/official-search-form.html:9 +msgid "Year" +msgstr "Năm" + #: templates/contest/media-js.html:147 msgid "Are you sure you want to leave?" msgstr "Bạn có chắc muốn rời?" @@ -4270,6 +4409,38 @@ msgstr "MOSS lại kỳ thi" msgid "Delete MOSS results" msgstr "Xóa kết quả MOSS" +#: templates/contest/official-search-form.html:2 +#: templates/contest/search-form.html:2 +msgid "Contest search" +msgstr "Tìm kiếm kỳ thi" + +#: templates/contest/official-search-form.html:6 +#: templates/contest/search-form.html:6 +msgid "Search contests..." +msgstr "Tìm kiếm kỳ thi..." + +#: templates/contest/official-search-form.html:12 +msgid "From" +msgstr "Từ" + +#: templates/contest/official-search-form.html:14 +msgid "To" +msgstr "Đến" + +#: templates/contest/official-search-form.html:41 +#: templates/contest/search-form.html:22 +#: templates/organization/search-form.html:8 +msgid "Order by" +msgstr "Sắp xếp theo" + +#: templates/contest/official-search-form.html:53 +#: templates/contest/search-form.html:33 +#: templates/organization/search-form.html:20 +#: templates/problem/search-form.html:95 templates/submission/list.html:355 +#: templates/ticket/list.html:250 +msgid "Go" +msgstr "Lọc" + #: templates/contest/private.html:5 msgid "This contest is private to specific users." msgstr "Kỳ thi riêng tư với các thành viên này." @@ -4282,59 +4453,63 @@ msgstr "Thêm vào đó, chỉ những tổ chức này mới được tham gia msgid "Only the following organizations may access this contest:" msgstr "Chỉ những tổ chức sau được tham gia kỳ thi:" -#: templates/contest/ranking-table.html:38 +#: templates/contest/ranking-table.html:43 msgid "Un-Disqualify" msgstr "Khôi phục kết quả" -#: templates/contest/ranking-table.html:41 +#: templates/contest/ranking-table.html:46 msgid "Disqualify" msgstr "Hủy kết quả" -#: templates/contest/ranking-table.html:54 templates/user/edit-profile.html:100 +#: templates/contest/ranking-table.html:59 msgid "Fullname" msgstr "Tên đầy đủ" -#: templates/contest/ranking-table.html:55 templates/user/edit-profile.html:104 +#: templates/contest/ranking-table.html:60 templates/user/edit-profile.html:99 #: templates/user/import/table_csv.html:7 msgid "School" msgstr "Trường" -#: templates/contest/ranking.html:17 +#: templates/contest/ranking.html:18 msgid "Are you sure you want to disqualify this participation?" msgstr "Bạn có chắc muốn hủy kết quả này?" -#: templates/contest/ranking.html:22 +#: templates/contest/ranking.html:23 msgid "Are you sure you want to un-disqualify this participation?" msgstr "Bạn có chắc muốn khôi phục kết quả này?" -#: templates/contest/ranking.html:133 +#: templates/contest/ranking.html:134 msgid "View user participation" msgstr "Xem các lần tham gia" -#: templates/contest/ranking.html:137 +#: templates/contest/ranking.html:140 msgid "Show schools" msgstr "Hiển thị trường" -#: templates/contest/ranking.html:141 +#: templates/contest/ranking.html:144 msgid "Show full name" msgstr "Hiển thị họ tên" -#: templates/contest/ranking.html:144 +#: templates/contest/ranking.html:147 msgid "Show friends only" msgstr "Chỉ hiển thị bạn bè" -#: templates/contest/ranking.html:147 +#: templates/contest/ranking.html:150 msgid "Total score only" msgstr "Chỉ hiển thị tổng điểm" -#: templates/contest/ranking.html:149 +#: templates/contest/ranking.html:152 msgid "Show virtual participation" msgstr "Hiển thị tham gia ảo" -#: templates/contest/ranking.html:153 +#: templates/contest/ranking.html:156 msgid "Download as CSV" msgstr "Tải file CSV" +#: templates/contest/search-form.html:10 +msgid "Hide organization contests" +msgstr "Ẩn các kỳ thi riêng tư của nhóm" + #: templates/contest/stats.html:48 msgid "Problem Status Distribution" msgstr "Phân bố theo kết quả" @@ -4367,6 +4542,73 @@ msgstr "Còn" msgid "Upcoming contests" msgstr "Kỳ thi sắp diễn ra" +#: templates/course/course.html:9 +msgid "Lessons" +msgstr "Bài học" + +#: templates/course/course.html:34 +msgid "Total achieved points" +msgstr "Tổng điểm" + +#: templates/course/edit_lesson.html:28 +msgid "Add new" +msgstr "Thêm mới" + +#: templates/course/edit_lesson.html:36 +#: templates/organization/contest/edit.html:41 +#: templates/organization/form.html:6 +msgid "Please fix below errors" +msgstr "Vui lòng sửa các lỗi bên dưới" + +#: templates/course/edit_lesson.html:56 +#: templates/markdown_editor/markdown_editor.html:122 +#: templates/organization/blog/edit.html:36 +#: templates/organization/contest/add.html:36 +#: templates/organization/contest/edit.html:87 +#: templates/organization/form.html:23 templates/pagedown.html:31 +msgid "Save" +msgstr "Lưu" + +#: templates/course/grades.html:79 +msgid "Sort by" +msgstr "Sắp xếp theo" + +#: templates/course/grades.html:82 templates/user/user-problems.html:99 +msgid "Score" +msgstr "Điểm" + +#: templates/course/grades.html:84 templates/internal/problem/problem.html:34 +msgid "Search" +msgstr "Tìm kiếm" + +#: templates/course/grades.html:99 templates/submission/user-ajax.html:33 +msgid "Total" +msgstr "Tổng điểm" + +#: templates/course/left_sidebar.html:4 +msgid "Edit lessons" +msgstr "Chỉnh sửa bài học" + +#: templates/course/left_sidebar.html:5 +msgid "Grades" +msgstr "Điểm" + +#: templates/course/list.html:23 +msgid "Teachers" +msgstr "Giáo viên" + +#: templates/custom_file_upload.html:6 +msgid "Your file has been uploaded successfully" +msgstr "File đã được tải lên thành công" + +#: templates/custom_file_upload.html:7 +msgid "Upload another file" +msgstr "Tải file khác lên" + +#: templates/custom_file_upload.html:12 templates/fine_uploader/script.html:7 +msgid "Upload file" +msgstr "Tải file lên" + #: templates/email_change/email_change.html:15 msgid "Verify Email" msgstr "Xác thực Email" @@ -4395,12 +4637,9 @@ msgstr "Xem thêm" msgid "Drop files here to upload" msgstr "Kéo file vào đây để tải lên" -#: templates/fine_uploader/script.html:7 -msgid "Upload file" -msgstr "Tải file lên" - #: templates/fine_uploader/script.html:23 -#: templates/markdown_editor/markdown_editor.html:131 +#: templates/markdown_editor/markdown_editor.html:123 +#: templates/pagedown.html:32 msgid "Cancel" msgstr "Hủy" @@ -4428,33 +4667,34 @@ msgstr "Tốc độ trung bình" msgid "Slow requests" msgstr "Requests chậm" -#: templates/internal/problem.html:41 +#: templates/internal/problem/problem.html:42 msgid "Code" msgstr "" -#: templates/internal/problem.html:42 +#: templates/internal/problem/problem.html:43 #, fuzzy #| msgid "Total points" msgid "Vote count" msgstr "Tổng điểm" -#: templates/internal/problem.html:65 +#: templates/internal/problem/votes.html:1 #, fuzzy #| msgid "contest problem" msgid "Votes for problem" msgstr "bài trong kỳ thi" -#: templates/internal/problem.html:73 +#: templates/internal/problem/votes.html:9 msgid "Knowledge" msgstr "" -#: templates/internal/problem.html:77 +#: templates/internal/problem/votes.html:13 #, fuzzy #| msgid "Rankings" msgid "Thinking" msgstr "Bảng xếp hạng" -#: templates/internal/problem.html:85 templates/problem/feed/problems.html:97 +#: templates/internal/problem/votes.html:21 +#: templates/problem/feed/items.html:97 #, fuzzy #| msgid "Feed" msgid "Feedback" @@ -4464,30 +4704,25 @@ msgstr "Gợi ý" msgid "Source:" msgstr "Nguồn:" -#: templates/markdown_editor/markdown_editor.html:111 templates/pagedown.html:9 +#: templates/markdown_editor/markdown_editor.html:103 templates/pagedown.html:9 msgid "Update Preview" msgstr "Cập nhật xem trước" -#: templates/markdown_editor/markdown_editor.html:115 +#: templates/markdown_editor/markdown_editor.html:107 +#: templates/pagedown.html:15 msgid "Insert Image" msgstr "Chèn hình ảnh" -#: templates/markdown_editor/markdown_editor.html:118 +#: templates/markdown_editor/markdown_editor.html:110 +#: templates/pagedown.html:18 msgid "From the web" msgstr "Từ web" -#: templates/markdown_editor/markdown_editor.html:124 +#: templates/markdown_editor/markdown_editor.html:116 +#: templates/pagedown.html:25 msgid "From your computer" msgstr "Từ máy tính của bạn" -#: templates/markdown_editor/markdown_editor.html:130 -#: templates/organization/blog/edit.html:36 -#: templates/organization/contest/add.html:36 -#: templates/organization/contest/edit.html:86 -#: templates/organization/form.html:23 -msgid "Save" -msgstr "Lưu" - #: templates/notification/list.html:5 msgid "You have no notifications" msgstr "Bạn không có thông báo" @@ -4509,12 +4744,7 @@ msgstr "Tác giả" msgid "Post time" msgstr "Thời gian đăng" -#: templates/organization/contest/edit.html:40 -#: templates/organization/form.html:6 -msgid "Please fix below errors" -msgstr "Vui lòng sửa các lỗi bên dưới" - -#: templates/organization/contest/edit.html:60 +#: templates/organization/contest/edit.html:61 msgid "If you run out of rows, click Save" msgstr "Ấn nút lưu lại nếu cần thêm hàng" @@ -4530,29 +4760,47 @@ msgstr "Bạn phải tham gia lại để được hiển thị trong bảng x msgid "You will have to request membership in order to join again." msgstr "Bạn phải đăng ký thành viên để được tham gia lại." -#: templates/organization/home.html:19 -msgid "Subdomain" -msgstr "Site riêng cho nhóm" - -#: templates/organization/home.html:34 +#: templates/organization/home.html:28 templates/organization/list.html:75 msgid "Request membership" msgstr "Đăng ký thành viên" -#: templates/organization/list.html:37 +#: templates/organization/list.html:37 templates/submission/list.html:382 +#: templates/submission/submission-list-tabs.html:6 +msgid "Mine" +msgstr "Tôi" + +#: templates/organization/list.html:39 +msgid "Public" +msgstr "Nhóm mở" + +#: templates/organization/list.html:40 +msgid "Private" +msgstr "Nhóm kín" + +#: templates/organization/list.html:42 templates/user/import/index.html:105 +#: templates/user/user-left-sidebar.html:6 templates/user/user-list-tabs.html:8 +msgid "Import" +msgstr "" + +#: templates/organization/list.html:65 msgid "members" msgstr "thành viên" -#: templates/organization/list.html:46 -msgid "My groups" -msgstr "Nhóm của tôi" +#: templates/organization/list.html:68 +msgid "View" +msgstr "Xem" -#: templates/organization/list.html:47 -msgid "Open groups" -msgstr "Nhóm mở" +#: templates/organization/list.html:91 +msgid "You have not joined any organization yet." +msgstr "Bạn chưa tham gia nhóm nào." -#: templates/organization/list.html:48 -msgid "Private groups" -msgstr "Nhóm kín" +#: templates/organization/list.html:99 +msgid "There is no public organization." +msgstr "Không có nhóm mở nào" + +#: templates/organization/list.html:107 +msgid "There is no private organization." +msgstr "Không có nhóm kín nào" #: templates/organization/org-left-sidebar.html:9 msgid "Members" @@ -4566,23 +4814,27 @@ msgstr "Quản lý" msgid "Edit group" msgstr "Chỉnh sửa nhóm" -#: templates/organization/org-right-sidebar.html:16 +#: templates/organization/org-right-sidebar.html:15 msgid "View requests" msgstr "Đơn đăng ký" -#: templates/organization/org-right-sidebar.html:28 +#: templates/organization/org-right-sidebar.html:26 msgid "Add members" msgstr "Thêm thành viên" -#: templates/organization/org-right-sidebar.html:35 +#: templates/organization/org-right-sidebar.html:32 msgid "Add blog" msgstr "Thêm bài đăng" -#: templates/organization/org-right-sidebar.html:41 +#: templates/organization/org-right-sidebar.html:37 msgid "Pending blogs" msgstr "Bài đăng đang chờ" -#: templates/organization/org-right-sidebar.html:60 +#: templates/organization/org-right-sidebar.html:53 +msgid "Subdomain" +msgstr "Site riêng cho nhóm" + +#: templates/organization/org-right-sidebar.html:62 msgid "Leave group" msgstr "Rời nhóm" @@ -4618,7 +4870,7 @@ msgid "There are no requests to approve." msgstr "Không có đơn đăng ký." #: templates/organization/requests/pending.html:24 -#: templates/problem/data.html:536 +#: templates/problem/data.html:538 msgid "Delete?" msgstr "Xóa?" @@ -4651,6 +4903,14 @@ msgstr "Chấp thuận" msgid "Rejected" msgstr "Từ chối" +#: templates/organization/search-form.html:2 +msgid "Organization search" +msgstr "Tìm kiếm nhóm" + +#: templates/organization/search-form.html:6 +msgid "Search organizations..." +msgstr "Tìm kiếm nhóm" + #: templates/organization/users-table.html:15 msgid "Kick" msgstr "Đuổi" @@ -4659,32 +4919,32 @@ msgstr "Đuổi" msgid "Enter a new code for the cloned problem:" msgstr "Nhập mã bài mới cho bài tập được nhân bản:" -#: templates/problem/data.html:154 templates/problem/data.html:161 +#: templates/problem/data.html:156 templates/problem/data.html:163 msgid "Instruction" msgstr "Hướng dẫn" -#: templates/problem/data.html:485 +#: templates/problem/data.html:487 msgid "View YAML" msgstr "Xem YAML" -#: templates/problem/data.html:502 +#: templates/problem/data.html:504 msgid "Autofill testcases" msgstr "Tự động điền test" -#: templates/problem/data.html:506 templates/problem/problem.html:276 +#: templates/problem/data.html:508 templates/problem/problem.html:307 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "Dạng bài" -#: templates/problem/data.html:513 +#: templates/problem/data.html:515 msgid "Fill testcases" msgstr "Điền test" -#: templates/problem/data.html:517 +#: templates/problem/data.html:519 msgid "Batch start positions" msgstr "Vị trí bắt đầu nhóm" -#: templates/problem/data.html:521 +#: templates/problem/data.html:523 msgid "" "Leave empty if not use batch. If you want to divide to three batches [1, 4], " "[5, 8], [9, 10], enter: 1, 5, 9" @@ -4692,27 +4952,27 @@ msgstr "" "Để trống nếu không dùng nhóm. Nếu muốn chia test thành các nhóm [1, 4], [5, " "8], [9, 10], nhập: 1, 5, 9" -#: templates/problem/data.html:525 templates/problem/data.html:576 +#: templates/problem/data.html:527 templates/problem/data.html:578 msgid "Apply!" msgstr "Lưu!" -#: templates/problem/data.html:530 +#: templates/problem/data.html:532 msgid "Type" msgstr "Kiểu" -#: templates/problem/data.html:531 +#: templates/problem/data.html:533 msgid "Input file" msgstr "File Input" -#: templates/problem/data.html:532 +#: templates/problem/data.html:534 msgid "Output file" msgstr "File Output" -#: templates/problem/data.html:534 +#: templates/problem/data.html:536 msgid "Pretest?" msgstr "Pretest?" -#: templates/problem/data.html:577 +#: templates/problem/data.html:579 msgid "Add new case" msgstr "Thêm test mới" @@ -4743,36 +5003,36 @@ msgstr "TÌNH NGUYỆN" msgid "View your votes" msgstr "Xem các đơn đã điền của bạn" -#: templates/problem/feed/problems.html:43 +#: templates/problem/feed/items.html:43 msgid "View source" msgstr "Xem mã nguồn" -#: templates/problem/feed/problems.html:47 +#: templates/problem/feed/items.html:47 msgid "Volunteer form" msgstr "Phiếu tình nguyện" -#: templates/problem/feed/problems.html:53 +#: templates/problem/feed/items.html:53 templates/problem/problem.html:148 +#: templates/problem/problem.html:163 templates/problem/problem.html:173 msgid "Submit" -msgstr "Gửi" +msgstr "Nộp bài" -#: templates/problem/feed/problems.html:60 +#: templates/problem/feed/items.html:60 msgid "Value" msgstr "Giá trị" -#: templates/problem/feed/problems.html:67 +#: templates/problem/feed/items.html:67 msgid "Knowledge point" msgstr "Độ khó kiến thức" -#: templates/problem/feed/problems.html:75 +#: templates/problem/feed/items.html:75 msgid "Thinking point" msgstr "Độ khó nghĩ" -#: templates/problem/feed/problems.html:83 -#: templates/problem/search-form.html:61 +#: templates/problem/feed/items.html:83 templates/problem/search-form.html:61 msgid "Problem types" msgstr "Dạng bài" -#: templates/problem/feed/problems.html:101 +#: templates/problem/feed/items.html:101 msgid "Any additional note here" msgstr "Lưu ý thêm cho admin" @@ -4780,27 +5040,27 @@ msgstr "Lưu ý thêm cho admin" msgid "Feed" msgstr "Gợi ý" +#: templates/problem/left-sidebar.html:4 +#: templates/problem/problem-list-tabs.html:5 +msgid "List" +msgstr "Danh sách" + #: templates/problem/list-base.html:89 msgid "Filter by type..." msgstr "Lọc theo dạng..." -#: templates/problem/list-base.html:152 templates/problem/list-base.html:178 +#: templates/problem/list-base.html:157 templates/problem/list-base.html:182 msgid "Add types..." msgstr "Thêm dạng" -#: templates/problem/list-base.html:194 +#: templates/problem/list-base.html:198 msgid "Fail to vote!" msgstr "Hệ thống lỗi!" -#: templates/problem/list-base.html:197 +#: templates/problem/list-base.html:201 msgid "Successful vote! Thank you!" msgstr "Đã gửi thành công! Cảm ơn bạn!" -#: templates/problem/list.html:40 templates/problem/search-form.html:72 -#: templates/user/user-problems.html:57 -msgid "Category" -msgstr "Nhóm bài" - #: templates/problem/list.html:51 #, python-format msgid "AC %%" @@ -4822,201 +5082,196 @@ msgstr "Để trống nếu không lọc theo ngôn ngữ" msgid "Leave empty to not filter by result" msgstr "Để trống nếu không lọc theo kết quả" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:64 +msgid "Leave empty to not filter by contest" +msgstr "Để trống nếu không lọc theo kỳ thi" + +#: templates/problem/manage_submission.html:94 msgid "Need valid values for both start and end IDs." msgstr "Cần số liệu hợp lệ cho ID bắt đầu và kết thúc." -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:97 msgid "End ID must be after start ID." msgstr "ID kết thúc phải lớn hơn hoặc bằng ID khởi đầu." -#: templates/problem/manage_submission.html:95 +#: templates/problem/manage_submission.html:110 #, python-brace-format msgid "" "You are about to {action} {count} submissions. Are you sure you want to do " "this?" msgstr "Bạn chuẩn bị {action} {count} bài nộp. Tiếp tục?" -#: templates/problem/manage_submission.html:102 +#: templates/problem/manage_submission.html:117 #, python-brace-format msgid "" "You are about to {action} a few submissions. Are you sure you want to do " "this?" msgstr "Bạn chuẩn bị {action} vài bài nộp. Tiếp tục?" -#: templates/problem/manage_submission.html:126 -#: templates/submission/list.html:334 +#: templates/problem/manage_submission.html:141 +#: templates/submission/list.html:333 msgid "Filter submissions" msgstr "Lọc bài nộp" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:146 msgid "Filter by ID:" msgstr "Lọc theo ID:" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:149 msgid "Starting ID:" msgstr "ID bắt đầu:" -#: templates/problem/manage_submission.html:138 +#: templates/problem/manage_submission.html:153 msgid "Ending ID:" msgstr "ID kết thúc:" -#: templates/problem/manage_submission.html:142 +#: templates/problem/manage_submission.html:157 msgid "This range includes both endpoints." msgstr "Bao gồm hai đầu mút." -#: templates/problem/manage_submission.html:145 +#: templates/problem/manage_submission.html:160 msgid "Filter by language:" msgstr "Lọc theo ngôn ngữ:" -#: templates/problem/manage_submission.html:153 +#: templates/problem/manage_submission.html:168 msgid "Filter by result:" msgstr "Lọc theo kết quả:" -#: templates/problem/manage_submission.html:161 -msgid "In current contest" -msgstr "Trong kỳ thi hiện tại" +#: templates/problem/manage_submission.html:176 +msgid "Filter by contest:" +msgstr "Lọc theo kỳ thi:" -#: templates/problem/manage_submission.html:167 +#: templates/problem/manage_submission.html:186 msgid "Action" msgstr "Hành động" -#: templates/problem/manage_submission.html:169 +#: templates/problem/manage_submission.html:188 msgid "Rejudge selected submissions" msgstr "Chấm lại những bài nộp này" -#: templates/problem/manage_submission.html:174 +#: templates/problem/manage_submission.html:193 msgid "Download selected submissions" msgstr "Tải các bài nộp này" -#: templates/problem/manage_submission.html:180 +#: templates/problem/manage_submission.html:199 #, python-format msgid "Are you sure you want to rescore %(count)d submissions?" msgstr "Bạn có chắc muốn tính điểm lại %(count)d bài nộp?" -#: templates/problem/manage_submission.html:181 +#: templates/problem/manage_submission.html:200 msgid "Rescore all submissions" msgstr "Tính điểm lại các bài nộp" -#: templates/problem/problem.html:133 +#: templates/problem/problem.html:137 msgid "View as PDF" msgstr "Xem PDF" -#: templates/problem/problem.html:142 templates/problem/problem.html:152 -#: templates/problem/problem.html:157 -msgid "Submit solution" -msgstr "Nộp bài" - -#: templates/problem/problem.html:145 +#: templates/problem/problem.html:155 #, python-format msgid "%(counter)s submission left" msgid_plural "%(counter)s submissions left" msgstr[0] "Còn %(counter)s lần nộp" -#: templates/problem/problem.html:153 +#: templates/problem/problem.html:168 msgid "0 submissions left" msgstr "Còn 0 lần nộp" -#: templates/problem/problem.html:165 +#: templates/problem/problem.html:186 msgid "My submissions" msgstr "Bài nộp của tôi" -#: templates/problem/problem.html:169 +#: templates/problem/problem.html:197 msgid "Best submissions" msgstr "Các bài nộp tốt nhất" -#: templates/problem/problem.html:173 +#: templates/problem/problem.html:204 msgid "Read editorial" msgstr "Xem hướng dẫn" -#: templates/problem/problem.html:178 +#: templates/problem/problem.html:213 msgid "Manage tickets" msgstr "Xử lý báo cáo" -#: templates/problem/problem.html:182 +#: templates/problem/problem.html:220 msgid "Edit problem" msgstr "Chỉnh sửa bài" -#: templates/problem/problem.html:184 +#: templates/problem/problem.html:226 msgid "Edit test data" msgstr "Chỉnh sửa test" -#: templates/problem/problem.html:189 +#: templates/problem/problem.html:234 msgid "My tickets" msgstr "Báo cáo của tôi" -#: templates/problem/problem.html:197 +#: templates/problem/problem.html:244 msgid "Manage submissions" msgstr "Quản lý bài nộp" -#: templates/problem/problem.html:203 +#: templates/problem/problem.html:252 msgid "Clone problem" msgstr "Nhân bản bài" -#: templates/problem/problem.html:210 -msgid "Points:" -msgstr "Điểm:" - -#: templates/problem/problem.html:213 templates/problem/problem.html:215 -msgid "(partial)" -msgstr "(thành phần)" - -#: templates/problem/problem.html:220 +#: templates/problem/problem.html:262 templates/problem/problem.html:389 msgid "Time limit:" msgstr "Thời gian:" -#: templates/problem/problem.html:232 +#: templates/problem/problem.html:275 templates/problem/problem.html:394 msgid "Memory limit:" msgstr "Bộ nhớ:" -#: templates/problem/problem.html:244 templates/problem/raw.html:67 -#: templates/submission/status-testcases.html:155 -msgid "Input:" -msgstr "Input:" - -#: templates/problem/problem.html:246 templates/problem/raw.html:67 -msgid "stdin" -msgstr "bàn phím" - -#: templates/problem/problem.html:250 templates/problem/raw.html:70 -#: templates/submission/status-testcases.html:159 -msgid "Output:" -msgstr "Output:" - -#: templates/problem/problem.html:251 templates/problem/raw.html:70 -msgid "stdout" -msgstr "màn hình" - -#: templates/problem/problem.html:261 +#: templates/problem/problem.html:293 msgid "Author:" msgid_plural "Authors:" msgstr[0] "Tác giả:" -#: templates/problem/problem.html:289 +#: templates/problem/problem.html:320 msgid "Allowed languages" msgstr "Ngôn ngữ cho phép" -#: templates/problem/problem.html:297 +#: templates/problem/problem.html:328 #, python-format msgid "No %(lang)s judge online" msgstr "Không có máy chấm cho %(lang)s" -#: templates/problem/problem.html:309 +#: templates/problem/problem.html:340 #: templates/status/judge-status-table.html:2 msgid "Judge" msgid_plural "Judges" msgstr[0] "Máy chấm" -#: templates/problem/problem.html:327 +#: templates/problem/problem.html:358 msgid "none available" msgstr "Bài này chưa có máy chấm" -#: templates/problem/problem.html:339 +#: templates/problem/problem.html:370 #, python-format msgid "This problem has %(length)s clarification(s)" msgstr "Bài này có %(length)s thông báo" -#: templates/problem/problem.html:369 +#: templates/problem/problem.html:378 +msgid "Points:" +msgstr "Điểm:" + +#: templates/problem/problem.html:399 templates/problem/raw.html:67 +#: templates/submission/status-testcases.html:155 +msgid "Input:" +msgstr "Input:" + +#: templates/problem/problem.html:401 templates/problem/raw.html:67 +msgid "stdin" +msgstr "bàn phím" + +#: templates/problem/problem.html:406 templates/problem/raw.html:70 +#: templates/submission/status-testcases.html:159 +msgid "Output:" +msgstr "Output:" + +#: templates/problem/problem.html:407 templates/problem/raw.html:70 +msgid "stdout" +msgstr "màn hình" + +#: templates/problem/problem.html:434 msgid "Request clarification" msgstr "Yêu cầu làm rõ đề" @@ -5060,30 +5315,23 @@ msgstr "Hiển thị dạng bài" msgid "Show editorial" msgstr "Hiển thị hướng dẫn" -#: templates/problem/search-form.html:75 templates/problem/search-form.html:77 -#: templates/submission/list.html:381 -#: templates/submission/submission-list-tabs.html:4 -msgid "All" -msgstr "Tất cả" - -#: templates/problem/search-form.html:87 +#: templates/problem/search-form.html:88 msgid "Point range" msgstr "Mốc điểm" -#: templates/problem/search-form.html:93 templates/submission/list.html:356 -#: templates/ticket/list.html:248 -msgid "Go" -msgstr "Lọc" - -#: templates/problem/search-form.html:94 +#: templates/problem/search-form.html:96 msgid "Random" msgstr "Ngẫu nhiên" -#: templates/problem/submit.html:124 +#: templates/problem/submit.html:48 +msgid "Wait" +msgstr "Đợi" + +#: templates/problem/submit.html:148 msgid "Your source code must contain at most 65536 characters." msgstr "Code phải chứa không quá 65536 ký tự." -#: templates/problem/submit.html:171 +#: templates/problem/submit.html:195 #, python-format msgid "" "Warning! Your default language, %(default_language)s, is " @@ -5092,7 +5340,7 @@ msgstr "" "Cẩn thận! Ngôn ngữ ưa thích của bạn, %(default_language)s, " "không được sử dụng trong bài này." -#: templates/problem/submit.html:182 +#: templates/problem/submit.html:206 #, fuzzy, python-format #| msgid "" #| "\n" @@ -5115,19 +5363,41 @@ msgstr[0] "" " Bạn còn %(left)s lần nộp\n" " " -#: templates/problem/submit.html:191 +#: templates/problem/submit.html:215 msgid "You have 0 submissions left" msgstr "Bạn đã hết lần nộp" -#: templates/problem/submit.html:225 +#: templates/problem/submit.html:249 msgid "No judge is available for this problem." msgstr "Không có máy chấm có thể chấm bài này." -#: templates/problem/submit.html:231 +#: templates/problem/submit.html:255 msgid "Submit!" msgstr "Nộp bài!" -#: templates/recent-organization.html:21 +#: templates/profile-table.html:20 templates/user/user-about.html:23 +#, python-format +msgid "%(counter)s problem solved" +msgid_plural "%(counter)s problems solved" +msgstr[0] "Đã giải %(counter)s bài" + +#: templates/profile-table.html:30 templates/user/user-about.html:35 +msgid "Total points" +msgstr "Tổng điểm" + +#: templates/profile-table.html:37 templates/user/user-about.html:44 +msgid "Rank by rating" +msgstr "Rank theo rating" + +#: templates/profile-table.html:41 templates/user/user-about.html:50 +msgid "Rank by points" +msgstr "Rank theo điểm" + +#: templates/profile-table.html:47 templates/user/user-about.html:86 +msgid "Awards" +msgstr "Thành tích" + +#: templates/recent-organization.html:3 msgid "Recent groups" msgstr "Nhóm gần đây" @@ -5177,8 +5447,8 @@ msgid "Activate your %(SITE_NAME)s account" msgstr "Kích hoạt tài khoản %(SITE_NAME)s" #: templates/registration/login.html:9 -msgid "Invalid username or password." -msgstr "Tên đăng nhập hoặc mật khẩu không hợp lệ." +msgid "Invalid username/email or password." +msgstr "Tên đăng nhập/email hoặc mật khẩu không hợp lệ." #: templates/registration/login.html:27 #: templates/registration/totp_auth.html:39 @@ -5272,7 +5542,7 @@ msgstr "%(site_name)s team" msgid "Password reset on %(site_name)s" msgstr "Đặt lại mật khẩu trên %(site_name)s" -#: templates/registration/profile_creation.html:36 +#: templates/registration/profile_creation.html:37 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "Tiếp tục >" @@ -5383,7 +5653,7 @@ msgstr "N/A" msgid "There are no judges available at this time." msgstr "Không có máy chấm nào hoạt động." -#: templates/status/language-list.html:33 templates/ticket/list.html:261 +#: templates/status/language-list.html:33 templates/ticket/list.html:263 #: templates/user/import/table_csv.html:3 msgid "ID" msgstr "ID" @@ -5418,67 +5688,54 @@ msgstr "Lỗi hệ thống xảy ra trong quá trình chấm." msgid "Error information" msgstr "Thông tin lỗi" -#: templates/submission/list.html:78 +#: templates/submission/list.html:81 msgid "Filter by status..." msgstr "Lọc theo kết quả..." -#: templates/submission/list.html:84 +#: templates/submission/list.html:87 msgid "Filter by language..." msgstr "Lọc theo ngôn ngữ..." -#: templates/submission/list.html:310 +#: templates/submission/list.html:309 msgid "You were disconnected. Refresh to show latest updates." msgstr "Bạn bị ngắt kết nối. Hãy làm mới để xem cập nhật mới nhất." -#: templates/submission/list.html:369 +#: templates/submission/list.html:368 msgid "Total:" msgstr "Tổng:" -#: templates/submission/list.html:383 -#: templates/submission/submission-list-tabs.html:6 -msgid "Mine" -msgstr "Tôi" - -#: templates/submission/list.html:386 +#: templates/submission/list.html:385 #: templates/submission/submission-list-tabs.html:9 msgid "Best" msgstr "Tốt nhất" -#: templates/submission/list.html:389 +#: templates/submission/list.html:388 #, fuzzy, python-format #| msgid "user" msgid "%(user)s" msgstr "người dùng" -#: templates/submission/list.html:392 templates/user/user-left-sidebar.html:3 +#: templates/submission/list.html:391 templates/user/user-left-sidebar.html:3 #: templates/user/user-list-tabs.html:5 msgid "Friends" msgstr "Bạn bè" -#: templates/submission/row.html:65 +#: templates/submission/row.html:57 +msgid "d/m/Y" +msgstr "" + +#: templates/submission/row.html:84 msgid "view" msgstr "xem" -#: templates/submission/row.html:69 +#: templates/submission/row.html:88 msgid "rejudge" msgstr "chấm lại" -#: templates/submission/row.html:74 +#: templates/submission/row.html:93 msgid "admin" msgstr "admin" -#: templates/submission/source.html:30 -msgid "View status" -msgstr "Xem kết quả chấm" - -#: templates/submission/source.html:31 -msgid "View raw source" -msgstr "Xem mã nguồn" - -#: templates/submission/source.html:33 templates/submission/status.html:139 -msgid "Resubmit" -msgstr "Nộp lại" - #: templates/submission/status-testcases.html:5 msgid "We are waiting for a suitable judge to process your submission..." msgstr "Các máy chấm đang bận. Hãy kiên nhẫn chờ đợi một chút..." @@ -5560,11 +5817,15 @@ msgstr "AC pretest không đồng nghĩa AC cả bài nhé :))" msgid "Submission aborted!" msgstr "Đã hủy chấm bài nộp!" -#: templates/submission/status.html:153 +#: templates/submission/status.html:141 +msgid "Resubmit" +msgstr "Nộp lại" + +#: templates/submission/status.html:157 msgid "Source code" msgstr "Mã nguồn" -#: templates/submission/status.html:180 +#: templates/submission/status.html:171 msgid "Abort" msgstr "Hủy chấm" @@ -5581,10 +5842,6 @@ msgstr "Các bài nộp của" msgid "Subtask" msgstr "Subtask" -#: templates/submission/user-ajax.html:33 -msgid "Total" -msgstr "Tổng điểm" - #: templates/submission/user-ajax.html:51 msgid "g:i a d/m/Y" msgstr "" @@ -5612,39 +5869,85 @@ msgstr "pretests" msgid "main tests" msgstr "test chính thức" -#: templates/ticket/feed.html:21 -msgid " replied" +#: templates/test_formatter/download_test_formatter.html:75 +#: templates/test_formatter/download_test_formatter.html:82 +#: templates/test_formatter/edit_test_formatter.html:134 +msgid "Download" +msgstr "Tải xuống" + +#: templates/test_formatter/download_test_formatter.html:86 +#: templates/test_formatter/edit_test_formatter.html:137 +#: templates/test_formatter/test_formatter.html:20 +msgid "Copyright" msgstr "" -#: templates/ticket/list.html:135 templates/ticket/ticket.html:97 +#: templates/test_formatter/edit_test_formatter.html:105 +msgid "Before" +msgstr "Trước" + +#: templates/test_formatter/edit_test_formatter.html:106 +#: templates/test_formatter/edit_test_formatter.html:114 +msgid "Input format" +msgstr "Định dạng đầu vào" + +#: templates/test_formatter/edit_test_formatter.html:108 +#: templates/test_formatter/edit_test_formatter.html:116 +msgid "Output format" +msgstr "Định dạng đầu ra" + +#: templates/test_formatter/edit_test_formatter.html:113 +msgid "After" +msgstr "Sau" + +#: templates/test_formatter/edit_test_formatter.html:122 +msgid "Preview" +msgstr "Xem trước" + +#: templates/test_formatter/edit_test_formatter.html:129 +msgid "File name" +msgstr "Tên file" + +#: templates/test_formatter/edit_test_formatter.html:133 +msgid "Convert" +msgstr "Chuyển đổi" + +#: templates/test_formatter/test_formatter.html:17 +msgid "Upload" +msgstr "Tải lên" + +#: templates/ticket/feed.html:22 +msgid "replied" +msgstr "phản hồi" + +#: templates/ticket/list.html:135 templates/ticket/ticket.html:96 msgid "Reopened: " msgstr "Mở lại: " -#: templates/ticket/list.html:138 templates/ticket/ticket.html:98 +#: templates/ticket/list.html:138 templates/ticket/ticket.html:97 msgid "Closed: " msgstr "Đóng: " -#: templates/ticket/list.html:221 +#: templates/ticket/list.html:223 msgid "Use desktop notification" msgstr "Sử dụng thông báo từ desktop" -#: templates/ticket/list.html:227 +#: templates/ticket/list.html:229 msgid "Show my tickets only" msgstr "Chỉ hiển thị các báo cáo dành cho tôi" -#: templates/ticket/list.html:231 +#: templates/ticket/list.html:233 msgid "Filing user" msgstr "Người báo cáo" -#: templates/ticket/list.html:240 +#: templates/ticket/list.html:242 msgid "Assignee" msgstr "Người định uỷ thác" -#: templates/ticket/list.html:262 +#: templates/ticket/list.html:264 msgid "Title" msgstr "Tiêu đề" -#: templates/ticket/list.html:264 templates/ticket/ticket.html:193 +#: templates/ticket/list.html:266 templates/ticket/ticket.html:192 msgid "Assignees" msgstr "Người được ủy thác" @@ -5661,31 +5964,31 @@ msgstr "" "Lưu ý rằng đây là đơn báo cáo các vấn đề trong đề bài, không phải nơi để hỏi " "bài hay nộp bài." -#: templates/ticket/ticket.html:179 +#: templates/ticket/ticket.html:178 msgid "Post" msgstr "Đăng" -#: templates/ticket/ticket.html:187 +#: templates/ticket/ticket.html:186 msgid "Associated object" msgstr "" -#: templates/ticket/ticket.html:198 +#: templates/ticket/ticket.html:197 msgid "No one is assigned." msgstr "Không ai được ủy thác." -#: templates/ticket/ticket.html:204 +#: templates/ticket/ticket.html:203 msgid "Close ticket" msgstr "Đóng báo cáo" -#: templates/ticket/ticket.html:206 +#: templates/ticket/ticket.html:205 msgid "Reopen ticket" msgstr "Mở lại báo cáo" -#: templates/ticket/ticket.html:210 +#: templates/ticket/ticket.html:209 msgid "Assignee notes" msgstr "Lưu ý cho người ủy thác" -#: templates/ticket/ticket.html:217 templates/widgets/select_all.html:4 +#: templates/ticket/ticket.html:216 templates/widgets/select_all.html:4 msgid "Nothing here." msgstr "Không có gì." @@ -5697,55 +6000,63 @@ msgstr "Top Rating" msgid "Top Score" msgstr "Top Score" +#: templates/user/edit-profile.html:95 +msgid "Full name" +msgstr "Họ tên" + +#: templates/user/edit-profile.html:103 +msgid "Date of birth" +msgstr "Ngày sinh" + +#: templates/user/edit-profile.html:107 +msgid "Address" +msgstr "Địa chỉ" + #: templates/user/edit-profile.html:111 +msgid "T-Shirt size" +msgstr "Kích cỡ áo" + +#: templates/user/edit-profile.html:118 msgid "Change your password" msgstr "Đổi mật khẩu" -#: templates/user/edit-profile.html:125 +#: templates/user/edit-profile.html:132 msgid "Avatar" msgstr "Ảnh đại diện" -#: templates/user/edit-profile.html:131 +#: templates/user/edit-profile.html:138 msgid "Self-description" msgstr "Tự giới thiệu" -#: templates/user/edit-profile.html:139 +#: templates/user/edit-profile.html:146 msgid "Select your closest major city" msgstr "Chọn thành phố gần nhất" -#: templates/user/edit-profile.html:148 +#: templates/user/edit-profile.html:155 msgid "Editor theme" msgstr "Giao diện cho code editor" -#: templates/user/edit-profile.html:153 -msgid "Math engine" -msgstr "" - -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:165 msgid "Two Factor Authentication is enabled." msgstr "Two Factor Authentication đã được kích hoạt." -#: templates/user/edit-profile.html:168 +#: templates/user/edit-profile.html:169 msgid "Disable" msgstr "Tắt" -#: templates/user/edit-profile.html:171 +#: templates/user/edit-profile.html:172 msgid "Two Factor Authentication is disabled." msgstr "Two Factor Authentication chưa kích hoạt." -#: templates/user/edit-profile.html:172 +#: templates/user/edit-profile.html:173 msgid "Enable" msgstr "Bật" -#: templates/user/edit-profile.html:176 +#: templates/user/edit-profile.html:177 msgid "CSS background" msgstr "" -#: templates/user/edit-profile.html:180 -msgid "User-script" -msgstr "" - -#: templates/user/edit-profile.html:184 +#: templates/user/edit-profile.html:181 msgid "Update profile" msgstr "Cập nhật thông tin" @@ -5761,16 +6072,11 @@ msgstr "File người dùng" msgid "Sample" msgstr "" -#: templates/user/import/index.html:105 templates/user/user-left-sidebar.html:6 -#: templates/user/user-list-tabs.html:8 -msgid "Import" -msgstr "" - #: templates/user/import/table_csv.html:9 msgid "Organizations" msgstr "Tổ chức" -#: templates/user/pp-row.html:22 +#: templates/user/pp-row.html:21 #, python-format msgid "" "\n" @@ -5778,138 +6084,132 @@ msgid "" " " msgstr "" -#: templates/user/pp-row.html:27 +#: templates/user/pp-row.html:26 #, python-format msgid "%(pp).1fpp" msgstr "%(pp).1fpp" -#: templates/user/pp-row.html:29 +#: templates/user/pp-row.html:28 #, python-format msgid "%(pp).0fpp" msgstr "%(pp).0fpp" -#: templates/user/user-about.html:23 -#, python-format -msgid "%(counter)s problem solved" -msgid_plural "%(counter)s problems solved" -msgstr[0] "Đã giải %(counter)s bài" - -#: templates/user/user-about.html:35 -msgid "Total points" -msgstr "Tổng điểm" - -#: templates/user/user-about.html:45 -msgid "Rank by rating" -msgstr "Rank theo rating" - -#: templates/user/user-about.html:52 -msgid "Rank by points" -msgstr "Rank theo điểm" - -#: templates/user/user-about.html:65 +#: templates/user/user-about.html:63 msgid "Admin Notes" msgstr "Lưu ý của admin" -#: templates/user/user-about.html:77 +#: templates/user/user-about.html:75 msgid "You have not shared any information." msgstr "Bạn chưa chia sẻ thông tin nào." -#: templates/user/user-about.html:79 +#: templates/user/user-about.html:77 msgid "This user has not shared any information." msgstr "Người dùng này chưa chia sẻ thông tin nào." -#: templates/user/user-about.html:88 -msgid "Awards" -msgstr "Thành tích" - -#: templates/user/user-about.html:99 +#: templates/user/user-about.html:97 #, python-format msgid "%(label)s (%(date)s)" msgstr "%(label)s (%(date)s)" -#: templates/user/user-about.html:117 +#: templates/user/user-about.html:115 msgid "Mon" msgstr "Thứ 2" -#: templates/user/user-about.html:122 +#: templates/user/user-about.html:120 msgid "Tues" msgstr "Thứ 3" -#: templates/user/user-about.html:127 +#: templates/user/user-about.html:125 msgid "Wed" msgstr "Thứ 4" -#: templates/user/user-about.html:132 +#: templates/user/user-about.html:130 msgid "Thurs" msgstr "Thứ 5" -#: templates/user/user-about.html:137 +#: templates/user/user-about.html:135 msgid "Fri" msgstr "Thứ 6" -#: templates/user/user-about.html:142 +#: templates/user/user-about.html:140 msgid "Sat" msgstr "Thứ 7" -#: templates/user/user-about.html:147 +#: templates/user/user-about.html:145 msgid "Sun" msgstr "CN" -#: templates/user/user-about.html:156 +#: templates/user/user-about.html:154 msgid "Less" msgstr "Ít" -#: templates/user/user-about.html:162 +#: templates/user/user-about.html:160 msgid "More" msgstr "Nhiều" -#: templates/user/user-about.html:171 +#: templates/user/user-about.html:169 msgid "Rating History" msgstr "Các lần thi" -#: templates/user/user-about.html:242 +#: templates/user/user-about.html:236 msgid "past year" msgstr "năm ngoái" -#: templates/user/user-about.html:259 +#: templates/user/user-about.html:253 msgid "total submission(s)" msgstr "bài nộp" -#: templates/user/user-about.html:263 +#: templates/user/user-about.html:257 msgid "submissions in the last year" msgstr "bài nộp trong năm qua" -#: templates/user/user-base.html:98 +#: templates/user/user-base.html:104 msgid "Unfollow" msgstr "Bỏ theo dõi" -#: templates/user/user-base.html:101 +#: templates/user/user-base.html:107 msgid "Follow" msgstr "Theo dõi" -#: templates/user/user-base.html:118 -msgid "Send message" +#: templates/user/user-base.html:115 +msgid "Message" msgstr "Nhắn tin" -#: templates/user/user-base.html:127 +#: templates/user/user-base.html:123 msgid "Contests written" msgstr "Số kỳ thi" -#: templates/user/user-base.html:131 +#: templates/user/user-base.html:127 msgid "Min. rating:" msgstr "Min. rating:" -#: templates/user/user-base.html:135 +#: templates/user/user-base.html:131 msgid "Max rating:" msgstr "Max rating:" -#: templates/user/user-bookmarks.html:14 +#: templates/user/user-bookmarks.html:22 +msgid "Editorials" +msgstr "Lời giải" + +#: templates/user/user-bookmarks.html:25 msgid "Posts" msgstr "Bài đăng" -#: templates/user/user-bookmarks.html:78 -msgid "Editorials" -msgstr "Lời giải" +#: templates/user/user-bookmarks.html:71 +msgid "There is no saved problem." +msgstr "Không có bài tập nào đã lưu." + +#: templates/user/user-bookmarks.html:100 +msgid "There is no saved contest." +msgstr "Không có kỳ thi đã lưu." + +#: templates/user/user-bookmarks.html:141 +msgid "There is no saved editorial." +msgstr "Không có lời giải nào đã lưu." + +#: templates/user/user-bookmarks.html:190 +msgid "There is no saved post." +msgstr "Không có bài đăng nào đã lưu." #: templates/user/user-problems.html:35 msgid "Points Breakdown" @@ -5936,24 +6236,20 @@ msgstr "Ẩn các bài đã giải" msgid "%(points).1f points" msgstr "%(points).1f điểm" -#: templates/user/user-problems.html:99 -msgid "Score" -msgstr "Điểm" - #: templates/user/user-problems.html:110 #, python-format msgid "%(points)s / %(total)s" msgstr "%(points)s / %(total)s" -#: templates/user/user-tabs.html:7 +#: templates/user/user-tabs.html:8 msgid "Impersonate" msgstr "Giả danh" -#: templates/user/user-tabs.html:14 +#: templates/user/user-tabs.html:15 msgid "Admin User" msgstr "Người dùng" -#: templates/user/user-tabs.html:17 +#: templates/user/user-tabs.html:18 msgid "Admin Profile" msgstr "Thông tin" @@ -5961,6 +6257,104 @@ msgstr "Thông tin" msgid "Check all" msgstr "Chọn tất cả" +#~ msgid "My groups" +#~ msgstr "Nhóm của tôi" + +#~ msgid "Open groups" +#~ msgstr "Nhóm mở" + +#~ msgid "Private groups" +#~ msgstr "Nhóm kín" + +#~ msgid "Send message" +#~ msgstr "Nhắn tin" + +#~ msgid "Wrong" +#~ msgstr "Sai" + +#~ msgid "Timeout" +#~ msgstr "Quá thời gian" + +#~ msgid "Active Contests" +#~ msgstr "Kỳ thi bạn đang tham gia" + +#~ msgid "Past Contests" +#~ msgstr "Kỳ thi trong quá khứ" + +#~ msgid "Duration" +#~ msgstr "Thời hạn" + +#~ msgid "Submissions in {0}" +#~ msgstr "Bài nộp trong {0}" + +#~ msgid "Submissions in %s" +#~ msgstr "Bài nộp trong %s" + +#~ msgid "Hidden Rankings" +#~ msgstr "Bảng xếp hạng ẩn" + +#, fuzzy +#~| msgid "Banned from joining" +#~ msgid "banned from voting" +#~ msgstr "Bị cấm tham gia" + +#~ msgid "Already in contest" +#~ msgstr "Đã ở trong kỳ thi" + +#~ msgid "You are already in a contest: \"%s\"." +#~ msgstr "Bạn đã ở trong kỳ thi: \"%s\"." + +#~ msgid "Compete" +#~ msgstr "Thi" + +#~ msgid "General" +#~ msgstr "Chung" + +#~ msgid "custom validator file" +#~ msgstr "file trình chấm" + +#~ msgid "Leave as LaTeX" +#~ msgstr "Để định dạng LaTeX" + +#~ msgid "MathML only" +#~ msgstr "chỉ dùng MathML" + +#~ msgid "Custom validator (CPP)" +#~ msgstr "Trình chấm tự viết (C++)" + +#, fuzzy +#~| msgid "From the web" +#~ msgid "From the Web" +#~ msgstr "Từ web" + +#~ msgid "on {time}" +#~ msgstr "vào {time}" + +#, fuzzy +#~| msgid "end time" +#~ msgid "ending time" +#~ msgstr "thời gian kết thúc" + +#~ msgid "In current contest" +#~ msgstr "Trong kỳ thi hiện tại" + +#~ msgid "View status" +#~ msgstr "Xem kết quả chấm" + +#~ msgid "View raw source" +#~ msgstr "Xem mã nguồn" + +#, fuzzy +#~| msgid "contest summary" +#~ msgid "Contests Summary" +#~ msgstr "tổng kết kỳ thi" + +#~ msgid "Submit solution" +#~ msgstr "Nộp bài" + +#~ msgid "(partial)" +#~ msgstr "(thành phần)" + #~ msgid "Following" #~ msgstr "Bạn bè" @@ -5997,17 +6391,11 @@ msgstr "Chọn tất cả" #~ msgid "Change your avatar" #~ msgstr "Đổi ảnh đại diện" -#~ msgid "From" -#~ msgstr "Đến từ" - #, fuzzy #~| msgid "How did you corrupt the custom checker path?" #~ msgid "How did you corrupt the interactor path?" #~ msgstr "How did you corrupt the custom checker path?" -#~ msgid "replies" -#~ msgstr "phản hồi" - #~ msgid "comment more" #~ msgstr "bình luận nữa" @@ -6015,8 +6403,8 @@ msgstr "Chọn tất cả" #~ msgstr "bình luận nữa" #~ msgid "" -#~ "This comment is hidden due to too much negative feedback. Click here to view it." +#~ "This comment is hidden due to too much negative feedback. Click here to view it." #~ msgstr "" #~ "Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở." @@ -6163,9 +6551,6 @@ msgstr "Chọn tất cả" #~ msgid "Frozen" #~ msgstr "Đã đóng băng" -#~ msgid "Show organizations" -#~ msgstr "Hiển thị tổ chức" - #~ msgid "Dislike" #~ msgstr "Không thích" @@ -6257,9 +6642,6 @@ msgstr "Chọn tất cả" #~ msgid "New private contests" #~ msgstr "Kỳ thi riêng tư mới" -#~ msgid "View all" -#~ msgstr "Tất cả" - #~ msgid "New private problems" #~ msgstr "Bài tập riêng tư mới" diff --git a/locale/vi/LC_MESSAGES/dmoj-user.po b/locale/vi/LC_MESSAGES/dmoj-user.po index d99d288..683b675 100644 --- a/locale/vi/LC_MESSAGES/dmoj-user.po +++ b/locale/vi/LC_MESSAGES/dmoj-user.po @@ -37,7 +37,7 @@ msgid "Name" msgstr "Đăng ký tên" msgid "Report" -msgstr "Báo cáo" +msgstr "Báo cáo tiêu cực" msgid "2sat" msgstr "" @@ -594,6 +594,12 @@ msgstr "" msgid "z-function" msgstr "" +#~ msgid "Courses" +#~ msgstr "Khóa học" + +#~ msgid "Bug Report" +#~ msgstr "Báo cáo lỗi" + #~ msgid "Insert Image" #~ msgstr "Chèn hình ảnh" diff --git a/requirements.txt b/requirements.txt index 53228e7..d59cfd6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -34,7 +34,7 @@ netaddr redis lupa websocket-client -python-memcached +python-memcached<1.60 numpy pandas markdown @@ -42,4 +42,5 @@ bleach pymdown-extensions mdx-breakless-lists beautifulsoup4 -pre-commit \ No newline at end of file +pre-commit +django-ratelimit \ No newline at end of file diff --git a/resources/base.scss b/resources/base.scss index 3ec3602..79452fc 100644 --- a/resources/base.scss +++ b/resources/base.scss @@ -182,9 +182,6 @@ header { cursor: pointer; padding: 3.5px; } - img { - border-radius: 50%; - } } #nav-shadow { @@ -521,16 +518,6 @@ noscript #noscript { margin-top: 1.2em; } -math { - font-size: 1.155em; -} - -.MathJax { - &:focus { - outline: none; - } -} - @media(max-width: 1498px) { #page-container { border-left: none; @@ -667,25 +654,60 @@ math { } .dropdown { - border-radius: 4px; - border: 0.5px solid lightgray; - margin-top: 1px; - background: white; display: none; + background-color: white; + min-width: 160px; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); + padding: 4px 0; + z-index: 1; + border-radius: 5px; a { + display: block; + text-decoration: none; + transition: background-color 0.3s; color: black; } } .dropdown-item { - font-size: 15px; - padding: 6px 8px; + font-size: 16px; + padding: 6px 40px 6px 15px; cursor: pointer; + color: black; + font-weight: 600; + border-top: 1px solid #ccc; + + i { + width: 1.5em; + } } .dropdown-item:hover { - background: lightgray; + color: $theme_color; + background-color: #f8f8f2; +} + +.popper-arrow, +.popper-arrow::before { + position: absolute; + width: 8px; + height: 8px; + background: inherit; +} + +.popper-arrow { + visibility: hidden; +} + +.popper-arrow::before { + visibility: visible; + content: ''; + transform: rotate(45deg); +} + +.popper-arrow { + top: -4px; } .unread_boxes { @@ -707,12 +729,7 @@ math { } .featherlight { - z-index: 1000 !important; -} - -select { - visibility: hidden; - max-height: 0; + z-index: 1001 !important; } // @media (max-width: 500px) { @@ -774,6 +791,10 @@ select { background-color: bisque; } +.background-royalblue { + background-color: royalblue !important; +} + .background-footer { color: #808080; } @@ -852,6 +873,8 @@ select { .margin-label{ margin-bottom: 2.5px; + padding-bottom: 0.25em; + display: block; } ::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */ @@ -894,7 +917,7 @@ input::placeholder{ i { margin-right: 0.1em; color: #000; - font-size: 22.5px; + font-size: 21px; } } @@ -904,4 +927,9 @@ input::placeholder{ font-size: 22.5px; margin-right: 0.1em; } +} + +.featherlight-content { + max-height: 80% !important; + border-radius: 10px; } \ No newline at end of file diff --git a/resources/blog.scss b/resources/blog.scss index 265ebb9..1df8dc6 100644 --- a/resources/blog.scss +++ b/resources/blog.scss @@ -134,7 +134,6 @@ border-bottom: 1.4px solid lightgray; border-top: 1.4px solid lightgray; margin-bottom: 1.5em; - width: 90%; padding: 1em 1.25em 0.5em 1.25em; background-color: white; margin-left: auto; @@ -262,12 +261,20 @@ border-radius: 1em; } +.post-content-header { + margin-left: 0; + display: inline-flex; + align-items: center; + gap: 0.2em; +} + @media (max-width: 799px) { .blog-sidebar, .right-sidebar { width: 100%; margin-left: auto; + margin-top: 2em; } .actionbar-box { @@ -282,6 +289,8 @@ padding: 0.8em 0.2em 0.8em 0.2em; display: inline-block; flex: 1; + min-width: 5em; + overflow-wrap: anywhere; .sidebar-icon { display: none; @@ -294,6 +303,8 @@ border-radius: 7px; display: flex; background: inherit; + gap: 0.3em; + overflow-x: auto; } .blog-box { @@ -314,7 +325,7 @@ border: 1px solid lightgray; box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); background-color: white; - padding: 0.8em 0.2em 0.8em 1em; + padding: 0.8em 0.2em 0.8em 0.8em; } .sidebar-text { @@ -331,6 +342,7 @@ .blog-sidebar, .right-sidebar { flex: 25%; + max-width: 25%; } .middle-content { @@ -356,10 +368,13 @@ max-width: 11%; min-width: 11%; position: fixed; - height: 100%; - margin-top: -4em; - padding-top: 4em; - border-right: 1px; + height: calc(100vh - $navbar_height - 20px); + overflow-y: auto; + + &::-webkit-scrollbar { + width: 0; + background-color: transparent; + } } .feed-table { diff --git a/resources/chatbox.scss b/resources/chatbox.scss index 3f1a47b..6c4f671 100644 --- a/resources/chatbox.scss +++ b/resources/chatbox.scss @@ -27,7 +27,7 @@ margin-top: 1em; } .big-emoji { - font-size: 16px; + font-size: 1.2em; } #chat-online { border-right: 1px solid #ccc; @@ -85,10 +85,13 @@ } #chat-online { margin: 0; - width: 30%; + min-width: 30%; + max-width: 30%; } #chat-area { flex-grow: 1; + min-width: 70%; + max-width: 70%; } } #chat-input, #chat-log .content-message { @@ -96,6 +99,7 @@ } .info-pic { height: 95%; + width: 100%; } .info-name { @@ -139,6 +143,7 @@ .status-row { display: flex; padding: 15px; + padding-right: 0; gap: 0.5em; border-radius: 6px; } @@ -195,7 +200,7 @@ align-items: center; justify-content: center; } - #setting-content { + .setting-content { display: none; position: absolute; background-color: #f1f1f1; @@ -204,14 +209,14 @@ z-index: 1; right: 0; } - #setting-content li { + .setting-content a { padding: 12px 16px; text-decoration: none; display: block; - color: black; font-weight: bold; + font-size: 1rem; } - #setting-content li:hover { + .setting-content a:hover { background-color: #ddd; cursor: pointer; } diff --git a/resources/comments.scss b/resources/comments.scss index dd2fe50..bceb225 100644 --- a/resources/comments.scss +++ b/resources/comments.scss @@ -208,11 +208,6 @@ a { } .comment-post-wrapper { - div { - padding-bottom: 2px; - padding-right: 10px; - } - input, textarea { min-width: 100%; max-width: 100%; @@ -312,6 +307,19 @@ a { margin-left: -20px; } +.pagedown-image-upload { + .submit-input { + display: flex; + min-width: inherit; + float: right; + } + .deletelink-box { + position: absolute; + top: 2px; + right: 1em; + } +} + @media (max-width: 799px) { .hide_texts_on_mobile .actionbar-text { display: none; diff --git a/resources/common.js b/resources/common.js index 185eb7c..e89061f 100644 --- a/resources/common.js +++ b/resources/common.js @@ -44,11 +44,11 @@ function register_toggle(link) { }); } -$(function register_all_toggles() { +function register_all_toggles() { $('.toggle').each(function () { register_toggle($(this)); }); -}); +}; function featureTest(property, value, noPrefixes) { var prop = property + ':', @@ -148,7 +148,7 @@ function register_time(elems, limit) { // in hours } window.notification_template = { - icon: '/logo.png' + icon: '/logo.svg' }; window.notification_timeout = 5000; @@ -252,7 +252,17 @@ $.fn.textWidth = function () { }; function registerPopper($trigger, $dropdown) { - const popper = Popper.createPopper($trigger[0], $dropdown[0]); + const popper = Popper.createPopper($trigger[0], $dropdown[0], { + placement: 'bottom-end', + modifiers: [ + { + name: 'offset', + options: { + offset: [0, 8], + }, + }, + ], + }); $trigger.click(function(e) { $dropdown.toggle(); popper.update(); @@ -267,6 +277,155 @@ function registerPopper($trigger, $dropdown) { }) } +function populateCopyButton() { + var copyButton; + $('pre code').each(function () { + var copyButton = $('', { + 'class': 'btn-clipboard', + 'data-clipboard-text': $(this).text(), + 'title': 'Click to copy' + }).append(''); + + if ($(this).parent().width() > 100) { + copyButton.append('Copy'); + } + + $(this).before($('
', {'class': 'copy-clipboard'}) + .append(copyButton)); + + $(copyButton.get(0)).mouseleave(function () { + $(this).attr('class', 'btn-clipboard'); + $(this).removeAttr('aria-label'); + }); + + var curClipboard = new Clipboard(copyButton.get(0)); + + curClipboard.on('success', function (e) { + e.clearSelection(); + showTooltip(e.trigger, 'Copied!'); + }); + + curClipboard.on('error', function (e) { + showTooltip(e.trigger, fallbackMessage(e.action)); + }); + }); +} + +function register_copy_clipboard($elements, callback) { + $elements.on('paste', function(event) { + const items = (event.clipboardData || event.originalEvent.clipboardData).items; + for (const index in items) { + const item = items[index]; + if (item.kind === 'file' && item.type.indexOf('image') !== -1) { + const blob = item.getAsFile(); + const formData = new FormData(); + formData.append('image', blob); + + $(this).prop('disabled', true); + + $.ajax({ + url: '/pagedown/image-upload/', + type: 'POST', + data: formData, + processData: false, + contentType: false, + success: function(data) { + // Assuming the server returns the URL of the image + const imageUrl = data.url; + const editor = $(event.target); // Get the textarea where the event was triggered + let currentMarkdown = editor.val(); + const markdownImageText = '![](' + imageUrl + ')'; // Markdown for an image + + if (currentMarkdown) currentMarkdown += "\n"; + currentMarkdown += markdownImageText; + + editor.val(currentMarkdown); + callback?.(); + }, + error: function() { + alert('There was an error uploading the image.'); + }, + complete: () => { + // Re-enable the editor + $(this).prop('disabled', false).focus(); + } + }); + + // We only handle the first image in the clipboard data + break; + } + } + }); +} + +function activateBlogBoxOnClick() { + $('.blog-box').on('click', function () { + var $description = $(this).children('.blog-description'); + var max_height = $description.css('max-height'); + if (max_height !== 'fit-content') { + $description.css('max-height', 'fit-content'); + $(this).css('cursor', 'auto'); + $(this).removeClass('pre-expand-blog'); + $(this).children().children('.show-more').hide(); + } + }); + + $('.blog-box').each(function () { + var $precontent = $(this).children('.blog-description').height(); + var $content = $(this).children().children('.content-description').height(); + if ($content == undefined) { + $content = $(this).children().children('.md-typeset').height() + } + if ($content > $precontent - 30) { + $(this).addClass('pre-expand-blog'); + $(this).css('cursor', 'pointer'); + } else { + $(this).children().children('.show-more').hide(); + } + }); +} + +function changeTabParameter(newTab) { + const url = new URL(window.location); + const searchParams = new URLSearchParams(url.search); + searchParams.set('tab', newTab); + searchParams.delete('page'); + url.search = searchParams.toString(); + return url.href; +} + +function submitFormWithParams($form, method) { + const currentUrl = new URL(window.location.href); + const searchParams = new URLSearchParams(currentUrl.search); + const formData = $form.serialize(); + + const params = new URLSearchParams(formData); + + if (searchParams.has('tab')) { + params.set('tab', searchParams.get('tab')); + } + + const fullUrl = currentUrl.pathname + '?' + params.toString(); + + if (method === "GET") { + window.location.href = fullUrl; + } + else { + var $formToSubmit = $('
') + .attr('action', fullUrl) + .attr('method', 'POST') + .appendTo('body'); + + $formToSubmit.append($('').attr({ + type: 'hidden', + name: 'csrfmiddlewaretoken', + value: $.cookie('csrftoken') + })); + + $formToSubmit.submit(); + } +} + function onWindowReady() { // http://stackoverflow.com/a/1060034/1090657 var hidden = 'hidden'; @@ -340,14 +499,7 @@ function onWindowReady() { } }); - setTimeout(() => { - $("[data-src]img").each(function() { - $(this).attr("src", $(this).attr("data-src")); - }) - $("[data-src]iframe").each(function() { - $(this).attr("src", $(this).attr("data-src")); - }) - }, "100"); + register_copy_clipboard($('textarea.wmd-input')); $('form').submit(function (evt) { // Prevent multiple submissions of forms, see #565 @@ -360,42 +512,31 @@ function onWindowReady() { }) $('#logout').on('click', () => $('#logout-form').submit()); - var copyButton; - $('pre code').each(function () { - $(this).parent().before($('
', {'class': 'copy-clipboard'}) - .append(copyButton = $('', { - 'class': 'btn-clipboard', - 'data-clipboard-text': $(this).text(), - 'title': 'Click to copy' - }).text('Copy'))); - - $(copyButton.get(0)).mouseleave(function () { - $(this).attr('class', 'btn-clipboard'); - $(this).removeAttr('aria-label'); - }); - - var curClipboard = new Clipboard(copyButton.get(0)); - - curClipboard.on('success', function (e) { - e.clearSelection(); - showTooltip(e.trigger, 'Copied!'); - }); - - curClipboard.on('error', function (e) { - showTooltip(e.trigger, fallbackMessage(e.action)); - }); - }); + populateCopyButton(); + $('a').click(function() { var href = $(this).attr('href'); - if (!href || href === '#' || href.startsWith("javascript")) { + var target = $(this).attr('target'); + if (!href || href === '#' || href.startsWith("javascript") || + $(this).attr("data-featherlight") || + target === "_blank" + ) { return; } $("#loading-bar").show(); $("#loading-bar").animate({ width: "100%" }, 2000, function() { + $(this).stop(true, true); $(this).hide().css({ width: 0}); }); }); + + $('.errorlist').each(function() { + var errorList = $(this); + errorList.nextAll('input, select, textarea').first().after(errorList); + }); + register_all_toggles(); + activateBlogBoxOnClick(); } $(function() { @@ -441,4 +582,33 @@ $(function() { $nav_list.hide(); }); + $(window).on('beforeunload', function() { + let key = `oj-content-${window.location.href}`; + let $contentClone = $('#content').clone(); + $contentClone.find('.select2').remove(); + $contentClone.find('.select2-hidden-accessible').removeClass('select2-hidden-accessible'); + $contentClone.find('.noUi-base').remove(); + $contentClone.find('.wmd-button-row').remove(); + sessionStorage.setItem(key, JSON.stringify({ + "html": $contentClone.html(), + "page": window.page, + "has_next_page": window.has_next_page, + "scrollOffset": $(window).scrollTop(), + })); + }); + if (window.performance && + window.performance.navigation.type + === window.performance.navigation.TYPE_BACK_FORWARD) { + let key = `oj-content-${window.location.href}`; + let content = sessionStorage.getItem(key); + if (content) { + content = JSON.parse(content); + $('#content').html(content.html); + onWindowReady(); + window.PAGE_FROM_BACK_BUTTON_CACHE = true; + $(window).scrollTop(content.scrollOffset - 100); + window.page = content.page; + window.has_next_page = content.has_next_page; + } + } }); \ No newline at end of file diff --git a/resources/content-description.scss b/resources/content-description.scss index 69ff279..4b475f5 100644 --- a/resources/content-description.scss +++ b/resources/content-description.scss @@ -2,9 +2,13 @@ .content-description { line-height: 1.6em; - font-size: 15px; - font-family: "Noto Sans", Arial, "Lucida Grande", sans-serif; + font-size: 16px; + font-family: "Segoe UI", "Noto Sans", Arial, "Lucida Grande", sans-serif; + overflow-wrap: anywhere; + h1, h2, h3, h4, h5, .admonition-title, summary { + font-family: "Noto Sans", "Segoe UI", Arial, "Lucida Grande", sans-serif; + } img { max-width: 100%; height: auto; @@ -21,11 +25,9 @@ font-family: $monospace-fonts !important; margin: 0 2px; padding: 0 5px; - border: 1px solid $border_gray; - background-color: #f8f8f8; + background-color: var(--md-code-bg-color); border-radius: $widget_border_radius; - font-size: 0.95em; - color: #444; + color: var(--md-code-fg-color); } pre { @@ -36,18 +38,16 @@ padding: 0; background: transparent; font-size: 1em; - color: black; + color: var(--md-code-fg-color); } white-space: pre-wrap; word-wrap: break-word; - margin: 1.5em 0 1.5em 0; - padding: 1em; - border: 1px solid $border_gray; - background-color: #f8f8f8; - color: black; - border-radius: $widget_border_radius; + padding: 0.5em 1em; + background-color: var(--md-code-bg-color); + color: var(--md-code-fg-color); + border-radius: 3px; } pre.no-border { @@ -58,6 +58,10 @@ border-radius: none; } + .linenos pre { + padding-right: 0; + } + b, strong { font-weight: bold; } @@ -171,7 +175,10 @@ pre { } -@media (min-width: 700px) { +@media (min-width: 800px) { + .content-description pre:has(code) { + min-width: 3em; + } #common-content { display: flex; flex-direction: row-reverse; @@ -207,7 +214,7 @@ pre { } } -@media not all and (min-width: 700px) { +@media not all and (min-width: 800px) { #content-right .info-float { float: none; width: 100% !important; @@ -233,6 +240,7 @@ a.view-pdf { display: -webkit-flex; display: -ms-flexbox; display: flex; + align-items: center; .spacer { display: inline-block; diff --git a/resources/contest.scss b/resources/contest.scss index cfdd478..07983bb 100644 --- a/resources/contest.scss +++ b/resources/contest.scss @@ -8,30 +8,20 @@ width: 100%; box-sizing: border-box; display: flex; + background: white; - .info-contest:first-child { + .info-contest:first-child, .info-contest:nth-child(2) { margin-right: 15px; } - .info-contest:nth-child(2) { - margin-right: 5px; - } - .info-contest { flex: 1; } - .participate-button { - display: flex; - justify-content: center; - align-items: center; - } - .contest-title { - font-size: 17px; + font-size: 1.1em; font-weight: 600; - line-height: 150%; - margin-bottom: 10px; + margin-bottom: 5px; } } @@ -155,64 +145,21 @@ .time-left { text-align: left; - color: #777; - padding-top: 0.5em; + padding-bottom: 0.5em; } -.contest-list { - td { - vertical-align: middle !important; - - &:nth-child(2) { - min-width: 4em; - } - - &:nth-child(3) { - min-width: 6em; - } - } - - tbody tr { - height: 4em; - } - - .floating-time-left { - position: absolute; - left: 0; - } - - .floating-time-right { - position: absolute; - right: 0; - line-height: 1.2em; - } - - .floating-time { - position: absolute; - right: 0; - bottom: 0; - } - +.list-contest { .contest-tags { - padding-left: 0.75em; vertical-align: top; + display: flex; + flex-wrap: wrap; + margin-top: 5px; } .contest-tag-hidden { background-color: #000000; color: #ffffff; } - - - .participate-button { - display: inline-block; - width: 90px; - } - - .contest-block { - text-align: left; - padding: 0.5em 0.5em 0.5em 1em; - } } .first-solve { @@ -220,12 +167,14 @@ } .contest-tag { - box-shadow: inset 0 -0.1em 0 rgba(0, 0, 0, 0.12); padding: 0.15em 0.3em; border-radius: 0.15em; font-weight: 600; margin-right: 0.45em; position: relative; + display: flex; + align-items: center; + gap: 0.2em; } .contest-tag-edit { @@ -251,7 +200,7 @@ } .contest-list-title { - font-size: 18px; + font-size: 1.1em; font-weight: 600; } @@ -272,7 +221,7 @@ form.contest-join-pseudotab { } .contest-participation-operation { - float: right; + margin-left: auto; .fa { color: #444; @@ -282,7 +231,7 @@ form.contest-join-pseudotab { padding-left: 1px; } - padding: 0 5px; + padding-left: 5px; } #add-clarification { diff --git a/resources/course.scss b/resources/course.scss new file mode 100644 index 0000000..5f061ab --- /dev/null +++ b/resources/course.scss @@ -0,0 +1,133 @@ +@import "vars"; + +.course-content-title { + font-weight: bold; +} + +.course-list { + width: 100%; + margin: 0 auto; + list-style: none; + padding: 0; + + .course-item { + display: flex; + align-items: center; + border: 1px solid #ddd; + padding: 20px; + margin-bottom: 10px; + border-radius: 8px; + background-color: #fff; + box-shadow: 0 4px 6px rgba(0,0,0,0.1); + transition: transform 0.2s ease-in-out; + } + .course-item:hover { + transform: translateY(-2px); + box-shadow: 0 6px 12px rgba(0,0,0,0.15); + } + .course-image { + flex: 0 0 auto; + width: 50px; + height: 50px; + margin-right: 20px; + border-radius: 5px; + overflow: hidden; + } + .course-image img { + width: 100%; + height: 100%; + object-fit: cover; + border-radius: 5px; + } + .course-content { + flex: 1; + } + .course-name { + font-size: 1.5em; + margin-bottom: 5px; + } +} + +.lesson-list { + list-style: none; + padding: 0; + + li:hover { + box-shadow: 0 6px 12px rgba(0,0,0,0.15); + background: #ffffe0; + } + + li { + background: #fff; + border: 1px solid #ddd; + margin-bottom: 20px; + padding-top: 10px; + border-radius: 5px; + box-shadow: 0 2px 4px #ccc; + } + .lesson-title { + font-size: 1.5em; + margin-left: 1em; + margin-right: 1em; + color: initial; + display: flex; + gap: 1em; + + .lesson-points { + margin-left: auto; + font-size: 0.9em; + align-self: flex-end; + color: #636363; + } + } + .progress-container { + background: #e0e0e0; + border-radius: 3px; + height: 10px; + width: 100%; + margin-top: 10px; + } + .progress-bar { + background: $theme_color; + height: 10px; + border-radius: 3px; + line-height: 10px; + color: white; + text-align: right; + font-size: smaller; + } +} + +.course-problem-list { + list-style-type: none; + padding: 0; + font-size: 15px; + + i { + font-size: large; + } + + li { + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #eee; + padding: 10px; + border-radius: 5px; + } + .problem-name { + margin-left: 10px; + } + + li:hover { + background: #e0e0e0; + } + .score { + font-weight: bold; + margin-left: auto; + } + a { + text-decoration: none; + color: inherit; + } +} \ No newline at end of file diff --git a/resources/darkmode.css b/resources/darkmode.css index c1839d7..4e91e4d 100644 --- a/resources/darkmode.css +++ b/resources/darkmode.css @@ -1,37 +1,20 @@ -/* - _______ - / \ - .==. .==. - (( ))==(( )) - / "==" "=="\ - /____|| || ||___\ - ________ ____ ________ ___ ___ - | ___ \ / \ | ___ \ | | / / - | | \ \ / /\ \ | | \ \| |_/ / - | | ) / /__\ \ | |__/ /| ___ \ - | |__/ / ______ \| ____ \| | \ \ -_______|_______/__/ ____ \__\__|___\__\__|___\__\____ -| ___ \ | ____/ / \ | ___ \ | ____| ___ \ -| | \ \| |___ / /\ \ | | \ \| |___| | \ \ -| |__/ /| ____/ /__\ \ | | ) | ____| |__/ / -| ____ \| |__/ ______ \| |__/ /| |___| ____ \ -|__| \__\____/__/ \__\_______/ |______|__| \__\ - https://darkreader.org -*/ - /*! Dark reader generated CSS | Licensed under MIT https://github.com/darkreader/darkreader/blob/main/LICENSE */ /* User-Agent Style */ +@layer { html { background-color: #181a1b !important; } html { color-scheme: dark !important; } -html, body { +iframe { + color-scheme: initial; +} +html, body, input, textarea, select, button, dialog { background-color: #181a1b; } -html, body { +html, body, input, textarea, select, button { border-color: #736b5e; color: #e8e6e3; } @@ -41,6 +24,9 @@ a { table { border-color: #545b5e; } +mark { + color: #e8e6e3; +} ::placeholder { color: #b2aba1; } @@ -74,9 +60,10 @@ select:-webkit-autofill { background-color: #004daa !important; color: #e8e6e3 !important; } +} /* Invert Style */ -.jfk-bubble.gtx-bubble, .captcheck_answer_label > input + img, span#closed_text > img[src^="https://www.gstatic.com/images/branding/googlelogo"], span[data-href^="https://www.hcaptcha.com/"] > #icon, #bit-notification-bar-iframe, ::-webkit-calendar-picker-indicator { +.jfk-bubble.gtx-bubble, .captcheck_answer_label > input + img, span#closed_text > img[src^="https://www.gstatic.com/images/branding/googlelogo"], span[data-href^="https://www.hcaptcha.com/"] > #icon, ::-webkit-calendar-picker-indicator, img.Wirisformula { filter: invert(100%) hue-rotate(180deg) contrast(90%) !important; } @@ -89,103 +76,92 @@ select:-webkit-autofill { } /* Modified CSS */ -:root, [data-md-color-scheme="default"] { - --darkreader-bg--md-default-fg-color: rgba(0, 0, 0, 0.87); - --darkreader-text--md-default-fg-color: rgba(232, 230, 227, 0.87); - --darkreader-bg--md-default-fg-color--light: rgba(0, 0, 0, 0.54); - --darkreader-text--md-default-fg-color--light: rgba(232, 230, 227, 0.54); - --darkreader-border--md-default-fg-color--light: rgba(140, 130, 115, 0.54); - --darkreader-bg--md-default-fg-color--lighter: rgba(0, 0, 0, 0.32); - --darkreader-text--md-default-fg-color--lighter: rgba(232, 230, 227, 0.32); - --darkreader-border--md-default-fg-color--lighter: rgba(140, 130, 115, 0.32); - --darkreader-bg--md-default-fg-color--lightest: rgba(0, 0, 0, 0.07); - --darkreader-text--md-default-fg-color--lightest: rgba(232, 230, 227, 0.07); - --darkreader-border--md-default-fg-color--lightest: rgba(140, 130, 115, 0.07); - --darkreader-bg--md-default-bg-color: #181a1b; - --darkreader-text--md-default-bg-color: #e8e6e3; - --darkreader-border--md-default-bg-color: #303436; - --md-default-bg-color--light: hsla(0,0%,100%,.7); - --md-default-bg-color--lighter: hsla(0,0%,100%,.3); - --md-default-bg-color--lightest: hsla(0,0%,100%,.12); - --darkreader-bg--md-primary-fg-color: #334191; - --darkreader-text--md-primary-fg-color: #6d94cb; - --darkreader-border--md-primary-fg-color: #2f3c86; - --md-primary-fg-color--light: #5d6cc0; - --darkreader-bg--md-primary-fg-color--dark: #263281; - --darkreader-text--md-primary-bg-color: #e8e6e3; - --darkreader-text--md-primary-bg-color--light: rgba(232, 230, 227, 0.7); - --darkreader-bg--md-accent-fg-color: #01189b; - --darkreader-text--md-accent-fg-color: #539bfe; - --darkreader-border--md-accent-fg-color: #011899; - --darkreader-bg--md-accent-fg-color--transparent: rgba(1, 24, 155, 0.1); +:root, +[data-md-color-scheme="default"] { --darkreader-bg--md-accent-bg-color: #181a1b; - --darkreader-text--md-accent-bg-color: #e8e6e3; - --md-accent-bg-color--light: hsla(0,0%,100%,.7); - --darkreader-text--md-code-fg-color: #beb9b0; + --darkreader-bg--md-accent-fg-color: #01189b; + --darkreader-bg--md-accent-fg-color--transparent: rgba(1, 24, 155, 0.1); + --darkreader-bg--md-admonition-bg-color: var(--darkreader-bg--md-default-bg-color); --darkreader-bg--md-code-bg-color: #1e2021; --darkreader-bg--md-code-hl-color: rgba(153, 153, 0, 0.5); - --darkreader-text--md-code-hl-number-color: #d93f3f; - --darkreader-text--md-code-hl-special-color: #ed3774; - --darkreader-text--md-code-hl-function-color: #b159c0; - --darkreader-text--md-code-hl-constant-color: #7561db; - --darkreader-text--md-code-hl-keyword-color: #518ecb; - --darkreader-text--md-code-hl-string-color: #7ee2b0; - --darkreader-text--md-code-hl-name-color: var(--darkreader-text--md-code-fg-color); - --darkreader-text--md-code-hl-operator-color: var(--darkreader-text--md-default-fg-color--light); - --darkreader-text--md-code-hl-punctuation-color: var(--darkreader-text--md-default-fg-color--light); - --darkreader-text--md-code-hl-comment-color: var(--darkreader-text--md-default-fg-color--light); - --darkreader-text--md-code-hl-generic-color: var(--darkreader-text--md-default-fg-color--light); - --darkreader-text--md-code-hl-variable-color: var(--darkreader-text--md-default-fg-color--light); - --md-typeset-color: var(--md-default-fg-color); - --darkreader-text--md-typeset-a-color: var(--darkreader-text--md-primary-fg-color); - --darkreader-bg--md-typeset-mark-color: rgba(153, 153, 0, 0.5); + --darkreader-bg--md-default-bg-color: #181a1b; + --darkreader-bg--md-default-fg-color: rgba(0, 0, 0, 0.87); + --darkreader-bg--md-default-fg-color--light: rgba(0, 0, 0, 0.54); + --darkreader-bg--md-default-fg-color--lighter: rgba(0, 0, 0, 0.32); + --darkreader-bg--md-default-fg-color--lightest: rgba(0, 0, 0, 0.07); + --darkreader-bg--md-footer-bg-color: rgba(0, 0, 0, 0.87); + --darkreader-bg--md-footer-bg-color--dark: rgba(0, 0, 0, 0.32); + --darkreader-bg--md-primary-fg-color: #334191; + --darkreader-bg--md-primary-fg-color--dark: #263281; + --darkreader-bg--md-shadow-z1: 0 0.2rem 0.5rem rgba(0,0,0,.05),0 0 0.05rem rgba(0,0,0,.1); + --darkreader-bg--md-shadow-z2: 0 0.2rem 0.5rem rgba(0,0,0,.1),0 0 0.05rem rgba(0,0,0,.25); + --darkreader-bg--md-shadow-z3: 0 0.2rem 0.5rem rgba(0,0,0,.2),0 0 0.05rem rgba(0,0,0,.35); --darkreader-bg--md-typeset-del-color: rgba(165, 25, 9, 0.15); --darkreader-bg--md-typeset-ins-color: rgba(9, 170, 90, 0.15); - --darkreader-bg--md-typeset-kbd-color: #1b1d1e; --darkreader-bg--md-typeset-kbd-accent-color: #181a1b; --darkreader-bg--md-typeset-kbd-border-color: #404548; + --darkreader-bg--md-typeset-kbd-color: #1b1d1e; + --darkreader-bg--md-typeset-mark-color: rgba(153, 153, 0, 0.5); + --darkreader-border--md-accent-fg-color: #011899; + --darkreader-border--md-default-bg-color: #303436; + --darkreader-border--md-default-fg-color--light: rgba(140, 130, 115, 0.54); + --darkreader-border--md-default-fg-color--lighter: rgba(140, 130, 115, 0.32); + --darkreader-border--md-default-fg-color--lightest: rgba(140, 130, 115, 0.07); + --darkreader-border--md-primary-fg-color: #2f3c86; --darkreader-border--md-typeset-table-color: rgba(140, 130, 115, 0.12); + --darkreader-text--md-accent-bg-color: #e8e6e3; + --darkreader-text--md-accent-fg-color: #539bfe; --darkreader-text--md-admonition-fg-color: var(--darkreader-text--md-default-fg-color); - --darkreader-bg--md-admonition-bg-color: var(--darkreader-bg--md-default-bg-color); + --darkreader-text--md-code-fg-color: #beb9b0; + --darkreader-text--md-code-hl-comment-color: var(--darkreader-text--md-default-fg-color--light); + --darkreader-text--md-code-hl-constant-color: #7561db; + --darkreader-text--md-code-hl-function-color: #b159c0; + --darkreader-text--md-code-hl-generic-color: var(--darkreader-text--md-default-fg-color--light); + --darkreader-text--md-code-hl-keyword-color: #518ecb; + --darkreader-text--md-code-hl-name-color: var(--darkreader-text--md-code-fg-color); + --darkreader-text--md-code-hl-number-color: #d93f3f; + --darkreader-text--md-code-hl-operator-color: var(--darkreader-text--md-default-fg-color--light); + --darkreader-text--md-code-hl-punctuation-color: var(--darkreader-text--md-default-fg-color--light); + --darkreader-text--md-code-hl-special-color: #ed3774; + --darkreader-text--md-code-hl-string-color: #7ee2b0; + --darkreader-text--md-code-hl-variable-color: var(--darkreader-text--md-default-fg-color--light); + --darkreader-text--md-default-bg-color: #e8e6e3; + --darkreader-text--md-default-fg-color: rgba(232, 230, 227, 0.87); + --darkreader-text--md-default-fg-color--light: rgba(232, 230, 227, 0.54); + --darkreader-text--md-default-fg-color--lighter: rgba(232, 230, 227, 0.32); + --darkreader-text--md-default-fg-color--lightest: rgba(232, 230, 227, 0.07); --darkreader-text--md-footer-fg-color: #e8e6e3; --darkreader-text--md-footer-fg-color--light: rgba(232, 230, 227, 0.7); --darkreader-text--md-footer-fg-color--lighter: rgba(232, 230, 227, 0.3); - --darkreader-bg--md-footer-bg-color: rgba(0, 0, 0, 0.87); - --darkreader-bg--md-footer-bg-color--dark: rgba(0, 0, 0, 0.32); - --darkreader-bg--md-shadow-z1: 0 0.2rem 0.5rem rgba(0,0,0,.05), - 0 0 0.05rem rgba(0,0,0,.1); - --darkreader-bg--md-shadow-z2: 0 0.2rem 0.5rem rgba(0,0,0,.1), - 0 0 0.05rem rgba(0,0,0,.25); - --darkreader-bg--md-shadow-z3: 0 0.2rem 0.5rem rgba(0,0,0,.2), - 0 0 0.05rem rgba(0,0,0,.35); + --darkreader-text--md-primary-bg-color: #e8e6e3; + --darkreader-text--md-primary-bg-color--light: rgba(232, 230, 227, 0.7); + --darkreader-text--md-primary-fg-color: #6d94cb; + --darkreader-text--md-typeset-a-color: var(--darkreader-text--md-primary-fg-color); + --md-accent-bg-color--light: hsla(0,0%,100%,.7); + --md-default-bg-color--light: hsla(0,0%,100%,.7); + --md-default-bg-color--lighter: hsla(0,0%,100%,.3); + --md-default-bg-color--lightest: hsla(0,0%,100%,.12); + --md-primary-fg-color--light: #5d6cc0; + --md-typeset-color: var(--md-default-fg-color); } .md-icon svg { fill: currentcolor; } body { - --md-text-font-family: var(--md-text-font,_), - -apple-system, - BlinkMacSystemFont, - Helvetica, - Arial, - sans-serif; - --md-code-font-family: var(--md-code-font,_), - SFMono-Regular, - Consolas, - Menlo, - monospace; + --md-code-font-family: var(--md-code-font,_),SFMono-Regular,Consolas,Menlo,monospace; + --md-text-font-family: var(--md-text-font,_),-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif; } :root { - --darkreader-bgimg--md-typeset-table-sort-icon: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-typeset-table-sort-icon--asc: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-typeset-table-sort-icon--desc: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-typeset-table-sort-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0ibTE4IDIxLTQtNGgzVjdoLTNsNC00IDQgNGgtM3YxMGgzTTIgMTl2LTJoMTB2Mk0yIDEzdi0yaDd2Mk0yIDdWNWg0djJIMloiLz48L3N2Zz4="); + --darkreader-bgimg--md-typeset-table-sort-icon--asc: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTE5IDE3aDNsLTQgNC00LTRoM1YzaDJNMiAxN2gxMHYySDJNNiA1djJIMlY1bTAgNmg3djJIMnYtMloiLz48L3N2Zz4="); + --darkreader-bgimg--md-typeset-table-sort-icon--desc: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTE5IDdoM2wtNC00LTQgNGgzdjE0aDJNMiAxN2gxMHYySDJNNiA1djJIMlY1bTAgNmg3djJIMnYtMloiLz48L3N2Zz4="); } .md-typeset h1 { - color: var(--darkreader-text--md-default-fg-color--light); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } .md-typeset h5, .md-typeset h6 { - color: var(--darkreader-text--md-default-fg-color--light); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } .md-typeset hr { border-bottom: .05rem solid var(--darkreader-border--md-default-fg-color--lightest); @@ -193,46 +169,44 @@ body { .md-typeset code, .md-typeset kbd, .md-typeset pre { - color: var(--darkreader-text--md-code-fg-color); + color: var(--darkreader-text--md-code-fg-color, #e8e6e3); } .md-typeset kbd { - background-color: var(--darkreader-bg--md-typeset-kbd-color); - box-shadow: 0 .1rem 0 .05rem var(--darkreader-bg--md-typeset-kbd-border-color), - 0 .1rem 0 var(--darkreader-bg--md-typeset-kbd-border-color), - 0 -.1rem .2rem var(--darkreader-bg--md-typeset-kbd-accent-color) inset; - color: var(--darkreader-text--md-default-fg-color); + background-color: var(--darkreader-bg--md-typeset-kbd-color, #181a1b); + box-shadow: 0 .1rem 0 .05rem var(--darkreader-bg--md-typeset-kbd-border-color),0 .1rem 0 var(--darkreader-bg--md-typeset-kbd-border-color),0 -.1rem .2rem var(--darkreader-bg--md-typeset-kbd-accent-color) inset; + color: var(--darkreader-text--md-default-fg-color, #e8e6e3); } .md-typeset mark { - background-color: var(--darkreader-bg--md-typeset-mark-color); + background-color: var(--darkreader-bg--md-typeset-mark-color, #181a1b); color: inherit; } .md-typeset abbr { - text-decoration-color: initial; border-bottom: .05rem dotted var(--darkreader-border--md-default-fg-color--light); + text-decoration-color: initial; } @media (hover: none) { .md-typeset abbr[title]:-webkit-any(:focus, :hover)::after { - background-color: var(--darkreader-bg--md-default-fg-color); + background-color: var(--darkreader-bg--md-default-fg-color, #181a1b); box-shadow: var(--darkreader-bg--md-shadow-z3); - color: var(--darkreader-text--md-default-bg-color); + color: var(--darkreader-text--md-default-bg-color, #e8e6e3); } .md-typeset abbr[title]:is(:focus, :hover)::after { - background-color: var(--darkreader-bg--md-default-fg-color); + background-color: var(--darkreader-bg--md-default-fg-color, #181a1b); box-shadow: var(--darkreader-bg--md-shadow-z3); - color: var(--darkreader-text--md-default-bg-color); + color: var(--darkreader-text--md-default-bg-color, #e8e6e3); } } .md-typeset blockquote { - border-left: .2rem solid var(--darkreader-border--md-default-fg-color--lighter); + border-left: .2rem solid var(--darkreader-border--md-default-fg-color--lighter); } [dir="rtl"] .md-typeset blockquote { border-right: .2rem solid var(--darkreader-border--md-default-fg-color--lighter); } .md-typeset blockquote { - color: var(--darkreader-text--md-default-fg-color--light); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } .md-typeset table:not([class]) { - background-color: var(--darkreader-bg--md-default-bg-color); + background-color: var(--darkreader-bg--md-default-bg-color, #181a1b); border: .05rem solid var(--darkreader-border--md-typeset-table-color); } .md-typeset table:not([class]) td { @@ -240,24 +214,24 @@ body { } .md-typeset table:not([class]) tbody tr:hover { background-color: rgba(0, 0, 0, 0.04); - box-shadow: 0 .05rem 0 var(--darkreader-bg--md-default-bg-color) inset; + box-shadow: 0 .05rem 0 var(--darkreader-bg--md-default-bg-color) inset; } .md-typeset table th[role="columnheader"]:hover::after { - background-color: var(--darkreader-bg--md-default-fg-color--lighter); + background-color: var(--darkreader-bg--md-default-fg-color--lighter, #181a1b); } .md-typeset table th[role="columnheader"][aria-sort="ascending"]::after { - background-color: var(--darkreader-bg--md-default-fg-color--light); + background-color: var(--darkreader-bg--md-default-fg-color--light, #181a1b); } .md-typeset table th[role="columnheader"][aria-sort="descending"]::after { - background-color: var(--darkreader-bg--md-default-fg-color--light); + background-color: var(--darkreader-bg--md-default-fg-color--light, #181a1b); } .md-banner { - background-color: var(--darkreader-bg--md-footer-bg-color); - color: var(--darkreader-text--md-footer-fg-color); + background-color: var(--darkreader-bg--md-footer-bg-color, #181a1b); + color: var(--darkreader-text--md-footer-fg-color, #e8e6e3); } .md-banner--warning { - color: var(--darkreader-text--md-default-fg-color); background: var(--darkreader-bg--md-typeset-mark-color); + color: var(--darkreader-text--md-default-fg-color, #e8e6e3); } .md-banner__button { color: inherit; @@ -266,15 +240,15 @@ body { outline-color: var(--darkreader-border--md-accent-fg-color); } .md-skip { - background-color: var(--darkreader-bg--md-default-fg-color); - color: var(--darkreader-text--md-default-bg-color); + background-color: var(--darkreader-bg--md-default-fg-color, #181a1b); + color: var(--darkreader-text--md-default-bg-color, #e8e6e3); outline-color: var(--darkreader-border--md-accent-fg-color); } :root { - --darkreader-bgimg--md-clipboard-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgMjFIOFY3aDExbTAtMkg4YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxMWEyIDIgMCAwIDAgMi0yVjdhMiAyIDAgMCAwLTItMm0tMy00SDRhMiAyIDAgMCAwLTIgMnYxNGgyVjNoMTJWMVoiLz48L3N2Zz4iIC8+PC9zdmc+"); + --darkreader-bgimg--md-clipboard-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwmbHQ7c3ZnIHhtbG5zPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJnF1b3Q7IHZpZXdCb3g9JnF1b3Q7MCAwIDI0IDI0JnF1b3Q7Jmd0OyZsdDtwYXRoIGQ9JnF1b3Q7TTE5IDIxSDhWN2gxMW0wLTJIOGEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTFhMiAyIDAgMCAwIDItMlY3YTIgMiAwIDAgMC0yLTJtLTMtNEg0YTIgMiAwIDAgMC0yIDJ2MTRoMlYzaDEyVjFaJnF1b3Q7LyZndDsmbHQ7L3N2ZyZndDsiIC8+PC9zdmc+"); } .md-clipboard { - color: var(--darkreader-text--md-default-fg-color--lightest); + color: var(--darkreader-text--md-default-fg-color--lightest, #e8e6e3); outline-color: var(--darkreader-border--md-accent-fg-color); } .md-clipboard:not(.focus-visible) { @@ -282,109 +256,112 @@ body { outline-color: initial; } :hover > .md-clipboard { - color: var(--darkreader-text--md-default-fg-color--light); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } .md-clipboard:-webkit-any(:focus, :hover) { - color: var(--darkreader-text--md-accent-fg-color); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-clipboard:is(:focus, :hover) { - color: var(--darkreader-text--md-accent-fg-color); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-clipboard::after { background-color: currentcolor; } .md-clipboard--inline:-webkit-any(:focus, :hover) code { - background-color: var(--darkreader-bg--md-accent-fg-color--transparent); - color: var(--darkreader-text--md-accent-fg-color); + background-color: var(--darkreader-bg--md-accent-fg-color--transparent, #181a1b); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-clipboard--inline:is(:focus, :hover) code { - background-color: var(--darkreader-bg--md-accent-fg-color--transparent); - color: var(--darkreader-text--md-accent-fg-color); + background-color: var(--darkreader-bg--md-accent-fg-color--transparent, #181a1b); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-consent__overlay { background-color: rgba(0, 0, 0, 0.54); } .md-consent__inner { - background-color: var(--darkreader-bg--md-default-bg-color); + background-color: var(--darkreader-bg--md-default-bg-color, #181a1b); border-color: initial; - box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 0.2rem, - rgba(0, 0, 0, 0.2) 0px 0.2rem 0.4rem; + border-style: initial; + border-width: 0px; + box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 0.2rem, rgba(0, 0, 0, 0.2) 0px 0.2rem 0.4rem; } .md-typeset .md-content__button { - color: var(--darkreader-text--md-default-fg-color--lighter); + color: var(--darkreader-text--md-default-fg-color--lighter, #e8e6e3); } .md-dialog { - background-color: var(--darkreader-bg--md-default-fg-color); + background-color: var(--darkreader-bg--md-default-fg-color, #181a1b); box-shadow: var(--darkreader-bg--md-shadow-z3); } .md-dialog__inner { - color: var(--darkreader-text--md-default-bg-color); + color: var(--darkreader-text--md-default-bg-color, #e8e6e3); } .md-feedback fieldset { border-color: initial; + border-style: none; + border-width: initial; } .md-feedback__list:hover .md-icon:not(:disabled) { - color: var(--darkreader-text--md-default-fg-color--lighter); + color: var(--darkreader-text--md-default-fg-color--lighter, #e8e6e3); } .md-feedback__icon { - color: var(--darkreader-text--md-default-fg-color--light); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } .md-feedback__icon:not(:disabled).md-icon:hover { - color: var(--darkreader-text--md-accent-fg-color); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-feedback__icon:disabled { - color: var(--darkreader-text--md-default-fg-color--lightest); + color: var(--darkreader-text--md-default-fg-color--lightest, #e8e6e3); } .md-footer { - background-color: var(--darkreader-bg--md-footer-bg-color); - color: var(--darkreader-text--md-footer-fg-color); + background-color: var(--darkreader-bg--md-footer-bg-color, #181a1b); + color: var(--darkreader-text--md-footer-fg-color, #e8e6e3); } .md-footer__link { outline-color: var(--darkreader-border--md-accent-fg-color); } .md-footer-meta { - background-color: var(--darkreader-bg--md-footer-bg-color--dark); + background-color: var(--darkreader-bg--md-footer-bg-color--dark, #181a1b); } html .md-footer-meta.md-typeset a { - color: var(--darkreader-text--md-footer-fg-color--light); + color: var(--darkreader-text--md-footer-fg-color--light, #e8e6e3); } html .md-footer-meta.md-typeset a:-webkit-any(:focus, :hover) { - color: var(--darkreader-text--md-footer-fg-color); + color: var(--darkreader-text--md-footer-fg-color, #e8e6e3); } html .md-footer-meta.md-typeset a:is(:focus, :hover) { - color: var(--darkreader-text--md-footer-fg-color); + color: var(--darkreader-text--md-footer-fg-color, #e8e6e3); } .md-copyright { - color: var(--darkreader-text--md-footer-fg-color--lighter); + color: var(--darkreader-text--md-footer-fg-color--lighter, #e8e6e3); } .md-copyright__highlight { - color: var(--darkreader-text--md-footer-fg-color--light); + color: var(--darkreader-text--md-footer-fg-color--light, #e8e6e3); } .md-social__link svg { fill: currentcolor; } .md-typeset .md-button { border-color: initial; - color: var(--darkreader-text--md-primary-fg-color); + color: var(--darkreader-text--md-primary-fg-color, #e8e6e3); } .md-typeset .md-button--primary { - background-color: var(--darkreader-bg--md-primary-fg-color); - color: var(--darkreader-text--md-primary-bg-color); + background-color: var(--darkreader-bg--md-primary-fg-color, #181a1b); border-color: var(--darkreader-border--md-primary-fg-color); + color: var(--darkreader-text--md-primary-bg-color, #e8e6e3); } .md-typeset .md-button:-webkit-any(:focus, :hover) { - background-color: var(--darkreader-bg--md-accent-fg-color); - color: var(--darkreader-text--md-accent-bg-color); + background-color: var(--darkreader-bg--md-accent-fg-color, #181a1b); border-color: var(--darkreader-border--md-accent-fg-color); + color: var(--darkreader-text--md-accent-bg-color, #e8e6e3); } .md-typeset .md-button:is(:focus, :hover) { - background-color: var(--darkreader-bg--md-accent-fg-color); - color: var(--darkreader-text--md-accent-bg-color); + background-color: var(--darkreader-bg--md-accent-fg-color, #181a1b); border-color: var(--darkreader-border--md-accent-fg-color); + color: var(--darkreader-text--md-accent-bg-color, #e8e6e3); } .md-typeset .md-input { - box-shadow: var(--darkreader-bg--md-shadow-z1); border-bottom: .1rem solid var(--darkreader-border--md-default-fg-color--lighter); + box-shadow: var(--darkreader-bg--md-shadow-z1); } .md-typeset .md-input:-webkit-any(:focus, :hover) { border-bottom-color: var(--darkreader-border--md-accent-fg-color); @@ -395,14 +372,12 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { box-shadow: var(--darkreader-bg--md-shadow-z2); } .md-header { - background-color: var(--darkreader-bg--md-primary-fg-color); - box-shadow: rgba(0, 0, 0, 0) 0px 0px 0.2rem, - rgba(0, 0, 0, 0) 0px 0.2rem 0.4rem; - color: var(--darkreader-text--md-primary-bg-color); + background-color: var(--darkreader-bg--md-primary-fg-color, #181a1b); + box-shadow: rgba(0, 0, 0, 0) 0px 0px 0.2rem, rgba(0, 0, 0, 0) 0px 0.2rem 0.4rem; + color: var(--darkreader-text--md-primary-bg-color, #e8e6e3); } .md-header--shadow { - box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 0.2rem, - rgba(0, 0, 0, 0.2) 0px 0.2rem 0.4rem; + box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 0.2rem, rgba(0, 0, 0, 0.2) 0px 0.2rem 0.4rem; } .md-header__button { color: currentcolor; @@ -419,9 +394,9 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { fill: currentcolor; } :root { - --darkreader-bgimg--md-nav-icon--prev: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-nav-icon--next: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-toc-icon: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-nav-icon--next: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTguNTkgMTYuNTggMTMuMTcgMTIgOC41OSA3LjQxIDEwIDZsNiA2LTYgNi0xLjQxLTEuNDJaIi8+PC9zdmc+"); + --darkreader-bgimg--md-nav-icon--prev: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTIwIDExdjJIOGw1LjUgNS41LTEuNDIgMS40Mkw0LjE2IDEybDcuOTItNy45MkwxMy41IDUuNSA4IDExaDEyWiIvPjwvc3ZnPg=="); + --darkreader-bgimg--md-toc-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTMgOWgxNFY3SDN2Mm0wIDRoMTR2LTJIM3YybTAgNGgxNHYtMkgzdjJtMTYgMGgydi0yaC0ydjJtMC0xMHYyaDJWN2gtMm0wIDZoMnYtMmgtMnYyWiIvPjwvc3ZnPg=="); } .md-nav__title .md-nav__button.md-logo :-webkit-any(img, svg) { fill: currentcolor; @@ -433,19 +408,19 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { list-style-image: initial; } .md-nav__link--passed { - color: var(--darkreader-text--md-default-fg-color--light); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } .md-nav__item .md-nav__link--active { - color: var(--darkreader-text--md-typeset-a-color); + color: var(--darkreader-text--md-typeset-a-color, #e8e6e3); } .md-nav__link:-webkit-any(:focus, :hover) { - color: var(--darkreader-text--md-accent-fg-color); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-nav__link:is(:focus, :hover) { - color: var(--darkreader-text--md-accent-fg-color); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-nav__link.focus-visible { - outline-color: var(--darkreader-border--md-accent-fg-color); + outline-color: var(--darkreader-border--md-accent-fg-color); } .md-nav--primary .md-nav__link[for="__toc"] .md-icon::after { background-color: currentcolor; @@ -453,37 +428,37 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { @media screen and (max-width: 76.1875em) { .md-nav--primary, .md-nav--primary .md-nav { - background-color: var(--darkreader-bg--md-default-bg-color); + background-color: var(--darkreader-bg--md-default-bg-color, #181a1b); } .md-nav--primary .md-nav__title { - background-color: var(--darkreader-bg--md-default-fg-color--lightest); - color: var(--darkreader-text--md-default-fg-color--light); + background-color: var(--darkreader-bg--md-default-fg-color--lightest, #181a1b); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } .md-nav--primary .md-nav__title .md-nav__icon::after { background-color: currentcolor; } .md-nav--primary .md-nav__title ~ .md-nav__list { - background-color: var(--darkreader-bg--md-default-bg-color); - box-shadow: 0 .05rem 0 var(--darkreader-bg--md-default-fg-color--lightest) inset; + background-color: var(--darkreader-bg--md-default-bg-color, #181a1b); + box-shadow: 0 .05rem 0 var(--darkreader-bg--md-default-fg-color--lightest) inset; } .md-nav--primary .md-nav__title ~ .md-nav__list > :first-child { - border-top-color: initial; + border-top: 0px; } .md-nav--primary .md-nav__title[for="__drawer"] { - background-color: var(--darkreader-bg--md-primary-fg-color); - color: var(--darkreader-text--md-primary-bg-color); + background-color: var(--darkreader-bg--md-primary-fg-color, #181a1b); + color: var(--darkreader-text--md-primary-bg-color, #e8e6e3); } .md-nav--primary .md-nav__item { border-top: .05rem solid var(--darkreader-border--md-default-fg-color--lightest); } .md-nav--primary .md-nav__item--active > .md-nav__link { - color: var(--darkreader-text--md-typeset-a-color); + color: var(--darkreader-text--md-typeset-a-color, #e8e6e3); } .md-nav--primary .md-nav__item--active > .md-nav__link:-webkit-any(:focus, :hover) { - color: var(--darkreader-text--md-accent-fg-color); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-nav--primary .md-nav__item--active > .md-nav__link:is(:focus, :hover) { - color: var(--darkreader-text--md-accent-fg-color); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-nav--primary .md-nav__link .md-nav__icon::after { background-color: currentcolor; @@ -497,44 +472,44 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { } @media screen and (max-width: 59.9375em) { .md-nav__source { - background-color: var(--darkreader-bg--md-primary-fg-color--dark); - color: var(--darkreader-text--md-primary-bg-color); + background-color: var(--darkreader-bg--md-primary-fg-color--dark, #181a1b); + color: var(--darkreader-text--md-primary-bg-color, #e8e6e3); } } @media screen and (min-width: 60em) { .md-nav--secondary .md-nav__title { - box-shadow: 0 0 .4rem .4rem var(--darkreader-bg--md-default-bg-color); background: var(--darkreader-bg--md-default-bg-color); + box-shadow: 0 0 .4rem .4rem var(--darkreader-bg--md-default-bg-color); } } @media screen and (min-width: 76.25em) { .md-nav--primary .md-nav__title { - box-shadow: 0 0 .4rem .4rem var(--darkreader-bg--md-default-bg-color); background: var(--darkreader-bg--md-default-bg-color); + box-shadow: 0 0 .4rem .4rem var(--darkreader-bg--md-default-bg-color); } .md-nav__icon:hover { - background-color: var(--darkreader-bg--md-accent-fg-color--transparent); + background-color: var(--darkreader-bg--md-accent-fg-color--transparent, #181a1b); } .md-nav__icon::after { background-color: currentcolor; } .md-nav--lifted > .md-nav__list > .md-nav__item--active > .md-nav__link { - box-shadow: 0 0 .4rem .4rem var(--darkreader-bg--md-default-bg-color); background: var(--darkreader-bg--md-default-bg-color); + box-shadow: 0 0 .4rem .4rem var(--darkreader-bg--md-default-bg-color); } .md-nav--integrated > .md-nav__list > .md-nav__item--active .md-nav--secondary { - border-left: .05rem solid var(--darkreader-border--md-primary-fg-color); + border-left: .05rem solid var(--darkreader-border--md-primary-fg-color); } [dir="rtl"] .md-nav--integrated > .md-nav__list > .md-nav__item--active .md-nav--secondary { border-right: .05rem solid var(--darkreader-border--md-primary-fg-color); } } :root { - --darkreader-bgimg--md-search-result-icon: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-search-result-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTE0IDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoN2MtLjQxLS4yNS0uOC0uNTYtMS4xNC0uOS0uMzMtLjMzLS42MS0uNy0uODYtMS4xSDZWNGg3djVoNXYxLjE4Yy43MS4xNiAxLjM5LjQzIDIgLjgyVjhsLTYtNm02LjMxIDE2LjljMS4zMy0yLjExLjY5LTQuOS0xLjQtNi4yMi0yLjExLTEuMzMtNC45MS0uNjgtNi4yMiAxLjQtMS4zNCAyLjExLS42OSA0Ljg5IDEuNCA2LjIyIDEuNDYuOTMgMy4zMi45MyA0Ljc5LjAyTDIyIDIzLjM5IDIzLjM5IDIybC0zLjA4LTMuMW0tMy44MS4xYTIuNSAyLjUgMCAwIDEtMi41LTIuNSAyLjUgMi41IDAgMCAxIDIuNS0yLjUgMi41IDIuNSAwIDAgMSAyLjUgMi41IDIuNSAyLjUgMCAwIDEtMi41IDIuNVoiLz48L3N2Zz4="); } @media screen and (max-width: 59.9375em) { .md-search__overlay { - background-color: var(--darkreader-bg--md-default-bg-color); + background-color: var(--darkreader-bg--md-default-bg-color, #181a1b); } } @media screen and (min-width: 60em) { @@ -543,7 +518,7 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { } } .md-search__form { - background-color: var(--darkreader-bg--md-default-bg-color); + background-color: var(--darkreader-bg--md-default-bg-color, #181a1b); box-shadow: rgba(0, 0, 0, 0) 0px 0px 0.6rem; } @media screen and (min-width: 60em) { @@ -551,45 +526,46 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { background-color: rgba(0, 0, 0, 0.26); } .md-search__form:hover { - background-color: rgba(24, 26, 27, 0.12); + background-color: rgba(24, 26, 27, 0.12); } } [data-md-toggle="search"]:checked ~ .md-header .md-search__form { - background-color: var(--darkreader-bg--md-default-bg-color); + background-color: var(--darkreader-bg--md-default-bg-color, #181a1b); box-shadow: rgba(0, 0, 0, 0.07) 0px 0px 0.6rem; - color: var(--darkreader-text--md-default-fg-color); + color: var(--darkreader-text--md-default-fg-color, #e8e6e3); } .md-search__input { - background-image: initial; background-color: transparent; + background-image: initial; } .md-search__input::placeholder, .md-search__input ~ .md-search__icon { - color: var(--darkreader-text--md-default-fg-color--light); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } @media screen and (min-width: 60em) { .md-search__input { color: inherit; } .md-search__input::placeholder { - color: var(--darkreader-text--md-primary-bg-color--light); + color: var(--darkreader-text--md-primary-bg-color--light, #e8e6e3); } .md-search__input + .md-search__icon { - color: var(--darkreader-text--md-primary-bg-color); + color: var(--darkreader-text--md-primary-bg-color, #e8e6e3); } - [data-md-toggle="search"]:checked ~ .md-header .md-search__input + .md-search__icon, [data-md-toggle="search"]:checked ~ .md-header .md-search__input::placeholder { - color: var(--darkreader-text--md-default-fg-color--light); + [data-md-toggle="search"]:checked ~ .md-header .md-search__input + .md-search__icon, + [data-md-toggle="search"]:checked ~ .md-header .md-search__input::placeholder { + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } } .md-search__options > * { - color: var(--darkreader-text--md-default-fg-color--light); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } .md-search__options > :not(.focus-visible) { -webkit-tap-highlight-color: transparent; outline-color: initial; } .md-search__suggest { - color: var(--darkreader-text--md-default-fg-color--lighter); + color: var(--darkreader-text--md-default-fg-color--lighter, #e8e6e3); } @media screen and (min-width: 60em) { [data-md-toggle="search"]:checked ~ .md-header .md-search__output { @@ -597,22 +573,22 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { } } .md-search__scrollwrap { - background-color: var(--darkreader-bg--md-default-bg-color); + background-color: var(--darkreader-bg--md-default-bg-color, #181a1b); } @media screen and (min-width: 60em) { .md-search__scrollwrap::-webkit-scrollbar-thumb { - background-color: var(--darkreader-bg--md-default-fg-color--lighter); + background-color: var(--darkreader-bg--md-default-fg-color--lighter, #181a1b); } .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { - background-color: var(--darkreader-bg--md-accent-fg-color); + background-color: var(--darkreader-bg--md-accent-fg-color, #181a1b); } } .md-search-result { - color: var(--darkreader-text--md-default-fg-color); + color: var(--darkreader-text--md-default-fg-color, #e8e6e3); } .md-search-result__meta { - background-color: var(--darkreader-bg--md-default-fg-color--lightest); - color: var(--darkreader-text--md-default-fg-color--light); + background-color: var(--darkreader-bg--md-default-fg-color--lightest, #181a1b); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } .md-search-result__list { list-style-image: initial; @@ -627,31 +603,31 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { outline-color: initial; } .md-search-result__link:-webkit-any(:focus, :hover) { - background-color: var(--darkreader-bg--md-accent-fg-color--transparent); + background-color: var(--darkreader-bg--md-accent-fg-color--transparent, #181a1b); } .md-search-result__link:is(:focus, :hover) { - background-color: var(--darkreader-bg--md-accent-fg-color--transparent); + background-color: var(--darkreader-bg--md-accent-fg-color--transparent, #181a1b); } .md-search-result__more summary { - color: var(--darkreader-text--md-typeset-a-color); + color: var(--darkreader-text--md-typeset-a-color, #e8e6e3); outline-color: initial; } .md-search-result__more summary:-webkit-any(:focus, :hover) { - background-color: var(--darkreader-bg--md-accent-fg-color--transparent); - color: var(--darkreader-text--md-accent-fg-color); + background-color: var(--darkreader-bg--md-accent-fg-color--transparent, #181a1b); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-search-result__more summary:is(:focus, :hover) { - background-color: var(--darkreader-bg--md-accent-fg-color--transparent); - color: var(--darkreader-text--md-accent-fg-color); + background-color: var(--darkreader-bg--md-accent-fg-color--transparent, #181a1b); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-search-result__icon { - color: var(--darkreader-text--md-default-fg-color--light); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } .md-search-result__icon::after { background-color: currentcolor; } .md-search-result__teaser { - color: var(--darkreader-text--md-default-fg-color--light); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } .md-search-result__teaser mark { background-color: initial; @@ -659,44 +635,44 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { } .md-search-result mark { background-color: initial; - color: var(--darkreader-text--md-accent-fg-color); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-select__inner { - background-color: var(--darkreader-bg--md-default-bg-color); + background-color: var(--darkreader-bg--md-default-bg-color, #181a1b); box-shadow: var(--darkreader-bg--md-shadow-z2); - color: var(--darkreader-text--md-default-fg-color); + color: var(--darkreader-text--md-default-fg-color, #e8e6e3); } .md-select__inner::after { border-bottom-color: var(--darkreader-border--md-default-bg-color); border-left-color: transparent; border-right-color: transparent; - border-top-color: initial; + border-top: 0px; } .md-select__link { outline-color: initial; } .md-select__link:-webkit-any(:focus, :hover) { - color: var(--darkreader-text--md-accent-fg-color); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-select__link:is(:focus, :hover) { - color: var(--darkreader-text--md-accent-fg-color); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-select__link:focus { - background-color: var(--darkreader-bg--md-default-fg-color--lightest); + background-color: var(--darkreader-bg--md-default-fg-color--lightest, #181a1b); } @media screen and (max-width: 76.1875em) { .md-sidebar--primary { - background-color: var(--darkreader-bg--md-default-bg-color); + background-color: var(--darkreader-bg--md-default-bg-color, #181a1b); } [data-md-toggle="drawer"]:checked ~ .md-container .md-sidebar--primary { box-shadow: var(--darkreader-bg--md-shadow-z3); } } .md-sidebar__scrollwrap::-webkit-scrollbar-thumb { - background-color: var(--darkreader-bg--md-default-fg-color--lighter); + background-color: var(--darkreader-bg--md-default-fg-color--lighter, #181a1b); } .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { - background-color: var(--darkreader-bg--md-accent-fg-color); + background-color: var(--darkreader-bg--md-accent-fg-color, #181a1b); } @media screen and (max-width: 76.1875em) { .md-overlay { @@ -704,10 +680,10 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { } } :root { - --darkreader-bgimg--md-source-forks-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01IDMuMjVhLjc1Ljc1IDAgMSAxLTEuNSAwIC43NS43NSAwIDAgMSAxLjUgMHptMCAyLjEyMmEyLjI1IDIuMjUgMCAxIDAtMS41IDB2Ljg3OEEyLjI1IDIuMjUgMCAwIDAgNS43NSA4LjVoMS41djIuMTI4YTIuMjUxIDIuMjUxIDAgMSAwIDEuNSAwVjguNWgxLjVhMi4yNSAyLjI1IDAgMCAwIDIuMjUtMi4yNXYtLjg3OGEyLjI1IDIuMjUgMCAxIDAtMS41IDB2Ljg3OGEuNzUuNzUgMCAwIDEtLjc1Ljc1aC00LjVBLjc1Ljc1IDAgMCAxIDUgNi4yNXYtLjg3OHptMy43NSA3LjM3OGEuNzUuNzUgMCAxIDEtMS41IDAgLjc1Ljc1IDAgMCAxIDEuNSAwem0zLTguNzVhLjc1Ljc1IDAgMSAwIDAtMS41Ljc1Ljc1IDAgMCAwIDAgMS41eiIvPjwvc3ZnPiIgLz48L3N2Zz4="); - --darkreader-bgimg--md-source-repositories-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yIDIuNUEyLjUgMi41IDAgMCAxIDQuNSAwaDguNzVhLjc1Ljc1IDAgMCAxIC43NS43NXYxMi41YS43NS43NSAwIDAgMS0uNzUuNzVoLTIuNWEuNzUuNzUgMCAxIDEgMC0xLjVoMS43NXYtMmgtOGExIDEgMCAwIDAtLjcxNCAxLjcuNzUuNzUgMCAwIDEtMS4wNzIgMS4wNUEyLjQ5NSAyLjQ5NSAwIDAgMSAyIDExLjV2LTl6bTEwLjUtMVY5aC04Yy0uMzU2IDAtLjY5NC4wNzQtMSAuMjA4VjIuNWExIDEgMCAwIDEgMS0xaDh6TTUgMTIuMjV2My4yNWEuMjUuMjUgMCAwIDAgLjQuMmwxLjQ1LTEuMDg3YS4yNS4yNSAwIDAgMSAuMyAwTDguNiAxNS43YS4yNS4yNSAwIDAgMCAuNC0uMnYtMy4yNWEuMjUuMjUgMCAwIDAtLjI1LS4yNWgtMy41YS4yNS4yNSAwIDAgMC0uMjUuMjV6Ii8+PC9zdmc+IiAvPjwvc3ZnPg=="); - --darkreader-bgimg--md-source-stars-icon: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-source-version-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yLjUgNy43NzVWMi43NWEuMjUuMjUgMCAwIDEgLjI1LS4yNWg1LjAyNWEuMjUuMjUgMCAwIDEgLjE3Ny4wNzNsNi4yNSA2LjI1YS4yNS4yNSAwIDAgMSAwIC4zNTRsLTUuMDI1IDUuMDI1YS4yNS4yNSAwIDAgMS0uMzU0IDBsLTYuMjUtNi4yNWEuMjUuMjUgMCAwIDEtLjA3My0uMTc3em0tMS41IDBWMi43NUMxIDEuNzg0IDEuNzg0IDEgMi43NSAxaDUuMDI1Yy40NjQgMCAuOTEuMTg0IDEuMjM4LjUxM2w2LjI1IDYuMjVhMS43NSAxLjc1IDAgMCAxIDAgMi40NzRsLTUuMDI2IDUuMDI2YTEuNzUgMS43NSAwIDAgMS0yLjQ3NCAwbC02LjI1LTYuMjVBMS43NSAxLjc1IDAgMCAxIDEgNy43NzV6TTYgNWExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJ6Ii8+PC9zdmc+IiAvPjwvc3ZnPg=="); + --darkreader-bgimg--md-source-forks-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwmbHQ7c3ZnIHhtbG5zPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJnF1b3Q7IHZpZXdCb3g9JnF1b3Q7MCAwIDE2IDE2JnF1b3Q7Jmd0OyZsdDtwYXRoIGZpbGwtcnVsZT0mcXVvdDtldmVub2RkJnF1b3Q7IGQ9JnF1b3Q7TTUgMy4yNWEuNzUuNzUgMCAxIDEtMS41IDAgLjc1Ljc1IDAgMCAxIDEuNSAwem0wIDIuMTIyYTIuMjUgMi4yNSAwIDEgMC0xLjUgMHYuODc4QTIuMjUgMi4yNSAwIDAgMCA1Ljc1IDguNWgxLjV2Mi4xMjhhMi4yNTEgMi4yNTEgMCAxIDAgMS41IDBWOC41aDEuNWEyLjI1IDIuMjUgMCAwIDAgMi4yNS0yLjI1di0uODc4YTIuMjUgMi4yNSAwIDEgMC0xLjUgMHYuODc4YS43NS43NSAwIDAgMS0uNzUuNzVoLTQuNUEuNzUuNzUgMCAwIDEgNSA2LjI1di0uODc4em0zLjc1IDcuMzc4YS43NS43NSAwIDEgMS0xLjUgMCAuNzUuNzUgMCAwIDEgMS41IDB6bTMtOC43NWEuNzUuNzUgMCAxIDAgMC0xLjUuNzUuNzUgMCAwIDAgMCAxLjV6JnF1b3Q7LyZndDsmbHQ7L3N2ZyZndDsiIC8+PC9zdmc+"); + --darkreader-bgimg--md-source-repositories-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwmbHQ7c3ZnIHhtbG5zPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJnF1b3Q7IHZpZXdCb3g9JnF1b3Q7MCAwIDE2IDE2JnF1b3Q7Jmd0OyZsdDtwYXRoIGZpbGwtcnVsZT0mcXVvdDtldmVub2RkJnF1b3Q7IGQ9JnF1b3Q7TTIgMi41QTIuNSAyLjUgMCAwIDEgNC41IDBoOC43NWEuNzUuNzUgMCAwIDEgLjc1Ljc1djEyLjVhLjc1Ljc1IDAgMCAxLS43NS43NWgtMi41YS43NS43NSAwIDEgMSAwLTEuNWgxLjc1di0yaC04YTEgMSAwIDAgMC0uNzE0IDEuNy43NS43NSAwIDAgMS0xLjA3MiAxLjA1QTIuNDk1IDIuNDk1IDAgMCAxIDIgMTEuNXYtOXptMTAuNS0xVjloLThjLS4zNTYgMC0uNjk0LjA3NC0xIC4yMDhWMi41YTEgMSAwIDAgMSAxLTFoOHpNNSAxMi4yNXYzLjI1YS4yNS4yNSAwIDAgMCAuNC4ybDEuNDUtMS4wODdhLjI1LjI1IDAgMCAxIC4zIDBMOC42IDE1LjdhLjI1LjI1IDAgMCAwIC40LS4ydi0zLjI1YS4yNS4yNSAwIDAgMC0uMjUtLjI1aC0zLjVhLjI1LjI1IDAgMCAwLS4yNS4yNXomcXVvdDsvJmd0OyZsdDsvc3ZnJmd0OyIgLz48L3N2Zz4="); + --darkreader-bgimg--md-source-stars-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAuMjVhLjc1Ljc1IDAgMCAxIC42NzMuNDE4bDEuODgyIDMuODE1IDQuMjEuNjEyYS43NS43NSAwIDAgMSAuNDE2IDEuMjc5bC0zLjA0NiAyLjk3LjcxOSA0LjE5MmEuNzUuNzUgMCAwIDEtMS4wODguNzkxTDggMTIuMzQ3bC0zLjc2NiAxLjk4YS43NS43NSAwIDAgMS0xLjA4OC0uNzlsLjcyLTQuMTk0TC44MTggNi4zNzRhLjc1Ljc1IDAgMCAxIC40MTYtMS4yOGw0LjIxLS42MTFMNy4zMjcuNjY4QS43NS43NSAwIDAgMSA4IC4yNXptMCAyLjQ0NUw2LjYxNSA1LjVhLjc1Ljc1IDAgMCAxLS41NjQuNDFsLTMuMDk3LjQ1IDIuMjQgMi4xODRhLjc1Ljc1IDAgMCAxIC4yMTYuNjY0bC0uNTI4IDMuMDg0IDIuNzY5LTEuNDU2YS43NS43NSAwIDAgMSAuNjk4IDBsMi43NyAxLjQ1Ni0uNTMtMy4wODRhLjc1Ljc1IDAgMCAxIC4yMTYtLjY2NGwyLjI0LTIuMTgzLTMuMDk2LS40NWEuNzUuNzUgMCAwIDEtLjU2NC0uNDFMOCAyLjY5NHYuMDAxeiIvPjwvc3ZnPg=="); + --darkreader-bgimg--md-source-version-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwmbHQ7c3ZnIHhtbG5zPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJnF1b3Q7IHZpZXdCb3g9JnF1b3Q7MCAwIDE2IDE2JnF1b3Q7Jmd0OyZsdDtwYXRoIGZpbGwtcnVsZT0mcXVvdDtldmVub2RkJnF1b3Q7IGQ9JnF1b3Q7TTIuNSA3Ljc3NVYyLjc1YS4yNS4yNSAwIDAgMSAuMjUtLjI1aDUuMDI1YS4yNS4yNSAwIDAgMSAuMTc3LjA3M2w2LjI1IDYuMjVhLjI1LjI1IDAgMCAxIDAgLjM1NGwtNS4wMjUgNS4wMjVhLjI1LjI1IDAgMCAxLS4zNTQgMGwtNi4yNS02LjI1YS4yNS4yNSAwIDAgMS0uMDczLS4xNzd6bS0xLjUgMFYyLjc1QzEgMS43ODQgMS43ODQgMSAyLjc1IDFoNS4wMjVjLjQ2NCAwIC45MS4xODQgMS4yMzguNTEzbDYuMjUgNi4yNWExLjc1IDEuNzUgMCAwIDEgMCAyLjQ3NGwtNS4wMjYgNS4wMjZhMS43NSAxLjc1IDAgMCAxLTIuNDc0IDBsLTYuMjUtNi4yNUExLjc1IDEuNzUgMCAwIDEgMSA3Ljc3NXpNNiA1YTEgMSAwIDEgMCAwIDIgMSAxIDAgMCAwIDAtMnomcXVvdDsvJmd0OyZsdDsvc3ZnJmd0OyIgLz48L3N2Zz4="); } .md-source { outline-color: var(--darkreader-border--md-accent-fg-color); @@ -716,8 +692,8 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { background-color: currentcolor; } .md-tabs { - background-color: var(--darkreader-bg--md-primary-fg-color); - color: var(--darkreader-text--md-primary-bg-color); + background-color: var(--darkreader-bg--md-primary-fg-color, #181a1b); + color: var(--darkreader-text--md-primary-bg-color, #e8e6e3); } .md-tabs__list { list-style-image: initial; @@ -734,7 +710,7 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { color: inherit; } :root { - --darkreader-bgimg--md-tag-icon: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-tag-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0ibTUuNDEgMjEgLjcxLTRoLTRsLjM1LTJoNGwxLjA2LTZoLTRsLjM1LTJoNGwuNzEtNGgybC0uNzEgNGg2bC43MS00aDJsLS43MSA0aDRsLS4zNSAyaC00bC0xLjA2IDZoNGwtLjM1IDJoLTRsLS43MSA0aC0ybC43MS00aC02bC0uNzEgNGgtMk05LjUzIDlsLTEuMDYgNmg2bDEuMDYtNmgtNloiLz48L3N2Zz4="); } .md-typeset .md-tag { background: var(--darkreader-bg--md-default-fg-color--lightest); @@ -746,25 +722,25 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { } .md-typeset .md-tag[href]:focus, .md-typeset .md-tag[href]:hover { - background-color: var(--darkreader-bg--md-accent-fg-color); - color: var(--darkreader-text--md-accent-bg-color); + background-color: var(--darkreader-bg--md-accent-fg-color, #181a1b); + color: var(--darkreader-text--md-accent-bg-color, #e8e6e3); } .md-typeset .md-tag-icon::before { - background-color: var(--darkreader-bg--md-default-fg-color--lighter); + background-color: var(--darkreader-bg--md-default-fg-color--lighter, #181a1b); } .md-typeset .md-tag-icon:-webkit-any(a:focus, a:hover)::before { - background-color: var(--darkreader-bg--md-accent-bg-color); + background-color: var(--darkreader-bg--md-accent-bg-color, #181a1b); } .md-typeset .md-tag-icon:is(a:focus, a:hover)::before { - background-color: var(--darkreader-bg--md-accent-bg-color); + background-color: var(--darkreader-bg--md-accent-bg-color, #181a1b); } :root { --md-tooltip-width: 20rem; } .md-tooltip { - background-color: var(--darkreader-bg--md-default-bg-color); + background-color: var(--darkreader-bg--md-default-bg-color, #181a1b); box-shadow: var(--darkreader-bg--md-shadow-z2); - color: var(--darkreader-text--md-default-fg-color); + color: var(--darkreader-text--md-default-fg-color, #e8e6e3); } :is(.focus-visible > .md-tooltip, .md-tooltip:target) { outline: var(--darkreader-border--md-accent-fg-color) auto; @@ -785,30 +761,30 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { color: rgb(232, 230, 227); } .md-annotation__index::after { - background-color: var(--darkreader-bg--md-default-fg-color--lighter); + background-color: var(--darkreader-bg--md-default-fg-color--lighter, #181a1b); } :is(.md-tooltip--active + .md-annotation__index, :hover > .md-annotation__index) { - color: var(--darkreader-text--md-accent-bg-color); + color: var(--darkreader-text--md-accent-bg-color, #e8e6e3); } :is(.md-tooltip--active + .md-annotation__index, :hover > .md-annotation__index)::after { - background-color: var(--darkreader-bg--md-accent-fg-color); + background-color: var(--darkreader-bg--md-accent-fg-color, #181a1b); } .md-top { - background-color: var(--darkreader-bg--md-default-bg-color); + background-color: var(--darkreader-bg--md-default-bg-color, #181a1b); box-shadow: var(--darkreader-bg--md-shadow-z2); - color: var(--darkreader-text--md-default-fg-color--light); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); outline-color: initial; } .md-top:-webkit-any(:focus, :hover) { - background-color: var(--darkreader-bg--md-accent-fg-color); - color: var(--darkreader-text--md-accent-bg-color); + background-color: var(--darkreader-bg--md-accent-fg-color, #181a1b); + color: var(--darkreader-text--md-accent-bg-color, #e8e6e3); } .md-top:is(:focus, :hover) { - background-color: var(--darkreader-bg--md-accent-fg-color); - color: var(--darkreader-text--md-accent-bg-color); + background-color: var(--darkreader-bg--md-accent-fg-color, #181a1b); + color: var(--darkreader-text--md-accent-bg-color, #e8e6e3); } :root { - --darkreader-bgimg--md-version-icon: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-version-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMjAgNTEyIj48IS0tISBGb250IEF3ZXNvbWUgRnJlZSA2LjIuMCBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKSBDb3B5cmlnaHQgMjAyMiBGb250aWNvbnMsIEluYy4tLT48cGF0aCBkPSJNMTM3LjQgMzc0LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTI4LTEyOGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOVMzMDEgMTkxLjkgMjg4IDE5MS45TDMyIDE5MmMtMTIuOSAwLTI0LjYgNy44LTI5LjYgMTkuOHMtMi4yIDI1LjcgNi45IDM0LjlsMTI4IDEyOHoiLz48L3N2Zz4="); } .md-version__current { color: inherit; @@ -818,47 +794,49 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { background-color: currentcolor; } .md-version__list { - background-color: var(--darkreader-bg--md-default-bg-color); + background-color: var(--darkreader-bg--md-default-bg-color, #181a1b); box-shadow: var(--darkreader-bg--md-shadow-z2); - color: var(--darkreader-text--md-default-fg-color); + color: var(--darkreader-text--md-default-fg-color, #e8e6e3); } .md-version__link { outline-color: initial; } .md-version__link:-webkit-any(:focus, :hover) { - color: var(--darkreader-text--md-accent-fg-color); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-version__link:is(:focus, :hover) { - color: var(--darkreader-text--md-accent-fg-color); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-version__link:focus { - background-color: var(--darkreader-bg--md-default-fg-color--lightest); + background-color: var(--darkreader-bg--md-default-fg-color--lightest, #181a1b); } :root { - --darkreader-bgimg--md-admonition-icon--note: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-admonition-icon--abstract: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-admonition-icon--info: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-admonition-icon--tip: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-admonition-icon--success: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-admonition-icon--question: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-admonition-icon--warning: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-admonition-icon--failure: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-admonition-icon--danger: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-admonition-icon--bug: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-admonition-icon--example: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-admonition-icon--quote: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-admonition-icon--abstract: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTE3IDlIN1Y3aDEwbTAgNkg3di0yaDEwbS0zIDZIN3YtMmg3TTEyIDNhMSAxIDAgMCAxIDEgMSAxIDEgMCAwIDEtMSAxIDEgMSAwIDAgMS0xLTEgMSAxIDAgMCAxIDEtMW03IDBoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YTIgMiAwIDAgMCAyLTJWNWEyIDIgMCAwIDAtMi0yWiIvPjwvc3ZnPg=="); + --darkreader-bgimg--md-admonition-icon--bug: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTExIDEzaDJ2MWgtMnYtMW0xMC04djZjMCA1LjUtMy44IDEwLjctOSAxMi01LjItMS4zLTktNi41LTktMTJWNWw5LTQgOSA0bS00IDVoLTIuMmMtLjItLjYtLjYtMS4xLTEuMS0xLjVsMS4yLTEuMi0uNy0uN0wxMi44IDhIMTJjLS4yIDAtLjUgMC0uNy4xTDkuOSA2LjZsLS44LjggMS4yIDEuMmMtLjUuMy0uOS44LTEuMSAxLjRIN3YxaDJ2MUg3djFoMnYxSDd2MWgyLjJjLjQgMS4yIDEuNSAyIDIuOCAyczIuNC0uOCAyLjgtMkgxN3YtMWgtMnYtMWgydi0xaC0ydi0xaDJ2LTFtLTYgMmgydi0xaC0ydjFaIi8+PC9zdmc+"); + --darkreader-bgimg--md-admonition-icon--danger: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0ibTExLjUgMjAgNC44Ni05LjczSDEzVjRsLTUgOS43M2gzLjVWMjBNMTIgMmMyLjc1IDAgNS4xIDEgNy4wNSAyLjk1QzIxIDYuOSAyMiA5LjI1IDIyIDEycy0xIDUuMS0yLjk1IDcuMDVDMTcuMSAyMSAxNC43NSAyMiAxMiAyMnMtNS4xLTEtNy4wNS0yLjk1QzMgMTcuMSAyIDE0Ljc1IDIgMTJzMS01LjEgMi45NS03LjA1QzYuOSAzIDkuMjUgMiAxMiAyWiIvPjwvc3ZnPg=="); + --darkreader-bgimg--md-admonition-icon--example: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTcgMnYyaDF2MTRhNCA0IDAgMCAwIDQgNCA0IDQgMCAwIDAgNC00VjRoMVYySDdtNCAxNGMtLjYgMC0xLS40LTEtMXMuNC0xIDEtMSAxIC40IDEgMS0uNCAxLTEgMW0yLTRjLS42IDAtMS0uNC0xLTFzLjQtMSAxLTEgMSAuNCAxIDEtLjQgMS0xIDFtMS01aC00VjRoNHYzWiIvPjwvc3ZnPg=="); + --darkreader-bgimg--md-admonition-icon--failure: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTE5IDYuNDEgMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMiAxOSA2LjQxWiIvPjwvc3ZnPg=="); + --darkreader-bgimg--md-admonition-icon--info: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEzIDloLTJWN2gybTAgMTBoLTJ2LTZoMm0tMS05QTEwIDEwIDAgMCAwIDIgMTJhMTAgMTAgMCAwIDAgMTAgMTAgMTAgMTAgMCAwIDAgMTAtMTBBMTAgMTAgMCAwIDAgMTIgMloiLz48L3N2Zz4="); + --darkreader-bgimg--md-admonition-icon--note: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJtMy4xIDUuMDdjLjE0IDAgLjI4LjA1LjQuMTZsMS4yNyAxLjI3Yy4yMy4yMi4yMy41NyAwIC43OGwtMSAxLTIuMDUtMi4wNSAxLTFjLjEtLjExLjI0LS4xNi4zOC0uMTZtLTEuOTcgMS43NCAyLjA2IDIuMDYtNi4wNiA2LjA2SDcuMDd2LTIuMDZsNi4wNi02LjA2WiIvPjwvc3ZnPg=="); + --darkreader-bgimg--md-admonition-icon--question: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0ibTE1LjA3IDExLjI1LS45LjkyQzEzLjQ1IDEyLjg5IDEzIDEzLjUgMTMgMTVoLTJ2LS41YzAtMS4xMS40NS0yLjExIDEuMTctMi44M2wxLjI0LTEuMjZjLjM3LS4zNi41OS0uODYuNTktMS40MWEyIDIgMCAwIDAtMi0yIDIgMiAwIDAgMC0yIDJIOGE0IDQgMCAwIDEgNC00IDQgNCAwIDAgMSA0IDQgMy4yIDMuMiAwIDAgMS0uOTMgMi4yNU0xMyAxOWgtMnYtMmgyTTEyIDJBMTAgMTAgMCAwIDAgMiAxMmExMCAxMCAwIDAgMCAxMCAxMCAxMCAxMCAwIDAgMCAxMC0xMGMwLTUuNTMtNC41LTEwLTEwLTEwWiIvPjwvc3ZnPg=="); + --darkreader-bgimg--md-admonition-icon--quote: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTE0IDE3aDNsMi00VjdoLTZ2NmgzTTYgMTdoM2wyLTRWN0g1djZoM2wtMiA0WiIvPjwvc3ZnPg=="); + --darkreader-bgimg--md-admonition-icon--success: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTIxIDcgOSAxOWwtNS41LTUuNSAxLjQxLTEuNDFMOSAxNi4xNyAxOS41OSA1LjU5IDIxIDdaIi8+PC9zdmc+"); + --darkreader-bgimg--md-admonition-icon--tip: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTE3LjY2IDExLjJjLS4yMy0uMy0uNTEtLjU2LS43Ny0uODItLjY3LS42LTEuNDMtMS4wMy0yLjA3LTEuNjZDMTMuMzMgNy4yNiAxMyA0Ljg1IDEzLjk1IDNjLS45NS4yMy0xLjc4Ljc1LTIuNDkgMS4zMi0yLjU5IDIuMDgtMy42MSA1Ljc1LTIuMzkgOC45LjA0LjEuMDguMi4wOC4zMyAwIC4yMi0uMTUuNDItLjM1LjUtLjIzLjEtLjQ3LjA0LS42Ni0uMTJhLjU4LjU4IDAgMCAxLS4xNC0uMTdjLTEuMTMtMS40My0xLjMxLTMuNDgtLjU1LTUuMTJDNS43OCAxMCA0Ljg3IDEyLjMgNSAxNC40N2MuMDYuNS4xMiAxIC4yOSAxLjUuMTQuNi40MSAxLjIuNzEgMS43MyAxLjA4IDEuNzMgMi45NSAyLjk3IDQuOTYgMy4yMiAyLjE0LjI3IDQuNDMtLjEyIDYuMDctMS42IDEuODMtMS42NiAyLjQ3LTQuMzIgMS41My02LjZsLS4xMy0uMjZjLS4yMS0uNDYtLjc3LTEuMjYtLjc3LTEuMjZtLTMuMTYgNi4zYy0uMjguMjQtLjc0LjUtMS4xLjYtMS4xMi40LTIuMjQtLjE2LTIuOS0uODIgMS4xOS0uMjggMS45LTEuMTYgMi4xMS0yLjA1LjE3LS44LS4xNS0xLjQ2LS4yOC0yLjIzLS4xMi0uNzQtLjEtMS4zNy4xNy0yLjA2LjE5LjM4LjM5Ljc2LjYzIDEuMDYuNzcgMSAxLjk4IDEuNDQgMi4yNCAyLjguMDQuMTQuMDYuMjguMDYuNDMuMDMuODItLjMzIDEuNzItLjkzIDIuMjdaIi8+PC9zdmc+"); + --darkreader-bgimg--md-admonition-icon--warning: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEzIDE0aC0yVjloMm0wIDloLTJ2LTJoMk0xIDIxaDIyTDEyIDIgMSAyMVoiLz48L3N2Zz4="); } .md-typeset .admonition, .md-typeset details { - background-color: var(--darkreader-bg--md-admonition-bg-color); + background-color: var(--darkreader-bg--md-admonition-bg-color, #181a1b); border-color: rgb(0, 59, 158); box-shadow: var(--darkreader-bg--md-shadow-z1); - color: var(--darkreader-text--md-admonition-fg-color); + color: var(--darkreader-text--md-admonition-fg-color, #e8e6e3); } .md-typeset .admonition-title, .md-typeset summary { background-color: rgba(0, 61, 163, 0.1); border-color: initial; + border-style: none; + border-width: initial; } .md-typeset .admonition-title::before, .md-typeset summary::before { @@ -1157,36 +1135,36 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { color: rgb(171, 163, 152); } :root { - --darkreader-bgimg--md-footnotes-icon: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-footnotes-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTE5IDd2NEg1LjgzbDMuNTgtMy41OUw4IDZsLTYgNiA2IDYgMS40MS0xLjQyTDUuODMgMTNIMjFWN2gtMloiLz48L3N2Zz4="); } .md-typeset .footnote { - color: var(--darkreader-text--md-default-fg-color--light); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } .md-typeset .footnote > ol > li:target { - color: var(--darkreader-text--md-default-fg-color); + color: var(--darkreader-text--md-default-fg-color, #e8e6e3); } .md-typeset [id^="fnref:"]:target > .footnote-ref { outline-color: initial; } .md-typeset .footnote-backref { - color: var(--darkreader-text--md-typeset-a-color); + color: var(--darkreader-text--md-typeset-a-color, #e8e6e3); } .md-typeset .footnote-backref:hover { - color: var(--darkreader-text--md-accent-fg-color); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-typeset .footnote-backref::before { background-color: currentcolor; } .md-typeset .headerlink { - color: var(--darkreader-text--md-default-fg-color--lighter); + color: var(--darkreader-text--md-default-fg-color--lighter, #e8e6e3); } .md-typeset .headerlink:-webkit-any(:focus, :hover), .md-typeset :target > .headerlink { - color: var(--darkreader-text--md-accent-fg-color); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-typeset .headerlink:is(:focus, :hover), .md-typeset :target > .headerlink { - color: var(--darkreader-text--md-accent-fg-color); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-typeset :target { --md-scroll-margin: 3.6rem; @@ -1207,19 +1185,19 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { --md-scroll-offset: 0.15rem; } .md-typeset del.critic { - background-color: var(--darkreader-bg--md-typeset-del-color); + background-color: var(--darkreader-bg--md-typeset-del-color, #181a1b); } .md-typeset ins.critic { - background-color: var(--darkreader-bg--md-typeset-ins-color); + background-color: var(--darkreader-bg--md-typeset-ins-color, #181a1b); } .md-typeset .critic.comment { - color: var(--darkreader-text--md-code-hl-comment-color); + color: var(--darkreader-text--md-code-hl-comment-color, #e8e6e3); } .md-typeset .critic.block { box-shadow: none; } :root { - --darkreader-bgimg--md-details-icon: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-details-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTguNTkgMTYuNTggMTMuMTcgMTIgOC41OSA3LjQxIDEwIDZsNiA2LTYgNi0xLjQxLTEuNDJaIi8+PC9zdmc+"); } .md-typeset details:not([open]) { box-shadow: none; @@ -1241,116 +1219,116 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { fill: currentcolor; } .highlight :-webkit-any(.o, .ow) { - color: var(--darkreader-text--md-code-hl-operator-color); + color: var(--darkreader-text--md-code-hl-operator-color, #e8e6e3); } .highlight :is(.o, .ow) { - color: var(--darkreader-text--md-code-hl-operator-color); + color: var(--darkreader-text--md-code-hl-operator-color, #e8e6e3); } .highlight .p { - color: var(--darkreader-text--md-code-hl-punctuation-color); + color: var(--darkreader-text--md-code-hl-punctuation-color, #e8e6e3); } .highlight :-webkit-any(.cpf, .l, .s, .sb, .sc, .s2, .si, .s1, .ss) { - color: var(--darkreader-text--md-code-hl-string-color); + color: var(--darkreader-text--md-code-hl-string-color, #e8e6e3); } .highlight :is(.cpf, .l, .s, .sb, .sc, .s2, .si, .s1, .ss) { - color: var(--darkreader-text--md-code-hl-string-color); + color: var(--darkreader-text--md-code-hl-string-color, #e8e6e3); } .highlight :-webkit-any(.cp, .se, .sh, .sr, .sx) { - color: var(--darkreader-text--md-code-hl-special-color); + color: var(--darkreader-text--md-code-hl-special-color, #e8e6e3); } .highlight :is(.cp, .se, .sh, .sr, .sx) { - color: var(--darkreader-text--md-code-hl-special-color); + color: var(--darkreader-text--md-code-hl-special-color, #e8e6e3); } .highlight :-webkit-any(.m, .mb, .mf, .mh, .mi, .il, .mo) { - color: var(--darkreader-text--md-code-hl-number-color); + color: var(--darkreader-text--md-code-hl-number-color, #e8e6e3); } .highlight :is(.m, .mb, .mf, .mh, .mi, .il, .mo) { - color: var(--darkreader-text--md-code-hl-number-color); + color: var(--darkreader-text--md-code-hl-number-color, #e8e6e3); } .highlight :-webkit-any(.k, .kd, .kn, .kp, .kr, .kt) { - color: var(--darkreader-text--md-code-hl-keyword-color); + color: var(--darkreader-text--md-code-hl-keyword-color, #e8e6e3); } .highlight :is(.k, .kd, .kn, .kp, .kr, .kt) { - color: var(--darkreader-text--md-code-hl-keyword-color); + color: var(--darkreader-text--md-code-hl-keyword-color, #e8e6e3); } .highlight :-webkit-any(.kc, .n) { - color: var(--darkreader-text--md-code-hl-name-color); + color: var(--darkreader-text--md-code-hl-name-color, #e8e6e3); } .highlight :is(.kc, .n) { - color: var(--darkreader-text--md-code-hl-name-color); + color: var(--darkreader-text--md-code-hl-name-color, #e8e6e3); } .highlight :-webkit-any(.no, .nb, .bp) { - color: var(--darkreader-text--md-code-hl-constant-color); + color: var(--darkreader-text--md-code-hl-constant-color, #e8e6e3); } .highlight :is(.no, .nb, .bp) { - color: var(--darkreader-text--md-code-hl-constant-color); + color: var(--darkreader-text--md-code-hl-constant-color, #e8e6e3); } .highlight :-webkit-any(.nc, .ne, .nf, .nn) { - color: var(--darkreader-text--md-code-hl-function-color); + color: var(--darkreader-text--md-code-hl-function-color, #e8e6e3); } .highlight :is(.nc, .ne, .nf, .nn) { - color: var(--darkreader-text--md-code-hl-function-color); + color: var(--darkreader-text--md-code-hl-function-color, #e8e6e3); } .highlight :-webkit-any(.nd, .ni, .nl, .nt) { - color: var(--darkreader-text--md-code-hl-keyword-color); + color: var(--darkreader-text--md-code-hl-keyword-color, #e8e6e3); } .highlight :is(.nd, .ni, .nl, .nt) { - color: var(--darkreader-text--md-code-hl-keyword-color); + color: var(--darkreader-text--md-code-hl-keyword-color, #e8e6e3); } .highlight :-webkit-any(.c, .cm, .c1, .ch, .cs, .sd) { - color: var(--darkreader-text--md-code-hl-comment-color); + color: var(--darkreader-text--md-code-hl-comment-color, #e8e6e3); } .highlight :is(.c, .cm, .c1, .ch, .cs, .sd) { - color: var(--darkreader-text--md-code-hl-comment-color); + color: var(--darkreader-text--md-code-hl-comment-color, #e8e6e3); } .highlight :-webkit-any(.na, .nv, .vc, .vg, .vi) { - color: var(--darkreader-text--md-code-hl-variable-color); + color: var(--darkreader-text--md-code-hl-variable-color, #e8e6e3); } .highlight :is(.na, .nv, .vc, .vg, .vi) { - color: var(--darkreader-text--md-code-hl-variable-color); + color: var(--darkreader-text--md-code-hl-variable-color, #e8e6e3); } .highlight :-webkit-any(.ge, .gr, .gh, .go, .gp, .gs, .gu, .gt) { - color: var(--darkreader-text--md-code-hl-generic-color); + color: var(--darkreader-text--md-code-hl-generic-color, #e8e6e3); } .highlight :is(.ge, .gr, .gh, .go, .gp, .gs, .gu, .gt) { - color: var(--darkreader-text--md-code-hl-generic-color); + color: var(--darkreader-text--md-code-hl-generic-color, #e8e6e3); } .highlight .gd { - background-color: var(--darkreader-bg--md-typeset-del-color); + background-color: var(--darkreader-bg--md-typeset-del-color, #181a1b); } .highlight .gi { - background-color: var(--darkreader-bg--md-typeset-ins-color); + background-color: var(--darkreader-bg--md-typeset-ins-color, #181a1b); } .highlight .hll { - background-color: var(--darkreader-bg--md-code-hl-color); + background-color: var(--darkreader-bg--md-code-hl-color, #181a1b); } .highlight span.filename { - background-color: var(--darkreader-bg--md-code-bg-color); + background-color: var(--darkreader-bg--md-default-fg-color--lighter, #181a1b); border-bottom: .05rem solid var(--darkreader-border--md-default-fg-color--lightest); } .highlight [data-linenos]::before { - background-color: var(--darkreader-bg--md-code-bg-color); + background-color: var(--darkreader-bg--md-code-bg-color, #181a1b); box-shadow: -.05rem 0 var(--darkreader-bg--md-default-fg-color--lightest) inset; - color: var(--darkreader-text--md-default-fg-color--light); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } .highlighttable .linenos { - background-color: var(--darkreader-bg--md-code-bg-color); + background-color: var(--darkreader-bg--md-code-bg-color, #181a1b); } .highlighttable .linenodiv { box-shadow: -.05rem 0 var(--darkreader-bg--md-default-fg-color--lightest) inset; } .highlighttable .linenodiv pre { - color: var(--darkreader-text--md-default-fg-color--light); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } .linenodiv a { color: inherit; } .md-typeset .keys span { - color: var(--darkreader-text--md-default-fg-color--light); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } :root { - --darkreader-bgimg--md-tabbed-icon--prev: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-tabbed-icon--next: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-tabbed-icon--next: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTguNTkgMTYuNTggMTMuMTcgMTIgOC41OSA3LjQxIDEwIDZsNiA2LTYgNi0xLjQxLTEuNDJaIi8+PC9zdmc+"); + --darkreader-bgimg--md-tabbed-icon--prev: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTE1LjQxIDE2LjU4IDEwLjgzIDEybDQuNTgtNC41OUwxNCA2bC02IDYgNiA2IDEuNDEtMS40MloiLz48L3N2Zz4="); } .md-typeset .tabbed-set > input:target { --md-scroll-offset: 0.625em; @@ -1365,28 +1343,26 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { } .md-typeset .tabbed-labels > label { border-bottom-color: transparent; - color: var(--darkreader-text--md-default-fg-color--light); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } .md-typeset .tabbed-labels > label:hover { - color: var(--darkreader-text--md-accent-fg-color); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-typeset .tabbed-button { - color: var(--darkreader-text--md-default-fg-color--light); + color: var(--darkreader-text--md-default-fg-color--light, #e8e6e3); } .md-typeset .tabbed-button:hover { - background-color: var(--darkreader-bg--md-accent-fg-color--transparent); - color: var(--darkreader-text--md-accent-fg-color); + background-color: var(--darkreader-bg--md-accent-fg-color--transparent, #181a1b); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-typeset .tabbed-button::after { background-color: currentcolor; } .md-typeset .tabbed-control { - background: linear-gradient(to right, - var(--darkreader-bg--md-default-bg-color) 60%,transparent); + background: linear-gradient(to right,var(--darkreader-bg--md-default-bg-color) 60%,transparent); } .md-typeset .tabbed-control--next { - background: linear-gradient(to left, - var(--darkreader-bg--md-default-bg-color) 60%,transparent); + background: linear-gradient(to left,var(--darkreader-bg--md-default-bg-color) 60%,transparent); } @media screen { .md-typeset .tabbed-set > input:first-child:checked ~ .tabbed-labels > :first-child, @@ -1409,7 +1385,7 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { .md-typeset .tabbed-set > input:nth-child(7):checked ~ .tabbed-labels > :nth-child(7), .md-typeset .tabbed-set > input:nth-child(8):checked ~ .tabbed-labels > :nth-child(8), .md-typeset .tabbed-set > input:nth-child(9):checked ~ .tabbed-labels > :nth-child(9) { - color: var(--darkreader-text--md-accent-fg-color); + color: var(--darkreader-text--md-accent-fg-color, #e8e6e3); } .md-typeset .no-js .tabbed-set > input:first-child:checked ~ .tabbed-labels > :first-child, .md-typeset .no-js .tabbed-set > input:nth-child(10):checked ~ .tabbed-labels > :nth-child(10), @@ -1474,26 +1450,25 @@ html .md-footer-meta.md-typeset a:is(:focus, :hover) { .md-typeset .tabbed-set > input:nth-child(7).focus-visible ~ .tabbed-labels > :nth-child(7), .md-typeset .tabbed-set > input:nth-child(8).focus-visible ~ .tabbed-labels > :nth-child(8), .md-typeset .tabbed-set > input:nth-child(9).focus-visible ~ .tabbed-labels > :nth-child(9) { - background-color: var(--darkreader-bg--md-accent-fg-color--transparent); + background-color: var(--darkreader-bg--md-accent-fg-color--transparent, #181a1b); } :root { - --darkreader-bgimg--md-tasklist-icon: url("data:image/svg+xml;charset=utf-8,"); - --darkreader-bgimg--md-tasklist-icon--checked: url("data:image/svg+xml;charset=utf-8,"); + --darkreader-bgimg--md-tasklist-icon: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSAxMkMxIDUuOTI1IDUuOTI1IDEgMTIgMXMxMSA0LjkyNSAxMSAxMS00LjkyNSAxMS0xMSAxMVMxIDE4LjA3NSAxIDEyem0xNi4yOC0yLjcyYS43NS43NSAwIDAgMC0xLjA2LTEuMDZsLTUuOTcgNS45Ny0yLjQ3LTIuNDdhLjc1Ljc1IDAgMCAwLTEuMDYgMS4wNmwzIDNhLjc1Ljc1IDAgMCAwIDEuMDYgMGw2LjUtNi41eiIvPjwvc3ZnPg=="); + --darkreader-bgimg--md-tasklist-icon--checked: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSAxMkMxIDUuOTI1IDUuOTI1IDEgMTIgMXMxMSA0LjkyNSAxMSAxMS00LjkyNSAxMS0xMSAxMVMxIDE4LjA3NSAxIDEyem0xNi4yOC0yLjcyYS43NS43NSAwIDAgMC0xLjA2LTEuMDZsLTUuOTcgNS45Ny0yLjQ3LTIuNDdhLjc1Ljc1IDAgMCAwLTEuMDYgMS4wNmwzIDNhLjc1Ljc1IDAgMCAwIDEuMDYgMGw2LjUtNi41eiIvPjwvc3ZnPg=="); } .md-typeset .task-list-indicator::before { - background-color: var(--darkreader-bg--md-default-fg-color--lightest); + background-color: var(--darkreader-bg--md-default-fg-color--lightest, #181a1b); } .md-typeset [type="checkbox"]:checked + .task-list-indicator::before { background-color: rgb(43, 255, 152); } :root > * { - --md-mermaid-font-family: var(--md-text-font-family), - sans-serif; --md-mermaid-edge-color: var(--md-code-fg-color); - --md-mermaid-node-bg-color: var(--md-accent-fg-color--transparent); - --md-mermaid-node-fg-color: var(--md-accent-fg-color); + --md-mermaid-font-family: var(--md-text-font-family),sans-serif; --md-mermaid-label-bg-color: var(--md-default-bg-color); --md-mermaid-label-fg-color: var(--md-code-fg-color); + --md-mermaid-node-bg-color: var(--md-accent-fg-color--transparent); + --md-mermaid-node-fg-color: var(--md-accent-fg-color); } a { color: rgb(94, 165, 234); @@ -1512,60 +1487,59 @@ table.sortable thead { color: rgb(168, 160, 149); } hr { - border-top-color: initial; - border-right-color: initial; - border-left-color: initial; border-bottom-color: rgb(62, 68, 70); + border-left: 0px; + border-right: 0px; + border-top: 0px; } .dashed { border-bottom-color: rgb(62, 68, 70); } .form-area { - background-image: initial; background-color: rgb(27, 29, 30); + background-image: initial; border-color: rgb(62, 68, 70); } footer { color: rgb(152, 143, 129); } body { - background-image: initial; background-color: rgb(27, 29, 30); + background-image: initial; color: rgb(232, 230, 227); } header { - background-image: initial; background-color: rgb(13, 14, 14); + background-image: initial; color: rgb(178, 172, 162); } #user-links:hover { - color: rgb(232, 230, 227); border-color: rgb(140, 130, 115); + color: rgb(232, 230, 227); } #nav-shadow { - background-image: linear-gradient(rgb(49, 53, 55), - rgba(0, 0, 0, 0)); background-color: initial; + background-image: linear-gradient(rgb(49, 53, 55), rgba(0, 0, 0, 0)); } #nav-container { - background-image: initial; background-color: rgb(24, 26, 27); + background-image: initial; } nav ul { - list-style-image: initial; - background-image: initial; background-color: transparent; + background-image: initial; + list-style-image: initial; } nav ul li { color: rgb(232, 230, 227); } nav ul li.home-nav-element a:hover { - border-bottom-color: initial; + border-bottom: none; } nav ul li a, nav ul li button { - text-decoration-color: initial; color: rgb(232, 230, 227); + text-decoration-color: initial; } nav ul li a:link, nav ul li button:link { @@ -1573,10 +1547,10 @@ nav ul li button:link { } nav ul li a:hover, nav ul li button:hover { + background-color: rgba(24, 26, 27, 0.25); + background-image: initial; border-top-color: rgb(199, 70, 8); color: rgb(232, 230, 227); - background-image: initial; - background-color: rgba(24, 26, 27, 0.25); } nav ul li a.active, nav ul li button.active { @@ -1584,14 +1558,14 @@ nav ul li button.active { color: rgb(249, 146, 97); } nav ul li ul { - color: rgb(232, 230, 227); - background-image: initial; background-color: rgb(24, 26, 27); + background-image: initial; box-shadow: rgba(0, 0, 0, 0.4) 2px 2px 4px; + color: rgb(232, 230, 227); } nav ul li ul li:hover { - background-image: initial; background-color: rgb(49, 53, 55); + background-image: initial; } nav ul li ul li a { color: rgb(232, 230, 227) !important; @@ -1601,14 +1575,16 @@ nav ul li ul li button { border-left-color: rgb(140, 130, 115); } nav ul li button { - background-image: none; background-color: initial; + background-image: none; border-color: initial; + border-style: none; + border-width: initial; } nav ul li.home-nav-element a:hover { - border-bottom-color: initial; - background-image: initial; background-color: transparent; + background-image: initial; + border-bottom: 0px; } hr { color: rgba(232, 230, 227, 0.2); @@ -1617,22 +1593,22 @@ hr { color: rgb(199, 194, 187); } footer { - border-top-color: rgb(62, 68, 70); - background-image: initial; background-color: rgb(34, 37, 38); + background-image: initial; + border-top-color: rgb(62, 68, 70); } a { text-decoration-color: initial; } noscript #noscript { - color: rgb(232, 230, 227); - background-image: initial; background-color: rgb(139, 0, 0); + background-image: initial; + color: rgb(232, 230, 227); } #announcement { - color: rgb(232, 230, 227); - background-image: initial; background-color: rgb(139, 0, 0); + background-image: initial; + color: rgb(232, 230, 227); } #announcement a { color: rgb(255, 174, 26); @@ -1642,52 +1618,49 @@ noscript #noscript { } #form-errors, .form-errors { - background-image: initial; background-color: rgba(204, 0, 0, 0.3); + background-image: initial; border-color: rgb(179, 0, 0); } #nav-placeholder { - background-image: initial; background-color: rgb(24, 26, 27); - border-right-color: rgb(62, 68, 70); + background-image: initial; border-left-color: rgb(62, 68, 70); + border-right-color: rgb(62, 68, 70); } #contest-info a { color: rgb(232, 230, 227); } #contest-info-main { - border-left-color: rgb(48, 52, 54); - background-image: initial; background-color: rgba(0, 0, 0, 0.77); + background-image: initial; + border-left-color: rgb(48, 52, 54); color: rgb(232, 230, 227); } .contest-info-toggle-mode-on { - background-image: initial; background-color: rgba(0, 164, 0, 0.57); + background-image: initial; } .contest-info-toggle-mode-on:hover { - background-image: initial; background-color: rgba(0, 164, 0, 0.97); + background-image: initial; } .contest-info-toggle-mode-off { - background-image: initial; background-color: rgba(204, 0, 0, 0.57); + background-image: initial; } .contest-info-toggle-mode-off:hover { - background-image: initial; background-color: rgba(204, 0, 0, 0.97); + background-image: initial; } #page-container { - border-right-color: rgb(62, 68, 70); border-left-color: rgb(62, 68, 70); -} -.MathJax:focus { - outline-color: initial; + border-right-color: rgb(62, 68, 70); } @media (max-width: 1498px) { #page-container { - border-left-color: initial; - border-right-color: initial; + border-left: none; + border-right: none; } } @media (max-width: 799px) { @@ -1699,10 +1672,10 @@ noscript #noscript { text-shadow: rgb(24, 26, 27) 0px 0px 5px; } #nav-list { - background-image: initial; background-color: rgb(24, 26, 27); - box-shadow: none; + background-image: initial; border-color: initial; + box-shadow: none; } } #notification { @@ -1727,16 +1700,25 @@ noscript #noscript { color: rgb(152, 143, 129); } .dropdown { - border-color: rgb(60, 65, 68); - background-image: initial; background-color: rgb(24, 26, 27); + box-shadow: rgba(0, 0, 0, 0.2) 0px 8px 16px 0px; } .dropdown a { color: rgb(232, 230, 227); + text-decoration-color: initial; +} +.dropdown-item { + border-top-color: rgb(62, 68, 70); + color: rgb(232, 230, 227); } .dropdown-item:hover { - background-image: initial; - background-color: rgb(49, 53, 55); + background-color: rgb(31, 31, 17); + color: rgb(249, 146, 97); +} +.popper-arrow, +.popper-arrow::before { + background-color: inherit; + background-image: inherit; } .unread_boxes { background-color: rgb(204, 0, 0); @@ -1784,6 +1766,9 @@ noscript #noscript { .background-bisque { background-color: rgb(86, 47, 0); } +.background-royalblue { + background-color: rgb(25, 58, 158) !important; +} .background-footer { color: rgb(152, 143, 129); } @@ -1795,12 +1780,12 @@ noscript #noscript { } @media (min-width: 800px) { #page-container { - background-image: initial; background-color: rgb(32, 34, 36); + background-image: initial; } #content.wrapper { - background-image: initial; background-color: rgb(24, 26, 27); + background-image: initial; } } .colored-text { @@ -1828,16 +1813,22 @@ input::placeholder { color: rgb(249, 146, 97); } .table { - background-image: initial; background-color: rgba(0, 0, 0, 0.01); + background-image: initial; } .table.striped tr:nth-child(2n) { - background-image: initial; background-color: rgb(29, 31, 32); + background-image: initial; } .table.striped tr:nth-child(2n+1) { - background-image: initial; background-color: rgb(24, 26, 27); + background-image: initial; +} +.table.no-border td, +.table.no-border th { + border-color: initial; + border-style: none; + border-width: initial; } .table td:first-child { border-color: rgb(62, 68, 70); @@ -1845,13 +1836,10 @@ input::placeholder { .table tr:last-child td { border-color: rgb(62, 68, 70); } -.table tr:last-child td:first-child { - border-color: rgb(62, 68, 70); -} .table th { - color: rgb(232, 230, 227); background-color: rgb(0, 0, 100); border-color: rgb(62, 68, 70); + color: rgb(232, 230, 227); } .table td { border-color: rgb(62, 68, 70); @@ -1864,16 +1852,16 @@ input::placeholder { color: rgb(232, 230, 227); } .AC { - background-color: rgb(62, 163, 11); - color: rgb(114, 255, 114); + background-color: rgb(0, 102, 0); + color: rgb(232, 230, 227); } ._AC { - background-color: rgb(139, 153, 0); - color: rgb(114, 255, 114); + background-color: rgb(93, 132, 0); + color: rgb(232, 230, 227); } .WA { - background-color: rgb(53, 57, 59); - color: rgb(240, 48, 99); + background-color: rgb(204, 0, 0); + color: rgb(232, 230, 227); } .TLE, .MLE { @@ -1897,8 +1885,8 @@ input::placeholder { } .QU, .G { - background-image: initial; background-color: rgb(24, 26, 27); + background-image: initial; color: rgb(232, 230, 227); } .judge-online { @@ -1917,8 +1905,8 @@ input::placeholder { color: rgb(255, 70, 70) !important; } .left-sidebar-item.active { - color: rgb(232, 230, 227); background-color: rgb(125, 44, 5); + color: rgb(232, 230, 227); } .left-sidebar-item.active .sidebar-icon { color: rgb(232, 230, 227); @@ -1927,7 +1915,7 @@ input::placeholder { border-bottom-color: rgb(62, 68, 70); } .blog-sidebox .contest:last-child { - border-bottom-color: initial; + border-bottom: none; } .blog-sidebox .contest .name a { color: rgb(104, 149, 191) !important; @@ -1942,18 +1930,15 @@ input::placeholder { color: rgb(178, 172, 162); } .rssatom span { - color: rgb(232, 230, 227); - border-color: rgb(174, 78, 16); - background-image: linear-gradient(135deg, - rgb(175, 79, 22) 0px, - rgb(169, 90, 3) 47%, - rgb(175, 79, 22) 100%); background-color: initial; + background-image: linear-gradient(135deg, rgb(175, 79, 22) 0px, rgb(169, 90, 3) 47%, rgb(175, 79, 22) 100%); + border-color: rgb(174, 78, 16); + color: rgb(232, 230, 227); } .blog-box { + background-color: rgb(24, 26, 27); border-bottom-color: rgb(60, 65, 68); border-top-color: rgb(60, 65, 68); - background-color: rgb(24, 26, 27); box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 5px; } .blog-box:hover, @@ -1986,29 +1971,28 @@ input::placeholder { color: rgb(232, 230, 227); } .show-more { - color: rgb(232, 230, 227); - background-image: linear-gradient(rgba(0, 0, 0, 0), - rgb(24, 26, 27)); background-color: initial; + background-image: linear-gradient(rgba(0, 0, 0, 0), rgb(24, 26, 27)); + color: rgb(232, 230, 227); } .middle-right-content.wrapper { - background-image: initial; background-color: rgb(24, 26, 27); + background-image: initial; } @media (max-width: 799px) { .left-sidebar { - background-image: inherit; background-color: inherit; + background-image: inherit; } } @media (min-width: 800px) { .left-sidebar-item { + background-color: rgb(24, 26, 27); border-color: rgb(60, 65, 68); box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 5px; - background-color: rgb(24, 26, 27); } - .left-sidebar { - border-right-color: initial; + .left-sidebar::-webkit-scrollbar { + background-color: transparent; } .blog-box { border-left-color: rgb(60, 65, 68); @@ -2016,8 +2000,8 @@ input::placeholder { } } #problem-table tr:hover { - background-image: initial; background-color: rgb(36, 39, 40); + background-image: initial; } ul.problem-list { list-style-image: initial; @@ -2038,8 +2022,8 @@ ul.problem-list { color: rgb(255, 26, 26); } .organization-tag { - box-shadow: rgba(0, 0, 0, 0.12) 0px -0.1em 0px inset; background-color: rgb(53, 57, 59); + color: initial; } .organization-tag a { color: rgb(232, 230, 227); @@ -2048,8 +2032,8 @@ ul.problem-list { color: rgb(242, 59, 63); } .pdf-icon .pdf-icon-bar { - background-image: initial; background-color: rgb(170, 11, 15); + background-image: initial; } .license a { color: rgb(152, 143, 129); @@ -2060,12 +2044,12 @@ ul.problem-list { color: rgb(158, 150, 137); } #problem_submit #language-select2 .select2-results__option { - color: rgb(158, 150, 137) !important; + background-color: rgb(24, 26, 27) !important; background-image: initial !important; - background-color: rgb(24, 26, 27) !important; + color: rgb(158, 150, 137) !important; } #problem_submit #language-select2 .select2-results__option--highlighted { - text-decoration-color: initial; + text-decoration-color: initial; } #problem_submit #language-select2 .select2-results__option[aria-selected="true"] { color: rgb(232, 230, 227) !important; @@ -2093,6 +2077,10 @@ ul.problem-list { #comment-announcement:hover { background-color: rgb(96, 104, 108); } +.new-problem-info { + background-color: rgb(54, 39, 0); + border-color: rgb(140, 130, 115); +} .admin a, .admin { color: rgb(232, 230, 227) !important; @@ -2145,8 +2133,8 @@ svg.rate-box.rate-target path { fill: rgb(255, 37, 37); } svg.rate-box.rate-target circle:last-child { - stroke: none; fill: rgb(255, 37, 37); + stroke: none; } .rate-none, .rate-none a { @@ -2194,16 +2182,16 @@ svg.rate-box.rate-target circle:last-child { color: rgb(26, 255, 26); } #users-table tr:hover { - background-image: initial; background-color: rgb(36, 39, 40); + background-image: initial; } #users-table tr.highlight { - background-image: initial; background-color: rgb(85, 79, 0); + background-image: initial; } #users-table tr:target { - background-image: initial; background-color: rgb(85, 79, 0); + background-image: initial; } #users-table .organization-column a { color: rgb(152, 143, 129) !important; @@ -2212,8 +2200,8 @@ svg.rate-box.rate-target circle:last-child { background-color: rgb(103, 0, 0) !important; } #users-table .frozen { - background-image: initial !important; background-color: rgb(5, 77, 121) !important; + background-image: initial !important; } #users-table .full-score, #users-table .full-score a { @@ -2249,7 +2237,7 @@ svg.rate-box.rate-target circle:last-child { border-top-color: rgb(84, 91, 94); } #users-table .fullname-column { - border-right-color: initial !important; + border-right: none !important; } #users-table .fullname-column span { color: rgb(152, 143, 129) !important; @@ -2270,43 +2258,46 @@ a.user-redirect:hover { border-left-color: rgb(62, 68, 70); } .hide-solved-problems > span::before { - background-image: initial; background-color: rgba(0, 0, 0, 0.2); + background-image: initial; +} +.user-img { + background-color: rgb(43, 47, 49); } .pp-table .pp-weighted { color: rgb(157, 148, 136); } .pp-table div.sub-pp { - border-left-color: initial; + border-left: none; } #pp-load-link-wrapper { border-color: rgb(62, 68, 70); } #rating-tooltip { - background-image: initial; background-color: rgba(0, 0, 0, 0.7); + background-image: initial; color: rgb(232, 230, 227); } #rating-tooltip.rate-group { color: rgb(232, 230, 227); } .follow { - background-image: initial; background-color: rgb(0, 102, 0); + background-image: initial; border-color: rgb(19, 122, 19); } .follow:hover { - background-image: initial; background-color: rgb(0, 80, 0); + background-image: initial; } .unfollow { - background-image: initial; background-color: rgb(204, 0, 0); + background-image: initial; border-color: rgb(121, 0, 21); } .unfollow:hover { - background-image: initial; background-color: rgb(111, 0, 0); + background-image: initial; } #submission-activity #submission-activity-actions #year { color: rgb(189, 183, 175); @@ -2341,6 +2332,20 @@ a.user-redirect:hover { .user-stat-header { color: rgb(152, 143, 129); } +.profile-card { + border-color: rgb(58, 62, 65); + box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 8px; +} +.profile-card:hover { + box-shadow: rgba(0, 0, 0, 0.2) 0px 8px 16px; +} +.profile-card .card-header { + background-color: rgb(29, 31, 32); +} +.profile-card .medal-count { + background-color: rgba(37, 40, 42, 0.7); + color: rgb(232, 230, 227); +} .content-description pre, .content-description code, .content-description kbd, @@ -2350,47 +2355,51 @@ a.user-redirect:hover { } .content-description code, .content-description span.code { - border-color: rgb(62, 68, 70); - background-color: rgb(28, 30, 31); - color: rgb(189, 183, 175); + background-color: var(--darkreader-bg--md-code-bg-color, #181a1b); + color: var(--darkreader-text--md-code-fg-color, #e8e6e3); } .content-description pre { - border-color: rgb(62, 68, 70); - background-color: rgb(28, 30, 31); - color: rgb(232, 230, 227); + background-color: var(--darkreader-bg--md-code-bg-color, #181a1b); + color: var(--darkreader-text--md-code-fg-color, #e8e6e3); } .content-description pre code, .content-description pre div.code { - border-color: initial; - background-image: initial; background-color: transparent; - color: rgb(232, 230, 227); + background-image: initial; + border-color: initial; + border-style: initial; + border-width: 0px; + color: var(--darkreader-text--md-code-fg-color, #e8e6e3); } .content-description pre.no-border { - border-color: initial; background-color: inherit; + border-color: initial; + border-style: none; + border-width: initial; } .content-description ins { - background-image: initial; background-color: rgb(84, 84, 0); + background-image: initial; color: rgb(232, 230, 227); text-decoration-color: initial; } .content-description mark { - background-image: initial; background-color: rgb(153, 153, 0); + background-image: initial; color: rgb(232, 230, 227); } .content-description img { border-color: initial; + border-style: initial; + border-width: 0px; } .codehilitetable pre { background-color: rgba(35, 38, 39, 0.5); } .codehilitetable .linenos pre { - color: rgba(232, 230, 227, 0.26); background-color: rgba(0, 0, 0, 0.07); - border-right-color: initial; + border-right: 0px; + color: rgba(232, 230, 227, 0.26); } .info-float .fa { color: rgb(232, 230, 227); @@ -2402,101 +2411,136 @@ a.user-redirect:hover { color: rgb(132, 183, 237); } .gplus-this i { - color: rgb(224, 90, 72); + color: rgb(224, 90, 72); } -.button, button, input[type="submit"] { +.button, +button, +input[type="submit"] { background-color: rgb(125, 44, 5); border-color: transparent; box-shadow: rgba(0, 0, 0, 0.02) 0px 1px 3px 0px; + color: rgb(232, 230, 227) !important; text-decoration-color: initial; - color: rgb(232, 230, 227) !important; } -.button.disabled, button.disabled, input[type="submit"].disabled { - background-image: linear-gradient(rgb(73, 79, 82) 0px, - rgb(96, 104, 108) 100%) !important; +.button.disabled, +.button[disabled], +button.disabled, +button[disabled], +input[type="submit"].disabled, +input[type="submit"][disabled] { background-color: initial !important; - border-color: rgb(84, 91, 94) !important; + background-image: linear-gradient(rgb(73, 79, 82) 0px, rgb(96, 104, 108) 100%) !important; + border-color: rgb(84, 91, 94) !important; } -.button.btn-gray, button.btn-gray, input[type="submit"].btn-gray { +.button.btn-gray, +button.btn-gray, +input[type="submit"].btn-gray { + background-color: rgb(96, 104, 108); background-image: initial; - background-color: rgb(96, 104, 108); } -.button.btn-hovergray:hover, button.btn-hovergray:hover, input[type="submit"].btn-hovergray:hover { +.button.btn-hovergray:hover, +button.btn-hovergray:hover, +input[type="submit"].btn-hovergray:hover { + background-color: rgb(49, 53, 55); background-image: initial; - background-color: rgb(49, 53, 55); } -.button.btn-green, button.btn-green, input[type="submit"].btn-green { +.button.btn-green, +button.btn-green, +input[type="submit"].btn-green { + background-color: rgb(32, 134, 55); background-image: initial; - background-color: rgb(0, 102, 0); } -.button.btn-green:hover, button.btn-green:hover, input[type="submit"].btn-green:hover { +.button.btn-green:hover, +button.btn-green:hover, +input[type="submit"].btn-green:hover { + background-color: rgb(0, 102, 0); background-image: initial; - background-color: rgb(35, 121, 60); } -.button.btn-darkred, button.btn-darkred, input[type="submit"].btn-darkred { +.button.btn-darkred, +button.btn-darkred, +input[type="submit"].btn-darkred { + background-color: rgb(111, 0, 0); background-image: initial; - background-color: rgb(111, 0, 0); } -.button.btn-darkred:hover, button.btn-darkred:hover, input[type="submit"].btn-darkred:hover { +.button.btn-darkred:hover, +button.btn-darkred:hover, +input[type="submit"].btn-darkred:hover { + background-color: rgb(132, 34, 34); background-image: initial; - background-color: rgb(132, 34, 34); } -.button.btn-midnightblue, button.btn-midnightblue, input[type="submit"].btn-midnightblue { +.button.btn-midnightblue, +button.btn-midnightblue, +input[type="submit"].btn-midnightblue { + background-color: rgb(20, 20, 90); background-image: initial; - background-color: rgb(20, 20, 90); } -.button.btn-midnightblue:hover, button.btn-midnightblue:hover, input[type="submit"].btn-midnightblue:hover { +.button.btn-midnightblue:hover, +button.btn-midnightblue:hover, +input[type="submit"].btn-midnightblue:hover { + background-color: rgb(0, 0, 111); background-image: initial; - background-color: rgb(0, 0, 111); } -.button.btn-darkGreen, button.btn-darkGreen, input[type="submit"].btn-darkGreen { - background-image: initial; - background-color: rgb(125, 44, 5); -} -.button:hover, button:hover, input[type="submit"]:hover { +.button.btn-darkGreen, +button.btn-darkGreen, +input[type="submit"].btn-darkGreen { background-color: rgb(125, 44, 5); - box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px; + background-image: initial; } -.button:focus, button:focus, input[type="submit"]:focus { +.button:hover, +button:hover, +input[type="submit"]:hover { background-color: rgb(125, 44, 5); - box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px; + box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px; } -.button:active, button:active, input[type="submit"]:hover { +.button:focus, +button:focus, +input[type="submit"]:focus { background-color: rgb(125, 44, 5); - box-shadow: rgba(0, 0, 0, 0.06) 0px 2px 4px; + box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px; } -input[type="text"], input[type="password"], input[type="email"], input[type="number"] { - color: rgb(178, 172, 162); - background-image: none; +.button:active, +button:active, +input[type="submit"]:hover { + background-color: rgb(125, 44, 5); + box-shadow: rgba(0, 0, 0, 0.06) 0px 2px 4px; +} +input[type="text"], +input[type="password"], +input[type="email"], +input[type="number"], +input[type="datetime-local"], +input[type="date"] { background-color: rgb(24, 26, 27); + background-image: none; border-color: rgb(62, 68, 70); box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px inset; + color: rgb(178, 172, 162); } textarea { - background-image: none; background-color: rgb(24, 26, 27); + background-image: none; border-color: rgb(62, 68, 70); box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px inset; } textarea:hover { - border-color: rgb(140, 130, 115); + border-color: rgb(140, 130, 115); } -input[type="text"]:hover, input[type="password"]:hover { +input[type="text"]:hover, +input[type="password"]:hover { border-color: rgba(16, 87, 144, 0.8); - box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px inset, - rgba(16, 91, 150, 0.6) 0px 0px 4px; + box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px inset, rgba(16, 91, 150, 0.6) 0px 0px 4px; } textarea:focus { - border-color: rgb(140, 130, 115); outline-color: initial; -} -input[type="text"]:focus, input[type="password"]:focus { - border-color: rgba(16, 87, 144, 0.8); - box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px inset, - rgba(16, 91, 150, 0.6) 0px 0px 8px; + border-color: rgb(140, 130, 115); outline-color: initial; } -.btn-clipboard { - color: rgb(157, 149, 136); +input[type="text"]:focus, +input[type="password"]:focus { + border-color: rgba(16, 87, 144, 0.8); + box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px inset, rgba(16, 91, 150, 0.6) 0px 0px 8px; + outline-color: initial; +} +.btn-clipboard:hover { background-color: rgb(24, 26, 27); border-color: rgb(55, 60, 62); } @@ -2507,10 +2551,10 @@ input[type="text"]:focus, input[type="password"]:focus { .tabs > ul > li.active > span:hover, .tabs > ul > li.active > a, .tabs > ul > li.active > span { - color: rgb(249, 146, 97); - border-bottom-color: rgb(199, 70, 8); - background-image: initial; background-color: transparent; + background-image: initial; + border-bottom-color: rgb(199, 70, 8); + color: rgb(249, 146, 97); } .tabs { border-bottom-color: rgb(62, 68, 70); @@ -2547,55 +2591,54 @@ input[type="text"]:focus, input[type="password"]:focus { border-bottom-color: rgb(0, 217, 0); } ul.pagination a:hover { - color: rgb(232, 230, 227); - background-image: initial; background-color: rgb(163, 62, 18); - border-color: initial; + background-image: initial; + color: rgb(232, 230, 227); } ul.pagination > li > a, ul.pagination > li > span { - text-decoration-color: initial; - color: rgb(249, 146, 97); background-color: rgb(24, 26, 27); border-color: rgb(199, 70, 8); + color: rgb(249, 146, 97); + text-decoration-color: initial; } ul.pagination > .disabled-page > a { - color: rgb(223, 220, 215); background-color: rgb(137, 78, 57); border-color: rgb(199, 68, 21); + color: rgb(223, 220, 215); } ul.pagination > .disabled-page > span { - color: rgb(223, 220, 215); background-color: rgb(137, 78, 57); border-color: rgb(199, 68, 21); + color: rgb(223, 220, 215); } ul.pagination > .active-page > a { - color: rgb(232, 230, 227); background-color: rgb(125, 44, 5); border-color: transparent; + color: rgb(232, 230, 227); } ul.pagination > .active-page > span { - color: rgb(232, 230, 227); background-color: rgb(24, 26, 27); border-color: transparent; + color: rgb(232, 230, 227); } .alert { border-color: transparent; } .alert-info { - color: rgb(117, 178, 208); background-color: rgb(14, 48, 65); border-color: rgb(22, 90, 104); + color: rgb(117, 178, 208); } .alert-warning { - color: rgb(198, 171, 123); background-color: rgb(47, 40, 5); border-color: rgb(108, 76, 11); + color: rgb(198, 171, 123); } .alert-danger { - color: rgb(194, 102, 100); background-color: rgb(56, 22, 22); border-color: rgb(89, 35, 43); + color: rgb(194, 102, 100); } .alert-dismissable .close, .alert-dismissible .close { @@ -2617,35 +2660,37 @@ a.close:hover { text-decoration-color: initial; } .badge { - color: rgb(232, 230, 227); background-color: rgb(155, 19, 19); + color: rgb(232, 230, 227); } .form-submit-group { border-top-color: rgb(53, 57, 59); } .sidebox h3 { - background-image: initial; background-color: rgb(24, 26, 27); + background-image: initial; } .sidebox h3 .fa { - background-image: initial; background-color: rgb(125, 44, 5); + background-image: initial; color: rgb(232, 230, 227); } .sidebox-content { - border-top-color: initial; - background-image: initial; background-color: rgb(24, 26, 27); + background-image: initial; + border-top: none; } .sidebox-content.sidebox-table { border-color: initial; + border-style: none; + border-width: initial; } .sidebox { box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 5px; } .ws-closed { - background-image: initial; background-color: rgb(139, 0, 0); + background-image: initial; } .ws-closed a { color: rgb(232, 230, 227); @@ -2654,51 +2699,51 @@ a.close:hover { border-color: transparent; } .messages li.debug { - color: rgb(194, 188, 180); background-color: rgb(40, 43, 44); border-color: rgb(59, 64, 66); + color: rgb(194, 188, 180); } .messages li.info { - color: rgb(142, 227, 241); background-color: rgb(20, 59, 67); border-color: rgb(30, 89, 97); + color: rgb(142, 227, 241); } .messages li.success { - color: rgb(153, 230, 171); background-color: rgb(26, 62, 41); border-color: rgb(37, 90, 50); + color: rgb(153, 230, 171); } .messages li.warning { - color: rgb(251, 215, 112); background-color: rgb(61, 46, 0); border-color: rgb(123, 92, 0); + color: rgb(251, 215, 112); } .messages li.error { - color: rgb(225, 134, 143); background-color: rgb(67, 12, 17); border-color: rgb(104, 18, 27); + color: rgb(225, 134, 143); } .spoiler-text { - border-color: rgb(140, 130, 115); - background-image: initial; background-color: rgb(34, 36, 38); + background-image: initial; + border-color: rgb(140, 130, 115); } .spoiler-summary { text-decoration-color: initial; } .control-button { - background-image: initial; - background-color: rgb(49, 53, 55); border-color: initial; + border-style: initial; + border-width: 0px; color: rgb(232, 230, 227) !important; } .control-button:hover { - background-image: initial; background-color: rgb(96, 104, 108); + background-image: initial; } ul.errorlist { - list-style-image: initial; color: rgb(255, 26, 26); + list-style-image: initial; } .registration-form .block-header { color: rgb(178, 172, 162); @@ -2710,9 +2755,9 @@ ul.errorlist { color: rgb(255, 26, 26); } .registration-form #edit-form { - border-color: unset; - background-image: unset; background-color: unset; + background-image: unset; + border-color: unset; } #login-panel .google-icon i { color: rgb(224, 90, 72); @@ -2723,23 +2768,64 @@ ul.errorlist { #login-panel .github-icon i { color: rgb(232, 230, 227); } +.btn:hover { + color: rgb(209, 205, 199); + text-decoration-color: initial; +} +.link-row a { + color: inherit; + text-decoration-color: initial; +} +.link-row:hover { + background-color: rgb(31, 31, 17); + color: rgb(249, 146, 97); +} +button:hover, +button:focus { + box-shadow: none; + outline-color: initial; + text-decoration-color: initial; +} +.btn { + box-shadow: rgba(0, 0, 0, 0.12) 0px 10px 20px -6px; +} +.btn .icon { + background-color: rgb(24, 26, 27); + background-image: initial; +} +.btn:hover, +.btn:active, +.btn:focus { + outline-color: initial; +} +.btn.btn-primary { + color: rgb(232, 230, 227); +} +.btn.btn-primary .icon i { + color: rgb(97, 217, 124); +} +.btn.btn-disabled { + background-color: rgb(96, 104, 108); + background-image: initial; + border-color: rgb(84, 91, 94); + color: rgb(232, 230, 227); +} a.upvote-link, a.downvote-link { color: rgb(232, 230, 227); } a.voted { - text-shadow: rgb(0, 0, 0) 0px 0px 4px, - rgb(0, 0, 204) 0px 0px 9px; + text-shadow: rgb(0, 0, 0) 0px 0px 4px, rgb(0, 0, 204) 0px 0px 9px; } .comment-area .featherlight-edit .featherlight-content { - background-image: initial; background-color: rgb(27, 29, 30); + background-image: initial; border-color: rgb(62, 68, 70); } .comment-area .new-comments .comment-display { - border-color: rgb(62, 68, 70); - background-image: initial; background-color: rgb(27, 29, 30); + background-image: initial; + border-color: rgb(62, 68, 70); } .comment-area .new-comments .comment .detail .header { border-bottom-color: rgb(82, 88, 92); @@ -2759,10 +2845,10 @@ a.voted { color: rgb(200, 195, 188); } .comment-header { - color: rgb(231, 229, 226); - background-image: initial; background-color: rgba(0, 0, 0, 0.1); + background-image: initial; border-color: rgb(62, 68, 70); + color: rgb(231, 229, 226); } .comment-edits:not(:empty) { color: rgb(189, 183, 175); @@ -2771,9 +2857,9 @@ a.voted { color: rgb(189, 183, 175); } .comment-box { - border-color: rgb(62, 68, 70); - background-image: initial; background-color: rgba(0, 0, 0, 0.01); + background-image: initial; + border-color: rgb(62, 68, 70); } .comment { list-style-image: none; @@ -2782,18 +2868,15 @@ a.voted { border-left-color: rgb(48, 52, 54); } .actionbar .actionbar-button { - background-image: initial; background-color: rgb(49, 53, 55); -} -.actionbar .actionbar-button a:hover { - color: inherit; + background-image: initial; } .actionbar .actionbar-button:hover { - background-image: initial; background-color: rgb(73, 79, 82); + background-image: initial; } .actionbar .dislike-button { - border-left-color: initial; + border-left: 0px; } .actionbar .like-button.voted { color: rgb(51, 125, 255); @@ -2804,37 +2887,20 @@ a.voted { .actionbar .bookmarked { color: rgb(248, 248, 80); } -#submissions-table { - background-image: initial; - background-color: rgb(24, 26, 27); -} .submission-row { - border-left-color: rgb(62, 68, 70); - border-right-color: rgb(62, 68, 70); -} -.submission-row:hover { + background-color: rgb(24, 26, 27); background-image: initial; - background-color: rgb(31, 34, 35); + box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px; } -.submission-row:first-of-type { - border-top-color: rgb(62, 68, 70); +.submission-row .sub-result .language { + background-color: rgb(41, 44, 46); } -.submission-row > div { - border-bottom-color: rgb(62, 68, 70); -} -.submission-row .sub-result { - border-bottom-color: rgb(48, 52, 54); - border-right-color: rgb(62, 68, 70); -} -.submission-row .sub-result .score { - color: rgb(232, 230, 227); +.submission-row .sub-info .sub-problem:hover { + text-decoration-color: initial; } .submission-row .sub-testcase { color: rgb(178, 172, 162); } -.submission-row .sub-usage { - border-left-color: rgb(62, 68, 70); -} #statistics-table tr:not(:first-child) td { border-top-color: rgb(48, 52, 54) !important; } @@ -2844,19 +2910,6 @@ a.voted { .submission-contest { color: rgb(178, 172, 162); } -.source-ln { - color: rgb(152, 143, 129); - border-right-color: rgb(84, 91, 94); -} -.source-ln a { - color: rgb(152, 143, 129); -} -.source-ln a:hover { - text-decoration-color: initial; -} -.source-wrap { - border-color: rgb(72, 78, 81); -} .statistics-table .count { color: rgb(232, 230, 227); } @@ -2865,36 +2918,28 @@ a.voted { color: rgb(211, 207, 201); } #test-cases .case-output { - box-shadow: rgba(27, 29, 30, 0.15) 0px 1px 2px 0px; border-color: rgba(128, 119, 105, 0.15); + box-shadow: rgba(27, 29, 30, 0.15) 0px 1px 2px 0px; } #test-cases .testcases-table { border-color: initial; } .overall-result-AC { - background-image: linear-gradient(45deg, - rgb(68, 132, 0), - rgb(0, 132, 102)); background-color: initial; + background-image: linear-gradient(45deg, rgb(68, 132, 0), rgb(0, 132, 102)); } .overall-result-WA { - background-image: linear-gradient(45deg, - rgb(153, 153, 0), - rgb(204, 0, 0)); background-color: initial; + background-image: linear-gradient(45deg, rgb(153, 153, 0), rgb(204, 0, 0)); } .overall-result-TLE { - background-image: linear-gradient(45deg, - rgb(42, 45, 47), - rgb(83, 91, 112)); background-color: initial; + background-image: linear-gradient(45deg, rgb(42, 45, 47), rgb(83, 91, 112)); } .overall-result-RTE, .overall-result-MLE { - background-image: linear-gradient(45deg, - rgb(67, 49, 3), - rgb(198, 145, 0)); background-color: initial; + background-image: linear-gradient(45deg, rgb(67, 49, 3), rgb(198, 145, 0)); } .case-AC { color: rgb(114, 255, 114); @@ -2916,15 +2961,16 @@ a.voted { color: rgb(255, 174, 26); } .source-wrap a:active .line .highlighter { - background-image: initial; background-color: rgba(153, 127, 0, 0.48); + background-image: initial; } .submission-info .submission-date { color: rgb(152, 143, 129); } .list-contest { - box-shadow: rgb(49, 53, 55) 0px 1px 2px, - rgb(49, 53, 55) 0px 1px 5px; + background-color: rgb(24, 26, 27); + background-image: initial; + box-shadow: rgb(49, 53, 55) 0px 1px 2px, rgb(49, 53, 55) 0px 1px 5px; } #contest-calendar th { border-bottom-color: rgb(62, 68, 70); @@ -2939,14 +2985,14 @@ a.voted { #contest-calendar th.thu, #contest-calendar th.fri, #contest-calendar th.sat { - border-right-color: rgb(62, 68, 70); - background-image: initial; background-color: rgb(27, 29, 30); + background-image: initial; + border-right-color: rgb(62, 68, 70); } #contest-calendar td { - color: rgb(232, 230, 227); - border-right-color: rgb(62, 68, 70); border-bottom-color: rgb(62, 68, 70); + border-right-color: rgb(62, 68, 70); + color: rgb(232, 230, 227); } #contest-calendar td .num { border-bottom-color: rgb(62, 68, 70); @@ -2958,24 +3004,24 @@ a.voted { color: rgb(255, 174, 26); } #contest-calendar td ul li a { - text-decoration-color: initial; color: rgb(211, 207, 201); + text-decoration-color: initial; } #contest-calendar td ul li a:hover { text-decoration-color: initial; } #contest-calendar td:hover { - background-image: initial; background-color: rgba(0, 0, 204, 0.3); + background-image: initial; color: rgb(232, 230, 227); } #contest-calendar .noday { - background-image: initial; background-color: rgb(32, 35, 36); + background-image: initial; } #contest-calendar .today { - background-image: initial; background-color: rgba(108, 108, 0, 0.5); + background-image: initial; } #contest-calendar tr td:first-child { border-left-color: rgb(72, 78, 81); @@ -2993,19 +3039,13 @@ a.voted { #banner .time { color: rgb(178, 172, 162); } -.time-left { - color: rgb(157, 148, 136); -} -.contest-list .contest-tag-hidden { +.list-contest .contest-tag-hidden { background-color: rgb(0, 0, 0); color: rgb(232, 230, 227); } .first-solve { - background-image: initial; background-color: rgb(0, 199, 129); -} -.contest-tag { - box-shadow: rgba(0, 0, 0, 0.12) 0px -0.1em 0px inset; + background-image: initial; } .contest-tag-edit { background-color: rgb(0, 102, 0); @@ -3037,29 +3077,29 @@ a.voted { color: rgb(26, 255, 255); } #judge-versions .version-blank { - background-image: initial; background-color: rgb(34, 36, 38); + background-image: initial; } #judge-versions .version-latest { - background-image: initial; background-color: rgba(88, 125, 0, 0.9); + background-image: initial; } #judge-versions .version-outdated { - background-image: initial; background-color: rgba(204, 0, 0, 0.8); + background-image: initial; color: rgb(232, 230, 227); } .chat { - background-image: initial; background-color: rgb(24, 26, 27); + background-image: initial; } #chat-online { + border-bottom: 0px; border-right-color: rgb(62, 68, 70); - border-bottom-color: initial; } #chat-input { - color: rgb(232, 230, 227); border-color: rgb(140, 130, 115); + color: rgb(232, 230, 227); } #chat-input::-webkit-input-placeholder { color: rgb(152, 143, 129); @@ -3075,10 +3115,10 @@ a.voted { } @media (min-width: 800px) { #chat-container { - border-top-color: rgb(62, 68, 70); - border-right-color: rgb(62, 68, 70); + border-bottom: 0px; border-left-color: rgb(62, 68, 70); - border-bottom-color: initial; + border-right-color: rgb(62, 68, 70); + border-top-color: rgb(62, 68, 70); } } #chat-info { @@ -3088,43 +3128,42 @@ a.voted { stroke: rgb(232, 230, 227); } .status-row:hover { - background-image: initial; background-color: rgb(49, 53, 55); + background-image: initial; } .message-text-other { - background-image: initial; background-color: rgb(34, 36, 38); + background-image: initial; color: rgb(232, 230, 227); } .message-text-myself { - background-image: initial; background-color: rgb(0, 106, 204); + background-image: initial; color: rgb(232, 230, 227); } .chat-input-icon { - color: rgb(232, 230, 227); background-color: rgb(48, 104, 78); + color: rgb(232, 230, 227); } .chat-input-icon:hover { - background-image: initial; background-color: rgb(62, 136, 112); + background-image: initial; } .chat .active-span { color: rgb(169, 162, 151); } .chat .unread-count { - color: rgb(232, 230, 227); background-color: rgb(0, 111, 111); + color: rgb(232, 230, 227); } -.chat #setting-content { +.chat .setting-content { background-color: rgb(32, 35, 36); box-shadow: rgba(0, 0, 0, 0.2) 0px 8px 16px 0px; } -.chat #setting-content li { +.chat .setting-content a { text-decoration-color: initial; - color: rgb(232, 230, 227); } -.chat #setting-content li:hover { +.chat .setting-content a:hover { background-color: rgb(43, 47, 49); } .leave-organization, @@ -3135,28 +3174,38 @@ a.voted { border-bottom-color: rgb(140, 130, 115); } #pending-count-box { - background-image: initial; background-color: rgb(204, 0, 0); + background-image: initial; color: rgb(232, 230, 227); } +.organization-card { + background-color: rgb(24, 26, 27); + border-color: rgb(58, 62, 65); + box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px; + color: inherit; + text-decoration-color: initial; +} +.organization-card:hover { + color: rgb(249, 146, 97); +} +.organization-card img.org-logo { + background-color: rgb(32, 35, 37); +} .organization-row { border-bottom-color: rgb(62, 68, 70); - border-top-color: initial; + border-top: none; color: rgb(232, 230, 227); } .organization-row:hover { background-color: rgb(31, 33, 35); } -.organization-container { - border-color: rgb(62, 68, 70); -} .org-help-text { color: rgb(152, 143, 129); } .ticket-container #content > h2:first-child small { color: rgb(168, 160, 149); } -.ticket-container #content > h2:first-child .fa-check-circle-o { +.ticket-container #content > h2:first-child .fa-check-circle { color: rgb(86, 255, 86); } .ticket-container #content > h2:first-child .fa-exclamation-circle { @@ -3166,53 +3215,51 @@ a.voted { border-color: rgb(77, 83, 86); } .ticket-container .info-title { - border-bottom-color: rgb(77, 83, 86); - background-image: initial; background-color: rgb(34, 36, 38); + background-image: initial; + border-bottom-color: rgb(77, 83, 86); } .ticket-container .info-empty { color: rgb(168, 160, 149); } .ticket-container .close-ticket { - background-image: linear-gradient(rgb(60, 138, 0) 0%, - rgb(31, 109, 14) 100%); background-color: initial; + background-image: linear-gradient(rgb(60, 138, 0) 0%, rgb(31, 109, 14) 100%); border-color: rgb(61, 193, 24); } .ticket-container .close-ticket:hover { - background-image: initial; background-color: rgb(29, 90, 11); + background-image: initial; } .ticket-container .open-ticket { - background-image: linear-gradient(rgb(195, 3, 0), - rgb(141, 49, 18)); background-color: initial; + background-image: linear-gradient(rgb(195, 3, 0), rgb(141, 49, 18)); border-color: rgb(186, 67, 24); } .ticket-container .open-ticket:hover { - background-image: initial; background-color: rgb(106, 38, 14); + background-image: initial; } .ticket-container .message .detail { border-color: rgb(77, 83, 86); } .ticket-container .message .header { - background-image: initial; background-color: rgb(34, 36, 38); - color: rgb(157, 148, 136); + background-image: initial; border-bottom-color: rgb(77, 83, 86); + color: rgb(157, 148, 136); } .wmd-button-bar { background-color: rgb(24, 26, 27); } .wmd-input { - background-image: initial; background-color: rgb(24, 26, 27); + background-image: initial; border-color: rgb(72, 78, 81); } .wmd-preview { - background-image: none; background-color: initial; + background-image: none; } .wmd-button { list-style-image: initial; @@ -3221,16 +3268,16 @@ a.voted { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iOCIgaGVpZ2h0PSI4Ij48ZGVmcz48ZmlsdGVyIGlkPSJkYXJrcmVhZGVyLWltYWdlLWZpbHRlciI+PGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAuMjQ5IC0wLjYxNCAtMC42NzIgMC4wMDAgMS4wMzUgLTAuNjQ2IDAuMjg4IC0wLjY2NCAwLjAwMCAxLjAyMCAtMC42MzYgLTAuNjA5IDAuMjUwIDAuMDAwIDAuOTk0IDAuMDAwIDAuMDAwIDAuMDAwIDEuMDAwIDAuMDAwIiAvPjwvZmlsdGVyPjwvZGVmcz48aW1hZ2Ugd2lkdGg9IjgiIGhlaWdodD0iOCIgZmlsdGVyPSJ1cmwoI2RhcmtyZWFkZXItaW1hZ2UtZmlsdGVyKSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpT0hCNElpQm9aV2xuYUhROUlqaHdlQ0lnZG1sbGQwSnZlRDBpTUNBd0lEZ2dPQ0lnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JajROQ2lBZ1BIQmhkR2dnWkQwaVRUQWdNSFl4WXk0MU5TQXdJREVnTGpRMUlERWdNWFkwWXpBZ0xqVTFMUzQwTlNBeExURWdNWFl4YURVdU5XTXhMak00SURBZ01pNDFMVEV1TVRJZ01pNDFMVEl1TlNBd0xURXRMalU1TFRFdU9EVXRNUzQwTkMweUxqSTFMakkzTFM0ek5DNDBOQzB1TnpndU5EUXRNUzR5TlNBd0xURXVNUzB1T0RrdE1pMHlMVEpvTFRWNmJUTWdNV2d4WXk0MU5TQXdJREVnTGpRMUlERWdNWE10TGpRMUlERXRNU0F4YUMweGRpMHllbTB3SUROb01TNDFZeTQ0TXlBd0lERXVOUzQyTnlBeExqVWdNUzQxY3kwdU5qY2dNUzQxTFRFdU5TQXhMalZvTFRFdU5YWXRNM29pSUM4K0RRbzhMM04yWno0PSIgLz48L3N2Zz4="); } .wmd-italic-button { - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNTI1IiBoZWlnaHQ9IjUyNSI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSI1MjUiIGhlaWdodD0iNTI1IiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUIyWlhKemFXOXVQU0l4TGpFaUlHbGtQU0pEWVhCaFh6RWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmVHeHBibXM5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZlR3hwYm1zaUlIZzlJakJ3ZUNJZ2VUMGlNSEI0SWcwS0lDQWdkMmxrZEdnOUlqVXlOUzR4TkRKd2VDSWdhR1ZwWjJoMFBTSTFNalV1TVRReWNIZ2lJSFpwWlhkQ2IzZzlJakFnTUNBMU1qVXVNVFF5SURVeU5TNHhORElpSUhOMGVXeGxQU0psYm1GaWJHVXRZbUZqYTJkeWIzVnVaRHB1WlhjZ01DQXdJRFV5TlM0eE5ESWdOVEkxTGpFME1qc2lEUW9nSUNCNGJXdzZjM0JoWTJVOUluQnlaWE5sY25abElqNE5DanhuUGcwS0lDQThaejROQ2lBZ0lDQThjR0YwYUNCa1BTSk5NemMxTGpVMExEQXVNalEwWXkweE15NHpNellzTVM0Mk9Ea3RNall1T0RNc01pNDROeTAwTUM0ME9UWXNNeTQxTlRaakxURTFMamMwTVN3d0xqYzVOaTB5Tnk0NU9EY3NNUzR4T0RndE16WXVOekkzTERFdU1UZzREUW9nSUNBZ0lDQmpMVEV3TGpBMk55d3dMVEl5TGpBNE55MHdMalV4TkMwek5pNHdOekV0TVM0MU56bGpMVEV5TGpJeU9DMHdMamt4T0MweU5TNHlPREl0TWk0d05TMHpPUzR4TmpJdE15NHpOemhqTFRNdU16WTJMVEF1TXpJMExUWXVPVFU0TERJdU1ERTBMVGN1T0RBekxEVXVNamc0RFFvZ0lDQWdJQ0JqTFRFdU1EVXpMRFF1TURnNExURXVOVGN6TERjdU5ERTRMVEV1TlRjekxEa3VPVGMyWXpBc05pNDROek1zTkM0NE1EUXNNVEV1TURrMUxERTBMalF5TlN3eE1pNDJPR014TWk0Mk9ERXNNUzQxTnprc01qQXVOall4TERVdU1ESTFMREl6TGprME1Td3hNQzR6TURZTkNpQWdJQ0FnSUdNekxqSTRMRFV1TWpneUxEUXVNRE01TERFeUxqWTNOU3d5TGpJNU5Td3lNaTR4T1RGc0xUWTBMakkyTml3ME1ETXVNemswWXkweExqYzFOaXd4TUM0d05ETXROUzQwTnpnc01UY3VOVGMyTFRFeExqRTFOeXd5TWk0MU9Ea05DaUFnSUNBZ0lHTXROUzQyT0RZc05TNHdNalF0TVRRdU1qRXNPQzQxT1RrdE1qVXVOVGMxTERFd0xqWTVOMk10TkM0NE1UWXNNUzR3TmpVdE55NDVPRGNzTWk0Mk5qSXRPUzQxTURRc05DNDNOVFZqTFRFdU5UUXlMREl1TVRFNExUSXVNamsxTERVdU1qZ3lMVEl1TWprMUxEa3VOVEU0RFFvZ0lDQWdJQ0JqTUN3eUxqVTJNeXd3TGpJME5TdzFMak15TkN3d0xqY3lPQ3c0TGpJNFl6QXVOVFExTERNdU16TTFMRE11T1RZMkxEVXVOamszTERjdU16STJMRFV1TXpVMFl6RXlMamMwT0MweExqTXhMREkxTGpJMU55MHlMalF5TkN3ek55NDFNamd0TXk0ek1qa05DaUFnSUNBZ0lHTXhOQzR4T1RndE1TNHdOalVzTWpVdU5qY3pMVEV1TlRjNUxETTBMalF5TlMweExqVTNPV014TUM0d05UVXNNQ3d5TWk0NU5UY3NNQzQxTVRRc016Z3VOamszTERFdU5UYzVZekV6TGpjMk5Dd3dMamt5TkN3eU55NDJPREVzTWk0d05TdzBNUzQzT0RFc015NHpPRFFOQ2lBZ0lDQWdJR016TGpNMk5pd3dMak14T0N3MkxqYzROeTB5TGpBMk9DdzNMak16TWkwMUxqUXdNMk13TGpRNE15MHlMamsxTml3d0xqY3lPUzAxTGpjeExEQXVOekk1TFRndU1qaGpNQzAzTGpNNU5DMDBMakUyTWkweE1pNHhORGd0TVRJdU5EWXhMVEUwTGpJM01nMEtJQ0FnSUNBZ1l5MHhNUzQ0TURZdE1pNDJNemd0TVRrdU9EazJMVFV1T1RReUxUSTBMakkyTmkwNUxqa3dNV010TkM0ek56WXRNeTQ1TmkwMUxqWTROaTB4TVM0eU1qVXRNeTQ1TXpVdE1qRXVOemswVERNek1pNDBNVGdzTmpJdU1EVU5DaUFnSUNBZ0lHTXhMamN6T0MweE1DNDFOak1zTlM0eE1qa3RNVGd1TWpJMUxERXdMakUyTlMweU1pNDVPR00xTGpBeE9TMDBMamMxTlN3eE15NDJOaTA0TGpFNE1pd3lOUzQ1TURZdE1UQXVNekEyWXpZdU1USXRNUzR3TlRNc01UQXVNVGN5TFRJdU5qTTRMREV5TGpFekxUUXVOelUxRFFvZ0lDQWdJQ0JqTVM0NU56RXRNaTR4TURVc01pNDVOUzAxTGpJM05Td3lMamsxTFRrdU5URXhZekF0TWk0Mk9UTXRNQzR5TmpRdE5TNDNNUzB3TGpnd01pMDVMakExTVVNek9ESXVNalF4TERJdU1URXhMRE0zT0M0NE9UUXRNQzR4T0RRc016YzFMalUwTERBdU1qUTBlaUl2UGcwS0lDQThMMmMrRFFvOEwyYytEUW84Wno0TkNqd3ZaejROQ2p4blBnMEtQQzluUGcwS1BHYytEUW84TDJjK0RRbzhaejROQ2p3dlp6NE5DanhuUGcwS1BDOW5QZzBLUEdjK0RRbzhMMmMrRFFvOFp6NE5Dand2Wno0TkNqeG5QZzBLUEM5blBnMEtQR2MrRFFvOEwyYytEUW84Wno0TkNqd3ZaejROQ2p4blBnMEtQQzluUGcwS1BHYytEUW84TDJjK0RRbzhaejROQ2p3dlp6NE5DanhuUGcwS1BDOW5QZzBLUEdjK0RRbzhMMmMrRFFvOEwzTjJaejROQ2c9PSIgLz48L3N2Zz4="); + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNTI1IiBoZWlnaHQ9IjUyNSI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSI1MjUiIGhlaWdodD0iNTI1IiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSIiIC8+PC9zdmc+"); } .wmd-latex-button { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiPjxkZWZzPjxmaWx0ZXIgaWQ9ImRhcmtyZWFkZXItaW1hZ2UtZmlsdGVyIj48ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4yNDkgLTAuNjE0IC0wLjY3MiAwLjAwMCAxLjAzNSAtMC42NDYgMC4yODggLTAuNjY0IDAuMDAwIDEuMDIwIC0wLjYzNiAtMC42MDkgMC4yNTAgMC4wMDAgMC45OTQgMC4wMDAgMC4wMDAgMC4wMDAgMS4wMDAgMC4wMDAiIC8+PC9maWx0ZXI+PC9kZWZzPjxpbWFnZSB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIGZpbHRlcj0idXJsKCNkYXJrcmVhZGVyLWltYWdlLWZpbHRlcikiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QmxibUZpYkdVdFltRmphMmR5YjNWdVpEMGlibVYzSURBZ01DQTJOQ0EyTkNJZ2FHVnBaMmgwUFNJMk5IQjRJaUJwWkQwaVRHRjVaWEpmTVNJZ2RtVnljMmx2YmowaU1TNHhJaUIyYVdWM1FtOTRQU0l3SURBZ05qUWdOalFpSUhkcFpIUm9QU0kyTkhCNElpQjRiV3c2YzNCaFkyVTlJbkJ5WlhObGNuWmxJaUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSGh0Ykc1ek9uaHNhVzVyUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMM2hzYVc1cklqNDhjR0YwYUNCa1BTSk5ORFV1TnpNc05qUklNelF1TnpVeVl5MHdMamN4TlN3d0xURXVNamsxTFRBdU1UY3pMVEV1TnpNNExUQXVOVEp6TFRBdU56azBMVEF1TnpVNExURXVNRFUyTFRFdU1qTTBiQzA1TGpRNE5DMHhOaTQxTmpRZ0lHTXRNQzR4TnpRc01DNDBOemd0TUM0ek5qa3NNQzQ0T0RjdE1DNDFPRFFzTVM0eU16UnNMVGd1T0RNMUxERTFMak16WXkwd0xqTXdOQ3d3TGpRek5DMHdMalkyTVN3d0xqZ3pOQzB4TGpBM01pd3hMakl3TVVNeE1TNDFOeklzTmpNdU9ERTJMREV4TGpBME1TdzJOQ3d4TUM0ek9URXNOalJJTUM0eE1qY2dJRXd4TlM0ek5pd3pPUzQyTkRGTU1DNDNNVElzTVRZdU5qYzFTREV4TGpZNVl6QXVOekUwTERBc01TNHlOQ3d3TGpBNU15d3hMalUzTml3d0xqSTNObU13TGpNek5Td3dMakU0TlN3d0xqWXpOQ3d3TGpRNU15d3dMamc1TXl3d0xqa3lObXc1TGpReUxERTFMamswT0NBZ1l6QXVNVEE0TFRBdU1qZ3NNQzR5TXpJdE1DNDFOVElzTUM0ek56UXRNQzQ0TVRKak1DNHhOQzB3TGpJMk1pd3dMakk1Tnkwd0xqVXpNU3d3TGpRM01TMHdMamd4TTJ3NExqSTFMVEUwTGpFMk1XTXdMak13TlMwd0xqUTNOeXd3TGpZeU1pMHdMamd5TXl3d0xqazFPQzB4TGpBMElDQmpNQzR6TXpZdE1DNHlNVGNzTUM0M05USXRNQzR6TWpVc01TNHlOVEV0TUM0ek1qVm9NVEF1TlRJMFRETXdMalUyTWl3ek9TNHhPRFpNTkRVdU56TXNOalI2SWk4K1BIQmhkR2dnWkQwaVRUWXhMamcwTERJekxqZzJZekF1TmpZM0xEQXNNUzR4T1RNc01DNHhPRE1zTVM0MU9Dd3dMalUxWXpBdU16ZzNMREF1TXpZMkxEQXVOVGdzTUM0NE5Td3dMalU0TERFdU5EVjJNeTQyU0RRekxqVXlNWFl0TW1Nd0xUQXVNemczTERBdU1EYzVMVEF1T0N3d0xqSXpPUzB4TGpJMElDQmpNQzR4Tmkwd0xqUXpPU3d3TGpRMExUQXVPRFFzTUM0NE5DMHhMakpzT0M0MExUZ3VORFpqTUM0M01qRXRNQzQzTWl3eExqTTBOeTB4TGpRd05pd3hMamc0TVMweUxqQTJZekF1TlRNekxUQXVOalV6TERBdU9UY3pMVEV1TWprM0xERXVNekU1TFRFdU9UTWdJR013TGpNME55MHdMall6TkN3d0xqWXdOaTB4TGpJMk55d3dMamM0TFRFdU9XTXdMakUzTXkwd0xqWXpNeXd3TGpJMkxURXVNekEwTERBdU1qWXRNaTR3TVdNd0xURXVNVFl0TUM0eU56Y3RNaTR3TlMwd0xqZ3pMVEl1TmpjZ0lHTXRNQzQxTlRNdE1DNDJNaTB4TGpNNU5pMHdMamt6TFRJdU5USTVMVEF1T1ROakxUQXVPVElzTUMweExqWTVOeXd3TGpJME15MHlMak16TERBdU56TmpMVEF1TmpNMExEQXVORGczTFRFdU1EY3NNUzR3T1MweExqTXhNU3d4TGpneElDQmpMVEF1TWpjNUxEQXVOek16TFRBdU5qUTJMREV1TWpJdE1TNHhMREV1TkRaakxUQXVORFV6TERBdU1qUXRNUzR4TERBdU1qa3pMVEV1T1RRc01DNHhObXd0TXk0eU9DMHdMalU0WXpBdU1qRXpMVEV1TkRVekxEQXVOakl6TFRJdU56SXNNUzR5TXkwekxqZ2dJR013TGpZd05pMHhMakE0TERFdU16VTVMVEV1T1Rnc01pNHlOaTB5TGpkak1DNDVMVEF1TnpJc01TNDVNeTB4TGpJMU55d3pMakE1TFRFdU5qRkROVEV1TmpZc01DNHhOemNzTlRJdU9UQTJMREFzTlRRdU1qUXNNR014TGpRek9Td3dMREl1TnpNMkxEQXVNakVzTXk0NE9URXNNQzQyTXlBZ1l6RXVNVFV5TERBdU5ESXNNaTR4TXpjc01TNHdNRE1zTWk0NU5Ea3NNUzQzTldNd0xqZ3hNeXd3TGpjME55d3hMalF6T0N3eExqWXpOeXd4TGpnM0xESXVOamRETmpNdU16Z3pMRFl1TURnekxEWXpMallzTnk0eU1pdzJNeTQyTERndU5EWWdJR013TERFdU1EWTJMVEF1TVRRNUxESXVNRFUwTFRBdU5EUTVMREl1T1RaakxUQXVNekF4TERBdU9UQTNMVEF1TnpFc01TNDNOekV0TVM0eU15d3lMalU1WXkwd0xqVXlMREF1T0RJdE1TNHhNak1zTVM0Mk1UTXRNUzQ0TVN3eUxqTTRJQ0JqTFRBdU5qZzNMREF1TnpZNExURXVOREUzTERFdU5UUTBMVEl1TVRrc01pNHpNMnd0TlM0Mk9Ua3NOUzQ0TkdNd0xqY3pNaTB3TGpJeU55d3hMalExT1Mwd0xqTTVPU3d5TGpFNExUQXVOVEpqTUM0M01pMHdMakV5TERFdU16ZzNMVEF1TVRnc01pMHdMakU0U0RZeExqZzBlaUl2UGp3dmMzWm5QZz09IiAvPjwvc3ZnPg=="); } .wmd-latex-button-display { - background-image: url("http://localhost:8000/static/pagedown/resources/latex-display.svg"); + background-image: url("http://127.0.0.1:8000/static/pagedown/resources/latex-display.svg"); } .wmd-link-button { - background-image: url("http://localhost:8000/static/pagedown/resources/link.svg"); + background-image: url("http://127.0.0.1:8000/static/pagedown/resources/link.svg"); } .wmd-user-reference-button { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxkZWZzPjxmaWx0ZXIgaWQ9ImRhcmtyZWFkZXItaW1hZ2UtZmlsdGVyIj48ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4yNDkgLTAuNjE0IC0wLjY3MiAwLjAwMCAxLjAzNSAtMC42NDYgMC4yODggLTAuNjY0IDAuMDAwIDEuMDIwIC0wLjYzNiAtMC42MDkgMC4yNTAgMC4wMDAgMC45OTQgMC4wMDAgMC4wMDAgMC4wMDAgMS4wMDAgMC4wMDAiIC8+PC9maWx0ZXI+PC9kZWZzPjxpbWFnZSB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbHRlcj0idXJsKCNkYXJrcmVhZGVyLWltYWdlLWZpbHRlcikiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlBL1BqeHpkbWNnYUdWcFoyaDBQU0l5TkNJZ2RtVnljMmx2YmowaU1TNHhJaUIzYVdSMGFEMGlNalFpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZZMk05SW1oMGRIQTZMeTlqY21WaGRHbDJaV052YlcxdmJuTXViM0puTDI1ekl5SWdlRzFzYm5NNlpHTTlJbWgwZEhBNkx5OXdkWEpzTG05eVp5OWtZeTlsYkdWdFpXNTBjeTh4TGpFdklpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQanhuSUhSeVlXNXpabTl5YlQwaWRISmhibk5zWVhSbEtEQWdMVEV3TWpndU5Da2lQanh3WVhSb0lHUTlJbTB4TWlBd1l5MHdMalF3TlNBd0xUQXVPREExSURBdU1EWXdNekkyTFRFdU1UZzRJREF1TVRVMk1qVXRNQzR5TWpRZ01DNHdOVFkzT0Mwd0xqUTBJREF1TVRNeE16VXRNQzQyTlRZZ01DNHlNVGczTlMwd0xqQTRNeUF3TGpBek5EQXhMVEF1TVRZM09TQXdMakExTlRNMExUQXVNalE1T0NBd0xqQTVNemMxTFRBdU1ETTBJREF1TURFMU9ETXRNQzR3TmlBd0xqQTBOVGswTFRBdU1Ea3pOeUF3TGpBMk1qVXRNQzR5TURNeUlEQXVNVEF3TlRndE1DNDBNREl4SURBdU1qRTNNRFF0TUM0MU9UTTNJREF1TXpRek56VXRNQzR3TWpjZ01DNHdNVGMwTFRBdU1EWTNNU0F3TGpBeE16TTVMVEF1TURrek9DQXdMakF6TVRJMUxUQXVNRFUyTXlBd0xqQXpPRFkwTFRBdU1UQXhJREF1TURnME1Ua3RNQzR4TlRZeUlEQXVNVEkwT1RVdE1DNHhOVFk1SURBdU1URXlOaTB3TGpNeU1UWWdNQzR5TVRZdE1DNDBOamc0SURBdU16UXpPQzB3TGpFek5ESWdNQzR4TWpBM0xUQXVNalE1TkNBd0xqSTNNalF0TUM0ek56VWdNQzQwTURZeUxUQXVOREkxTVNBd0xqUXpOVGt0TUM0M09UTTJJREF1T0RrM01TMHhMakE1TXpnZ01TNDBNemMyTFRBdU5URTFOQ0F3TGprd016UXRNQzQ1TURBeUlERXVPVEl3TlMweExqQTJNalFnTWk0NU5qZzNMVEF1TURjNE15MHdMakF4TmpVdE1DNHhOVEF4TFRBdU1ESXlOQzB3TGpJeE9EZ2dNQzB3TGpVeU5URWdNQzR4TnpFdE1DNDJOVFExSURFdU1UWTROUzB3TGpNeE1qVWdNaTR5TVRnM0lEQXVNakF3TnlBd0xqWXhOak1nTUM0MU16UTJJREV1TVRBeE5TQXdMamczTlNBeExqTTNOU0F3TGpRMU56TWdNUzQzTnpjNElERXVOREkxTnlBekxqSTFPVGdnTWk0Mk9EYzFJRFF1TVRnM09IWXhMakF6TVd3dE1TQXhMVElnTVdNdE1TNDJNVGN6SURBdU9EQXhMVE11TWpJNE5DQXhMall3TlMwMExqZzBNemdnTWk0ME1EWXRNQzQ0T1RVeE15QXdMalUwTFRFdU1qUXhOU0F4TGpZdE1TNHhOVFl5SURJdU5UazBJREF1TURReE5qWTBJREF1TmpJMkxUQXVNVGcwTkRnZ01TNDBNamNnTUM0ME16YzFJREV1T0RRMElEQXVOVGt3T1NBd0xqTXdOQ0F4TGpJNU5Ua2dNQzR4TURZZ01TNDVNemMxSURBdU1UVTJJREV1T0RjMk5pMHdMakF3TVNBekxqYzBPRFFnTUNBMUxqWXlOU0F3SURJdU5qWTVJREF1TURBeElEVXVNek14SURBZ09DQXdJREl1TXpZM0lEQWdOQzQzTWpjZ01DNHdNRFFnTnk0d09UUWdNQ0F3TGpjMk9DMHdMakExTkNBd0xqazRNUzB3TGpnMk5TQXdMamt3TmkweExqVWdNQzR3TVRRdE1DNDVNeklnTUM0d05qa3RNUzQ1TnpZdE1DNDJOVFl0TWk0Mk9EZ3RNQzQxT1RJdE1DNDJNREl0TVM0ME16UXRNQzQ0TkMweUxqRTFOaTB4TGpJMUxURXVNRFl4TFRBdU5USTFMVEl1TVRJNExURXVNRE0zTFRNdU1UZzRMVEV1TlRZeWJDMHlMVEV0TVMweGRpMHhMakF6TVdNeExqSTJNaTB3TGpreU9DQXlMakl6TFRJdU5ERWdNaTQyT0RndE5DNHhPRGM0SURBdU16UXRNQzR5TnpNMklEQXVOamMwTFRBdU56VTRPQ0F3TGpnM05DMHhMak0zTlNBd0xqTTBNaTB4TGpBMU1ESWdNQzR5TVRNdE1pNHdORGMzTFRBdU16RXlMVEl1TWpFNE55MHdMakEyT1Mwd0xqQXlNalF0TUM0eE5DMHdMakF4TmpVdE1DNHlNVGtnTUMwd0xqRTJNaTB4TGpBME9ESXRNQzQxTkRjdE1pNHdOalV6TFRFdU1EWXlMVEl1T1RZNE55MHdMak10TUM0MU5EQTFMVEF1TmpZNUxURXVNREF4TnkweExqQTVOQzB4TGpRek56WXRNQzR4TWpZdE1DNHhNek00TFRBdU1qUXhMVEF1TWpnMU5TMHdMak0zTlMwd0xqUXdOakl0TUM0d01EWXRNQzR3TURVMUxUQXVNREkxSURBdU1EQTFOUzB3TGpBek1TQXdMVEF1TXpreUxUQXVNelE1T1Mwd0xqZ3lOeTB3TGpZeE9EazBMVEV1TWpneExUQXVPRFF6TnpVdE1DNHhNVFV0TUM0d05UWXlNaTB3TGpJeU55MHdMakV3T0RVMExUQXVNelEwTFRBdU1UVTJNalV0TUM0d09EUXRNQzR3TXpRd01TMHdMakUyTlMwd0xqQTJOREkyTFRBdU1qVXRNQzR3T1RNM05TMHdMakkxTlMwd0xqQTRPRFE0TFRBdU5URTJMVEF1TVRjek5UWXRNQzQzT0RJdE1DNHlNVGczTlMwd0xqQXlMVEF1TURBek5EQTFMVEF1TURReUlEQXVNREF6TVRRNExUQXVNRFl5SURBdE1DNHlORGt0TUM0d016a3hORFF0TUM0ME9UVXRNQzR3TmpVeU5TMHdMamMxTFRBdU1EWXlOWG9pSUdacGJHdzlJaU16TkRRNU5XVWlJSFJ5WVc1elptOXliVDBpZEhKaGJuTnNZWFJsS0RBZ01UQXlPQzQwS1NJdlBqeHdZWFJvSUdROUltMHdJREV3TlRFdU5HTXdMakF5TmpReE9TQXdMak1nTUM0eE1qWTFNU0F3TGpZZ01DNDBNemMxSURBdU9DQXdMalU1TURrZ01DNHpJREV1TWprMU9TQXdMakVnTVM0NU16YzFJREF1TW1nMUxqWXlOU0E0SURjdU1EazBZekF1TlRjMkxUQXVNU0F3TGpnME1pMHdMalVnTUM0NU1EWXRNV2d0TWpSNklpQm1hV3hzUFNJak1tTXpaVFV3SWk4K1BDOW5Qand2YzNablBnPT0iIC8+PC9zdmc+"); @@ -3239,10 +3286,10 @@ a.voted { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNDgiIGhlaWdodD0iNDgiPjxkZWZzPjxmaWx0ZXIgaWQ9ImRhcmtyZWFkZXItaW1hZ2UtZmlsdGVyIj48ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4yNDkgLTAuNjE0IC0wLjY3MiAwLjAwMCAxLjAzNSAtMC42NDYgMC4yODggLTAuNjY0IDAuMDAwIDEuMDIwIC0wLjYzNiAtMC42MDkgMC4yNTAgMC4wMDAgMC45OTQgMC4wMDAgMC4wMDAgMC4wMDAgMS4wMDAgMC4wMDAiIC8+PC9maWx0ZXI+PC9kZWZzPjxpbWFnZSB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbHRlcj0idXJsKCNkYXJrcmVhZGVyLWltYWdlLWZpbHRlcikiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlBL1Bqd2hSRTlEVkZsUVJTQnpkbWNnSUZCVlFreEpReUFuTFM4dlZ6TkRMeTlFVkVRZ1UxWkhJREV1TVM4dlJVNG5JQ0FuYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2UjNKaGNHaHBZM012VTFaSEx6RXVNUzlFVkVRdmMzWm5NVEV1WkhSa0p6NDhjM1puSUdWdVlXSnNaUzFpWVdOclozSnZkVzVrUFNKdVpYY2dNQ0F3SURRNElEUTRJaUJvWldsbmFIUTlJalE0Y0hnaUlHbGtQU0pNWVhsbGNsOHpJaUIyWlhKemFXOXVQU0l4TGpFaUlIWnBaWGRDYjNnOUlqQWdNQ0EwT0NBME9DSWdkMmxrZEdnOUlqUTRjSGdpSUhodGJEcHpjR0ZqWlQwaWNISmxjMlZ5ZG1VaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02ZUd4cGJtczlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1RrdmVHeHBibXNpUGp4blBqeHdZWFJvSUdROUlrMHdMREk0TGpNM05XZ3hNaTQyTjJNdE1DNHdOaklzTXk0ek1TMHhMak16T0N3MkxqTXhNeTB6TGpRd015dzRMalpqTFRBdU9UUTFMREF1T0RreUxURXVPVGd5TERFdU5EQTRMVEl1T0RjNUxERXVOekEySUNBZ1l5MHhMakVzTUM0ek1qZ3RNaTR5Tml3d0xqTTVOaTB5TGpnNE15d3dMalF3T0Vnd2RqSXVNamcyYURndU56VjJMVEF1TURBell6Y3VNakExTFRBdU1ETXlMREV6TGpBME15MDFMamd4Tml3eE15NHhOemN0TVRJdU9UazNTREl5ZGkweU1rZ3dWakk0TGpNM05Yb2lJR1pwYkd3OUlpTXlOREZHTWpBaUx6NDhjR0YwYUNCa1BTSk5NallzTmk0ek56VjJNakpvTVRJdU56UmpNQ3d5TGprNU1TMHhMRFV1TnpReUxUSXVOamMwTERjdU9UVTJZeTB3TGpnek9Td3hMakE0T1MweExqZ3lPQ3d4TGpjNU1pMHlMamMyTVN3eUxqSXpNeUFnSUdNdE1DNHdNRGdzTUM0d01EUXRNQzR3TVRZc01DNHdNRGd0TUM0d01qTXNNQzR3TVRKakxUQXVNVE01TERBdU1EWTFMVEF1TWpjMExEQXVNVEl5TFRBdU5EQTVMREF1TVRjMll5MHhMalV4TkN3d0xqVTFOeTB6TGpreE5Td3dMalU0Tnkwekxqa3hOU3d3TGpVNE4wZ3lObll5TGpJNE5tZzRMamMxSUNBZ1l6Y3VNekUzTERBc01UTXVNalV0TlM0NU16TXNNVE11TWpVdE1UTXVNalYyTFRJeVNESTJlaUlnWm1sc2JEMGlJekkwTVVZeU1DSXZQand2Wno0OEwzTjJaejQ9IiAvPjwvc3ZnPg=="); } .wmd-code-button { - background-image: url("http://localhost:8000/static/pagedown/resources/code.svg"); + background-image: url("http://127.0.0.1:8000/static/pagedown/resources/code.svg"); } .wmd-image-button { - background-image: url("http://localhost:8000/static/pagedown/resources/image.svg"); + background-image: url("http://127.0.0.1:8000/static/pagedown/resources/image.svg"); } .wmd-olist-button { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxkZWZzPjxmaWx0ZXIgaWQ9ImRhcmtyZWFkZXItaW1hZ2UtZmlsdGVyIj48ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4yNDkgLTAuNjE0IC0wLjY3MiAwLjAwMCAxLjAzNSAtMC42NDYgMC4yODggLTAuNjY0IDAuMDAwIDEuMDIwIC0wLjYzNiAtMC42MDkgMC4yNTAgMC4wMDAgMC45OTQgMC4wMDAgMC4wMDAgMC4wMDAgMS4wMDAgMC4wMDAiIC8+PC9maWx0ZXI+PC9kZWZzPjxpbWFnZSB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbHRlcj0idXJsKCNkYXJrcmVhZGVyLWltYWdlLWZpbHRlcikiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlBL1BqeHpkbWNnWm1sc2JEMGlibTl1WlNJZ2FHVnBaMmgwUFNJeU5DSWdkbWxsZDBKdmVEMGlNQ0F3SURJMElESTBJaUIzYVdSMGFEMGlNalFpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUkrUEhCaGRHZ2daRDBpVFRZdU1EQXdNU0F5TGpjMVF6WXVNREF3TVNBeUxqTTVOVGMzSURVdU56VXlNamNnTWk0d09EazROQ0ExTGpRd05UYzJJREl1TURFMk16TkROUzR3TmpBeE1TQXhMamswTXlBMExqY3hNRE1nTWk0eE1qQTROaUEwTGpVMk5UZ2dNaTQwTkRNd00wdzBMalUyTkRJMklESXVORFEyTXpkRE5DNDFOakl5TmlBeUxqUTFNRFkzSURRdU5UVTRORElnTWk0ME5UZzRNU0EwTGpVMU1qYzFJREl1TkRjd05ESkROQzQxTkRFMElESXVORGt6TmpZZ05DNDFNakk0TWlBeUxqVXpNRFUxSURRdU5EazNNRFFnTWk0MU56Z3dPRU0wTGpRME5USTNJREl1Tmpjek5UWWdOQzR6TmpVNE5DQXlMamd3T1RRMUlEUXVNalU1TkNBeUxqazJNalE0UXpRdU1EUXhOellnTXk0eU56VXpOeUF6TGpjek5UTTRJRE11TmpJME9EZ2dNeTR6TlRJM05TQXpMamcyTXpreFF6TXVNREF4TkRRZ05DNHdPRE16TmlBeUxqZzVORFUySURRdU5UUTJNRFVnTXk0eE1UUXdNU0EwTGpnNU56TTFRek11TXpNek5EWWdOUzR5TkRnMk5pQXpMamM1TmpFMUlEVXVNelUxTlRRZ05DNHhORGMwTmlBMUxqRXpOakE1UXpRdU1qY3lNRFVnTlM0d05UZ3lOaUEwTGpNNE9UVTJJRFF1T1RjME56TWdOQzQxTURBeElEUXVPRGczTmpWV055NHlOVU0wTGpVd01ERWdOeTQyTmpReU1TQTBMamd6TlRnNUlEZ2dOUzR5TlRBeElEaEROUzQyTmpRek1TQTRJRFl1TURBd01TQTNMalkyTkRJeElEWXVNREF3TVNBM0xqSTFWakl1TnpWYUlpQm1hV3hzUFNJak1qRXlNVEl4SWk4K1BIQmhkR2dnWkQwaVRURTVMalE1T1RVZ01UaElNVEF1T1RrNU5Vd3hNQzQ0T0RJNUlERTRMakF3TmpkRE1UQXVNemcxTmlBeE9DNHdOalExSURrdU9UazVOVEVnTVRndU5EZzNNaUE1TGprNU9UVXhJREU1UXprdU9UazVOVEVnTVRrdU5UVXlNeUF4TUM0ME5EY3lJREl3SURFd0xqazVPVFVnTWpCSU1Ua3VORGs1TlV3eE9TNDJNVFl4SURFNUxqazVNek5ETWpBdU1URXpOU0F4T1M0NU16VTFJREl3TGpRNU9UVWdNVGt1TlRFeU9DQXlNQzQwT1RrMUlERTVRekl3TGpRNU9UVWdNVGd1TkRRM055QXlNQzR3TlRFNElERTRJREU1TGpRNU9UVWdNVGhhSWlCbWFXeHNQU0lqTWpFeU1USXhJaTgrUEhCaGRHZ2daRDBpVFRFNUxqUTVPVFVnTVRFdU5VZ3hNQzQ1T1RrMVRERXdMamc0TWprZ01URXVOVEEyTjBNeE1DNHpPRFUySURFeExqVTJORFVnT1M0NU9UazFNU0F4TVM0NU9EY3lJRGt1T1RrNU5URWdNVEl1TlVNNUxqazVPVFV4SURFekxqQTFNak1nTVRBdU5EUTNNaUF4TXk0MUlERXdMams1T1RVZ01UTXVOVWd4T1M0ME9UazFUREU1TGpZeE5qRWdNVE11TkRrek0wTXlNQzR4TVRNMUlERXpMalF6TlRVZ01qQXVORGs1TlNBeE15NHdNVEk0SURJd0xqUTVPVFVnTVRJdU5VTXlNQzQwT1RrMUlERXhMamswTnpjZ01qQXVNRFV4T0NBeE1TNDFJREU1TGpRNU9UVWdNVEV1TlZvaUlHWnBiR3c5SWlNeU1USXhNakVpTHo0OGNHRjBhQ0JrUFNKTk1Ua3VORGs1TlNBMVNERXdMams1T1RWTU1UQXVPRGd5T1NBMUxqQXdOamN6UXpFd0xqTTROVFlnTlM0d05qUTBPU0E1TGprNU9UVXhJRFV1TkRnM01UWWdPUzQ1T1RrMU1TQTJRemt1T1RrNU5URWdOaTQxTlRJeU9DQXhNQzQwTkRjeUlEY2dNVEF1T1RrNU5TQTNTREU1TGpRNU9UVk1NVGt1TmpFMk1TQTJMams1TXpJM1F6SXdMakV4TXpVZ05pNDVNelUxTVNBeU1DNDBPVGsxSURZdU5URXlPRFFnTWpBdU5EazVOU0EyUXpJd0xqUTVPVFVnTlM0ME5EYzNNaUF5TUM0d05URTRJRFVnTVRrdU5EazVOU0ExV2lJZ1ptbHNiRDBpSXpJeE1qRXlNU0l2UGp4d1lYUm9JR1E5SWswMUxqRTFNRGt6SURFd0xqVXhPVGxETkM0NE5EazFOeUF4TUM0ME5qWTNJRFF1TkRjME5EUWdNVEF1TlRnMk15QTBMakk0TURNeElERXdMamM0TURSRE15NDVPRGMwTVNBeE1TNHdOek16SURNdU5URXlOVE1nTVRFdU1EY3pNeUF6TGpJeE9UWTFJREV3TGpjNE1EUkRNaTQ1TWpZM055QXhNQzQwT0RjMElESXVPVEkyTnpnZ01UQXVNREV5TmlBekxqSXhPVFk1SURrdU56RTVOamxETXk0M056VTFOaUE1TGpFMk16ZzFJRFF1TmpVd05EUWdPQzQ1TURnMElEVXVOREV4TlRjZ09TNHdOREkzUXpVdU9EQTVJRGt1TVRFeU9ETWdOaTR5TVRjeklEa3VNamszTVNBMkxqVXlOekl5SURrdU5qUTRNelJETmk0NE5ESTJJREV3TGpBd05UZ2dOeUF4TUM0ME56STNJRGNnTVRGRE55QXhNUzQyTVRrMUlEWXVOekk0T1RVZ01USXVNRGdnTmk0ek9UUXdOaUF4TWk0ME1qQTFRell1TVRFMk15QXhNaTQzTURJNUlEVXVOell6TVRVZ01USXVPVE14SURVdU5EZzRNallnTVRNdU1UQTROa3cxTGpRd09EYzBJREV6TGpFMk1ERkROUzR5TVRNME9DQXhNeTR5T0RjZ05TNHdOVFF5T0NBeE15NHpPVGNnTkM0NU1qWTROaUF4TXk0MVNEWXVNalZETmk0Mk5qUXlNU0F4TXk0MUlEY2dNVE11T0RNMU9DQTNJREUwTGpJMVF6Y2dNVFF1TmpZME1pQTJMalkyTkRJZ01UVWdOaTR5TkRrNU9TQXhOVWd6TGpjMVF6TXVNek0xTnprZ01UVWdNeUF4TkM0Mk5qUXlJRE1nTVRRdU1qVkRNeUF4TWk0NU16WTBJRE11T1Rnek9EVWdNVEl1TWprM01TQTBMalUzTlRBMUlERXhMamt4TTB3MExqWXpOVEl5SURFeExqZzNNemxETkM0NU5USTFPU0F4TVM0Mk5qYzNJRFV1TVRZNE5ETWdNVEV1TlRJM05TQTFMak15TkRZNUlERXhMak0yT0RaRE5TNDBOVGcxTlNBeE1TNHlNekkxSURVdU5TQXhNUzR4TXpBMklEVXVOU0F4TVVNMUxqVWdNVEF1TnpjM05DQTFMalF6T0RZMUlERXdMalk0TVRnZ05TNDBNREkwTnlBeE1DNDJOREE0UXpVdU16WXdPRE1nTVRBdU5Ua3pOaUExTGpJNE5EYzFJREV3TGpVME16VWdOUzR4TlRBNU15QXhNQzQxTVRrNVdpSWdabWxzYkQwaUl6SXhNakV5TVNJdlBqeHdZWFJvSUdROUlrMHlMamsyT1RZM0lESXhMakk0TURORE1pNDVOamsyTnlBeU1TNHlPREF6SURNdU1EWXlOVEVnTWpFdU16WTBNU0F5TGprM05ESTJJREl4TGpJNE5EbE1NaTQ1TnprMk1pQXlNUzR5T1RBeFRESXVPVGt5T1NBeU1TNHpNREk0UXpNdU1EQXlPRGNnTWpFdU16RXlNU0F6TGpBeE5UQTVJREl4TGpNeU16TWdNeTR3TWprMU5pQXlNUzR6TXpVNVF6TXVNRFU0TkRnZ01qRXVNell4TWlBekxqQTVOalV6SURJeExqTTVNamNnTXk0eE5ETTNOU0F5TVM0ME1qZ3hRek11TWpNNE1TQXlNUzQwT1RnNUlETXVNelk1T1RZZ01qRXVOVGcySURNdU5UTTVOVGtnTWpFdU5qY3dPRU16TGpnNE1UTXhJREl4TGpnME1UY2dOQzR6TnpBME15QXlNaUExSURJeVF6VXVOak01TWpFZ01qSWdOaTR4T1RVNU5pQXlNUzQ0TVRnMklEWXVOakF4TXpJZ01qRXVORFl3TlVNM0xqQXdPVEl5SURJeExqRXdNREVnTnk0eU1URTJNeUF5TUM0Mk1ETXlJRGN1TVRrMU5UTWdNakF1TVRBeFF6Y3VNVGd5TVRrZ01Ua3VOamcwTmlBM0xqQXlPVEF6SURFNUxqTXdOVE1nTmk0M05qazROaUF4T1VNM0xqQXlPVEF6SURFNExqWTVORGNnTnk0eE9ESXhPU0F4T0M0ek1UVTBJRGN1TVRrMU5UTWdNVGN1T0RrNVF6Y3VNakV4TmpNZ01UY3VNemsyT0NBM0xqQXdPVEl5SURFMkxqZzVPVGtnTmk0Mk1ERXpNaUF4Tmk0MU16azFRell1TVRrMU9UWWdNVFl1TVRneE5DQTFMall6T1RJeElERTJJRFVnTVRaRE5DNHpOekEwTXlBeE5pQXpMamc0TVRNeElERTJMakUxT0RNZ015NDFNemsxT1NBeE5pNHpNamt5UXpNdU16WTVPVFlnTVRZdU5ERTBJRE11TWpNNE1TQXhOaTQxTURFeElETXVNVFF6TnpVZ01UWXVOVGN4T1VNekxqQTVOalV6SURFMkxqWXdOek1nTXk0d05UZzBPQ0F4Tmk0Mk16ZzRJRE11TURJNU5UWWdNVFl1TmpZME1VTXpMakF4TlRBNUlERTJMalkzTmpjZ015NHdNREk0TnlBeE5pNDJPRGM1SURJdU9Ua3lPU0F4Tmk0Mk9UY3lUREl1T1RjNU5qSWdNVFl1TnpBNU9Vd3lMamszTkRJeklERTJMamN4TlRGTU1pNDVOekU0T1NBeE5pNDNNVGMxVERJdU9UY3dPVEVnTVRZdU56RTROVXd5TGprMk9UWTNJREUyTGpjeE9UZERNaTQyTnpZM09DQXhOeTR3TVRJMklESXVOamMyTnpnZ01UY3VORGczTkNBeUxqazJPVFkzSURFM0xqYzRNRE5ETXk0eU5UZzJJREU0TGpBMk9UTWdNeTQzTWpRMk1pQXhPQzR3TnpNeUlEUXVNREU0TXpRZ01UY3VOemt5TVVNMExqQXlNVGNnTVRjdU56ZzVNaUEwTGpBek1ERTRJREUzTGpjNE1pQTBMakEwTXpjMUlERTNMamMzTVRsRE5DNHdOelEwSURFM0xqYzBPRGtnTkM0eE16QXdOQ0F4Tnk0M01URWdOQzR5TVRBME1TQXhOeTQyTnpBNFF6UXVNelk0TmprZ01UY3VOVGt4TnlBMExqWXlPVFUzSURFM0xqVWdOU0F4Tnk0MVF6VXVNell3TnprZ01UY3VOU0ExTGpVek5qQXhJREUzTGpVNU9Ua2dOUzQyTURneE1pQXhOeTQyTmpNMlF6VXVOamMzTmpnZ01UY3VOekkxTVNBMUxqWTVPREl6SURFM0xqYzVNRGNnTlM0Mk9UWXpJREUzTGpnMU1VTTFMalk1TkRJeklERTNMamt4TlRVZ05TNDJOalF3TXlBeE9DNHdNREkzSURVdU5UY3lOemdnTVRndU1EZ3hPRU0xTGpRNE5EVWdNVGd1TVRVNE5DQTFMak13T1RZeUlERTRMakkxSURVZ01UZ3VNalZETkM0MU9EVTNPU0F4T0M0eU5TQTBMakkxSURFNExqVTROVGdnTkM0eU5TQXhPVU0wTGpJMUlERTVMalF4TkRJZ05DNDFPRFUzT1NBeE9TNDNOU0ExSURFNUxqYzFRelV1TXpBNU5qSWdNVGt1TnpVZ05TNDBPRFExSURFNUxqZzBNVFlnTlM0MU56STNPQ0F4T1M0NU1UZ3lRelV1TmpZME1ETWdNVGt1T1RrM015QTFMalk1TkRJeklESXdMakE0TkRVZ05TNDJPVFl6SURJd0xqRTBPVU0xTGpZNU9ESXpJREl3TGpJd09UTWdOUzQyTnpjMk9DQXlNQzR5TnpRNUlEVXVOakE0TVRJZ01qQXVNek0yTkVNMUxqVXpOakF4SURJd0xqUXdNREVnTlM0ek5qQTNPU0F5TUM0MUlEVWdNakF1TlVNMExqWXlPVFUzSURJd0xqVWdOQzR6TmpnMk9TQXlNQzQwTURneklEUXVNakV3TkRFZ01qQXVNekk1TWtNMExqRXpNREEwSURJd0xqSTRPU0EwTGpBM05EUWdNakF1TWpVeE1TQTBMakEwTXpjMUlESXdMakl5T0RGRE5DNHdNekF4T0NBeU1DNHlNVGdnTkM0d01qRTNJREl3TGpJeE1EZ2dOQzR3TVRnek5DQXlNQzR5TURjNVF6TXVOekkwTmpJZ01Ua3VPVEkyT0NBekxqSTFPRFlnTVRrdU9UTXdOeUF5TGprMk9UWTNJREl3TGpJeE9UZERNaTQyTnpZM09DQXlNQzQxTVRJMklESXVOamMyTnpnZ01qQXVPVGczTkNBeUxqazJPVFkzSURJeExqSTRNRE5hVFRJdU9UY3hPRGtnTVRZdU56RTNOVXd5TGprM01Ea3hJREUyTGpjeE9EVkRNaTQ1TnpjMklERTJMamN4TWprZ015NHhOekU0TWlBeE5pNDFOVEUxSURJdU9UY3hPRGtnTVRZdU56RTNOVm9pSUdacGJHdzlJaU15TVRJeE1qRWlMejQ4TDNOMlp6ND0iIC8+PC9zdmc+"); @@ -3251,16 +3298,16 @@ a.voted { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiPjxkZWZzPjxmaWx0ZXIgaWQ9ImRhcmtyZWFkZXItaW1hZ2UtZmlsdGVyIj48ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4yNDkgLTAuNjE0IC0wLjY3MiAwLjAwMCAxLjAzNSAtMC42NDYgMC4yODggLTAuNjY0IDAuMDAwIDEuMDIwIC0wLjYzNiAtMC42MDkgMC4yNTAgMC4wMDAgMC45OTQgMC4wMDAgMC4wMDAgMC4wMDAgMS4wMDAgMC4wMDAiIC8+PC9maWx0ZXI+PC9kZWZzPjxpbWFnZSB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGZpbHRlcj0idXJsKCNkYXJrcmVhZGVyLWltYWdlLWZpbHRlcikiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlBL1BqeHpkbWNnWm1sc2JEMGlibTl1WlNJZ2FHVnBaMmgwUFNJeU1DSWdkbWxsZDBKdmVEMGlNQ0F3SURJd0lESXdJaUIzYVdSMGFEMGlNakFpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUkrUEhCaGRHZ2daRDBpVFRNdU1qVWdOME16TGprME1ETTJJRGNnTkM0MUlEWXVORFF3TXpZZ05DNDFJRFV1TnpWRE5DNDFJRFV1TURVNU5qUWdNeTQ1TkRBek5pQTBMalVnTXk0eU5TQTBMalZETWk0MU5UazJOQ0EwTGpVZ01pQTFMakExT1RZMElESWdOUzQzTlVNeUlEWXVORFF3TXpZZ01pNDFOVGsyTkNBM0lETXVNalVnTjFwTk55QTFMamMxUXpjZ05TNHpNelUzT1NBM0xqTXpOVGM1SURVZ055NDNOU0ExU0RFM0xqSTFRekUzTGpZMk5ESWdOU0F4T0NBMUxqTXpOVGM1SURFNElEVXVOelZETVRnZ05pNHhOalF5TVNBeE55NDJOalF5SURZdU5TQXhOeTR5TlNBMkxqVklOeTQzTlVNM0xqTXpOVGM1SURZdU5TQTNJRFl1TVRZME1qRWdOeUExTGpjMVdrMDNMamMxSURFd1F6Y3VNek0xTnprZ01UQWdOeUF4TUM0ek16VTRJRGNnTVRBdU56VkROeUF4TVM0eE5qUXlJRGN1TXpNMU56a2dNVEV1TlNBM0xqYzFJREV4TGpWSU1UY3VNalZETVRjdU5qWTBNaUF4TVM0MUlERTRJREV4TGpFMk5ESWdNVGdnTVRBdU56VkRNVGdnTVRBdU16TTFPQ0F4Tnk0Mk5qUXlJREV3SURFM0xqSTFJREV3U0RjdU56VmFUVGN1TnpVZ01UVkROeTR6TXpVM09TQXhOU0EzSURFMUxqTXpOVGdnTnlBeE5TNDNOVU0zSURFMkxqRTJORElnTnk0ek16VTNPU0F4Tmk0MUlEY3VOelVnTVRZdU5VZ3hOeTR5TlVNeE55NDJOalF5SURFMkxqVWdNVGdnTVRZdU1UWTBNaUF4T0NBeE5TNDNOVU14T0NBeE5TNHpNelU0SURFM0xqWTJORElnTVRVZ01UY3VNalVnTVRWSU55NDNOVnBOTkM0MUlERXdMamMxUXpRdU5TQXhNUzQwTkRBMElETXVPVFF3TXpZZ01USWdNeTR5TlNBeE1rTXlMalUxT1RZMElERXlJRElnTVRFdU5EUXdOQ0F5SURFd0xqYzFReklnTVRBdU1EVTVOaUF5TGpVMU9UWTBJRGt1TlNBekxqSTFJRGt1TlVNekxqazBNRE0ySURrdU5TQTBMalVnTVRBdU1EVTVOaUEwTGpVZ01UQXVOelZhVFRNdU1qVWdNVGRETXk0NU5EQXpOaUF4TnlBMExqVWdNVFl1TkRRd05DQTBMalVnTVRVdU56VkROQzQxSURFMUxqQTFPVFlnTXk0NU5EQXpOaUF4TkM0MUlETXVNalVnTVRRdU5VTXlMalUxT1RZMElERTBMalVnTWlBeE5TNHdOVGsySURJZ01UVXVOelZETWlBeE5pNDBOREEwSURJdU5UVTVOalFnTVRjZ015NHlOU0F4TjFvaUlHWnBiR3c5SWlNeU1USXhNakVpTHo0OEwzTjJaejQ9IiAvPjwvc3ZnPg=="); } .wmd-heading-button { - background-image: url("http://localhost:8000/static/pagedown/resources/heading.svg"); + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIj48ZGVmcz48ZmlsdGVyIGlkPSJkYXJrcmVhZGVyLWltYWdlLWZpbHRlciI+PGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAuMjQ5IC0wLjYxNCAtMC42NzIgMC4wMDAgMS4wMzUgLTAuNjQ2IDAuMjg4IC0wLjY2NCAwLjAwMCAxLjAyMCAtMC42MzYgLTAuNjA5IDAuMjUwIDAuMDAwIDAuOTk0IDAuMDAwIDAuMDAwIDAuMDAwIDEuMDAwIDAuMDAwIiAvPjwvZmlsdGVyPjwvZGVmcz48aW1hZ2Ugd2lkdGg9IjE3OTIiIGhlaWdodD0iMTc5MiIgZmlsdGVyPSJ1cmwoI2RhcmtyZWFkZXItaW1hZ2UtZmlsdGVyKSIgeGxpbms6aHJlZj0iIiAvPjwvc3ZnPg=="); } .wmd-hr-button { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQS9Qanh6ZG1jZ2RtbGxkMEp2ZUQwaU1DQXdJREl3SURJd0lpQjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaVBqeHdZWFJvSUdROUlrMHhJREZvTW5ZeVNERldNWHB0TUNBMGFESjJNa2d4VmpWNmJUQWdOR2d4T0hZeVNERldPWHB0TUNBMGFESjJNa2d4ZGkweWVtMHdJRFJvTW5ZeVNERjJMVEo2VFRVZ01XZ3lkakpJTlZZeGVtMHdJREUyYURKMk1rZzFkaTB5ZWswNUlERm9Nbll5U0RsV01YcHRNQ0EwYURKMk1rZzVWalY2YlRBZ09HZ3lkakpJT1hZdE1ucHRNQ0EwYURKMk1rZzVkaTB5ZW0wMExURTJhREoyTW1ndE1sWXhlbTB3SURFMmFESjJNbWd0TW5ZdE1ucHROQzB4Tm1neWRqSm9MVEpXTVhwdE1DQTBhREoyTW1ndE1sWTFlbTB3SURob01uWXlhQzB5ZGkweWVtMHdJRFJvTW5ZeWFDMHlkaTB5ZWlJdlBqd3ZjM1puUGc9PSIgLz48L3N2Zz4="); } .wmd-undo-button { - background-image: url("http://localhost:8000/static/pagedown/resources/undo.svg"); + background-image: url("http://127.0.0.1:8000/static/pagedown/resources/undo.svg"); } .wmd-redo-button { - background-image: url("http://localhost:8000/static/pagedown/resources/redo.svg"); + background-image: url("http://127.0.0.1:8000/static/pagedown/resources/redo.svg"); } .wmd-admonition-button { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCI+PGRlZnM+PGZpbHRlciBpZD0iZGFya3JlYWRlci1pbWFnZS1maWx0ZXIiPjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwLjI0OSAtMC42MTQgLTAuNjcyIDAuMDAwIDEuMDM1IC0wLjY0NiAwLjI4OCAtMC42NjQgMC4wMDAgMS4wMjAgLTAuNjM2IC0wLjYwOSAwLjI1MCAwLjAwMCAwLjk5NCAwLjAwMCAwLjAwMCAwLjAwMCAxLjAwMCAwLjAwMCIgLz48L2ZpbHRlcj48L2RlZnM+PGltYWdlIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIiBmaWx0ZXI9InVybCgjZGFya3JlYWRlci1pbWFnZS1maWx0ZXIpIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQS9QandoUkU5RFZGbFFSU0J6ZG1jZ0lGQlZRa3hKUXlBbkxTOHZWek5ETHk5RVZFUWdVMVpISURFdU1TOHZSVTRuSUNBbmFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdlIzSmhjR2hwWTNNdlUxWkhMekV1TVM5RVZFUXZjM1puTVRFdVpIUmtKejQ4YzNabklHVnVZV0pzWlMxaVlXTnJaM0p2ZFc1a1BTSnVaWGNnTUNBd0lEVXhNaUExTVRJaUlHbGtQU0pNWVhsbGNsOHhJaUIyWlhKemFXOXVQU0l4TGpFaUlIWnBaWGRDYjNnOUlqQWdNQ0ExTVRJZ05URXlJaUI0Yld3NmMzQmhZMlU5SW5CeVpYTmxjblpsSWlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhodGJHNXpPbmhzYVc1clBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1TDNoc2FXNXJJajQ4Wno0OFp6NDhjR0YwYUNCa1BTSk5NelkxTERFMk55NDRTREl5T0M0eVl5MDFMamNzTUMweE1DNDBMVFF1TnkweE1DNDBMVEV3TGpSMkxUQXVPR013TFRVdU55dzBMamN0TVRBdU5Dd3hNQzQwTFRFd0xqUklNelkxWXpVdU55d3dMREV3TGpRc05DNDNMREV3TGpRc01UQXVOQ0FnSUNCMk1DNDRRek0zTlM0MUxERTJNeTR4TERNM01DNDRMREUyTnk0NExETTJOU3d4TmpjdU9Ib2lJR1pwYkd3OUlpTXpNRE5CTTBZaUx6NDhjR0YwYUNCa1BTSk5NelkxTERJeU9DNDRTREUxTXk0NVl5MDFMamNzTUMweE1DNDBMVFF1TnkweE1DNDBMVEV3TGpSMkxUQXVPR013TFRVdU55dzBMamN0TVRBdU5Dd3hNQzQwTFRFd0xqUklNelkxWXpVdU55d3dMREV3TGpRc05DNDNMREV3TGpRc01UQXVOQ0FnSUNCMk1DNDRRek0zTlM0MUxESXlOQzR4TERNM01DNDRMREl5T0M0NExETTJOU3d5TWpndU9Ib2lJR1pwYkd3OUlpTXpNRE5CTTBZaUx6NDhjR0YwYUNCa1BTSk5NelkxTERJNE9TNDRTREUxTXk0NVl5MDFMamNzTUMweE1DNDBMVFF1TnkweE1DNDBMVEV3TGpSMkxUQXVPR013TFRVdU55dzBMamN0TVRBdU5Dd3hNQzQwTFRFd0xqUklNelkxWXpVdU55d3dMREV3TGpRc05DNDNMREV3TGpRc01UQXVOQ0FnSUNCMk1DNDRRek0zTlM0MUxESTROUzR4TERNM01DNDRMREk0T1M0NExETTJOU3d5T0RrdU9Ib2lJR1pwYkd3OUlpTXpNRE5CTTBZaUx6NDhjR0YwYUNCa1BTSk5NelkxTERNMU1DNDVTREUxTXk0NVl5MDFMamNzTUMweE1DNDBMVFF1TnkweE1DNDBMVEV3TGpSMkxUQXVPR013TFRVdU55dzBMamN0TVRBdU5Dd3hNQzQwTFRFd0xqUklNelkxWXpVdU55d3dMREV3TGpRc05DNDNMREV3TGpRc01UQXVOQ0FnSUNCMk1DNDRRek0zTlM0MUxETTBOaTR5TERNM01DNDRMRE0xTUM0NUxETTJOU3d6TlRBdU9Yb2lJR1pwYkd3OUlpTXpNRE5CTTBZaUx6NDhjR0YwYUNCa1BTSk5NelkxTERReE1TNDVTREUxTXk0NVl5MDFMamNzTUMweE1DNDBMVFF1TnkweE1DNDBMVEV3TGpSMkxUQXVPR013TFRVdU55dzBMamN0TVRBdU5Dd3hNQzQwTFRFd0xqUklNelkxWXpVdU55d3dMREV3TGpRc05DNDNMREV3TGpRc01UQXVOQ0FnSUNCMk1DNDRRek0zTlM0MUxEUXdOeTR5TERNM01DNDRMRFF4TVM0NUxETTJOU3cwTVRFdU9Yb2lJR1pwYkd3OUlpTXpNRE5CTTBZaUx6NDhMMmMrUEhCaGRHZ2daRDBpVFRNNU1pdzBNeTQxU0RFM09TNHliRE00TGpZc05URXVOR2d4TkRRdU4yTXlOeTR5TERBc05Ea3VOU3d5TWk0ekxEUTVMalVzTkRrdU5YWXlOamt1TTJNd0xESTNMakl0TWpJdU15dzBPUzQxTFRRNUxqVXNORGt1TlVneE5UUXVOQ0FnSUdNdE1qY3VNaXd3TFRRNUxqVXRNakl1TXkwME9TNDFMVFE1TGpWV01UVXdMamxNTmpVdU15dzVPQzQwWXkwd0xqTXNNaTQzTFRBdU9DdzFMak10TUM0NExEaDJNelF5TGpOak1Dd3pOQzQyTERJNExqTXNOak1zTmpNc05qTklNemt5WXpNMExqWXNNQ3cyTXkweU9DNHpMRFl6TFRZelZqRXdOaTQwSUNBZ1F6UTFOQzQ1TERjeExqZ3NOREkyTGpZc05ETXVOU3d6T1RJc05ETXVOWG9pSUdacGJHdzlJaU16TUROQk0wWWlMejQ4Wno0OGNHRjBhQ0JrUFNKTk1USTFMalVzTVRRNUxqaHNOamd1TXl3eU5XTXpMallzTVM0ekxEWXVOUzB3TGpjc05pNHpMVFF1Tm13dE15NHlMVGN5TGpkakxUQXVNUzB4TGpVdE1DNDFMVEl1T1MweExqTXROQzR6YkRBdU1TMHdMakVnSUNBZ1l5MHdMakV0TUM0eUxUQXVNeTB3TGpRdE1DNDBMVEF1Tm13dE5EZ3VPQzAyTmk0MmJDMHhOaXd4TVM0M2JEUTBMakVzTmpBdU1tTXhMamdzTWk0MExERXVNaXcxTGpndE1TNHlMRGN1Tm13dE15NDRMREl1T0dNdE1pNDBMREV1T0MwMUxqZ3NNUzR5TFRjdU5pMHhMakpNTVRFNExEUTJMamtnSUNBZ2JDMHhOUzQ0TERFeExqWnNORFF1TkN3Mk1DNDNZekV1Tml3eUxqSXNNUzR4TERVdU1pMHhMakVzTmk0NGJDMDBMamNzTXk0MVl5MHlMaklzTVM0MkxUVXVNaXd4TGpFdE5pNDRMVEV1TVV3NE9TNDJMRFkzTGpaTU56SXVOaXc0TUd3ME55NHlMRFkwTGpRZ0lDQWdRekV5TVN3eE5EWXVPQ3d4TWpNc01UUTRMamtzTVRJMUxqVXNNVFE1TGpoNklFMHhNemdzTVRReExqbHNORGN1Tmkwek5DNDVZekl1T1MweUxqRXNOeTQyTERFdU15dzNMamdzTlM0NGJERXVNU3d6T1M0M1l5MHdMamNzTUM0eUxURXVOQ3d3TGpNdE1pd3dMamRzTFRFMExqSXNNVEF1TkNBZ0lDQmpMVEF1TVN3d0xqRXRNQzR6TERBdE1DNHpMREF1TVd3dE16WXVPQzB4TWk0MlF6RXpOeXd4TkRrdU5pd3hNelV1TVN3eE5EUXNNVE00TERFME1TNDVlaUlnWm1sc2JEMGlJek13TTBFelJpSXZQanh3WVhSb0lHUTlJazAyT0M0NUxEYzFMak5zTFRVdU55MDNMamRqTFRFd0xqVXRNVFF1TXkwM0xqTXRNelF1TlN3M0xUUTFiREl5TFRFMkxqRmpNVFF1TXkweE1DNDFMRE0wTGpVdE55NHpMRFExTERkc05TNDNMRGN1TjB3Mk9DNDVMRGMxTGpONklpQm1hV3hzUFNJak16QXpRVE5HSWk4K1BDOW5Qand2Wno0OEwzTjJaejQ9IiAvPjwvc3ZnPg=="); @@ -3275,255 +3322,138 @@ a.voted { background-color: rgb(0, 0, 0); } .wmd-prompt-dialog { + background-color: rgb(30, 32, 33); border-color: rgb(77, 83, 86); - background-color: rgb(30, 32, 33); } .wmd-prompt-dialog > form > input[type="text"] { border-color: rgb(77, 83, 86); - color: rgb(232, 230, 227); + color: rgb(232, 230, 227); } .wmd-prompt-dialog > form > input[type="button"] { border-color: rgb(82, 88, 92); } .wmd-preview { - background-image: initial; background-color: rgb(24, 26, 27); + background-image: initial; border-color: rgb(72, 78, 81); } .pagedown-image-upload { - background-image: initial; background-color: rgb(24, 26, 27); + background-image: initial; box-shadow: rgba(0, 0, 0, 0.5) 2px 2px 10px 0px; } .pagedown-image-upload .submit-loading { border-color: rgb(46, 91, 113) rgb(51, 56, 58) rgb(51, 56, 58); } div.dmmd-preview-update { - background-image: initial; background-color: rgb(53, 57, 59); + background-image: initial; color: rgb(200, 195, 188); } div.dmmd-preview-stale { - background-image: repeating-linear-gradient(-45deg, - rgb(24, 26, 27), - rgb(24, 26, 27) 10px, - rgb(28, 30, 31) 10px, - rgb(28, 30, 31) 20px); background-color: initial; + background-image: repeating-linear-gradient(-45deg, rgb(24, 26, 27), rgb(24, 26, 27) 10px, rgb(28, 30, 31) 10px, rgb(28, 30, 31) 20px); } -code .hll { - background-color: rgb(61, 61, 0); +.course-list { + list-style-image: initial; } -code .c { - color: rgb(162, 154, 142); +.course-list .course-item { + background-color: rgb(24, 26, 27); + border-color: rgb(58, 62, 65); + box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 6px; } -code .err { - color: rgb(233, 94, 94); - background-color: rgb(58, 36, 36); +.course-list .course-item:hover { + box-shadow: rgba(0, 0, 0, 0.15) 0px 6px 12px; } -code .k { +.lesson-list { + list-style-image: initial; +} +.lesson-list li:hover { + background-color: rgb(52, 52, 0); + background-image: initial; + box-shadow: rgba(0, 0, 0, 0.15) 0px 6px 12px; +} +.lesson-list li { + background-color: rgb(24, 26, 27); + background-image: initial; + border-color: rgb(58, 62, 65); + box-shadow: rgb(53, 57, 59) 0px 2px 4px; +} +.lesson-list .lesson-title { + color: initial; +} +.lesson-list .lesson-title .lesson-points { + color: rgb(169, 162, 151); +} +.lesson-list .progress-container { + background-color: rgb(42, 45, 47); + background-image: initial; +} +.lesson-list .progress-bar { + background-color: rgb(125, 44, 5); + background-image: initial; color: rgb(232, 230, 227); } -code .o { - color: rgb(232, 230, 227); +.course-problem-list li { + border-bottom-color: rgb(53, 57, 59); } -code .cm { - color: rgb(162, 154, 142); +.course-problem-list li:hover { + background-color: rgb(42, 45, 47); + background-image: initial; } -code .cp { - color: rgb(168, 160, 149); -} -code .c1 { - color: rgb(162, 154, 142); -} -code .cs { - color: rgb(168, 160, 149); -} -code .gd { - color: rgb(232, 230, 227); - background-color: rgb(71, 0, 0); -} -code .ge { - color: rgb(232, 230, 227); -} -code .gr { - color: rgb(255, 85, 85); -} -code .gh { - color: rgb(168, 160, 149); -} -code .gi { - color: rgb(232, 230, 227); - background-color: rgb(18, 71, 0); -} -code .go { - color: rgb(157, 148, 136); -} -code .gp { - color: rgb(178, 172, 162); -} -code .gu { - color: rgb(178, 172, 162); -} -code .gt { - color: rgb(255, 85, 85); -} -code .kc { - color: rgb(232, 230, 227); -} -code .kd { - color: rgb(232, 230, 227); -} -code .kn { - color: rgb(232, 230, 227); -} -code .kp { - color: rgb(232, 230, 227); -} -code .kr { - color: rgb(232, 230, 227); -} -code .kt { - color: rgb(139, 166, 197); -} -code .m { - color: rgb(97, 255, 255); -} -code .s { - color: rgb(240, 62, 107); -} -code .na { - color: rgb(114, 255, 255); -} -code .nb { - color: rgb(79, 211, 255); -} -code .nc { - color: rgb(139, 166, 197); -} -code .no { - color: rgb(114, 255, 255); -} -code .nd { - color: rgb(184, 178, 168); -} -code .ni { - color: rgb(255, 114, 255); -} -code .ne { - color: rgb(255, 97, 97); -} -code .nf { - color: rgb(255, 97, 97); -} -code .nl { - color: rgb(255, 97, 97); -} -code .nn { - color: rgb(178, 172, 162); -} -code .nt { - color: rgb(127, 174, 255); -} -code .nv { - color: rgb(114, 255, 255); -} -code .ow { - color: rgb(232, 230, 227); -} -code .w { - color: rgb(189, 183, 175); -} -code .mf { - color: rgb(97, 255, 255); -} -code .mh { - color: rgb(97, 255, 255); -} -code .mi { - color: rgb(97, 255, 255); -} -code .mo { - color: rgb(97, 255, 255); -} -code .sb { - color: rgb(240, 62, 107); -} -code .sc { - color: rgb(240, 62, 107); -} -code .sd { - color: rgb(240, 62, 107); -} -code .s2 { - color: rgb(240, 62, 107); -} -code .se { - color: rgb(240, 62, 107); -} -code .sh { - color: rgb(240, 62, 107); -} -code .si { - color: rgb(240, 62, 107); -} -code .sx { - color: rgb(240, 62, 107); -} -code .sr { - color: rgb(97, 255, 136); -} -code .s1 { - color: rgb(240, 62, 107); -} -code .ss { - color: rgb(255, 97, 216); -} -code .bp { - color: rgb(168, 160, 149); -} -code .vc { - color: rgb(114, 255, 255); -} -code .vg { - color: rgb(114, 255, 255); -} -code .vi { - color: rgb(114, 255, 255); -} -code .il { - color: rgb(97, 255, 255); +.course-problem-list a { + color: inherit; + text-decoration-color: initial; } .fa-border { - border-color: rgb(53, 57, 59); + border: var(--darkreader-border--fa-border-width, .08em) var(--darkreader-border--fa-border-style, solid) var(--darkreader-border--fa-border-color, #35393b); +} +.fa-spin-reverse { + --fa-animation-direction: reverse; } .fa-inverse { - color: rgb(232, 230, 227); + color: var(--darkreader-text--fa-inverse, #e8e6e3); +} +:host, +:root { + --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"; + --fa-style-family-brands: "Font Awesome 6 Brands"; +} +:host, +:root { + --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free"; +} +:host, +:root { + --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"; + --fa-style-family-classic: "Font Awesome 6 Free"; } @media all { .featherlight { - background-image: initial; background-color: rgba(0, 0, 0, 0); + background-image: initial; } .featherlight:last-of-type { - background-image: initial; background-color: rgba(0, 0, 0, 0.8); + background-image: initial; } .featherlight .featherlight-content { - border-bottom-color: transparent; - background-image: initial; background-color: rgb(24, 26, 27); + background-image: initial; + border-bottom-color: transparent; } .featherlight .featherlight-close-icon { - background-image: initial; background-color: rgba(24, 26, 27, 0.3); + background-image: initial; color: rgb(232, 230, 227); } .featherlight-iframe .featherlight-content { - border-bottom-color: initial; + border-bottom: 0px; } .featherlight iframe { border-color: initial; + border-style: initial; + border-width: 0px; } } @media only screen and (max-width: 1024px) { @@ -3532,15 +3462,15 @@ code .il { } } .tooltipped::after { + background-color: rgba(0, 0, 0, 0.8); + background-image: initial; color: rgb(232, 230, 227); text-decoration-color: initial; text-shadow: none; - background-image: initial; - background-color: rgba(0, 0, 0, 0.8); } .tooltipped::before { - color: rgba(232, 230, 227, 0.8); border-color: transparent; + color: rgba(232, 230, 227, 0.8); } .tooltipped:hover::before, .tooltipped:hover::after, @@ -3568,6 +3498,8 @@ code .il { } .select2-container .select2-search--inline .select2-search__field { border-color: initial; + border-style: none; + border-width: initial; } .select2-dropdown { background-color: rgb(24, 26, 27); @@ -3577,17 +3509,21 @@ code .il { list-style-image: initial; } .select2-container--open .select2-dropdown--above { - border-bottom-color: initial; + border-bottom: none; } .select2-container--open .select2-dropdown--below { - border-top-color: initial; + border-top: none; } .select2-close-mask { - border-color: initial; background-color: rgb(24, 26, 27); + border-color: initial; + border-style: initial; + border-width: 0px; } .select2-hidden-accessible { border-color: initial !important; + border-style: initial !important; + border-width: 0px !important; } .select2-container--default .select2-selection--single { background-color: rgb(24, 26, 27); @@ -3636,13 +3572,19 @@ code .il { background-color: rgb(34, 36, 38); } .select2-container--default .select2-search--dropdown .select2-search__field { - border-color: rgb(72, 78, 81); + border-color: rgb(72, 78, 81); } .select2-container--default .select2-search--inline .select2-search__field { - background-image: initial; background-color: transparent; border-color: initial; outline-color: initial; box-shadow: none; + background-color: transparent; + background-image: initial; + border-color: initial; + border-style: none; + border-width: initial; + box-shadow: none; + outline-color: initial; } .select2-container--default .select2-results__option[aria-disabled="true"] { - color: rgb(168, 160, 149); + color: rgb(168, 160, 149); } .select2-container--default .select2-results__option[aria-selected="true"] { background-color: rgb(43, 47, 49); @@ -3653,10 +3595,9 @@ code .il { } .select2-container--classic .select2-selection--single { background-color: rgb(29, 31, 32); + background-image: linear-gradient(rgb(24, 26, 27) 50%, rgb(34, 36, 38) 100%); border-color: rgb(72, 78, 81); outline-color: initial; - background-image: linear-gradient(rgb(24, 26, 27) 50%, - rgb(34, 36, 38) 100%); } .select2-container--classic .select2-selection--single:focus { border-color: rgb(4, 60, 150); @@ -3669,42 +3610,41 @@ code .il { } .select2-container--classic .select2-selection--single .select2-selection__arrow { background-color: rgb(43, 47, 49); - border-top-color: initial; - border-right-color: initial; - border-bottom-color: initial; + background-image: linear-gradient(rgb(34, 36, 38) 50%, rgb(53, 57, 59) 100%); + border-bottom: none; border-left-color: rgb(72, 78, 81); - background-image: linear-gradient(rgb(34, 36, 38) 50%, - rgb(53, 57, 59) 100%); + border-right: none; + border-top: none; } .select2-container--classic .select2-selection--single .select2-selection__arrow b { - border-color: rgb(82, 88, 92) transparent transparent; + border-color: rgb(82, 88, 92) transparent transparent; } .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { - border-top-color: initial; - border-bottom-color: initial; - border-left-color: initial; + border-bottom: none; + border-left: none; border-right-color: rgb(72, 78, 81); + border-top: none; } .select2-container--classic.select2-container--open .select2-selection--single { border-color: rgb(4, 60, 150); } .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { - background-image: initial; background-color: transparent; + background-image: initial; border-color: initial; + border-style: none; + border-width: initial; } .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { border-color: transparent transparent rgb(82, 88, 92); } .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { - border-top-color: initial; - background-image: linear-gradient(rgb(24, 26, 27) 0%, - rgb(34, 36, 38) 50%); + background-image: linear-gradient(rgb(24, 26, 27) 0%, rgb(34, 36, 38) 50%); + border-top: none; } .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { - border-bottom-color: initial; - background-image: linear-gradient(rgb(34, 36, 38) 50%, - rgb(24, 26, 27) 100%); + background-image: linear-gradient(rgb(34, 36, 38) 50%, rgb(24, 26, 27) 100%); + border-bottom: none; } .select2-container--classic .select2-selection--multiple { background-color: rgb(24, 26, 27); @@ -3731,27 +3671,28 @@ code .il { border-color: rgb(4, 60, 150); } .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { - border-top-color: initial; + border-top: none; } .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { - border-bottom-color: initial; + border-bottom: none; } .select2-container--classic .select2-search--dropdown .select2-search__field { border-color: rgb(72, 78, 81); outline-color: initial; } .select2-container--classic .select2-search--inline .select2-search__field { - outline-color: initial; box-shadow: none; + outline-color: initial; } .select2-container--classic .select2-dropdown { - background-color: rgb(24, 26, 27); border-color: transparent; + background-color: rgb(24, 26, 27); + border-color: transparent; } .select2-container--classic .select2-dropdown--above { - border-bottom-color: initial; + border-bottom: none; } .select2-container--classic .select2-dropdown--below { - border-top-color: initial; + border-top: none; } .select2-container--classic .select2-results__option[aria-disabled="true"] { color: rgb(152, 143, 129); @@ -3771,112 +3712,42 @@ code .il { } .sr-only { border-color: initial; -} -.CtxtMenu_InfoContent { - border-color: initial; - background-color: rgb(34, 36, 38); -} -.CtxtMenu_Info.CtxtMenu_MousePost { - outline-color: initial; -} -.CtxtMenu_Info { - border-color: initial; - background-color: rgb(43, 47, 49); - color: rgb(232, 230, 227); - box-shadow: rgb(96, 104, 108) 0px 10px 20px; -} -.CtxtMenu_MenuClose { - border-color: rgb(72, 78, 81); - color: rgb(223, 220, 215); -} -.CtxtMenu_MenuClose span { - background-color: rgb(72, 78, 81); - border-color: initial; -} -.CtxtMenu_MenuClose:hover { - color: rgb(232, 230, 227) !important; - border-color: rgb(62, 68, 70) !important; -} -.CtxtMenu_MenuClose:hover span { - background-color: rgb(53, 57, 59) !important; -} -.CtxtMenu_MenuClose:hover:focus { - outline-color: initial; -} -.CtxtMenu_Menu { - background-color: rgb(24, 26, 27); - color: rgb(232, 230, 227); - border-color: rgb(62, 68, 70); - box-shadow: rgb(96, 104, 108) 0px 10px 20px; -} -.CtxtMenu_MenuItem { - background-image: initial; - background-color: transparent; -} -.CtxtMenu_MenuArrow { - color: rgb(168, 160, 149); -} -.CtxtMenu_MenuActive .CtxtMenu_MenuArrow { - color: rgb(232, 230, 227); -} -.CtxtMenu_MenuInputBox { - color: rgb(168, 160, 149); -} -.CtxtMenu_SliderValue { - color: rgb(200, 195, 188); -} -.CtxtMenu_SliderBar { - outline-color: initial; - background-image: initial; - background-color: rgb(49, 53, 55); -} -.CtxtMenu_MenuRule { - border-top-color: rgb(58, 62, 65); -} -.CtxtMenu_MenuDisabled { - color: rgb(152, 143, 129); -} -.CtxtMenu_MenuActive { - background-color: rgb(79, 86, 89); - color: rgb(232, 230, 227); -} -.CtxtMenu_MenuDisabled:focus { - background-color: rgb(37, 40, 42); -} -.CtxtMenu_MenuLabel:focus { - background-color: rgb(37, 40, 42); -} -.CtxtMenu_ContextMenu:focus { - outline-color: initial; -} -.CtxtMenu_ContextMenu .CtxtMenu_MenuItem:focus { - outline-color: initial; -} -.CtxtMenu_SelectionMenu { - border-bottom-color: initial; - box-shadow: none; -} -.CtxtMenu_SelectionBox { - background-color: rgb(24, 26, 27); -} -.CtxtMenu_SelectionDivider { - border-top-color: rgb(140, 130, 115); -} -mjx-merror { - color: rgb(255, 26, 26); - background-color: rgb(153, 153, 0); -} -mjx-assistive-mml { - border-color: initial !important; -} -mjx-stretchy-v > mjx-ext { - border-color: transparent; + border-style: initial; + border-width: 0px; } .recently-attempted ul { list-style-image: initial; } .organization-row:last-child { - border-bottom-color: initial; + border-bottom: none; +} +.katex * { + border-color: currentcolor; +} +.katex .katex-mathml { + border-color: initial; + border-style: initial; + border-width: 0px; +} +.katex .rule { + border-color: initial; + border-style: solid; + border-width: 0px; +} +.katex svg { + fill: currentcolor; + stroke: currentcolor; +} +.katex svg path { + stroke: none; +} +.katex .fbox, +.katex .fcolorbox { + border-color: initial; +} +.katex .angl { + border-right-color: initial; + border-top-color: initial; } /* Override Style */ @@ -3886,7 +3757,7 @@ mjx-stretchy-v > mjx-ext { color: #f3e8c8 !important; } #vimvixen-console-frame { - color-scheme: light !important + color-scheme: light !important; } ::placeholder { opacity: 0.5 !important; @@ -3924,34 +3795,55 @@ gr-main-header { background-color: #19576c !important; } div.mermaid-viewer-control-panel .btn { - fill: var(--darkreader-neutral-text); - background-color: var(--darkreader-neutral-background); + background-color: var(--darkreader-neutral-background); + fill: var(--darkreader-neutral-text); } svg g rect.er { - fill: var(--darkreader-neutral-background) !important; + fill: var(--darkreader-neutral-background) !important; } svg g rect.er.entityBox { - fill: var(--darkreader-neutral-background) !important; + fill: var(--darkreader-neutral-background) !important; } svg g rect.er.attributeBoxOdd { - fill: var(--darkreader-neutral-background) !important; + fill: var(--darkreader-neutral-background) !important; } svg g rect.er.attributeBoxEven { - fill-opacity: 0.8 !important; - fill: var(--darkreader-selection-background); + fill: var(--darkreader-selection-background); + fill-opacity: 0.8 !important; } svg rect.er.relationshipLabelBox { - fill: var(--darkreader-neutral-background) !important; + fill: var(--darkreader-neutral-background) !important; } -svg g g.nodes rect, svg g g.nodes polygon { - fill: var(--darkreader-neutral-background) !important; +svg g g.nodes rect, +svg g g.nodes polygon { + fill: var(--darkreader-neutral-background) !important; } svg g rect.task { - fill: var(--darkreader-selection-background) !important; + fill: var(--darkreader-selection-background) !important; } -svg line.messageLine0, svg line.messageLine1 { - stroke: var(--darkreader-neutral-text) !important; +svg line.messageLine0, +svg line.messageLine1 { + stroke: var(--darkreader-neutral-text) !important; } div.mermaid .actor { - fill: var(--darkreader-neutral-background) !important; + fill: var(--darkreader-neutral-background) !important; +} +.google-material-icons { + font-family: 'Google Material Icons' !important; +} +.google-symbols { + font-family: 'Google Symbols Subset', 'Google Symbols' !important; +} +.material-icons-extended { + font-family: 'Material Icons Extended' !important; +} +mitid-authenticators-code-app > .code-app-container { + background-color: white !important; + padding-top: 1rem; +} +iframe#unpaywall[src$="unpaywall.html"] { + color-scheme: light !important; +} +.oui-icon { + font-family: 'Oui Icons' !important; } diff --git a/resources/dmmd-preview.js b/resources/dmmd-preview.js index 2450ea8..2646503 100644 --- a/resources/dmmd-preview.js +++ b/resources/dmmd-preview.js @@ -23,38 +23,8 @@ $(function () { csrfmiddlewaretoken: $.cookie('csrftoken') }, function (result) { $content.html(result); - $(".dmmd-preview-content [data-src]img").each(function() { - $(this).attr("src", $(this).attr("data-src")); - }) - $(".dmmd-preview-content [data-src]iframe").each(function() { - $(this).attr("src", $(this).attr("data-src")); - }) $preview.addClass('dmmd-preview-has-content').removeClass('dmmd-preview-stale'); - - var $jax = $content.find('.require-mathjax-support'); - if ($jax.length) { - if (!('MathJax' in window)) { - $.ajax({ - type: 'GET', - url: $jax.attr('data-config'), - dataType: 'script', - cache: true, - success: function () { - $.ajax({ - type: 'GET', - url: 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js', - dataType: 'script', - cache: true, - success: function () { - MathJax.typeset(); - } - }); - } - }); - } else { - MathJax.typeset($content[0]); - } - } + renderKatex($content[0]); }); } else { $content.empty(); diff --git a/resources/event.js b/resources/event.js index e9beb68..73f9302 100644 --- a/resources/event.js +++ b/resources/event.js @@ -7,6 +7,7 @@ function EventReceiver(websocket, poller, channels, last_msg, onmessage) { if (onmessage) this.onmessage = onmessage; var receiver = this; + var time_retry = 1000; function init_poll() { function long_poll() { @@ -62,7 +63,8 @@ function EventReceiver(websocket, poller, channels, last_msg, onmessage) { if (event.code != 1000 && receiver.onwsclose !== null) receiver.onwsclose(event); if (event.code == 1006) { - setTimeout(connect, 1000); + setTimeout(connect, time_retry); + time_retry += 2000; } } } diff --git a/resources/fontawesome/css/all.css b/resources/fontawesome/css/all.css new file mode 100644 index 0000000..7e4dfe1 --- /dev/null +++ b/resources/fontawesome/css/all.css @@ -0,0 +1,8030 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +.fa { + font-family: var(--fa-style-family, "Font Awesome 6 Free"); + font-weight: var(--fa-style, 900); } + +.fa, +.fa-classic, +.fa-sharp, +.fas, +.fa-solid, +.far, +.fa-regular, +.fab, +.fa-brands { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: var(--fa-display, inline-block); + font-style: normal; + font-variant: normal; + line-height: 1; + text-rendering: auto; } + +.fas, +.fa-classic, +.fa-solid, +.far, +.fa-regular { + font-family: 'Font Awesome 6 Free'; } + +.fab, +.fa-brands { + font-family: 'Font Awesome 6 Brands'; } + +.fa-1x { + font-size: 1em; } + +.fa-2x { + font-size: 2em; } + +.fa-3x { + font-size: 3em; } + +.fa-4x { + font-size: 4em; } + +.fa-5x { + font-size: 5em; } + +.fa-6x { + font-size: 6em; } + +.fa-7x { + font-size: 7em; } + +.fa-8x { + font-size: 8em; } + +.fa-9x { + font-size: 9em; } + +.fa-10x { + font-size: 10em; } + +.fa-2xs { + font-size: 0.625em; + line-height: 0.1em; + vertical-align: 0.225em; } + +.fa-xs { + font-size: 0.75em; + line-height: 0.08333em; + vertical-align: 0.125em; } + +.fa-sm { + font-size: 0.875em; + line-height: 0.07143em; + vertical-align: 0.05357em; } + +.fa-lg { + font-size: 1.25em; + line-height: 0.05em; + vertical-align: -0.075em; } + +.fa-xl { + font-size: 1.5em; + line-height: 0.04167em; + vertical-align: -0.125em; } + +.fa-2xl { + font-size: 2em; + line-height: 0.03125em; + vertical-align: -0.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, 0.1em); + border-style: var(--fa-border-style, solid); + border-width: var(--fa-border-width, 0.08em); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); } + +.fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); } + +.fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.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(0.28, 0.84, 0.42, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.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(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 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(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 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-bounce, + .fa-fade, + .fa-beat-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, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -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)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.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, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -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)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.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, 0.4); } } + +@keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@-webkit-keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.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, 0.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%, 100% { + -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%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 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, 0)); + transform: rotate(var(--fa-rotate-angle, 0)); } + +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; } + +.fa-stack-1x, +.fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; + z-index: var(--fa-stack-z-index, auto); } + +.fa-stack-1x { + line-height: inherit; } + +.fa-stack-2x { + font-size: 2em; } + +.fa-inverse { + color: var(--fa-inverse, #fff); } + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ + +.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-circle-chevron-right::before { + content: "\f138"; } + +.fa-chevron-circle-right::before { + content: "\f138"; } + +.fa-at::before { + content: "\40"; } + +.fa-trash-can::before { + content: "\f2ed"; } + +.fa-trash-alt::before { + content: "\f2ed"; } + +.fa-text-height::before { + content: "\f034"; } + +.fa-user-xmark::before { + content: "\f235"; } + +.fa-user-times::before { + content: "\f235"; } + +.fa-stethoscope::before { + content: "\f0f1"; } + +.fa-message::before { + content: "\f27a"; } + +.fa-comment-alt::before { + content: "\f27a"; } + +.fa-info::before { + content: "\f129"; } + +.fa-down-left-and-up-right-to-center::before { + content: "\f422"; } + +.fa-compress-alt::before { + content: "\f422"; } + +.fa-explosion::before { + content: "\e4e9"; } + +.fa-file-lines::before { + content: "\f15c"; } + +.fa-file-alt::before { + content: "\f15c"; } + +.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-days::before { + content: "\f073"; } + +.fa-calendar-alt::before { + content: "\f073"; } + +.fa-anchor-circle-check::before { + content: "\e4aa"; } + +.fa-building-circle-arrow-right::before { + content: "\e4d1"; } + +.fa-volleyball::before { + content: "\f45f"; } + +.fa-volleyball-ball::before { + content: "\f45f"; } + +.fa-arrows-up-to-line::before { + content: "\e4c2"; } + +.fa-sort-down::before { + content: "\f0dd"; } + +.fa-sort-desc::before { + content: "\f0dd"; } + +.fa-circle-minus::before { + content: "\f056"; } + +.fa-minus-circle::before { + content: "\f056"; } + +.fa-door-open::before { + content: "\f52b"; } + +.fa-right-from-bracket::before { + content: "\f2f5"; } + +.fa-sign-out-alt::before { + content: "\f2f5"; } + +.fa-atom::before { + content: "\f5d2"; } + +.fa-soap::before { + content: "\e06e"; } + +.fa-icons::before { + content: "\f86d"; } + +.fa-heart-music-camera-bolt::before { + content: "\f86d"; } + +.fa-microphone-lines-slash::before { + content: "\f539"; } + +.fa-microphone-alt-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 { + content: "\f689"; } + +.fa-search-location::before { + content: "\f689"; } + +.fa-forward-step::before { + content: "\f051"; } + +.fa-step-forward::before { + content: "\f051"; } + +.fa-face-smile-beam::before { + content: "\f5b8"; } + +.fa-smile-beam::before { + content: "\f5b8"; } + +.fa-flag-checkered::before { + content: "\f11e"; } + +.fa-football::before { + content: "\f44e"; } + +.fa-football-ball::before { + content: "\f44e"; } + +.fa-school-circle-exclamation::before { + content: "\e56c"; } + +.fa-crop::before { + content: "\f125"; } + +.fa-angles-down::before { + content: "\f103"; } + +.fa-angle-double-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 { + content: "\f0fc"; } + +.fa-beer::before { + content: "\f0fc"; } + +.fa-diagram-predecessor::before { + content: "\e477"; } + +.fa-arrow-up-long::before { + content: "\f176"; } + +.fa-long-arrow-up::before { + content: "\f176"; } + +.fa-fire-flame-simple::before { + content: "\f46a"; } + +.fa-burn::before { + content: "\f46a"; } + +.fa-person::before { + content: "\f183"; } + +.fa-male::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 { + content: "\f587"; } + +.fa-grin-stars::before { + content: "\f587"; } + +.fa-bong::before { + content: "\f55c"; } + +.fa-spaghetti-monster-flying::before { + content: "\f67b"; } + +.fa-pastafarianism::before { + content: "\f67b"; } + +.fa-arrow-down-up-across-line::before { + content: "\e4af"; } + +.fa-spoon::before { + content: "\f2e5"; } + +.fa-utensil-spoon::before { + content: "\f2e5"; } + +.fa-jar-wheat::before { + content: "\e517"; } + +.fa-envelopes-bulk::before { + content: "\f674"; } + +.fa-mail-bulk::before { + content: "\f674"; } + +.fa-file-circle-exclamation::before { + content: "\e4eb"; } + +.fa-circle-h::before { + content: "\f47e"; } + +.fa-hospital-symbol::before { + content: "\f47e"; } + +.fa-pager::before { + content: "\f815"; } + +.fa-address-book::before { + content: "\f2b9"; } + +.fa-contact-book::before { + content: "\f2b9"; } + +.fa-strikethrough::before { + content: "\f0cc"; } + +.fa-k::before { + content: "\4b"; } + +.fa-landmark-flag::before { + content: "\e51c"; } + +.fa-pencil::before { + content: "\f303"; } + +.fa-pencil-alt::before { + content: "\f303"; } + +.fa-backward::before { + content: "\f04a"; } + +.fa-caret-right::before { + content: "\f0da"; } + +.fa-comments::before { + content: "\f086"; } + +.fa-paste::before { + content: "\f0ea"; } + +.fa-file-clipboard::before { + content: "\f0ea"; } + +.fa-code-pull-request::before { + content: "\e13c"; } + +.fa-clipboard-list::before { + content: "\f46d"; } + +.fa-truck-ramp-box::before { + content: "\f4de"; } + +.fa-truck-loading::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 { + content: "\f6a0"; } + +.fa-torah::before { + content: "\f6a0"; } + +.fa-broom-ball::before { + content: "\f458"; } + +.fa-quidditch::before { + content: "\f458"; } + +.fa-quidditch-broom-ball::before { + content: "\f458"; } + +.fa-toggle-off::before { + content: "\f204"; } + +.fa-box-archive::before { + content: "\f187"; } + +.fa-archive::before { + content: "\f187"; } + +.fa-person-drowning::before { + content: "\e545"; } + +.fa-arrow-down-9-1::before { + content: "\f886"; } + +.fa-sort-numeric-desc::before { + content: "\f886"; } + +.fa-sort-numeric-down-alt::before { + content: "\f886"; } + +.fa-face-grin-tongue-squint::before { + content: "\f58a"; } + +.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 { + content: "\f57c"; } + +.fa-globe-africa::before { + content: "\f57c"; } + +.fa-rainbow::before { + content: "\f75b"; } + +.fa-circle-notch::before { + content: "\f1ce"; } + +.fa-tablet-screen-button::before { + content: "\f3fa"; } + +.fa-tablet-alt::before { + content: "\f3fa"; } + +.fa-paw::before { + content: "\f1b0"; } + +.fa-cloud::before { + content: "\f0c2"; } + +.fa-trowel-bricks::before { + content: "\e58a"; } + +.fa-face-flushed::before { + content: "\f579"; } + +.fa-flushed::before { + content: "\f579"; } + +.fa-hospital-user::before { + content: "\f80d"; } + +.fa-tent-arrow-left-right::before { + content: "\e57f"; } + +.fa-gavel::before { + content: "\f0e3"; } + +.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 { + content: "\f562"; } + +.fa-concierge-bell::before { + content: "\f562"; } + +.fa-pen-ruler::before { + content: "\f5ae"; } + +.fa-pencil-ruler::before { + content: "\f5ae"; } + +.fa-people-arrows::before { + content: "\e068"; } + +.fa-people-arrows-left-right::before { + content: "\e068"; } + +.fa-mars-and-venus-burst::before { + content: "\e523"; } + +.fa-square-caret-right::before { + content: "\f152"; } + +.fa-caret-square-right::before { + content: "\f152"; } + +.fa-scissors::before { + content: "\f0c4"; } + +.fa-cut::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-tachograph-digital::before { + content: "\f566"; } + +.fa-digital-tachograph::before { + content: "\f566"; } + +.fa-users-slash::before { + content: "\e073"; } + +.fa-clover::before { + content: "\e139"; } + +.fa-reply::before { + content: "\f3e5"; } + +.fa-mail-reply::before { + content: "\f3e5"; } + +.fa-star-and-crescent::before { + content: "\f699"; } + +.fa-house-fire::before { + content: "\e50c"; } + +.fa-square-minus::before { + content: "\f146"; } + +.fa-minus-square::before { + content: "\f146"; } + +.fa-helicopter::before { + content: "\f533"; } + +.fa-compass::before { + content: "\f14e"; } + +.fa-square-caret-down::before { + content: "\f150"; } + +.fa-caret-square-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 { + content: "\f0c9"; } + +.fa-navicon::before { + content: "\f0c9"; } + +.fa-people-group::before { + content: "\e533"; } + +.fa-hourglass-end::before { + content: "\f253"; } + +.fa-hourglass-3::before { + content: "\f253"; } + +.fa-heart-crack::before { + content: "\f7a9"; } + +.fa-heart-broken::before { + content: "\f7a9"; } + +.fa-square-up-right::before { + content: "\f360"; } + +.fa-external-link-square-alt::before { + content: "\f360"; } + +.fa-face-kiss-beam::before { + content: "\f597"; } + +.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 { + content: "\f06a"; } + +.fa-exclamation-circle::before { + content: "\f06a"; } + +.fa-school-circle-xmark::before { + content: "\e56d"; } + +.fa-arrow-right-from-bracket::before { + content: "\f08b"; } + +.fa-sign-out::before { + content: "\f08b"; } + +.fa-circle-chevron-down::before { + content: "\f13a"; } + +.fa-chevron-circle-down::before { + content: "\f13a"; } + +.fa-unlock-keyhole::before { + content: "\f13e"; } + +.fa-unlock-alt::before { + content: "\f13e"; } + +.fa-cloud-showers-heavy::before { + content: "\f740"; } + +.fa-headphones-simple::before { + content: "\f58f"; } + +.fa-headphones-alt::before { + content: "\f58f"; } + +.fa-sitemap::before { + content: "\f0e8"; } + +.fa-circle-dollar-to-slot::before { + content: "\f4b9"; } + +.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-low::before { + content: "\f027"; } + +.fa-volume-down::before { + content: "\f027"; } + +.fa-comment-slash::before { + content: "\f4b3"; } + +.fa-cloud-sun-rain::before { + content: "\f743"; } + +.fa-compress::before { + content: "\f066"; } + +.fa-wheat-awn::before { + content: "\e2cd"; } + +.fa-wheat-alt::before { + content: "\e2cd"; } + +.fa-ankh::before { + content: "\f644"; } + +.fa-hands-holding-child::before { + content: "\e4fa"; } + +.fa-asterisk::before { + content: "\2a"; } + +.fa-square-check::before { + content: "\f14a"; } + +.fa-check-square::before { + content: "\f14a"; } + +.fa-peseta-sign::before { + content: "\e221"; } + +.fa-heading::before { + content: "\f1dc"; } + +.fa-header::before { + content: "\f1dc"; } + +.fa-ghost::before { + content: "\f6e2"; } + +.fa-list::before { + content: "\f03a"; } + +.fa-list-squares::before { + content: "\f03a"; } + +.fa-square-phone-flip::before { + content: "\f87b"; } + +.fa-phone-square-alt::before { + content: "\f87b"; } + +.fa-cart-plus::before { + content: "\f217"; } + +.fa-gamepad::before { + content: "\f11b"; } + +.fa-circle-dot::before { + content: "\f192"; } + +.fa-dot-circle::before { + content: "\f192"; } + +.fa-face-dizzy::before { + content: "\f567"; } + +.fa-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::before { + content: "\f1e3"; } + +.fa-futbol-ball::before { + content: "\f1e3"; } + +.fa-soccer-ball::before { + content: "\f1e3"; } + +.fa-paintbrush::before { + content: "\f1fc"; } + +.fa-paint-brush::before { + content: "\f1fc"; } + +.fa-lock::before { + content: "\f023"; } + +.fa-gas-pump::before { + content: "\f52f"; } + +.fa-hot-tub-person::before { + content: "\f593"; } + +.fa-hot-tub::before { + content: "\f593"; } + +.fa-map-location::before { + content: "\f59f"; } + +.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-pen-to-square::before { + content: "\f044"; } + +.fa-edit::before { + content: "\f044"; } + +.fa-car-side::before { + content: "\f5e4"; } + +.fa-share-nodes::before { + content: "\f1e0"; } + +.fa-share-alt::before { + content: "\f1e0"; } + +.fa-heart-circle-minus::before { + content: "\e4ff"; } + +.fa-hourglass-half::before { + content: "\f252"; } + +.fa-hourglass-2::before { + content: "\f252"; } + +.fa-microscope::before { + content: "\f610"; } + +.fa-sink::before { + content: "\e06d"; } + +.fa-bag-shopping::before { + content: "\f290"; } + +.fa-shopping-bag::before { + content: "\f290"; } + +.fa-arrow-down-z-a::before { + content: "\f881"; } + +.fa-sort-alpha-desc::before { + content: "\f881"; } + +.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::before { + content: "\f256"; } + +.fa-hand-paper::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 { + content: "\f596"; } + +.fa-kiss::before { + content: "\f596"; } + +.fa-bridge-circle-xmark::before { + content: "\e4cb"; } + +.fa-face-grin-tongue::before { + content: "\f589"; } + +.fa-grin-tongue::before { + content: "\f589"; } + +.fa-chess-bishop::before { + content: "\f43a"; } + +.fa-face-grin-wink::before { + content: "\f58c"; } + +.fa-grin-wink::before { + content: "\f58c"; } + +.fa-ear-deaf::before { + content: "\f2a4"; } + +.fa-deaf::before { + content: "\f2a4"; } + +.fa-deafness::before { + content: "\f2a4"; } + +.fa-hard-of-hearing::before { + content: "\f2a4"; } + +.fa-road-circle-check::before { + content: "\e564"; } + +.fa-dice-five::before { + content: "\f523"; } + +.fa-square-rss::before { + content: "\f143"; } + +.fa-rss-square::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 { + content: "\f6f2"; } + +.fa-hryvnia::before { + content: "\f6f2"; } + +.fa-pills::before { + content: "\f484"; } + +.fa-face-grin-wide::before { + content: "\f581"; } + +.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-staff-snake::before { + content: "\e579"; } + +.fa-rod-asclepius::before { + content: "\e579"; } + +.fa-rod-snake::before { + content: "\e579"; } + +.fa-staff-aesculapius::before { + content: "\e579"; } + +.fa-head-side-cough-slash::before { + content: "\e062"; } + +.fa-truck-medical::before { + content: "\f0f9"; } + +.fa-ambulance::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-half::before { + content: "\f2c9"; } + +.fa-temperature-2::before { + content: "\f2c9"; } + +.fa-thermometer-2::before { + content: "\f2c9"; } + +.fa-thermometer-half::before { + content: "\f2c9"; } + +.fa-dong-sign::before { + content: "\e169"; } + +.fa-capsules::before { + content: "\f46b"; } + +.fa-poo-storm::before { + content: "\f75a"; } + +.fa-poo-bolt::before { + content: "\f75a"; } + +.fa-face-frown-open::before { + content: "\f57a"; } + +.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::before { + content: "\f07b"; } + +.fa-folder-blank::before { + content: "\f07b"; } + +.fa-file-waveform::before { + content: "\f478"; } + +.fa-file-medical-alt::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-gauge::before { + content: "\f624"; } + +.fa-dashboard::before { + content: "\f624"; } + +.fa-gauge-med::before { + content: "\f624"; } + +.fa-tachometer-alt-average::before { + content: "\f624"; } + +.fa-wand-magic-sparkles::before { + content: "\e2ca"; } + +.fa-magic-wand-sparkles::before { + content: "\e2ca"; } + +.fa-e::before { + content: "\45"; } + +.fa-pen-clip::before { + content: "\f305"; } + +.fa-pen-alt::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-van-shuttle::before { + content: "\f5b6"; } + +.fa-shuttle-van::before { + content: "\f5b6"; } + +.fa-building-user::before { + content: "\e4da"; } + +.fa-square-caret-left::before { + content: "\f191"; } + +.fa-caret-square-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-chart-area::before { + content: "\f1fe"; } + +.fa-area-chart::before { + content: "\f1fe"; } + +.fa-house-flag::before { + content: "\e50d"; } + +.fa-person-circle-minus::before { + content: "\e540"; } + +.fa-ban::before { + content: "\f05e"; } + +.fa-cancel::before { + content: "\f05e"; } + +.fa-camera-rotate::before { + content: "\e0d8"; } + +.fa-spray-can-sparkles::before { + content: "\f5d0"; } + +.fa-air-freshener::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 { + content: "\f245"; } + +.fa-mouse-pointer::before { + content: "\f245"; } + +.fa-maximize::before { + content: "\f31e"; } + +.fa-expand-arrows-alt::before { + content: "\f31e"; } + +.fa-charging-station::before { + content: "\f5e7"; } + +.fa-shapes::before { + content: "\f61f"; } + +.fa-triangle-circle-square::before { + content: "\f61f"; } + +.fa-shuffle::before { + content: "\f074"; } + +.fa-random::before { + content: "\f074"; } + +.fa-person-running::before { + content: "\f70c"; } + +.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 { + content: "\f8cc"; } + +.fa-mouse::before { + content: "\f8cc"; } + +.fa-arrow-right-to-bracket::before { + content: "\f090"; } + +.fa-sign-in::before { + content: "\f090"; } + +.fa-shop-slash::before { + content: "\e070"; } + +.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-start::before { + content: "\f251"; } + +.fa-hourglass-1::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 { + content: "\f2f6"; } + +.fa-sign-in-alt::before { + content: "\f2f6"; } + +.fa-venus::before { + content: "\f221"; } + +.fa-passport::before { + content: "\f5ab"; } + +.fa-heart-pulse::before { + content: "\f21e"; } + +.fa-heartbeat::before { + content: "\f21e"; } + +.fa-people-carry-box::before { + content: "\f4ce"; } + +.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 { + content: "\f496"; } + +.fa-weight::before { + content: "\f496"; } + +.fa-user-group::before { + content: "\f500"; } + +.fa-user-friends::before { + content: "\f500"; } + +.fa-arrow-up-a-z::before { + content: "\f15e"; } + +.fa-sort-alpha-up::before { + content: "\f15e"; } + +.fa-chess-knight::before { + content: "\f441"; } + +.fa-face-laugh-squint::before { + content: "\f59b"; } + +.fa-laugh-squint::before { + content: "\f59b"; } + +.fa-wheelchair::before { + content: "\f193"; } + +.fa-circle-arrow-up::before { + content: "\f0aa"; } + +.fa-arrow-circle-up::before { + content: "\f0aa"; } + +.fa-toggle-on::before { + content: "\f205"; } + +.fa-person-walking::before { + content: "\f554"; } + +.fa-walking::before { + content: "\f554"; } + +.fa-l::before { + content: "\4c"; } + +.fa-fire::before { + content: "\f06d"; } + +.fa-bed-pulse::before { + content: "\f487"; } + +.fa-procedures::before { + content: "\f487"; } + +.fa-shuttle-space::before { + content: "\f197"; } + +.fa-space-shuttle::before { + content: "\f197"; } + +.fa-face-laugh::before { + content: "\f599"; } + +.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-lines::before { + content: "\f3c9"; } + +.fa-microphone-alt::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 { + content: "\f22a"; } + +.fa-mars-stroke-v::before { + content: "\f22a"; } + +.fa-champagne-glasses::before { + content: "\f79f"; } + +.fa-glass-cheers::before { + content: "\f79f"; } + +.fa-clipboard::before { + content: "\f328"; } + +.fa-house-circle-exclamation::before { + content: "\e50a"; } + +.fa-file-arrow-up::before { + content: "\f574"; } + +.fa-file-upload::before { + content: "\f574"; } + +.fa-wifi::before { + content: "\f1eb"; } + +.fa-wifi-3::before { + content: "\f1eb"; } + +.fa-wifi-strong::before { + content: "\f1eb"; } + +.fa-bath::before { + content: "\f2cd"; } + +.fa-bathtub::before { + content: "\f2cd"; } + +.fa-underline::before { + content: "\f0cd"; } + +.fa-user-pen::before { + content: "\f4ff"; } + +.fa-user-edit::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-top-left::before { + content: "\f853"; } + +.fa-border-style::before { + content: "\f853"; } + +.fa-map-location-dot::before { + content: "\f5a0"; } + +.fa-map-marked-alt::before { + content: "\f5a0"; } + +.fa-jedi::before { + content: "\f669"; } + +.fa-square-poll-vertical::before { + content: "\f681"; } + +.fa-poll::before { + content: "\f681"; } + +.fa-mug-hot::before { + content: "\f7b6"; } + +.fa-car-battery::before { + content: "\f5df"; } + +.fa-battery-car::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-right::before { + content: "\f22b"; } + +.fa-mars-stroke-h::before { + content: "\f22b"; } + +.fa-hand-back-fist::before { + content: "\f255"; } + +.fa-hand-rock::before { + content: "\f255"; } + +.fa-square-caret-up::before { + content: "\f151"; } + +.fa-caret-square-up::before { + content: "\f151"; } + +.fa-cloud-showers-water::before { + content: "\e4e4"; } + +.fa-chart-bar::before { + content: "\f080"; } + +.fa-bar-chart::before { + content: "\f080"; } + +.fa-hands-bubbles::before { + content: "\e05e"; } + +.fa-hands-wash::before { + content: "\e05e"; } + +.fa-less-than-equal::before { + content: "\f537"; } + +.fa-train::before { + content: "\f238"; } + +.fa-eye-low-vision::before { + content: "\f2a8"; } + +.fa-low-vision::before { + content: "\f2a8"; } + +.fa-crow::before { + content: "\f520"; } + +.fa-sailboat::before { + content: "\e445"; } + +.fa-window-restore::before { + content: "\f2d2"; } + +.fa-square-plus::before { + content: "\f0fe"; } + +.fa-plus-square::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-martini-glass::before { + content: "\f57b"; } + +.fa-glass-martini-alt::before { + content: "\f57b"; } + +.fa-rotate-left::before { + content: "\f2ea"; } + +.fa-rotate-back::before { + content: "\f2ea"; } + +.fa-rotate-backward::before { + content: "\f2ea"; } + +.fa-undo-alt::before { + content: "\f2ea"; } + +.fa-table-columns::before { + content: "\f0db"; } + +.fa-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::before { + content: "\f472"; } + +.fa-dolly-box::before { + content: "\f472"; } + +.fa-smoking::before { + content: "\f48d"; } + +.fa-minimize::before { + content: "\f78c"; } + +.fa-compress-arrows-alt::before { + content: "\f78c"; } + +.fa-monument::before { + content: "\f5a6"; } + +.fa-snowplow::before { + content: "\f7d2"; } + +.fa-angles-right::before { + content: "\f101"; } + +.fa-angle-double-right::before { + content: "\f101"; } + +.fa-cannabis::before { + content: "\f55f"; } + +.fa-circle-play::before { + content: "\f144"; } + +.fa-play-circle::before { + content: "\f144"; } + +.fa-tablets::before { + content: "\f490"; } + +.fa-ethernet::before { + content: "\f796"; } + +.fa-euro-sign::before { + content: "\f153"; } + +.fa-eur::before { + content: "\f153"; } + +.fa-euro::before { + content: "\f153"; } + +.fa-chair::before { + content: "\f6c0"; } + +.fa-circle-check::before { + content: "\f058"; } + +.fa-check-circle::before { + content: "\f058"; } + +.fa-circle-stop::before { + content: "\f28d"; } + +.fa-stop-circle::before { + content: "\f28d"; } + +.fa-compass-drafting::before { + content: "\f568"; } + +.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 { + content: "\f59a"; } + +.fa-laugh-beam::before { + content: "\f59a"; } + +.fa-helicopter-symbol::before { + content: "\e502"; } + +.fa-universal-access::before { + content: "\f29a"; } + +.fa-circle-chevron-up::before { + content: "\f139"; } + +.fa-chevron-circle-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-sterling-sign::before { + content: "\f154"; } + +.fa-gbp::before { + content: "\f154"; } + +.fa-pound-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 { + content: "\f175"; } + +.fa-long-arrow-down::before { + content: "\f175"; } + +.fa-tent-arrow-down-to-line::before { + content: "\e57e"; } + +.fa-certificate::before { + content: "\f0a3"; } + +.fa-reply-all::before { + content: "\f122"; } + +.fa-mail-reply-all::before { + content: "\f122"; } + +.fa-suitcase::before { + content: "\f0f2"; } + +.fa-person-skating::before { + content: "\f7c5"; } + +.fa-skating::before { + content: "\f7c5"; } + +.fa-filter-circle-dollar::before { + content: "\f662"; } + +.fa-funnel-dollar::before { + content: "\f662"; } + +.fa-camera-retro::before { + content: "\f083"; } + +.fa-circle-arrow-down::before { + content: "\f0ab"; } + +.fa-arrow-circle-down::before { + content: "\f0ab"; } + +.fa-file-import::before { + content: "\f56f"; } + +.fa-arrow-right-to-file::before { + content: "\f56f"; } + +.fa-square-arrow-up-right::before { + content: "\f14c"; } + +.fa-external-link-square::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-empty::before { + content: "\f2cb"; } + +.fa-temperature-0::before { + content: "\f2cb"; } + +.fa-thermometer-0::before { + content: "\f2cb"; } + +.fa-thermometer-empty::before { + content: "\f2cb"; } + +.fa-bomb::before { + content: "\f1e2"; } + +.fa-registered::before { + content: "\f25d"; } + +.fa-address-card::before { + content: "\f2bb"; } + +.fa-contact-card::before { + content: "\f2bb"; } + +.fa-vcard::before { + content: "\f2bb"; } + +.fa-scale-unbalanced-flip::before { + content: "\f516"; } + +.fa-balance-scale-right::before { + content: "\f516"; } + +.fa-subscript::before { + content: "\f12c"; } + +.fa-diamond-turn-right::before { + content: "\f5eb"; } + +.fa-directions::before { + content: "\f5eb"; } + +.fa-burst::before { + content: "\e4dc"; } + +.fa-house-laptop::before { + content: "\e066"; } + +.fa-laptop-house::before { + content: "\e066"; } + +.fa-face-tired::before { + content: "\f5c8"; } + +.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 { + content: "\f0ee"; } + +.fa-cloud-upload::before { + content: "\f0ee"; } + +.fa-cloud-upload-alt::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 { + content: "\f4d8"; } + +.fa-sprout::before { + content: "\f4d8"; } + +.fa-left-right::before { + content: "\f337"; } + +.fa-arrows-alt-h::before { + content: "\f337"; } + +.fa-boxes-packing::before { + content: "\e4c7"; } + +.fa-circle-arrow-left::before { + content: "\f0a8"; } + +.fa-arrow-circle-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 { + content: "\f160"; } + +.fa-sort-amount-asc::before { + content: "\f160"; } + +.fa-sort-amount-down::before { + content: "\f160"; } + +.fa-cloud-bolt::before { + content: "\f76c"; } + +.fa-thunderstorm::before { + content: "\f76c"; } + +.fa-text-slash::before { + content: "\f87d"; } + +.fa-remove-format::before { + content: "\f87d"; } + +.fa-face-smile-wink::before { + content: "\f4da"; } + +.fa-smile-wink::before { + content: "\f4da"; } + +.fa-file-word::before { + content: "\f1c2"; } + +.fa-file-powerpoint::before { + content: "\f1c4"; } + +.fa-arrows-left-right::before { + content: "\f07e"; } + +.fa-arrows-h::before { + content: "\f07e"; } + +.fa-house-lock::before { + content: "\e510"; } + +.fa-cloud-arrow-down::before { + content: "\f0ed"; } + +.fa-cloud-download::before { + content: "\f0ed"; } + +.fa-cloud-download-alt::before { + content: "\f0ed"; } + +.fa-children::before { + content: "\e4e1"; } + +.fa-chalkboard::before { + content: "\f51b"; } + +.fa-blackboard::before { + content: "\f51b"; } + +.fa-user-large-slash::before { + content: "\f4fa"; } + +.fa-user-alt-slash::before { + content: "\f4fa"; } + +.fa-envelope-open::before { + content: "\f2b6"; } + +.fa-handshake-simple-slash::before { + content: "\e05f"; } + +.fa-handshake-alt-slash::before { + content: "\e05f"; } + +.fa-mattress-pillow::before { + content: "\e525"; } + +.fa-guarani-sign::before { + content: "\e19a"; } + +.fa-arrows-rotate::before { + content: "\f021"; } + +.fa-refresh::before { + content: "\f021"; } + +.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-halved::before { + content: "\f3ed"; } + +.fa-shield-alt::before { + content: "\f3ed"; } + +.fa-book-atlas::before { + content: "\f558"; } + +.fa-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 { + content: "\f6f1"; } + +.fa-house-damage::before { + content: "\f6f1"; } + +.fa-file-zipper::before { + content: "\f1c6"; } + +.fa-file-archive::before { + content: "\f1c6"; } + +.fa-square::before { + content: "\f0c8"; } + +.fa-martini-glass-empty::before { + content: "\f000"; } + +.fa-glass-martini::before { + content: "\f000"; } + +.fa-couch::before { + content: "\f4b8"; } + +.fa-cedi-sign::before { + content: "\e0df"; } + +.fa-italic::before { + content: "\f033"; } + +.fa-table-cells-column-lock::before { + content: "\e678"; } + +.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 { + content: "\f7c9"; } + +.fa-skiing::before { + content: "\f7c9"; } + +.fa-road-lock::before { + content: "\e567"; } + +.fa-a::before { + content: "\41"; } + +.fa-temperature-arrow-down::before { + content: "\e03f"; } + +.fa-temperature-down::before { + content: "\e03f"; } + +.fa-feather-pointed::before { + content: "\f56b"; } + +.fa-feather-alt::before { + content: "\f56b"; } + +.fa-p::before { + content: "\50"; } + +.fa-snowflake::before { + content: "\f2dc"; } + +.fa-newspaper::before { + content: "\f1ea"; } + +.fa-rectangle-ad::before { + content: "\f641"; } + +.fa-ad::before { + content: "\f641"; } + +.fa-circle-arrow-right::before { + content: "\f0a9"; } + +.fa-arrow-circle-right::before { + content: "\f0a9"; } + +.fa-filter-circle-xmark::before { + content: "\e17b"; } + +.fa-locust::before { + content: "\e520"; } + +.fa-sort::before { + content: "\f0dc"; } + +.fa-unsorted::before { + content: "\f0dc"; } + +.fa-list-ol::before { + content: "\f0cb"; } + +.fa-list-1-2::before { + content: "\f0cb"; } + +.fa-list-numeric::before { + content: "\f0cb"; } + +.fa-person-dress-burst::before { + content: "\e544"; } + +.fa-money-check-dollar::before { + content: "\f53d"; } + +.fa-money-check-alt::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 { + content: "\f598"; } + +.fa-kiss-wink-heart::before { + content: "\f598"; } + +.fa-filter::before { + content: "\f0b0"; } + +.fa-question::before { + content: "\3f"; } + +.fa-file-signature::before { + content: "\f573"; } + +.fa-up-down-left-right::before { + content: "\f0b2"; } + +.fa-arrows-alt::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-stroke::before { + content: "\f5c0"; } + +.fa-star-half-alt::before { + content: "\f5c0"; } + +.fa-code::before { + content: "\f121"; } + +.fa-whiskey-glass::before { + content: "\f7a0"; } + +.fa-glass-whiskey::before { + content: "\f7a0"; } + +.fa-building-circle-exclamation::before { + content: "\e4d3"; } + +.fa-magnifying-glass-chart::before { + content: "\e522"; } + +.fa-arrow-up-right-from-square::before { + content: "\f08e"; } + +.fa-external-link::before { + content: "\f08e"; } + +.fa-cubes-stacked::before { + content: "\e4e6"; } + +.fa-won-sign::before { + content: "\f159"; } + +.fa-krw::before { + content: "\f159"; } + +.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-taxi::before { + content: "\f1ba"; } + +.fa-cab::before { + content: "\f1ba"; } + +.fa-person-circle-plus::before { + content: "\e541"; } + +.fa-chart-pie::before { + content: "\f200"; } + +.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 { + content: "\f582"; } + +.fa-grin-beam::before { + content: "\f582"; } + +.fa-object-ungroup::before { + content: "\f248"; } + +.fa-poop::before { + content: "\f619"; } + +.fa-location-pin::before { + content: "\f041"; } + +.fa-map-marker::before { + content: "\f041"; } + +.fa-kaaba::before { + content: "\f66b"; } + +.fa-toilet-paper::before { + content: "\f71e"; } + +.fa-helmet-safety::before { + content: "\f807"; } + +.fa-hard-hat::before { + content: "\f807"; } + +.fa-hat-hard::before { + content: "\f807"; } + +.fa-eject::before { + content: "\f052"; } + +.fa-circle-right::before { + content: "\f35a"; } + +.fa-arrow-alt-circle-right::before { + content: "\f35a"; } + +.fa-plane-circle-check::before { + content: "\e555"; } + +.fa-face-rolling-eyes::before { + content: "\f5a5"; } + +.fa-meh-rolling-eyes::before { + content: "\f5a5"; } + +.fa-object-group::before { + content: "\f247"; } + +.fa-chart-line::before { + content: "\f201"; } + +.fa-line-chart::before { + content: "\f201"; } + +.fa-mask-ventilator::before { + content: "\e524"; } + +.fa-arrow-right::before { + content: "\f061"; } + +.fa-signs-post::before { + content: "\f277"; } + +.fa-map-signs::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 { + content: "\f7d9"; } + +.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-house-user::before { + content: "\e1b0"; } + +.fa-home-user::before { + content: "\e1b0"; } + +.fa-dumpster-fire::before { + content: "\f794"; } + +.fa-house-crack::before { + content: "\e3b1"; } + +.fa-martini-glass-citrus::before { + content: "\f561"; } + +.fa-cocktail::before { + content: "\f561"; } + +.fa-face-surprise::before { + content: "\f5c2"; } + +.fa-surprise::before { + content: "\f5c2"; } + +.fa-bottle-water::before { + content: "\e4c5"; } + +.fa-circle-pause::before { + content: "\f28b"; } + +.fa-pause-circle::before { + content: "\f28b"; } + +.fa-toilet-paper-slash::before { + content: "\e072"; } + +.fa-apple-whole::before { + content: "\f5d1"; } + +.fa-apple-alt::before { + content: "\f5d1"; } + +.fa-kitchen-set::before { + content: "\e51a"; } + +.fa-r::before { + content: "\52"; } + +.fa-temperature-quarter::before { + content: "\f2ca"; } + +.fa-temperature-1::before { + content: "\f2ca"; } + +.fa-thermometer-1::before { + content: "\f2ca"; } + +.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-square-poll-horizontal::before { + content: "\f682"; } + +.fa-poll-h::before { + content: "\f682"; } + +.fa-circle::before { + content: "\f111"; } + +.fa-backward-fast::before { + content: "\f049"; } + +.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::before { + content: "\f434"; } + +.fa-basketball-ball::before { + content: "\f434"; } + +.fa-satellite-dish::before { + content: "\f7c0"; } + +.fa-circle-up::before { + content: "\f35b"; } + +.fa-arrow-alt-circle-up::before { + content: "\f35b"; } + +.fa-mobile-screen-button::before { + content: "\f3cd"; } + +.fa-mobile-alt::before { + content: "\f3cd"; } + +.fa-volume-high::before { + content: "\f028"; } + +.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 { + content: "\f805"; } + +.fa-hamburger::before { + content: "\f805"; } + +.fa-wrench::before { + content: "\f0ad"; } + +.fa-bugs::before { + content: "\e4d0"; } + +.fa-rupee-sign::before { + content: "\f156"; } + +.fa-rupee::before { + content: "\f156"; } + +.fa-file-image::before { + content: "\f1c5"; } + +.fa-circle-question::before { + content: "\f059"; } + +.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-flip::before { + content: "\f879"; } + +.fa-phone-alt::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-forward-fast::before { + content: "\f050"; } + +.fa-fast-forward::before { + content: "\f050"; } + +.fa-face-meh-blank::before { + content: "\f5a4"; } + +.fa-meh-blank::before { + content: "\f5a4"; } + +.fa-square-parking::before { + content: "\f540"; } + +.fa-parking::before { + content: "\f540"; } + +.fa-house-signal::before { + content: "\e012"; } + +.fa-bars-progress::before { + content: "\f828"; } + +.fa-tasks-alt::before { + content: "\f828"; } + +.fa-faucet-drip::before { + content: "\e006"; } + +.fa-cart-flatbed::before { + content: "\f474"; } + +.fa-dolly-flatbed::before { + content: "\f474"; } + +.fa-ban-smoking::before { + content: "\f54d"; } + +.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 { + content: "\f291"; } + +.fa-shopping-basket::before { + content: "\f291"; } + +.fa-tape::before { + content: "\f4db"; } + +.fa-bus-simple::before { + content: "\f55e"; } + +.fa-bus-alt::before { + content: "\f55e"; } + +.fa-eye::before { + content: "\f06e"; } + +.fa-face-sad-cry::before { + content: "\f5b3"; } + +.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::before { + content: "\f012"; } + +.fa-signal-5::before { + content: "\f012"; } + +.fa-signal-perfect::before { + content: "\f012"; } + +.fa-bus::before { + content: "\f207"; } + +.fa-heart-circle-xmark::before { + content: "\e501"; } + +.fa-house-chimney::before { + content: "\e3af"; } + +.fa-home-lg::before { + content: "\e3af"; } + +.fa-window-maximize::before { + content: "\f2d0"; } + +.fa-face-frown::before { + content: "\f119"; } + +.fa-frown::before { + content: "\f119"; } + +.fa-prescription::before { + content: "\f5b1"; } + +.fa-shop::before { + content: "\f54f"; } + +.fa-store-alt::before { + content: "\f54f"; } + +.fa-floppy-disk::before { + content: "\f0c7"; } + +.fa-save::before { + content: "\f0c7"; } + +.fa-vihara::before { + content: "\f6a7"; } + +.fa-scale-unbalanced::before { + content: "\f515"; } + +.fa-balance-scale-left::before { + content: "\f515"; } + +.fa-sort-up::before { + content: "\f0de"; } + +.fa-sort-asc::before { + content: "\f0de"; } + +.fa-comment-dots::before { + content: "\f4ad"; } + +.fa-commenting::before { + content: "\f4ad"; } + +.fa-plant-wilt::before { + content: "\e5aa"; } + +.fa-diamond::before { + content: "\f219"; } + +.fa-face-grin-squint::before { + content: "\f585"; } + +.fa-grin-squint::before { + content: "\f585"; } + +.fa-hand-holding-dollar::before { + content: "\f4c0"; } + +.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 { + content: "\f684"; } + +.fa-praying-hands::before { + content: "\f684"; } + +.fa-arrow-rotate-right::before { + content: "\f01e"; } + +.fa-arrow-right-rotate::before { + content: "\f01e"; } + +.fa-arrow-rotate-forward::before { + content: "\f01e"; } + +.fa-redo::before { + content: "\f01e"; } + +.fa-biohazard::before { + content: "\f780"; } + +.fa-location-crosshairs::before { + content: "\f601"; } + +.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 { + content: "\f588"; } + +.fa-grin-tears::before { + content: "\f588"; } + +.fa-phone::before { + content: "\f095"; } + +.fa-calendar-xmark::before { + content: "\f273"; } + +.fa-calendar-times::before { + content: "\f273"; } + +.fa-child-reaching::before { + content: "\e59d"; } + +.fa-head-side-virus::before { + content: "\e064"; } + +.fa-user-gear::before { + content: "\f4fe"; } + +.fa-user-cog::before { + content: "\f4fe"; } + +.fa-arrow-up-1-9::before { + content: "\f163"; } + +.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-person-digging::before { + content: "\f85e"; } + +.fa-digging::before { + content: "\f85e"; } + +.fa-trash::before { + content: "\f1f8"; } + +.fa-gauge-simple::before { + content: "\f629"; } + +.fa-gauge-simple-med::before { + content: "\f629"; } + +.fa-tachometer-average::before { + content: "\f629"; } + +.fa-book-medical::before { + content: "\f7e6"; } + +.fa-poo::before { + content: "\f2fe"; } + +.fa-quote-right::before { + content: "\f10e"; } + +.fa-quote-right-alt::before { + content: "\f10e"; } + +.fa-shirt::before { + content: "\f553"; } + +.fa-t-shirt::before { + content: "\f553"; } + +.fa-tshirt::before { + content: "\f553"; } + +.fa-cubes::before { + content: "\f1b3"; } + +.fa-divide::before { + content: "\f529"; } + +.fa-tenge-sign::before { + content: "\f7d7"; } + +.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-up-right-from-square::before { + content: "\f35d"; } + +.fa-external-link-alt::before { + content: "\f35d"; } + +.fa-table-cells::before { + content: "\f00a"; } + +.fa-th::before { + content: "\f00a"; } + +.fa-file-pdf::before { + content: "\f1c1"; } + +.fa-book-bible::before { + content: "\f647"; } + +.fa-bible::before { + content: "\f647"; } + +.fa-o::before { + content: "\4f"; } + +.fa-suitcase-medical::before { + content: "\f0fa"; } + +.fa-medkit::before { + content: "\f0fa"; } + +.fa-user-secret::before { + content: "\f21b"; } + +.fa-otter::before { + content: "\f700"; } + +.fa-person-dress::before { + content: "\f182"; } + +.fa-female::before { + content: "\f182"; } + +.fa-comment-dollar::before { + content: "\f651"; } + +.fa-business-time::before { + content: "\f64a"; } + +.fa-briefcase-clock::before { + content: "\f64a"; } + +.fa-table-cells-large::before { + content: "\f009"; } + +.fa-th-large::before { + content: "\f009"; } + +.fa-book-tanakh::before { + content: "\f827"; } + +.fa-tanakh::before { + content: "\f827"; } + +.fa-phone-volume::before { + content: "\f2a0"; } + +.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-cake-candles::before { + content: "\f1fd"; } + +.fa-birthday-cake::before { + content: "\f1fd"; } + +.fa-cake::before { + content: "\f1fd"; } + +.fa-envelope::before { + content: "\f0e0"; } + +.fa-angles-up::before { + content: "\f102"; } + +.fa-angle-double-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 { + content: "\f887"; } + +.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::before { + content: "\f254"; } + +.fa-hourglass-empty::before { + content: "\f254"; } + +.fa-mountain::before { + content: "\f6fc"; } + +.fa-user-doctor::before { + content: "\f0f0"; } + +.fa-user-md::before { + content: "\f0f0"; } + +.fa-circle-info::before { + content: "\f05a"; } + +.fa-info-circle::before { + content: "\f05a"; } + +.fa-cloud-meatball::before { + content: "\f73b"; } + +.fa-camera::before { + content: "\f030"; } + +.fa-camera-alt::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 { + content: "\f162"; } + +.fa-sort-numeric-asc::before { + content: "\f162"; } + +.fa-sort-numeric-down::before { + content: "\f162"; } + +.fa-hand-holding-droplet::before { + content: "\f4c1"; } + +.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-medical::before { + content: "\f486"; } + +.fa-prescription-bottle-alt::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 { + content: "\f15d"; } + +.fa-sort-alpha-asc::before { + content: "\f15d"; } + +.fa-sort-alpha-down::before { + content: "\f15d"; } + +.fa-money-bill-wheat::before { + content: "\e52a"; } + +.fa-cookie::before { + content: "\f563"; } + +.fa-arrow-rotate-left::before { + content: "\f0e2"; } + +.fa-arrow-left-rotate::before { + content: "\f0e2"; } + +.fa-arrow-rotate-back::before { + content: "\f0e2"; } + +.fa-arrow-rotate-backward::before { + content: "\f0e2"; } + +.fa-undo::before { + content: "\f0e2"; } + +.fa-hard-drive::before { + content: "\f0a0"; } + +.fa-hdd::before { + content: "\f0a0"; } + +.fa-face-grin-squint-tears::before { + content: "\f586"; } + +.fa-grin-squint-tears::before { + content: "\f586"; } + +.fa-dumbbell::before { + content: "\f44b"; } + +.fa-rectangle-list::before { + content: "\f022"; } + +.fa-list-alt::before { + content: "\f022"; } + +.fa-tarp-droplet::before { + content: "\e57c"; } + +.fa-house-medical-circle-check::before { + content: "\e511"; } + +.fa-person-skiing-nordic::before { + content: "\f7ca"; } + +.fa-skiing-nordic::before { + content: "\f7ca"; } + +.fa-calendar-plus::before { + content: "\f271"; } + +.fa-plane-arrival::before { + content: "\f5af"; } + +.fa-circle-left::before { + content: "\f359"; } + +.fa-arrow-alt-circle-left::before { + content: "\f359"; } + +.fa-train-subway::before { + content: "\f239"; } + +.fa-subway::before { + content: "\f239"; } + +.fa-chart-gantt::before { + content: "\e0e4"; } + +.fa-indian-rupee-sign::before { + content: "\e1bc"; } + +.fa-indian-rupee::before { + content: "\e1bc"; } + +.fa-inr::before { + content: "\e1bc"; } + +.fa-crop-simple::before { + content: "\f565"; } + +.fa-crop-alt::before { + content: "\f565"; } + +.fa-money-bill-1::before { + content: "\f3d1"; } + +.fa-money-bill-alt::before { + content: "\f3d1"; } + +.fa-left-long::before { + content: "\f30a"; } + +.fa-long-arrow-alt-left::before { + content: "\f30a"; } + +.fa-dna::before { + content: "\f471"; } + +.fa-virus-slash::before { + content: "\e075"; } + +.fa-minus::before { + content: "\f068"; } + +.fa-subtract::before { + content: "\f068"; } + +.fa-chess::before { + content: "\f439"; } + +.fa-arrow-left-long::before { + content: "\f177"; } + +.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-hands-asl-interpreting::before { + content: "\f2a3"; } + +.fa-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-asl-interpreting::before { + content: "\f2a3"; } + +.fa-hands-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-gear::before { + content: "\f013"; } + +.fa-cog::before { + content: "\f013"; } + +.fa-droplet-slash::before { + content: "\f5c7"; } + +.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 { + content: "\f07a"; } + +.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 { + content: "\f148"; } + +.fa-level-up::before { + content: "\f148"; } + +.fa-u::before { + content: "\55"; } + +.fa-square-root-variable::before { + content: "\f698"; } + +.fa-square-root-alt::before { + content: "\f698"; } + +.fa-clock::before { + content: "\f017"; } + +.fa-clock-four::before { + content: "\f017"; } + +.fa-backward-step::before { + content: "\f048"; } + +.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-house-chimney-medical::before { + content: "\f7f2"; } + +.fa-clinic-medical::before { + content: "\f7f2"; } + +.fa-temperature-three-quarters::before { + content: "\f2c8"; } + +.fa-temperature-3::before { + content: "\f2c8"; } + +.fa-thermometer-3::before { + content: "\f2c8"; } + +.fa-thermometer-three-quarters::before { + content: "\f2c8"; } + +.fa-mobile-screen::before { + content: "\f3cf"; } + +.fa-mobile-android-alt::before { + content: "\f3cf"; } + +.fa-plane-up::before { + content: "\e22d"; } + +.fa-piggy-bank::before { + content: "\f4d3"; } + +.fa-battery-half::before { + content: "\f242"; } + +.fa-battery-3::before { + content: "\f242"; } + +.fa-mountain-city::before { + content: "\e52e"; } + +.fa-coins::before { + content: "\f51e"; } + +.fa-khanda::before { + content: "\f66d"; } + +.fa-sliders::before { + content: "\f1de"; } + +.fa-sliders-h::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-vertical::before { + content: "\f142"; } + +.fa-ellipsis-v::before { + content: "\f142"; } + +.fa-ticket::before { + content: "\f145"; } + +.fa-power-off::before { + content: "\f011"; } + +.fa-right-long::before { + content: "\f30b"; } + +.fa-long-arrow-alt-right::before { + content: "\f30b"; } + +.fa-flag-usa::before { + content: "\f74d"; } + +.fa-laptop-file::before { + content: "\e51d"; } + +.fa-tty::before { + content: "\f1e4"; } + +.fa-teletype::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-person-hiking::before { + content: "\f6ec"; } + +.fa-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 { + content: "\f7da"; } + +.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 { + content: "\f580"; } + +.fa-grin::before { + content: "\f580"; } + +.fa-delete-left::before { + content: "\f55a"; } + +.fa-backspace::before { + content: "\f55a"; } + +.fa-eye-dropper::before { + content: "\f1fb"; } + +.fa-eye-dropper-empty::before { + content: "\f1fb"; } + +.fa-eyedropper::before { + content: "\f1fb"; } + +.fa-file-circle-check::before { + content: "\e5a0"; } + +.fa-forward::before { + content: "\f04e"; } + +.fa-mobile::before { + content: "\f3ce"; } + +.fa-mobile-android::before { + content: "\f3ce"; } + +.fa-mobile-phone::before { + content: "\f3ce"; } + +.fa-face-meh::before { + content: "\f11a"; } + +.fa-meh::before { + content: "\f11a"; } + +.fa-align-center::before { + content: "\f037"; } + +.fa-book-skull::before { + content: "\f6b7"; } + +.fa-book-dead::before { + content: "\f6b7"; } + +.fa-id-card::before { + content: "\f2c2"; } + +.fa-drivers-license::before { + content: "\f2c2"; } + +.fa-outdent::before { + content: "\f03b"; } + +.fa-dedent::before { + content: "\f03b"; } + +.fa-heart-circle-exclamation::before { + content: "\e4fe"; } + +.fa-house::before { + content: "\f015"; } + +.fa-home::before { + content: "\f015"; } + +.fa-home-alt::before { + content: "\f015"; } + +.fa-home-lg-alt::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 { + content: "\f0ec"; } + +.fa-exchange::before { + content: "\f0ec"; } + +.fa-rotate-right::before { + content: "\f2f9"; } + +.fa-redo-alt::before { + content: "\f2f9"; } + +.fa-rotate-forward::before { + content: "\f2f9"; } + +.fa-utensils::before { + content: "\f2e7"; } + +.fa-cutlery::before { + content: "\f2e7"; } + +.fa-arrow-up-wide-short::before { + content: "\f161"; } + +.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-tower-broadcast::before { + content: "\f519"; } + +.fa-broadcast-tower::before { + content: "\f519"; } + +.fa-truck-pickup::before { + content: "\f63c"; } + +.fa-up-long::before { + content: "\f30c"; } + +.fa-long-arrow-alt-up::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 { + content: "\f56d"; } + +.fa-file-download::before { + content: "\f56d"; } + +.fa-caravan::before { + content: "\f8ff"; } + +.fa-shield-cat::before { + content: "\e572"; } + +.fa-bolt::before { + content: "\f0e7"; } + +.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-yen-sign::before { + content: "\f157"; } + +.fa-cny::before { + content: "\f157"; } + +.fa-jpy::before { + content: "\f157"; } + +.fa-rmb::before { + content: "\f157"; } + +.fa-yen::before { + content: "\f157"; } + +.fa-ruble-sign::before { + content: "\f158"; } + +.fa-rouble::before { + content: "\f158"; } + +.fa-rub::before { + content: "\f158"; } + +.fa-ruble::before { + content: "\f158"; } + +.fa-sun::before { + content: "\f185"; } + +.fa-guitar::before { + content: "\f7a6"; } + +.fa-face-laugh-wink::before { + content: "\f59c"; } + +.fa-laugh-wink::before { + content: "\f59c"; } + +.fa-horse-head::before { + content: "\f7ab"; } + +.fa-bore-hole::before { + content: "\e4c3"; } + +.fa-industry::before { + content: "\f275"; } + +.fa-circle-down::before { + content: "\f358"; } + +.fa-arrow-alt-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 { + content: "\f884"; } + +.fa-sort-amount-desc::before { + content: "\f884"; } + +.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 { + content: "\f178"; } + +.fa-long-arrow-right::before { + content: "\f178"; } + +.fa-anchor-circle-xmark::before { + content: "\e4ac"; } + +.fa-ellipsis::before { + content: "\f141"; } + +.fa-ellipsis-h::before { + content: "\f141"; } + +.fa-chess-pawn::before { + content: "\f443"; } + +.fa-kit-medical::before { + content: "\f479"; } + +.fa-first-aid::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::before { + content: "\f09d"; } + +.fa-credit-card-alt::before { + content: "\f09d"; } + +.fa-car::before { + content: "\f1b9"; } + +.fa-automobile::before { + content: "\f1b9"; } + +.fa-hand-holding-hand::before { + content: "\e4f7"; } + +.fa-book-open-reader::before { + content: "\f5da"; } + +.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 { + content: "\e040"; } + +.fa-temperature-up::before { + content: "\e040"; } + +.fa-medal::before { + content: "\f5a2"; } + +.fa-bed::before { + content: "\f236"; } + +.fa-square-h::before { + content: "\f0fd"; } + +.fa-h-square::before { + content: "\f0fd"; } + +.fa-podcast::before { + content: "\f2ce"; } + +.fa-temperature-full::before { + content: "\f2c7"; } + +.fa-temperature-4::before { + content: "\f2c7"; } + +.fa-thermometer-4::before { + content: "\f2c7"; } + +.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-handshake-angle::before { + content: "\f4c4"; } + +.fa-hands-helping::before { + content: "\f4c4"; } + +.fa-location-dot::before { + content: "\f3c5"; } + +.fa-map-marker-alt::before { + content: "\f3c5"; } + +.fa-file::before { + content: "\f15b"; } + +.fa-greater-than::before { + content: "\3e"; } + +.fa-person-swimming::before { + content: "\f5c4"; } + +.fa-swimmer::before { + content: "\f5c4"; } + +.fa-arrow-down::before { + content: "\f063"; } + +.fa-droplet::before { + content: "\f043"; } + +.fa-tint::before { + content: "\f043"; } + +.fa-eraser::before { + content: "\f12d"; } + +.fa-earth-americas::before { + content: "\f57d"; } + +.fa-earth::before { + content: "\f57d"; } + +.fa-earth-america::before { + content: "\f57d"; } + +.fa-globe-americas::before { + content: "\f57d"; } + +.fa-person-burst::before { + content: "\e53b"; } + +.fa-dove::before { + content: "\f4ba"; } + +.fa-battery-empty::before { + content: "\f244"; } + +.fa-battery-0::before { + content: "\f244"; } + +.fa-socks::before { + content: "\f696"; } + +.fa-inbox::before { + content: "\f01c"; } + +.fa-section::before { + content: "\e447"; } + +.fa-gauge-high::before { + content: "\f625"; } + +.fa-tachometer-alt::before { + content: "\f625"; } + +.fa-tachometer-alt-fast::before { + content: "\f625"; } + +.fa-envelope-open-text::before { + content: "\f658"; } + +.fa-hospital::before { + content: "\f0f8"; } + +.fa-hospital-alt::before { + content: "\f0f8"; } + +.fa-hospital-wide::before { + content: "\f0f8"; } + +.fa-wine-bottle::before { + content: "\f72f"; } + +.fa-chess-rook::before { + content: "\f447"; } + +.fa-bars-staggered::before { + content: "\f550"; } + +.fa-reorder::before { + content: "\f550"; } + +.fa-stream::before { + content: "\f550"; } + +.fa-dharmachakra::before { + content: "\f655"; } + +.fa-hotdog::before { + content: "\f80f"; } + +.fa-person-walking-with-cane::before { + content: "\f29d"; } + +.fa-blind::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 { + content: "\f772"; } + +.fa-vote-yea::before { + content: "\f772"; } + +.fa-star-half::before { + content: "\f089"; } + +.fa-boxes-stacked::before { + content: "\f468"; } + +.fa-boxes::before { + content: "\f468"; } + +.fa-boxes-alt::before { + content: "\f468"; } + +.fa-link::before { + content: "\f0c1"; } + +.fa-chain::before { + content: "\f0c1"; } + +.fa-ear-listen::before { + content: "\f2a2"; } + +.fa-assistive-listening-systems::before { + content: "\f2a2"; } + +.fa-tree-city::before { + content: "\e587"; } + +.fa-play::before { + content: "\f04b"; } + +.fa-font::before { + content: "\f031"; } + +.fa-table-cells-row-lock::before { + content: "\e67a"; } + +.fa-rupiah-sign::before { + content: "\e23d"; } + +.fa-magnifying-glass::before { + content: "\f002"; } + +.fa-search::before { + content: "\f002"; } + +.fa-table-tennis-paddle-ball::before { + content: "\f45d"; } + +.fa-ping-pong-paddle-ball::before { + content: "\f45d"; } + +.fa-table-tennis::before { + content: "\f45d"; } + +.fa-person-dots-from-line::before { + content: "\f470"; } + +.fa-diagnoses::before { + content: "\f470"; } + +.fa-trash-can-arrow-up::before { + content: "\f82a"; } + +.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-pen::before { + content: "\f31c"; } + +.fa-file-edit::before { + content: "\f31c"; } + +.fa-receipt::before { + content: "\f543"; } + +.fa-square-pen::before { + content: "\f14b"; } + +.fa-pen-square::before { + content: "\f14b"; } + +.fa-pencil-square::before { + content: "\f14b"; } + +.fa-suitcase-rolling::before { + content: "\f5c1"; } + +.fa-person-circle-exclamation::before { + content: "\e53f"; } + +.fa-chevron-down::before { + content: "\f078"; } + +.fa-battery-full::before { + content: "\f240"; } + +.fa-battery::before { + content: "\f240"; } + +.fa-battery-5::before { + content: "\f240"; } + +.fa-skull-crossbones::before { + content: "\f714"; } + +.fa-code-compare::before { + content: "\e13a"; } + +.fa-list-ul::before { + content: "\f0ca"; } + +.fa-list-dots::before { + content: "\f0ca"; } + +.fa-school-lock::before { + content: "\e56f"; } + +.fa-tower-cell::before { + content: "\e585"; } + +.fa-down-long::before { + content: "\f309"; } + +.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-dome::before { + content: "\f752"; } + +.fa-landmark-alt::before { + content: "\f752"; } + +.fa-arrow-up::before { + content: "\f062"; } + +.fa-tv::before { + content: "\f26c"; } + +.fa-television::before { + content: "\f26c"; } + +.fa-tv-alt::before { + content: "\f26c"; } + +.fa-shrimp::before { + content: "\e448"; } + +.fa-list-check::before { + content: "\f0ae"; } + +.fa-tasks::before { + content: "\f0ae"; } + +.fa-jug-detergent::before { + content: "\e519"; } + +.fa-circle-user::before { + content: "\f2bd"; } + +.fa-user-circle::before { + content: "\f2bd"; } + +.fa-user-shield::before { + content: "\f505"; } + +.fa-wind::before { + content: "\f72e"; } + +.fa-car-burst::before { + content: "\f5e1"; } + +.fa-car-crash::before { + content: "\f5e1"; } + +.fa-y::before { + content: "\59"; } + +.fa-person-snowboarding::before { + content: "\f7ce"; } + +.fa-snowboarding::before { + content: "\f7ce"; } + +.fa-truck-fast::before { + content: "\f48b"; } + +.fa-shipping-fast::before { + content: "\f48b"; } + +.fa-fish::before { + content: "\f578"; } + +.fa-user-graduate::before { + content: "\f501"; } + +.fa-circle-half-stroke::before { + content: "\f042"; } + +.fa-adjust::before { + content: "\f042"; } + +.fa-clapperboard::before { + content: "\e131"; } + +.fa-circle-radiation::before { + content: "\f7ba"; } + +.fa-radiation-alt::before { + content: "\f7ba"; } + +.fa-baseball::before { + content: "\f433"; } + +.fa-baseball-ball::before { + content: "\f433"; } + +.fa-jet-fighter-up::before { + content: "\e518"; } + +.fa-diagram-project::before { + content: "\f542"; } + +.fa-project-diagram::before { + content: "\f542"; } + +.fa-copy::before { + content: "\f0c5"; } + +.fa-volume-xmark::before { + content: "\f6a9"; } + +.fa-volume-mute::before { + content: "\f6a9"; } + +.fa-volume-times::before { + content: "\f6a9"; } + +.fa-hand-sparkles::before { + content: "\e05d"; } + +.fa-grip::before { + content: "\f58d"; } + +.fa-grip-horizontal::before { + content: "\f58d"; } + +.fa-share-from-square::before { + content: "\f14d"; } + +.fa-share-square::before { + content: "\f14d"; } + +.fa-child-combatant::before { + content: "\e4e0"; } + +.fa-child-rifle::before { + content: "\e4e0"; } + +.fa-gun::before { + content: "\e19b"; } + +.fa-square-phone::before { + content: "\f098"; } + +.fa-phone-square::before { + content: "\f098"; } + +.fa-plus::before { + content: "\2b"; } + +.fa-add::before { + content: "\2b"; } + +.fa-expand::before { + content: "\f065"; } + +.fa-computer::before { + content: "\e4e5"; } + +.fa-xmark::before { + content: "\f00d"; } + +.fa-close::before { + content: "\f00d"; } + +.fa-multiply::before { + content: "\f00d"; } + +.fa-remove::before { + content: "\f00d"; } + +.fa-times::before { + content: "\f00d"; } + +.fa-arrows-up-down-left-right::before { + content: "\f047"; } + +.fa-arrows::before { + content: "\f047"; } + +.fa-chalkboard-user::before { + content: "\f51c"; } + +.fa-chalkboard-teacher::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::before { + content: "\f10d"; } + +.fa-quote-left-alt::before { + content: "\f10d"; } + +.fa-tractor::before { + content: "\f722"; } + +.fa-trash-arrow-up::before { + content: "\f829"; } + +.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-shekel-sign::before { + content: "\f20b"; } + +.fa-ils::before { + content: "\f20b"; } + +.fa-shekel::before { + content: "\f20b"; } + +.fa-sheqel::before { + content: "\f20b"; } + +.fa-sheqel-sign::before { + content: "\f20b"; } + +.fa-map::before { + content: "\f279"; } + +.fa-rocket::before { + content: "\f135"; } + +.fa-photo-film::before { + content: "\f87c"; } + +.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 { + content: "\f4d9"; } + +.fa-sign::before { + content: "\f4d9"; } + +.fa-bezier-curve::before { + content: "\f55b"; } + +.fa-bell-slash::before { + content: "\f1f6"; } + +.fa-tablet::before { + content: "\f3fb"; } + +.fa-tablet-android::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-rear::before { + content: "\f5de"; } + +.fa-car-alt::before { + content: "\f5de"; } + +.fa-pump-soap::before { + content: "\e06b"; } + +.fa-video-slash::before { + content: "\f4e2"; } + +.fa-battery-quarter::before { + content: "\f243"; } + +.fa-battery-2::before { + content: "\f243"; } + +.fa-radio::before { + content: "\f8d7"; } + +.fa-baby-carriage::before { + content: "\f77d"; } + +.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 { + content: "\25"; } + +.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 { + content: "\f118"; } + +.fa-smile::before { + content: "\f118"; } + +.fa-thumbtack::before { + content: "\f08d"; } + +.fa-thumb-tack::before { + content: "\f08d"; } + +.fa-trophy::before { + content: "\f091"; } + +.fa-person-praying::before { + content: "\f683"; } + +.fa-pray::before { + content: "\f683"; } + +.fa-hammer::before { + content: "\f6e3"; } + +.fa-hand-peace::before { + content: "\f25b"; } + +.fa-rotate::before { + content: "\f2f1"; } + +.fa-sync-alt::before { + content: "\f2f1"; } + +.fa-spinner::before { + content: "\f110"; } + +.fa-robot::before { + content: "\f544"; } + +.fa-peace::before { + content: "\f67c"; } + +.fa-gears::before { + content: "\f085"; } + +.fa-cogs::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 { + content: "\f584"; } + +.fa-grin-hearts::before { + content: "\f584"; } + +.fa-dice-four::before { + content: "\f524"; } + +.fa-sim-card::before { + content: "\f7c4"; } + +.fa-transgender::before { + content: "\f225"; } + +.fa-transgender-alt::before { + content: "\f225"; } + +.fa-mercury::before { + content: "\f223"; } + +.fa-arrow-turn-down::before { + content: "\f149"; } + +.fa-level-down::before { + content: "\f149"; } + +.fa-person-falling-burst::before { + content: "\e547"; } + +.fa-award::before { + content: "\f559"; } + +.fa-ticket-simple::before { + content: "\f3ff"; } + +.fa-ticket-alt::before { + content: "\f3ff"; } + +.fa-building::before { + content: "\f1ad"; } + +.fa-angles-left::before { + content: "\f100"; } + +.fa-angle-double-left::before { + content: "\f100"; } + +.fa-qrcode::before { + content: "\f029"; } + +.fa-clock-rotate-left::before { + content: "\f1da"; } + +.fa-history::before { + content: "\f1da"; } + +.fa-face-grin-beam-sweat::before { + content: "\f583"; } + +.fa-grin-beam-sweat::before { + content: "\f583"; } + +.fa-file-export::before { + content: "\f56e"; } + +.fa-arrow-right-from-file::before { + content: "\f56e"; } + +.fa-shield::before { + content: "\f132"; } + +.fa-shield-blank::before { + content: "\f132"; } + +.fa-arrow-up-short-wide::before { + content: "\f885"; } + +.fa-sort-amount-up-alt::before { + content: "\f885"; } + +.fa-house-medical::before { + content: "\e3b2"; } + +.fa-golf-ball-tee::before { + content: "\f450"; } + +.fa-golf-ball::before { + content: "\f450"; } + +.fa-circle-chevron-left::before { + content: "\f137"; } + +.fa-chevron-circle-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-wand-magic::before { + content: "\f0d0"; } + +.fa-magic::before { + content: "\f0d0"; } + +.fa-dog::before { + content: "\f6d3"; } + +.fa-carrot::before { + content: "\f787"; } + +.fa-moon::before { + content: "\f186"; } + +.fa-wine-glass-empty::before { + content: "\f5ce"; } + +.fa-wine-glass-alt::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-person-biking::before { + content: "\f84a"; } + +.fa-biking::before { + content: "\f84a"; } + +.fa-broom::before { + content: "\f51a"; } + +.fa-shield-heart::before { + content: "\e574"; } + +.fa-gopuram::before { + content: "\f664"; } + +.fa-earth-oceania::before { + content: "\e47b"; } + +.fa-globe-oceania::before { + content: "\e47b"; } + +.fa-square-xmark::before { + content: "\f2d3"; } + +.fa-times-square::before { + content: "\f2d3"; } + +.fa-xmark-square::before { + content: "\f2d3"; } + +.fa-hashtag::before { + content: "\23"; } + +.fa-up-right-and-down-left-from-center::before { + content: "\f424"; } + +.fa-expand-alt::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-up-down::before { + content: "\f338"; } + +.fa-arrows-alt-v::before { + content: "\f338"; } + +.fa-cloud-moon-rain::before { + content: "\f73c"; } + +.fa-calendar::before { + content: "\f133"; } + +.fa-trailer::before { + content: "\e041"; } + +.fa-bahai::before { + content: "\f666"; } + +.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 { + content: "\f055"; } + +.fa-plus-circle::before { + content: "\f055"; } + +.fa-face-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-hand-holding::before { + content: "\f4bd"; } + +.fa-plug-circle-exclamation::before { + content: "\e55d"; } + +.fa-link-slash::before { + content: "\f127"; } + +.fa-chain-broken::before { + content: "\f127"; } + +.fa-chain-slash::before { + content: "\f127"; } + +.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 { + content: "\f882"; } + +.fa-sort-alpha-up-alt::before { + content: "\f882"; } + +.fa-fire-flame-curved::before { + content: "\f7e4"; } + +.fa-fire-alt::before { + content: "\f7e4"; } + +.fa-tornado::before { + content: "\f76f"; } + +.fa-file-circle-plus::before { + content: "\e494"; } + +.fa-book-quran::before { + content: "\f687"; } + +.fa-quran::before { + content: "\f687"; } + +.fa-anchor::before { + content: "\f13d"; } + +.fa-border-all::before { + content: "\f84c"; } + +.fa-face-angry::before { + content: "\f556"; } + +.fa-angry::before { + content: "\f556"; } + +.fa-cookie-bite::before { + content: "\f564"; } + +.fa-arrow-trend-down::before { + content: "\e097"; } + +.fa-rss::before { + content: "\f09e"; } + +.fa-feed::before { + content: "\f09e"; } + +.fa-draw-polygon::before { + content: "\f5ee"; } + +.fa-scale-balanced::before { + content: "\f24e"; } + +.fa-balance-scale::before { + content: "\f24e"; } + +.fa-gauge-simple-high::before { + content: "\f62a"; } + +.fa-tachometer::before { + content: "\f62a"; } + +.fa-tachometer-fast::before { + content: "\f62a"; } + +.fa-shower::before { + content: "\f2cc"; } + +.fa-desktop::before { + content: "\f390"; } + +.fa-desktop-alt::before { + content: "\f390"; } + +.fa-m::before { + content: "\4d"; } + +.fa-table-list::before { + content: "\f00b"; } + +.fa-th-list::before { + content: "\f00b"; } + +.fa-comment-sms::before { + content: "\f7cd"; } + +.fa-sms::before { + content: "\f7cd"; } + +.fa-book::before { + content: "\f02d"; } + +.fa-user-plus::before { + content: "\f234"; } + +.fa-check::before { + content: "\f00c"; } + +.fa-battery-three-quarters::before { + content: "\f241"; } + +.fa-battery-4::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-hand-fist::before { + content: "\f6de"; } + +.fa-fist-raised::before { + content: "\f6de"; } + +.fa-cloud-moon::before { + content: "\f6c3"; } + +.fa-briefcase::before { + content: "\f0b1"; } + +.fa-person-falling::before { + content: "\e546"; } + +.fa-image-portrait::before { + content: "\f3e0"; } + +.fa-portrait::before { + content: "\f3e0"; } + +.fa-user-tag::before { + content: "\f507"; } + +.fa-rug::before { + content: "\e569"; } + +.fa-earth-europe::before { + content: "\f7a2"; } + +.fa-globe-europe::before { + content: "\f7a2"; } + +.fa-cart-flatbed-suitcase::before { + content: "\f59d"; } + +.fa-luggage-cart::before { + content: "\f59d"; } + +.fa-rectangle-xmark::before { + content: "\f410"; } + +.fa-rectangle-times::before { + content: "\f410"; } + +.fa-times-rectangle::before { + content: "\f410"; } + +.fa-window-close::before { + content: "\f410"; } + +.fa-baht-sign::before { + content: "\e0ac"; } + +.fa-book-open::before { + content: "\f518"; } + +.fa-book-journal-whills::before { + content: "\f66a"; } + +.fa-journal-whills::before { + content: "\f66a"; } + +.fa-handcuffs::before { + content: "\e4f8"; } + +.fa-triangle-exclamation::before { + content: "\f071"; } + +.fa-exclamation-triangle::before { + content: "\f071"; } + +.fa-warning::before { + content: "\f071"; } + +.fa-database::before { + content: "\f1c0"; } + +.fa-share::before { + content: "\f064"; } + +.fa-mail-forward::before { + content: "\f064"; } + +.fa-bottle-droplet::before { + content: "\e4c4"; } + +.fa-mask-face::before { + content: "\e1d7"; } + +.fa-hill-rockslide::before { + content: "\e508"; } + +.fa-right-left::before { + content: "\f362"; } + +.fa-exchange-alt::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 { + content: "\f53b"; } + +.fa-money-bill-wave-alt::before { + content: "\f53b"; } + +.fa-life-ring::before { + content: "\f1cd"; } + +.fa-hands::before { + content: "\f2a7"; } + +.fa-sign-language::before { + content: "\f2a7"; } + +.fa-signing::before { + content: "\f2a7"; } + +.fa-calendar-day::before { + content: "\f783"; } + +.fa-water-ladder::before { + content: "\f5c5"; } + +.fa-ladder-water::before { + content: "\f5c5"; } + +.fa-swimming-pool::before { + content: "\f5c5"; } + +.fa-arrows-up-down::before { + content: "\f07d"; } + +.fa-arrows-v::before { + content: "\f07d"; } + +.fa-face-grimace::before { + content: "\f57f"; } + +.fa-grimace::before { + content: "\f57f"; } + +.fa-wheelchair-move::before { + content: "\e2ce"; } + +.fa-wheelchair-alt::before { + content: "\e2ce"; } + +.fa-turn-down::before { + content: "\f3be"; } + +.fa-level-down-alt::before { + content: "\f3be"; } + +.fa-person-walking-arrow-right::before { + content: "\e552"; } + +.fa-square-envelope::before { + content: "\f199"; } + +.fa-envelope-square::before { + content: "\f199"; } + +.fa-dice::before { + content: "\f522"; } + +.fa-bowling-ball::before { + content: "\f436"; } + +.fa-brain::before { + content: "\f5dc"; } + +.fa-bandage::before { + content: "\f462"; } + +.fa-band-aid::before { + content: "\f462"; } + +.fa-calendar-minus::before { + content: "\f272"; } + +.fa-circle-xmark::before { + content: "\f057"; } + +.fa-times-circle::before { + content: "\f057"; } + +.fa-xmark-circle::before { + content: "\f057"; } + +.fa-gifts::before { + content: "\f79c"; } + +.fa-hotel::before { + content: "\f594"; } + +.fa-earth-asia::before { + content: "\f57e"; } + +.fa-globe-asia::before { + content: "\f57e"; } + +.fa-id-card-clip::before { + content: "\f47f"; } + +.fa-id-card-alt::before { + content: "\f47f"; } + +.fa-magnifying-glass-plus::before { + content: "\f00e"; } + +.fa-search-plus::before { + content: "\f00e"; } + +.fa-thumbs-up::before { + content: "\f164"; } + +.fa-user-clock::before { + content: "\f4fd"; } + +.fa-hand-dots::before { + content: "\f461"; } + +.fa-allergies::before { + content: "\f461"; } + +.fa-file-invoice::before { + content: "\f570"; } + +.fa-window-minimize::before { + content: "\f2d1"; } + +.fa-mug-saucer::before { + content: "\f0f4"; } + +.fa-coffee::before { + content: "\f0f4"; } + +.fa-brush::before { + content: "\f55d"; } + +.fa-mask::before { + content: "\f6fa"; } + +.fa-magnifying-glass-minus::before { + content: "\f010"; } + +.fa-search-minus::before { + content: "\f010"; } + +.fa-ruler-vertical::before { + content: "\f548"; } + +.fa-user-large::before { + content: "\f406"; } + +.fa-user-alt::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 { + content: "\f249"; } + +.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 { + content: "\f5b4"; } + +.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-turkish-lira-sign::before { + content: "\e2bb"; } + +.fa-try::before { + content: "\e2bb"; } + +.fa-turkish-lira::before { + content: "\e2bb"; } + +.fa-dollar-sign::before { + content: "\24"; } + +.fa-dollar::before { + content: "\24"; } + +.fa-usd::before { + content: "\24"; } + +.fa-x::before { + content: "\58"; } + +.fa-magnifying-glass-dollar::before { + content: "\f688"; } + +.fa-search-dollar::before { + content: "\f688"; } + +.fa-users-gear::before { + content: "\f509"; } + +.fa-users-cog::before { + content: "\f509"; } + +.fa-person-military-pointing::before { + content: "\e54a"; } + +.fa-building-columns::before { + content: "\f19c"; } + +.fa-bank::before { + content: "\f19c"; } + +.fa-institution::before { + content: "\f19c"; } + +.fa-museum::before { + content: "\f19c"; } + +.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 { + content: "\f630"; } + +.fa-theater-masks::before { + content: "\f630"; } + +.fa-kip-sign::before { + content: "\e1c4"; } + +.fa-hand-point-left::before { + content: "\f0a5"; } + +.fa-handshake-simple::before { + content: "\f4c6"; } + +.fa-handshake-alt::before { + content: "\f4c6"; } + +.fa-jet-fighter::before { + content: "\f0fb"; } + +.fa-fighter-jet::before { + content: "\f0fb"; } + +.fa-square-share-nodes::before { + content: "\f1e1"; } + +.fa-share-alt-square::before { + content: "\f1e1"; } + +.fa-barcode::before { + content: "\f02a"; } + +.fa-plus-minus::before { + content: "\e43c"; } + +.fa-video::before { + content: "\f03d"; } + +.fa-video-camera::before { + content: "\f03d"; } + +.fa-graduation-cap::before { + content: "\f19d"; } + +.fa-mortar-board::before { + content: "\f19d"; } + +.fa-hand-holding-medical::before { + content: "\e05c"; } + +.fa-person-circle-check::before { + content: "\e53e"; } + +.fa-turn-up::before { + content: "\f3bf"; } + +.fa-level-up-alt::before { + content: "\f3bf"; } + +.sr-only, +.fa-sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } + +.sr-only-focusable:not(:focus), +.fa-sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } +:root, :host { + --fa-style-family-brands: 'Font Awesome 6 Brands'; + --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; } + +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } + +.fab, +.fa-brands { + font-weight: 400; } + +.fa-monero:before { + content: "\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-pixiv:before { + content: "\e640"; } + +.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-square-js:before { + content: "\f3b9"; } + +.fa-js-square: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-jxl:before { + content: "\e67b"; } + +.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-square-reddit:before { + content: "\f1a2"; } + +.fa-reddit-square: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-brave:before { + content: "\e63c"; } + +.fa-sistrix:before { + content: "\f3ee"; } + +.fa-square-instagram:before { + content: "\e055"; } + +.fa-instagram-square:before { + content: "\e055"; } + +.fa-battle-net:before { + content: "\f835"; } + +.fa-the-red-yeti:before { + content: "\f69d"; } + +.fa-square-hacker-news:before { + content: "\f3af"; } + +.fa-hacker-news-square:before { + content: "\f3af"; } + +.fa-edge:before { + content: "\f282"; } + +.fa-threads:before { + content: "\e618"; } + +.fa-napster:before { + content: "\f3d2"; } + +.fa-square-snapchat:before { + content: "\f2ad"; } + +.fa-snapchat-square: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-square-font-awesome-stroke:before { + content: "\f35c"; } + +.fa-font-awesome-alt: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 { + content: "\f2aa"; } + +.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-opensuse:before { + content: "\e62b"; } + +.fa-pied-piper-alt:before { + content: "\f1a8"; } + +.fa-square-dribbble:before { + content: "\f397"; } + +.fa-dribbble-square: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 { + content: "\f081"; } + +.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-square-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 { + content: "\f431"; } + +.fa-youtube-square:before { + content: "\f431"; } + +.fa-wikipedia-w:before { + content: "\f266"; } + +.fa-wpressr:before { + content: "\f3e4"; } + +.fa-rendact: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-square-letterboxd:before { + content: "\e62e"; } + +.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-shoelace:before { + content: "\e60c"; } + +.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 { + content: "\f1b7"; } + +.fa-steam-square:before { + content: "\f1b7"; } + +.fa-500px:before { + content: "\f26e"; } + +.fa-square-vimeo:before { + content: "\f194"; } + +.fa-vimeo-square:before { + content: "\f194"; } + +.fa-asymmetrik:before { + content: "\f372"; } + +.fa-font-awesome:before { + content: "\f2b4"; } + +.fa-font-awesome-flag:before { + content: "\f2b4"; } + +.fa-font-awesome-logo-full: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-square-github:before { + content: "\f092"; } + +.fa-github-square: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-google-scholar:before { + content: "\e63b"; } + +.fa-square-gitlab:before { + content: "\e5ae"; } + +.fa-gitlab-square: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-square-odnoklassniki:before { + content: "\f264"; } + +.fa-odnoklassniki-square: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-square-pinterest:before { + content: "\f0d3"; } + +.fa-pinterest-square: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-signal-messenger:before { + content: "\e663"; } + +.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-mintbit:before { + content: "\e62f"; } + +.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-brave-reverse:before { + content: "\e63d"; } + +.fa-facebook-f:before { + content: "\f39e"; } + +.fa-square-google-plus:before { + content: "\f0d4"; } + +.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa-web-awesome:before { + content: "\e682"; } + +.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 { + content: "\f169"; } + +.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-letterboxd:before { + content: "\e62d"; } + +.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 { + content: "\e080"; } + +.fa-innosoft:before { + content: "\e080"; } + +.fa-stack-exchange:before { + content: "\f18d"; } + +.fa-elementor:before { + content: "\f430"; } + +.fa-square-pied-piper:before { + content: "\e01e"; } + +.fa-pied-piper-square: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-square-web-awesome-stroke:before { + content: "\e684"; } + +.fa-searchengin:before { + content: "\f3eb"; } + +.fa-tiktok:before { + content: "\e07b"; } + +.fa-square-facebook:before { + content: "\f082"; } + +.fa-facebook-square: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-square-lastfm:before { + content: "\f203"; } + +.fa-lastfm-square: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-upwork:before { + content: "\e641"; } + +.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-square-upwork:before { + content: "\e67c"; } + +.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-square-web-awesome:before { + content: "\e683"; } + +.fa-sass:before { + content: "\f41e"; } + +.fa-wirsindhandwerk:before { + content: "\e2d0"; } + +.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-bluesky:before { + content: "\e671"; } + +.fa-cc-jcb:before { + content: "\f24b"; } + +.fa-snapchat:before { + content: "\f2ab"; } + +.fa-snapchat-ghost:before { + content: "\f2ab"; } + +.fa-fantasy-flight-games:before { + content: "\f6dc"; } + +.fa-rust:before { + content: "\e07a"; } + +.fa-wix:before { + content: "\f5cf"; } + +.fa-square-behance:before { + content: "\f1b5"; } + +.fa-behance-square:before { + content: "\f1b5"; } + +.fa-supple:before { + content: "\f3f9"; } + +.fa-webflow:before { + content: "\e65c"; } + +.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-square-git:before { + content: "\f1d2"; } + +.fa-git-square:before { + content: "\f1d2"; } + +.fa-square-tumblr:before { + content: "\f174"; } + +.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:before { + content: "\f2c6"; } + +.fa-telegram-plane:before { + content: "\f2c6"; } + +.fa-old-republic:before { + content: "\f510"; } + +.fa-odysee:before { + content: "\e5c6"; } + +.fa-square-whatsapp:before { + content: "\f40c"; } + +.fa-whatsapp-square:before { + content: "\f40c"; } + +.fa-node-js:before { + content: "\f3d3"; } + +.fa-edge-legacy:before { + content: "\e078"; } + +.fa-slack:before { + content: "\f198"; } + +.fa-slack-hash: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:before { + content: "\f23a"; } + +.fa-medium-m: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"; } +:root, :host { + --fa-style-family-classic: 'Font Awesome 6 Free'; + --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); } + +.far, +.fa-regular { + font-weight: 400; } +:root, :host { + --fa-style-family-classic: 'Font Awesome 6 Free'; + --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 900; + font-display: block; + src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } + +.fas, +.fa-solid { + font-weight: 900; } +@font-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"); } +@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; } diff --git a/resources/fontawesome/css/all.min.css b/resources/fontawesome/css/all.min.css new file mode 100644 index 0000000..45072b3 --- /dev/null +++ b/resources/fontawesome/css/all.min.css @@ -0,0 +1,9 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-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,0));transform:rotate(var(--fa-rotate-angle,0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)} + +.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-fill-drip:before{content:"\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-table-cells-column-lock:before{content:"\e678"}.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-table-cells-row-lock:before{content:"\e67a"}.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-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"} +.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}: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-pixiv:before{content:"\e640"}.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-jxl:before{content:"\e67b"}.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-brave:before{content:"\e63c"}.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-opensuse:before{content:"\e62b"}.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,.fa-square-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-square-letterboxd:before{content:"\e62e"}.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-shoelace:before{content:"\e60c"}.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-google-scholar:before{content:"\e63b"}.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-signal-messenger:before{content:"\e663"}.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-mintbit:before{content:"\e62f"}.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-brave-reverse:before{content:"\e63d"}.fa-facebook-f:before{content:"\f39e"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-web-awesome:before{content:"\e682"}.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-letterboxd:before{content:"\e62d"}.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-square-web-awesome-stroke:before{content:"\e684"}.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-upwork:before{content:"\e641"}.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-square-upwork:before{content:"\e67c"}.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-square-web-awesome:before{content:"\e683"}.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-bluesky:before{content:"\e671"}.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-webflow:before{content:"\e65c"}.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"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}: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}@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")}@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} \ No newline at end of file diff --git a/resources/fontawesome/css/brands.css b/resources/fontawesome/css/brands.css new file mode 100644 index 0000000..12ad3aa --- /dev/null +++ b/resources/fontawesome/css/brands.css @@ -0,0 +1,1594 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +:root, :host { + --fa-style-family-brands: 'Font Awesome 6 Brands'; + --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; } + +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } + +.fab, +.fa-brands { + font-weight: 400; } + +.fa-monero:before { + content: "\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-pixiv:before { + content: "\e640"; } + +.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-square-js:before { + content: "\f3b9"; } + +.fa-js-square: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-jxl:before { + content: "\e67b"; } + +.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-square-reddit:before { + content: "\f1a2"; } + +.fa-reddit-square: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-brave:before { + content: "\e63c"; } + +.fa-sistrix:before { + content: "\f3ee"; } + +.fa-square-instagram:before { + content: "\e055"; } + +.fa-instagram-square:before { + content: "\e055"; } + +.fa-battle-net:before { + content: "\f835"; } + +.fa-the-red-yeti:before { + content: "\f69d"; } + +.fa-square-hacker-news:before { + content: "\f3af"; } + +.fa-hacker-news-square:before { + content: "\f3af"; } + +.fa-edge:before { + content: "\f282"; } + +.fa-threads:before { + content: "\e618"; } + +.fa-napster:before { + content: "\f3d2"; } + +.fa-square-snapchat:before { + content: "\f2ad"; } + +.fa-snapchat-square: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-square-font-awesome-stroke:before { + content: "\f35c"; } + +.fa-font-awesome-alt: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 { + content: "\f2aa"; } + +.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-opensuse:before { + content: "\e62b"; } + +.fa-pied-piper-alt:before { + content: "\f1a8"; } + +.fa-square-dribbble:before { + content: "\f397"; } + +.fa-dribbble-square: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 { + content: "\f081"; } + +.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-square-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 { + content: "\f431"; } + +.fa-youtube-square:before { + content: "\f431"; } + +.fa-wikipedia-w:before { + content: "\f266"; } + +.fa-wpressr:before { + content: "\f3e4"; } + +.fa-rendact: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-square-letterboxd:before { + content: "\e62e"; } + +.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-shoelace:before { + content: "\e60c"; } + +.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 { + content: "\f1b7"; } + +.fa-steam-square:before { + content: "\f1b7"; } + +.fa-500px:before { + content: "\f26e"; } + +.fa-square-vimeo:before { + content: "\f194"; } + +.fa-vimeo-square:before { + content: "\f194"; } + +.fa-asymmetrik:before { + content: "\f372"; } + +.fa-font-awesome:before { + content: "\f2b4"; } + +.fa-font-awesome-flag:before { + content: "\f2b4"; } + +.fa-font-awesome-logo-full: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-square-github:before { + content: "\f092"; } + +.fa-github-square: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-google-scholar:before { + content: "\e63b"; } + +.fa-square-gitlab:before { + content: "\e5ae"; } + +.fa-gitlab-square: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-square-odnoklassniki:before { + content: "\f264"; } + +.fa-odnoklassniki-square: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-square-pinterest:before { + content: "\f0d3"; } + +.fa-pinterest-square: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-signal-messenger:before { + content: "\e663"; } + +.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-mintbit:before { + content: "\e62f"; } + +.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-brave-reverse:before { + content: "\e63d"; } + +.fa-facebook-f:before { + content: "\f39e"; } + +.fa-square-google-plus:before { + content: "\f0d4"; } + +.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa-web-awesome:before { + content: "\e682"; } + +.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 { + content: "\f169"; } + +.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-letterboxd:before { + content: "\e62d"; } + +.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 { + content: "\e080"; } + +.fa-innosoft:before { + content: "\e080"; } + +.fa-stack-exchange:before { + content: "\f18d"; } + +.fa-elementor:before { + content: "\f430"; } + +.fa-square-pied-piper:before { + content: "\e01e"; } + +.fa-pied-piper-square: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-square-web-awesome-stroke:before { + content: "\e684"; } + +.fa-searchengin:before { + content: "\f3eb"; } + +.fa-tiktok:before { + content: "\e07b"; } + +.fa-square-facebook:before { + content: "\f082"; } + +.fa-facebook-square: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-square-lastfm:before { + content: "\f203"; } + +.fa-lastfm-square: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-upwork:before { + content: "\e641"; } + +.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-square-upwork:before { + content: "\e67c"; } + +.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-square-web-awesome:before { + content: "\e683"; } + +.fa-sass:before { + content: "\f41e"; } + +.fa-wirsindhandwerk:before { + content: "\e2d0"; } + +.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-bluesky:before { + content: "\e671"; } + +.fa-cc-jcb:before { + content: "\f24b"; } + +.fa-snapchat:before { + content: "\f2ab"; } + +.fa-snapchat-ghost:before { + content: "\f2ab"; } + +.fa-fantasy-flight-games:before { + content: "\f6dc"; } + +.fa-rust:before { + content: "\e07a"; } + +.fa-wix:before { + content: "\f5cf"; } + +.fa-square-behance:before { + content: "\f1b5"; } + +.fa-behance-square:before { + content: "\f1b5"; } + +.fa-supple:before { + content: "\f3f9"; } + +.fa-webflow:before { + content: "\e65c"; } + +.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-square-git:before { + content: "\f1d2"; } + +.fa-git-square:before { + content: "\f1d2"; } + +.fa-square-tumblr:before { + content: "\f174"; } + +.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:before { + content: "\f2c6"; } + +.fa-telegram-plane:before { + content: "\f2c6"; } + +.fa-old-republic:before { + content: "\f510"; } + +.fa-odysee:before { + content: "\e5c6"; } + +.fa-square-whatsapp:before { + content: "\f40c"; } + +.fa-whatsapp-square:before { + content: "\f40c"; } + +.fa-node-js:before { + content: "\f3d3"; } + +.fa-edge-legacy:before { + content: "\e078"; } + +.fa-slack:before { + content: "\f198"; } + +.fa-slack-hash: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:before { + content: "\f23a"; } + +.fa-medium-m: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"; } diff --git a/resources/fontawesome/css/brands.min.css b/resources/fontawesome/css/brands.min.css new file mode 100644 index 0000000..3e70760 --- /dev/null +++ b/resources/fontawesome/css/brands.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +: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-pixiv:before{content:"\e640"}.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-jxl:before{content:"\e67b"}.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-brave:before{content:"\e63c"}.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-opensuse:before{content:"\e62b"}.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,.fa-square-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-square-letterboxd:before{content:"\e62e"}.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-shoelace:before{content:"\e60c"}.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-google-scholar:before{content:"\e63b"}.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-signal-messenger:before{content:"\e663"}.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-mintbit:before{content:"\e62f"}.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-brave-reverse:before{content:"\e63d"}.fa-facebook-f:before{content:"\f39e"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-web-awesome:before{content:"\e682"}.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-letterboxd:before{content:"\e62d"}.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-square-web-awesome-stroke:before{content:"\e684"}.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-upwork:before{content:"\e641"}.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-square-upwork:before{content:"\e67c"}.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-square-web-awesome:before{content:"\e683"}.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-bluesky:before{content:"\e671"}.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-webflow:before{content:"\e65c"}.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"} \ No newline at end of file diff --git a/resources/fontawesome/fontawesome.css b/resources/fontawesome/css/fontawesome.css similarity index 98% rename from resources/fontawesome/fontawesome.css rename to resources/fontawesome/css/fontawesome.css index e7eb5fe..ca00c63 100644 --- a/resources/fontawesome/fontawesome.css +++ b/resources/fontawesome/css/fontawesome.css @@ -1,23 +1,19 @@ /*! - * Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - * Copyright 2022 Fonticons, Inc. + * Copyright 2024 Fonticons, Inc. */ .fa { font-family: var(--fa-style-family, "Font Awesome 6 Free"); font-weight: var(--fa-style, 900); } .fa, +.fa-classic, +.fa-sharp, .fas, .fa-solid, .far, .fa-regular, -.fal, -.fa-light, -.fat, -.fa-thin, -.fad, -.fa-duotone, .fab, .fa-brands { -moz-osx-font-smoothing: grayscale; @@ -28,6 +24,17 @@ line-height: 1; text-rendering: auto; } +.fas, +.fa-classic, +.fa-solid, +.far, +.fa-regular { + font-family: 'Font Awesome 6 Free'; } + +.fab, +.fa-brands { + font-family: 'Font Awesome 6 Brands'; } + .fa-1x { font-size: 1em; } @@ -124,8 +131,8 @@ .fa-beat { -webkit-animation-name: fa-beat; animation-name: fa-beat; - -webkit-animation-delay: var(--fa-animation-delay, 0); - animation-delay: var(--fa-animation-delay, 0); + -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); @@ -138,8 +145,8 @@ .fa-bounce { -webkit-animation-name: fa-bounce; animation-name: fa-bounce; - -webkit-animation-delay: var(--fa-animation-delay, 0); - animation-delay: var(--fa-animation-delay, 0); + -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); @@ -152,8 +159,8 @@ .fa-fade { -webkit-animation-name: fa-fade; animation-name: fa-fade; - -webkit-animation-delay: var(--fa-animation-delay, 0); - animation-delay: var(--fa-animation-delay, 0); + -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); @@ -166,8 +173,8 @@ .fa-beat-fade { -webkit-animation-name: fa-beat-fade; animation-name: fa-beat-fade; - -webkit-animation-delay: var(--fa-animation-delay, 0); - animation-delay: var(--fa-animation-delay, 0); + -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); @@ -180,8 +187,8 @@ .fa-flip { -webkit-animation-name: fa-flip; animation-name: fa-flip; - -webkit-animation-delay: var(--fa-animation-delay, 0); - animation-delay: var(--fa-animation-delay, 0); + -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); @@ -194,8 +201,8 @@ .fa-shake { -webkit-animation-name: fa-shake; animation-name: fa-shake; - -webkit-animation-delay: var(--fa-animation-delay, 0); - animation-delay: var(--fa-animation-delay, 0); + -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); @@ -208,8 +215,8 @@ .fa-spin { -webkit-animation-name: fa-spin; animation-name: fa-spin; - -webkit-animation-delay: var(--fa-animation-delay, 0); - animation-delay: var(--fa-animation-delay, 0); + -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); @@ -251,8 +258,10 @@ animation-duration: 1ms; -webkit-animation-iteration-count: 1; animation-iteration-count: 1; - transition-delay: 0s; - transition-duration: 0s; } } + -webkit-transition-delay: 0s; + transition-delay: 0s; + -webkit-transition-duration: 0s; + transition-duration: 0s; } } @-webkit-keyframes fa-beat { 0%, 90% { @@ -454,8 +463,8 @@ transform: scale(-1, -1); } .fa-rotate-by { - -webkit-transform: rotate(var(--fa-rotate-angle, none)); - transform: rotate(var(--fa-rotate-angle, none)); } + -webkit-transform: rotate(var(--fa-rotate-angle, 0)); + transform: rotate(var(--fa-rotate-angle, 0)); } .fa-stack { display: inline-block; @@ -484,6 +493,7 @@ /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen readers do not read off random characters that represent icons */ + .fa-0::before { content: "\30"; } @@ -514,62 +524,182 @@ readers do not read off random characters that represent icons */ .fa-9::before { content: "\39"; } -.fa-a::before { - content: "\41"; } +.fa-fill-drip::before { + content: "\f576"; } -.fa-address-book::before { - content: "\f2b9"; } +.fa-arrows-to-circle::before { + content: "\e4bd"; } -.fa-contact-book::before { - content: "\f2b9"; } +.fa-circle-chevron-right::before { + content: "\f138"; } -.fa-address-card::before { - content: "\f2bb"; } +.fa-chevron-circle-right::before { + content: "\f138"; } -.fa-contact-card::before { - content: "\f2bb"; } +.fa-at::before { + content: "\40"; } -.fa-vcard::before { - content: "\f2bb"; } +.fa-trash-can::before { + content: "\f2ed"; } -.fa-align-center::before { - content: "\f037"; } +.fa-trash-alt::before { + content: "\f2ed"; } -.fa-align-justify::before { - content: "\f039"; } +.fa-text-height::before { + content: "\f034"; } -.fa-align-left::before { - content: "\f036"; } +.fa-user-xmark::before { + content: "\f235"; } -.fa-align-right::before { - content: "\f038"; } +.fa-user-times::before { + content: "\f235"; } -.fa-anchor::before { - content: "\f13d"; } +.fa-stethoscope::before { + content: "\f0f1"; } + +.fa-message::before { + content: "\f27a"; } + +.fa-comment-alt::before { + content: "\f27a"; } + +.fa-info::before { + content: "\f129"; } + +.fa-down-left-and-up-right-to-center::before { + content: "\f422"; } + +.fa-compress-alt::before { + content: "\f422"; } + +.fa-explosion::before { + content: "\e4e9"; } + +.fa-file-lines::before { + content: "\f15c"; } + +.fa-file-alt::before { + content: "\f15c"; } + +.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-days::before { + content: "\f073"; } + +.fa-calendar-alt::before { + content: "\f073"; } .fa-anchor-circle-check::before { content: "\e4aa"; } -.fa-anchor-circle-exclamation::before { - content: "\e4ab"; } +.fa-building-circle-arrow-right::before { + content: "\e4d1"; } -.fa-anchor-circle-xmark::before { - content: "\e4ac"; } +.fa-volleyball::before { + content: "\f45f"; } -.fa-anchor-lock::before { - content: "\e4ad"; } +.fa-volleyball-ball::before { + content: "\f45f"; } -.fa-angle-down::before { - content: "\f107"; } +.fa-arrows-up-to-line::before { + content: "\e4c2"; } -.fa-angle-left::before { - content: "\f104"; } +.fa-sort-down::before { + content: "\f0dd"; } -.fa-angle-right::before { - content: "\f105"; } +.fa-sort-desc::before { + content: "\f0dd"; } -.fa-angle-up::before { - content: "\f106"; } +.fa-circle-minus::before { + content: "\f056"; } + +.fa-minus-circle::before { + content: "\f056"; } + +.fa-door-open::before { + content: "\f52b"; } + +.fa-right-from-bracket::before { + content: "\f2f5"; } + +.fa-sign-out-alt::before { + content: "\f2f5"; } + +.fa-atom::before { + content: "\f5d2"; } + +.fa-soap::before { + content: "\e06e"; } + +.fa-icons::before { + content: "\f86d"; } + +.fa-heart-music-camera-bolt::before { + content: "\f86d"; } + +.fa-microphone-lines-slash::before { + content: "\f539"; } + +.fa-microphone-alt-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 { + content: "\f689"; } + +.fa-search-location::before { + content: "\f689"; } + +.fa-forward-step::before { + content: "\f051"; } + +.fa-step-forward::before { + content: "\f051"; } + +.fa-face-smile-beam::before { + content: "\f5b8"; } + +.fa-smile-beam::before { + content: "\f5b8"; } + +.fa-flag-checkered::before { + content: "\f11e"; } + +.fa-football::before { + content: "\f44e"; } + +.fa-football-ball::before { + content: "\f44e"; } + +.fa-school-circle-exclamation::before { + content: "\e56c"; } + +.fa-crop::before { + content: "\f125"; } .fa-angles-down::before { content: "\f103"; } @@ -577,47 +707,194 @@ readers do not read off random characters that represent icons */ .fa-angle-double-down::before { content: "\f103"; } -.fa-angles-left::before { - content: "\f100"; } +.fa-users-rectangle::before { + content: "\e594"; } -.fa-angle-double-left::before { - content: "\f100"; } +.fa-people-roof::before { + content: "\e537"; } -.fa-angles-right::before { - content: "\f101"; } +.fa-people-line::before { + content: "\e534"; } -.fa-angle-double-right::before { - content: "\f101"; } +.fa-beer-mug-empty::before { + content: "\f0fc"; } -.fa-angles-up::before { - content: "\f102"; } +.fa-beer::before { + content: "\f0fc"; } -.fa-angle-double-up::before { - content: "\f102"; } +.fa-diagram-predecessor::before { + content: "\e477"; } -.fa-ankh::before { - content: "\f644"; } +.fa-arrow-up-long::before { + content: "\f176"; } -.fa-apple-whole::before { - content: "\f5d1"; } +.fa-long-arrow-up::before { + content: "\f176"; } -.fa-apple-alt::before { - content: "\f5d1"; } +.fa-fire-flame-simple::before { + content: "\f46a"; } -.fa-archway::before { - content: "\f557"; } +.fa-burn::before { + content: "\f46a"; } -.fa-arrow-down::before { - content: "\f063"; } +.fa-person::before { + content: "\f183"; } -.fa-arrow-down-1-9::before { - content: "\f162"; } +.fa-male::before { + content: "\f183"; } -.fa-sort-numeric-asc::before { - content: "\f162"; } +.fa-laptop::before { + content: "\f109"; } -.fa-sort-numeric-down::before { - content: "\f162"; } +.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 { + content: "\f587"; } + +.fa-grin-stars::before { + content: "\f587"; } + +.fa-bong::before { + content: "\f55c"; } + +.fa-spaghetti-monster-flying::before { + content: "\f67b"; } + +.fa-pastafarianism::before { + content: "\f67b"; } + +.fa-arrow-down-up-across-line::before { + content: "\e4af"; } + +.fa-spoon::before { + content: "\f2e5"; } + +.fa-utensil-spoon::before { + content: "\f2e5"; } + +.fa-jar-wheat::before { + content: "\e517"; } + +.fa-envelopes-bulk::before { + content: "\f674"; } + +.fa-mail-bulk::before { + content: "\f674"; } + +.fa-file-circle-exclamation::before { + content: "\e4eb"; } + +.fa-circle-h::before { + content: "\f47e"; } + +.fa-hospital-symbol::before { + content: "\f47e"; } + +.fa-pager::before { + content: "\f815"; } + +.fa-address-book::before { + content: "\f2b9"; } + +.fa-contact-book::before { + content: "\f2b9"; } + +.fa-strikethrough::before { + content: "\f0cc"; } + +.fa-k::before { + content: "\4b"; } + +.fa-landmark-flag::before { + content: "\e51c"; } + +.fa-pencil::before { + content: "\f303"; } + +.fa-pencil-alt::before { + content: "\f303"; } + +.fa-backward::before { + content: "\f04a"; } + +.fa-caret-right::before { + content: "\f0da"; } + +.fa-comments::before { + content: "\f086"; } + +.fa-paste::before { + content: "\f0ea"; } + +.fa-file-clipboard::before { + content: "\f0ea"; } + +.fa-code-pull-request::before { + content: "\e13c"; } + +.fa-clipboard-list::before { + content: "\f46d"; } + +.fa-truck-ramp-box::before { + content: "\f4de"; } + +.fa-truck-loading::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 { + content: "\f6a0"; } + +.fa-torah::before { + content: "\f6a0"; } + +.fa-broom-ball::before { + content: "\f458"; } + +.fa-quidditch::before { + content: "\f458"; } + +.fa-quidditch-broom-ball::before { + content: "\f458"; } + +.fa-toggle-off::before { + content: "\f204"; } + +.fa-box-archive::before { + content: "\f187"; } + +.fa-archive::before { + content: "\f187"; } + +.fa-person-drowning::before { + content: "\e545"; } .fa-arrow-down-9-1::before { content: "\f886"; } @@ -628,44 +905,461 @@ readers do not read off random characters that represent icons */ .fa-sort-numeric-down-alt::before { content: "\f886"; } -.fa-arrow-down-a-z::before { - content: "\f15d"; } +.fa-face-grin-tongue-squint::before { + content: "\f58a"; } -.fa-sort-alpha-asc::before { - content: "\f15d"; } +.fa-grin-tongue-squint::before { + content: "\f58a"; } -.fa-sort-alpha-down::before { - content: "\f15d"; } +.fa-spray-can::before { + content: "\f5bd"; } -.fa-arrow-down-long::before { - content: "\f175"; } +.fa-truck-monster::before { + content: "\f63b"; } -.fa-long-arrow-down::before { - content: "\f175"; } +.fa-w::before { + content: "\57"; } -.fa-arrow-down-short-wide::before { - content: "\f884"; } +.fa-earth-africa::before { + content: "\f57c"; } -.fa-sort-amount-desc::before { - content: "\f884"; } +.fa-globe-africa::before { + content: "\f57c"; } -.fa-sort-amount-down-alt::before { - content: "\f884"; } +.fa-rainbow::before { + content: "\f75b"; } -.fa-arrow-down-up-across-line::before { - content: "\e4af"; } +.fa-circle-notch::before { + content: "\f1ce"; } -.fa-arrow-down-up-lock::before { - content: "\e4b0"; } +.fa-tablet-screen-button::before { + content: "\f3fa"; } -.fa-arrow-down-wide-short::before { - content: "\f160"; } +.fa-tablet-alt::before { + content: "\f3fa"; } -.fa-sort-amount-asc::before { - content: "\f160"; } +.fa-paw::before { + content: "\f1b0"; } -.fa-sort-amount-down::before { - content: "\f160"; } +.fa-cloud::before { + content: "\f0c2"; } + +.fa-trowel-bricks::before { + content: "\e58a"; } + +.fa-face-flushed::before { + content: "\f579"; } + +.fa-flushed::before { + content: "\f579"; } + +.fa-hospital-user::before { + content: "\f80d"; } + +.fa-tent-arrow-left-right::before { + content: "\e57f"; } + +.fa-gavel::before { + content: "\f0e3"; } + +.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 { + content: "\f562"; } + +.fa-concierge-bell::before { + content: "\f562"; } + +.fa-pen-ruler::before { + content: "\f5ae"; } + +.fa-pencil-ruler::before { + content: "\f5ae"; } + +.fa-people-arrows::before { + content: "\e068"; } + +.fa-people-arrows-left-right::before { + content: "\e068"; } + +.fa-mars-and-venus-burst::before { + content: "\e523"; } + +.fa-square-caret-right::before { + content: "\f152"; } + +.fa-caret-square-right::before { + content: "\f152"; } + +.fa-scissors::before { + content: "\f0c4"; } + +.fa-cut::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-tachograph-digital::before { + content: "\f566"; } + +.fa-digital-tachograph::before { + content: "\f566"; } + +.fa-users-slash::before { + content: "\e073"; } + +.fa-clover::before { + content: "\e139"; } + +.fa-reply::before { + content: "\f3e5"; } + +.fa-mail-reply::before { + content: "\f3e5"; } + +.fa-star-and-crescent::before { + content: "\f699"; } + +.fa-house-fire::before { + content: "\e50c"; } + +.fa-square-minus::before { + content: "\f146"; } + +.fa-minus-square::before { + content: "\f146"; } + +.fa-helicopter::before { + content: "\f533"; } + +.fa-compass::before { + content: "\f14e"; } + +.fa-square-caret-down::before { + content: "\f150"; } + +.fa-caret-square-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 { + content: "\f0c9"; } + +.fa-navicon::before { + content: "\f0c9"; } + +.fa-people-group::before { + content: "\e533"; } + +.fa-hourglass-end::before { + content: "\f253"; } + +.fa-hourglass-3::before { + content: "\f253"; } + +.fa-heart-crack::before { + content: "\f7a9"; } + +.fa-heart-broken::before { + content: "\f7a9"; } + +.fa-square-up-right::before { + content: "\f360"; } + +.fa-external-link-square-alt::before { + content: "\f360"; } + +.fa-face-kiss-beam::before { + content: "\f597"; } + +.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 { + content: "\f06a"; } + +.fa-exclamation-circle::before { + content: "\f06a"; } + +.fa-school-circle-xmark::before { + content: "\e56d"; } + +.fa-arrow-right-from-bracket::before { + content: "\f08b"; } + +.fa-sign-out::before { + content: "\f08b"; } + +.fa-circle-chevron-down::before { + content: "\f13a"; } + +.fa-chevron-circle-down::before { + content: "\f13a"; } + +.fa-unlock-keyhole::before { + content: "\f13e"; } + +.fa-unlock-alt::before { + content: "\f13e"; } + +.fa-cloud-showers-heavy::before { + content: "\f740"; } + +.fa-headphones-simple::before { + content: "\f58f"; } + +.fa-headphones-alt::before { + content: "\f58f"; } + +.fa-sitemap::before { + content: "\f0e8"; } + +.fa-circle-dollar-to-slot::before { + content: "\f4b9"; } + +.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-low::before { + content: "\f027"; } + +.fa-volume-down::before { + content: "\f027"; } + +.fa-comment-slash::before { + content: "\f4b3"; } + +.fa-cloud-sun-rain::before { + content: "\f743"; } + +.fa-compress::before { + content: "\f066"; } + +.fa-wheat-awn::before { + content: "\e2cd"; } + +.fa-wheat-alt::before { + content: "\e2cd"; } + +.fa-ankh::before { + content: "\f644"; } + +.fa-hands-holding-child::before { + content: "\e4fa"; } + +.fa-asterisk::before { + content: "\2a"; } + +.fa-square-check::before { + content: "\f14a"; } + +.fa-check-square::before { + content: "\f14a"; } + +.fa-peseta-sign::before { + content: "\e221"; } + +.fa-heading::before { + content: "\f1dc"; } + +.fa-header::before { + content: "\f1dc"; } + +.fa-ghost::before { + content: "\f6e2"; } + +.fa-list::before { + content: "\f03a"; } + +.fa-list-squares::before { + content: "\f03a"; } + +.fa-square-phone-flip::before { + content: "\f87b"; } + +.fa-phone-square-alt::before { + content: "\f87b"; } + +.fa-cart-plus::before { + content: "\f217"; } + +.fa-gamepad::before { + content: "\f11b"; } + +.fa-circle-dot::before { + content: "\f192"; } + +.fa-dot-circle::before { + content: "\f192"; } + +.fa-face-dizzy::before { + content: "\f567"; } + +.fa-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::before { + content: "\f1e3"; } + +.fa-futbol-ball::before { + content: "\f1e3"; } + +.fa-soccer-ball::before { + content: "\f1e3"; } + +.fa-paintbrush::before { + content: "\f1fc"; } + +.fa-paint-brush::before { + content: "\f1fc"; } + +.fa-lock::before { + content: "\f023"; } + +.fa-gas-pump::before { + content: "\f52f"; } + +.fa-hot-tub-person::before { + content: "\f593"; } + +.fa-hot-tub::before { + content: "\f593"; } + +.fa-map-location::before { + content: "\f59f"; } + +.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-pen-to-square::before { + content: "\f044"; } + +.fa-edit::before { + content: "\f044"; } + +.fa-car-side::before { + content: "\f5e4"; } + +.fa-share-nodes::before { + content: "\f1e0"; } + +.fa-share-alt::before { + content: "\f1e0"; } + +.fa-heart-circle-minus::before { + content: "\e4ff"; } + +.fa-hourglass-half::before { + content: "\f252"; } + +.fa-hourglass-2::before { + content: "\f252"; } + +.fa-microscope::before { + content: "\f610"; } + +.fa-sink::before { + content: "\e06d"; } + +.fa-bag-shopping::before { + content: "\f290"; } + +.fa-shopping-bag::before { + content: "\f290"; } .fa-arrow-down-z-a::before { content: "\f881"; } @@ -676,14 +1370,413 @@ readers do not read off random characters that represent icons */ .fa-sort-alpha-down-alt::before { content: "\f881"; } -.fa-arrow-left::before { - content: "\f060"; } +.fa-mitten::before { + content: "\f7b5"; } -.fa-arrow-left-long::before { - content: "\f177"; } +.fa-person-rays::before { + content: "\e54d"; } -.fa-long-arrow-left::before { - content: "\f177"; } +.fa-users::before { + content: "\f0c0"; } + +.fa-eye-slash::before { + content: "\f070"; } + +.fa-flask-vial::before { + content: "\e4f3"; } + +.fa-hand::before { + content: "\f256"; } + +.fa-hand-paper::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 { + content: "\f596"; } + +.fa-kiss::before { + content: "\f596"; } + +.fa-bridge-circle-xmark::before { + content: "\e4cb"; } + +.fa-face-grin-tongue::before { + content: "\f589"; } + +.fa-grin-tongue::before { + content: "\f589"; } + +.fa-chess-bishop::before { + content: "\f43a"; } + +.fa-face-grin-wink::before { + content: "\f58c"; } + +.fa-grin-wink::before { + content: "\f58c"; } + +.fa-ear-deaf::before { + content: "\f2a4"; } + +.fa-deaf::before { + content: "\f2a4"; } + +.fa-deafness::before { + content: "\f2a4"; } + +.fa-hard-of-hearing::before { + content: "\f2a4"; } + +.fa-road-circle-check::before { + content: "\e564"; } + +.fa-dice-five::before { + content: "\f523"; } + +.fa-square-rss::before { + content: "\f143"; } + +.fa-rss-square::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 { + content: "\f6f2"; } + +.fa-hryvnia::before { + content: "\f6f2"; } + +.fa-pills::before { + content: "\f484"; } + +.fa-face-grin-wide::before { + content: "\f581"; } + +.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-staff-snake::before { + content: "\e579"; } + +.fa-rod-asclepius::before { + content: "\e579"; } + +.fa-rod-snake::before { + content: "\e579"; } + +.fa-staff-aesculapius::before { + content: "\e579"; } + +.fa-head-side-cough-slash::before { + content: "\e062"; } + +.fa-truck-medical::before { + content: "\f0f9"; } + +.fa-ambulance::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-half::before { + content: "\f2c9"; } + +.fa-temperature-2::before { + content: "\f2c9"; } + +.fa-thermometer-2::before { + content: "\f2c9"; } + +.fa-thermometer-half::before { + content: "\f2c9"; } + +.fa-dong-sign::before { + content: "\e169"; } + +.fa-capsules::before { + content: "\f46b"; } + +.fa-poo-storm::before { + content: "\f75a"; } + +.fa-poo-bolt::before { + content: "\f75a"; } + +.fa-face-frown-open::before { + content: "\f57a"; } + +.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::before { + content: "\f07b"; } + +.fa-folder-blank::before { + content: "\f07b"; } + +.fa-file-waveform::before { + content: "\f478"; } + +.fa-file-medical-alt::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-gauge::before { + content: "\f624"; } + +.fa-dashboard::before { + content: "\f624"; } + +.fa-gauge-med::before { + content: "\f624"; } + +.fa-tachometer-alt-average::before { + content: "\f624"; } + +.fa-wand-magic-sparkles::before { + content: "\e2ca"; } + +.fa-magic-wand-sparkles::before { + content: "\e2ca"; } + +.fa-e::before { + content: "\45"; } + +.fa-pen-clip::before { + content: "\f305"; } + +.fa-pen-alt::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-van-shuttle::before { + content: "\f5b6"; } + +.fa-shuttle-van::before { + content: "\f5b6"; } + +.fa-building-user::before { + content: "\e4da"; } + +.fa-square-caret-left::before { + content: "\f191"; } + +.fa-caret-square-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-chart-area::before { + content: "\f1fe"; } + +.fa-area-chart::before { + content: "\f1fe"; } + +.fa-house-flag::before { + content: "\e50d"; } + +.fa-person-circle-minus::before { + content: "\e540"; } + +.fa-ban::before { + content: "\f05e"; } + +.fa-cancel::before { + content: "\f05e"; } + +.fa-camera-rotate::before { + content: "\e0d8"; } + +.fa-spray-can-sparkles::before { + content: "\f5d0"; } + +.fa-air-freshener::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 { content: "\f245"; } @@ -691,26 +1784,65 @@ readers do not read off random characters that represent icons */ .fa-mouse-pointer::before { content: "\f245"; } -.fa-arrow-right::before { - content: "\f061"; } +.fa-maximize::before { + content: "\f31e"; } -.fa-arrow-right-arrow-left::before { - content: "\f0ec"; } +.fa-expand-arrows-alt::before { + content: "\f31e"; } -.fa-exchange::before { - content: "\f0ec"; } +.fa-charging-station::before { + content: "\f5e7"; } -.fa-arrow-right-from-bracket::before { - content: "\f08b"; } +.fa-shapes::before { + content: "\f61f"; } -.fa-sign-out::before { - content: "\f08b"; } +.fa-triangle-circle-square::before { + content: "\f61f"; } -.fa-arrow-right-long::before { - content: "\f178"; } +.fa-shuffle::before { + content: "\f074"; } -.fa-long-arrow-right::before { - content: "\f178"; } +.fa-random::before { + content: "\f074"; } + +.fa-person-running::before { + content: "\f70c"; } + +.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 { + content: "\f8cc"; } + +.fa-mouse::before { + content: "\f8cc"; } .fa-arrow-right-to-bracket::before { content: "\f090"; } @@ -718,9 +1850,2121 @@ readers do not read off random characters that represent icons */ .fa-sign-in::before { content: "\f090"; } +.fa-shop-slash::before { + content: "\e070"; } + +.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-start::before { + content: "\f251"; } + +.fa-hourglass-1::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 { + content: "\f2f6"; } + +.fa-sign-in-alt::before { + content: "\f2f6"; } + +.fa-venus::before { + content: "\f221"; } + +.fa-passport::before { + content: "\f5ab"; } + +.fa-heart-pulse::before { + content: "\f21e"; } + +.fa-heartbeat::before { + content: "\f21e"; } + +.fa-people-carry-box::before { + content: "\f4ce"; } + +.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 { + content: "\f496"; } + +.fa-weight::before { + content: "\f496"; } + +.fa-user-group::before { + content: "\f500"; } + +.fa-user-friends::before { + content: "\f500"; } + +.fa-arrow-up-a-z::before { + content: "\f15e"; } + +.fa-sort-alpha-up::before { + content: "\f15e"; } + +.fa-chess-knight::before { + content: "\f441"; } + +.fa-face-laugh-squint::before { + content: "\f59b"; } + +.fa-laugh-squint::before { + content: "\f59b"; } + +.fa-wheelchair::before { + content: "\f193"; } + +.fa-circle-arrow-up::before { + content: "\f0aa"; } + +.fa-arrow-circle-up::before { + content: "\f0aa"; } + +.fa-toggle-on::before { + content: "\f205"; } + +.fa-person-walking::before { + content: "\f554"; } + +.fa-walking::before { + content: "\f554"; } + +.fa-l::before { + content: "\4c"; } + +.fa-fire::before { + content: "\f06d"; } + +.fa-bed-pulse::before { + content: "\f487"; } + +.fa-procedures::before { + content: "\f487"; } + +.fa-shuttle-space::before { + content: "\f197"; } + +.fa-space-shuttle::before { + content: "\f197"; } + +.fa-face-laugh::before { + content: "\f599"; } + +.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-lines::before { + content: "\f3c9"; } + +.fa-microphone-alt::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 { + content: "\f22a"; } + +.fa-mars-stroke-v::before { + content: "\f22a"; } + +.fa-champagne-glasses::before { + content: "\f79f"; } + +.fa-glass-cheers::before { + content: "\f79f"; } + +.fa-clipboard::before { + content: "\f328"; } + +.fa-house-circle-exclamation::before { + content: "\e50a"; } + +.fa-file-arrow-up::before { + content: "\f574"; } + +.fa-file-upload::before { + content: "\f574"; } + +.fa-wifi::before { + content: "\f1eb"; } + +.fa-wifi-3::before { + content: "\f1eb"; } + +.fa-wifi-strong::before { + content: "\f1eb"; } + +.fa-bath::before { + content: "\f2cd"; } + +.fa-bathtub::before { + content: "\f2cd"; } + +.fa-underline::before { + content: "\f0cd"; } + +.fa-user-pen::before { + content: "\f4ff"; } + +.fa-user-edit::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-top-left::before { + content: "\f853"; } + +.fa-border-style::before { + content: "\f853"; } + +.fa-map-location-dot::before { + content: "\f5a0"; } + +.fa-map-marked-alt::before { + content: "\f5a0"; } + +.fa-jedi::before { + content: "\f669"; } + +.fa-square-poll-vertical::before { + content: "\f681"; } + +.fa-poll::before { + content: "\f681"; } + +.fa-mug-hot::before { + content: "\f7b6"; } + +.fa-car-battery::before { + content: "\f5df"; } + +.fa-battery-car::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-right::before { + content: "\f22b"; } + +.fa-mars-stroke-h::before { + content: "\f22b"; } + +.fa-hand-back-fist::before { + content: "\f255"; } + +.fa-hand-rock::before { + content: "\f255"; } + +.fa-square-caret-up::before { + content: "\f151"; } + +.fa-caret-square-up::before { + content: "\f151"; } + +.fa-cloud-showers-water::before { + content: "\e4e4"; } + +.fa-chart-bar::before { + content: "\f080"; } + +.fa-bar-chart::before { + content: "\f080"; } + +.fa-hands-bubbles::before { + content: "\e05e"; } + +.fa-hands-wash::before { + content: "\e05e"; } + +.fa-less-than-equal::before { + content: "\f537"; } + +.fa-train::before { + content: "\f238"; } + +.fa-eye-low-vision::before { + content: "\f2a8"; } + +.fa-low-vision::before { + content: "\f2a8"; } + +.fa-crow::before { + content: "\f520"; } + +.fa-sailboat::before { + content: "\e445"; } + +.fa-window-restore::before { + content: "\f2d2"; } + +.fa-square-plus::before { + content: "\f0fe"; } + +.fa-plus-square::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-martini-glass::before { + content: "\f57b"; } + +.fa-glass-martini-alt::before { + content: "\f57b"; } + +.fa-rotate-left::before { + content: "\f2ea"; } + +.fa-rotate-back::before { + content: "\f2ea"; } + +.fa-rotate-backward::before { + content: "\f2ea"; } + +.fa-undo-alt::before { + content: "\f2ea"; } + +.fa-table-columns::before { + content: "\f0db"; } + +.fa-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::before { + content: "\f472"; } + +.fa-dolly-box::before { + content: "\f472"; } + +.fa-smoking::before { + content: "\f48d"; } + +.fa-minimize::before { + content: "\f78c"; } + +.fa-compress-arrows-alt::before { + content: "\f78c"; } + +.fa-monument::before { + content: "\f5a6"; } + +.fa-snowplow::before { + content: "\f7d2"; } + +.fa-angles-right::before { + content: "\f101"; } + +.fa-angle-double-right::before { + content: "\f101"; } + +.fa-cannabis::before { + content: "\f55f"; } + +.fa-circle-play::before { + content: "\f144"; } + +.fa-play-circle::before { + content: "\f144"; } + +.fa-tablets::before { + content: "\f490"; } + +.fa-ethernet::before { + content: "\f796"; } + +.fa-euro-sign::before { + content: "\f153"; } + +.fa-eur::before { + content: "\f153"; } + +.fa-euro::before { + content: "\f153"; } + +.fa-chair::before { + content: "\f6c0"; } + +.fa-circle-check::before { + content: "\f058"; } + +.fa-check-circle::before { + content: "\f058"; } + +.fa-circle-stop::before { + content: "\f28d"; } + +.fa-stop-circle::before { + content: "\f28d"; } + +.fa-compass-drafting::before { + content: "\f568"; } + +.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 { + content: "\f59a"; } + +.fa-laugh-beam::before { + content: "\f59a"; } + +.fa-helicopter-symbol::before { + content: "\e502"; } + +.fa-universal-access::before { + content: "\f29a"; } + +.fa-circle-chevron-up::before { + content: "\f139"; } + +.fa-chevron-circle-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-sterling-sign::before { + content: "\f154"; } + +.fa-gbp::before { + content: "\f154"; } + +.fa-pound-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 { + content: "\f175"; } + +.fa-long-arrow-down::before { + content: "\f175"; } + +.fa-tent-arrow-down-to-line::before { + content: "\e57e"; } + +.fa-certificate::before { + content: "\f0a3"; } + +.fa-reply-all::before { + content: "\f122"; } + +.fa-mail-reply-all::before { + content: "\f122"; } + +.fa-suitcase::before { + content: "\f0f2"; } + +.fa-person-skating::before { + content: "\f7c5"; } + +.fa-skating::before { + content: "\f7c5"; } + +.fa-filter-circle-dollar::before { + content: "\f662"; } + +.fa-funnel-dollar::before { + content: "\f662"; } + +.fa-camera-retro::before { + content: "\f083"; } + +.fa-circle-arrow-down::before { + content: "\f0ab"; } + +.fa-arrow-circle-down::before { + content: "\f0ab"; } + +.fa-file-import::before { + content: "\f56f"; } + +.fa-arrow-right-to-file::before { + content: "\f56f"; } + +.fa-square-arrow-up-right::before { + content: "\f14c"; } + +.fa-external-link-square::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-empty::before { + content: "\f2cb"; } + +.fa-temperature-0::before { + content: "\f2cb"; } + +.fa-thermometer-0::before { + content: "\f2cb"; } + +.fa-thermometer-empty::before { + content: "\f2cb"; } + +.fa-bomb::before { + content: "\f1e2"; } + +.fa-registered::before { + content: "\f25d"; } + +.fa-address-card::before { + content: "\f2bb"; } + +.fa-contact-card::before { + content: "\f2bb"; } + +.fa-vcard::before { + content: "\f2bb"; } + +.fa-scale-unbalanced-flip::before { + content: "\f516"; } + +.fa-balance-scale-right::before { + content: "\f516"; } + +.fa-subscript::before { + content: "\f12c"; } + +.fa-diamond-turn-right::before { + content: "\f5eb"; } + +.fa-directions::before { + content: "\f5eb"; } + +.fa-burst::before { + content: "\e4dc"; } + +.fa-house-laptop::before { + content: "\e066"; } + +.fa-laptop-house::before { + content: "\e066"; } + +.fa-face-tired::before { + content: "\f5c8"; } + +.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 { + content: "\f0ee"; } + +.fa-cloud-upload::before { + content: "\f0ee"; } + +.fa-cloud-upload-alt::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 { + content: "\f4d8"; } + +.fa-sprout::before { + content: "\f4d8"; } + +.fa-left-right::before { + content: "\f337"; } + +.fa-arrows-alt-h::before { + content: "\f337"; } + +.fa-boxes-packing::before { + content: "\e4c7"; } + +.fa-circle-arrow-left::before { + content: "\f0a8"; } + +.fa-arrow-circle-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 { + content: "\f160"; } + +.fa-sort-amount-asc::before { + content: "\f160"; } + +.fa-sort-amount-down::before { + content: "\f160"; } + +.fa-cloud-bolt::before { + content: "\f76c"; } + +.fa-thunderstorm::before { + content: "\f76c"; } + +.fa-text-slash::before { + content: "\f87d"; } + +.fa-remove-format::before { + content: "\f87d"; } + +.fa-face-smile-wink::before { + content: "\f4da"; } + +.fa-smile-wink::before { + content: "\f4da"; } + +.fa-file-word::before { + content: "\f1c2"; } + +.fa-file-powerpoint::before { + content: "\f1c4"; } + +.fa-arrows-left-right::before { + content: "\f07e"; } + +.fa-arrows-h::before { + content: "\f07e"; } + +.fa-house-lock::before { + content: "\e510"; } + +.fa-cloud-arrow-down::before { + content: "\f0ed"; } + +.fa-cloud-download::before { + content: "\f0ed"; } + +.fa-cloud-download-alt::before { + content: "\f0ed"; } + +.fa-children::before { + content: "\e4e1"; } + +.fa-chalkboard::before { + content: "\f51b"; } + +.fa-blackboard::before { + content: "\f51b"; } + +.fa-user-large-slash::before { + content: "\f4fa"; } + +.fa-user-alt-slash::before { + content: "\f4fa"; } + +.fa-envelope-open::before { + content: "\f2b6"; } + +.fa-handshake-simple-slash::before { + content: "\e05f"; } + +.fa-handshake-alt-slash::before { + content: "\e05f"; } + +.fa-mattress-pillow::before { + content: "\e525"; } + +.fa-guarani-sign::before { + content: "\e19a"; } + +.fa-arrows-rotate::before { + content: "\f021"; } + +.fa-refresh::before { + content: "\f021"; } + +.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-halved::before { + content: "\f3ed"; } + +.fa-shield-alt::before { + content: "\f3ed"; } + +.fa-book-atlas::before { + content: "\f558"; } + +.fa-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 { + content: "\f6f1"; } + +.fa-house-damage::before { + content: "\f6f1"; } + +.fa-file-zipper::before { + content: "\f1c6"; } + +.fa-file-archive::before { + content: "\f1c6"; } + +.fa-square::before { + content: "\f0c8"; } + +.fa-martini-glass-empty::before { + content: "\f000"; } + +.fa-glass-martini::before { + content: "\f000"; } + +.fa-couch::before { + content: "\f4b8"; } + +.fa-cedi-sign::before { + content: "\e0df"; } + +.fa-italic::before { + content: "\f033"; } + +.fa-table-cells-column-lock::before { + content: "\e678"; } + +.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 { + content: "\f7c9"; } + +.fa-skiing::before { + content: "\f7c9"; } + +.fa-road-lock::before { + content: "\e567"; } + +.fa-a::before { + content: "\41"; } + +.fa-temperature-arrow-down::before { + content: "\e03f"; } + +.fa-temperature-down::before { + content: "\e03f"; } + +.fa-feather-pointed::before { + content: "\f56b"; } + +.fa-feather-alt::before { + content: "\f56b"; } + +.fa-p::before { + content: "\50"; } + +.fa-snowflake::before { + content: "\f2dc"; } + +.fa-newspaper::before { + content: "\f1ea"; } + +.fa-rectangle-ad::before { + content: "\f641"; } + +.fa-ad::before { + content: "\f641"; } + +.fa-circle-arrow-right::before { + content: "\f0a9"; } + +.fa-arrow-circle-right::before { + content: "\f0a9"; } + +.fa-filter-circle-xmark::before { + content: "\e17b"; } + +.fa-locust::before { + content: "\e520"; } + +.fa-sort::before { + content: "\f0dc"; } + +.fa-unsorted::before { + content: "\f0dc"; } + +.fa-list-ol::before { + content: "\f0cb"; } + +.fa-list-1-2::before { + content: "\f0cb"; } + +.fa-list-numeric::before { + content: "\f0cb"; } + +.fa-person-dress-burst::before { + content: "\e544"; } + +.fa-money-check-dollar::before { + content: "\f53d"; } + +.fa-money-check-alt::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 { + content: "\f598"; } + +.fa-kiss-wink-heart::before { + content: "\f598"; } + +.fa-filter::before { + content: "\f0b0"; } + +.fa-question::before { + content: "\3f"; } + +.fa-file-signature::before { + content: "\f573"; } + +.fa-up-down-left-right::before { + content: "\f0b2"; } + +.fa-arrows-alt::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-stroke::before { + content: "\f5c0"; } + +.fa-star-half-alt::before { + content: "\f5c0"; } + +.fa-code::before { + content: "\f121"; } + +.fa-whiskey-glass::before { + content: "\f7a0"; } + +.fa-glass-whiskey::before { + content: "\f7a0"; } + +.fa-building-circle-exclamation::before { + content: "\e4d3"; } + +.fa-magnifying-glass-chart::before { + content: "\e522"; } + +.fa-arrow-up-right-from-square::before { + content: "\f08e"; } + +.fa-external-link::before { + content: "\f08e"; } + +.fa-cubes-stacked::before { + content: "\e4e6"; } + +.fa-won-sign::before { + content: "\f159"; } + +.fa-krw::before { + content: "\f159"; } + +.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-taxi::before { + content: "\f1ba"; } + +.fa-cab::before { + content: "\f1ba"; } + +.fa-person-circle-plus::before { + content: "\e541"; } + +.fa-chart-pie::before { + content: "\f200"; } + +.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 { + content: "\f582"; } + +.fa-grin-beam::before { + content: "\f582"; } + +.fa-object-ungroup::before { + content: "\f248"; } + +.fa-poop::before { + content: "\f619"; } + +.fa-location-pin::before { + content: "\f041"; } + +.fa-map-marker::before { + content: "\f041"; } + +.fa-kaaba::before { + content: "\f66b"; } + +.fa-toilet-paper::before { + content: "\f71e"; } + +.fa-helmet-safety::before { + content: "\f807"; } + +.fa-hard-hat::before { + content: "\f807"; } + +.fa-hat-hard::before { + content: "\f807"; } + +.fa-eject::before { + content: "\f052"; } + +.fa-circle-right::before { + content: "\f35a"; } + +.fa-arrow-alt-circle-right::before { + content: "\f35a"; } + +.fa-plane-circle-check::before { + content: "\e555"; } + +.fa-face-rolling-eyes::before { + content: "\f5a5"; } + +.fa-meh-rolling-eyes::before { + content: "\f5a5"; } + +.fa-object-group::before { + content: "\f247"; } + +.fa-chart-line::before { + content: "\f201"; } + +.fa-line-chart::before { + content: "\f201"; } + +.fa-mask-ventilator::before { + content: "\e524"; } + +.fa-arrow-right::before { + content: "\f061"; } + +.fa-signs-post::before { + content: "\f277"; } + +.fa-map-signs::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 { + content: "\f7d9"; } + +.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-house-user::before { + content: "\e1b0"; } + +.fa-home-user::before { + content: "\e1b0"; } + +.fa-dumpster-fire::before { + content: "\f794"; } + +.fa-house-crack::before { + content: "\e3b1"; } + +.fa-martini-glass-citrus::before { + content: "\f561"; } + +.fa-cocktail::before { + content: "\f561"; } + +.fa-face-surprise::before { + content: "\f5c2"; } + +.fa-surprise::before { + content: "\f5c2"; } + +.fa-bottle-water::before { + content: "\e4c5"; } + +.fa-circle-pause::before { + content: "\f28b"; } + +.fa-pause-circle::before { + content: "\f28b"; } + +.fa-toilet-paper-slash::before { + content: "\e072"; } + +.fa-apple-whole::before { + content: "\f5d1"; } + +.fa-apple-alt::before { + content: "\f5d1"; } + +.fa-kitchen-set::before { + content: "\e51a"; } + +.fa-r::before { + content: "\52"; } + +.fa-temperature-quarter::before { + content: "\f2ca"; } + +.fa-temperature-1::before { + content: "\f2ca"; } + +.fa-thermometer-1::before { + content: "\f2ca"; } + +.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-square-poll-horizontal::before { + content: "\f682"; } + +.fa-poll-h::before { + content: "\f682"; } + +.fa-circle::before { + content: "\f111"; } + +.fa-backward-fast::before { + content: "\f049"; } + +.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::before { + content: "\f434"; } + +.fa-basketball-ball::before { + content: "\f434"; } + +.fa-satellite-dish::before { + content: "\f7c0"; } + +.fa-circle-up::before { + content: "\f35b"; } + +.fa-arrow-alt-circle-up::before { + content: "\f35b"; } + +.fa-mobile-screen-button::before { + content: "\f3cd"; } + +.fa-mobile-alt::before { + content: "\f3cd"; } + +.fa-volume-high::before { + content: "\f028"; } + +.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 { + content: "\f805"; } + +.fa-hamburger::before { + content: "\f805"; } + +.fa-wrench::before { + content: "\f0ad"; } + +.fa-bugs::before { + content: "\e4d0"; } + +.fa-rupee-sign::before { + content: "\f156"; } + +.fa-rupee::before { + content: "\f156"; } + +.fa-file-image::before { + content: "\f1c5"; } + +.fa-circle-question::before { + content: "\f059"; } + +.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-flip::before { + content: "\f879"; } + +.fa-phone-alt::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-forward-fast::before { + content: "\f050"; } + +.fa-fast-forward::before { + content: "\f050"; } + +.fa-face-meh-blank::before { + content: "\f5a4"; } + +.fa-meh-blank::before { + content: "\f5a4"; } + +.fa-square-parking::before { + content: "\f540"; } + +.fa-parking::before { + content: "\f540"; } + +.fa-house-signal::before { + content: "\e012"; } + +.fa-bars-progress::before { + content: "\f828"; } + +.fa-tasks-alt::before { + content: "\f828"; } + +.fa-faucet-drip::before { + content: "\e006"; } + +.fa-cart-flatbed::before { + content: "\f474"; } + +.fa-dolly-flatbed::before { + content: "\f474"; } + +.fa-ban-smoking::before { + content: "\f54d"; } + +.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 { + content: "\f291"; } + +.fa-shopping-basket::before { + content: "\f291"; } + +.fa-tape::before { + content: "\f4db"; } + +.fa-bus-simple::before { + content: "\f55e"; } + +.fa-bus-alt::before { + content: "\f55e"; } + +.fa-eye::before { + content: "\f06e"; } + +.fa-face-sad-cry::before { + content: "\f5b3"; } + +.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::before { + content: "\f012"; } + +.fa-signal-5::before { + content: "\f012"; } + +.fa-signal-perfect::before { + content: "\f012"; } + +.fa-bus::before { + content: "\f207"; } + +.fa-heart-circle-xmark::before { + content: "\e501"; } + +.fa-house-chimney::before { + content: "\e3af"; } + +.fa-home-lg::before { + content: "\e3af"; } + +.fa-window-maximize::before { + content: "\f2d0"; } + +.fa-face-frown::before { + content: "\f119"; } + +.fa-frown::before { + content: "\f119"; } + +.fa-prescription::before { + content: "\f5b1"; } + +.fa-shop::before { + content: "\f54f"; } + +.fa-store-alt::before { + content: "\f54f"; } + +.fa-floppy-disk::before { + content: "\f0c7"; } + +.fa-save::before { + content: "\f0c7"; } + +.fa-vihara::before { + content: "\f6a7"; } + +.fa-scale-unbalanced::before { + content: "\f515"; } + +.fa-balance-scale-left::before { + content: "\f515"; } + +.fa-sort-up::before { + content: "\f0de"; } + +.fa-sort-asc::before { + content: "\f0de"; } + +.fa-comment-dots::before { + content: "\f4ad"; } + +.fa-commenting::before { + content: "\f4ad"; } + +.fa-plant-wilt::before { + content: "\e5aa"; } + +.fa-diamond::before { + content: "\f219"; } + +.fa-face-grin-squint::before { + content: "\f585"; } + +.fa-grin-squint::before { + content: "\f585"; } + +.fa-hand-holding-dollar::before { + content: "\f4c0"; } + +.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 { + content: "\f684"; } + +.fa-praying-hands::before { + content: "\f684"; } + +.fa-arrow-rotate-right::before { + content: "\f01e"; } + +.fa-arrow-right-rotate::before { + content: "\f01e"; } + +.fa-arrow-rotate-forward::before { + content: "\f01e"; } + +.fa-redo::before { + content: "\f01e"; } + +.fa-biohazard::before { + content: "\f780"; } + +.fa-location-crosshairs::before { + content: "\f601"; } + +.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 { + content: "\f588"; } + +.fa-grin-tears::before { + content: "\f588"; } + +.fa-phone::before { + content: "\f095"; } + +.fa-calendar-xmark::before { + content: "\f273"; } + +.fa-calendar-times::before { + content: "\f273"; } + +.fa-child-reaching::before { + content: "\e59d"; } + +.fa-head-side-virus::before { + content: "\e064"; } + +.fa-user-gear::before { + content: "\f4fe"; } + +.fa-user-cog::before { + content: "\f4fe"; } + +.fa-arrow-up-1-9::before { + content: "\f163"; } + +.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-person-digging::before { + content: "\f85e"; } + +.fa-digging::before { + content: "\f85e"; } + +.fa-trash::before { + content: "\f1f8"; } + +.fa-gauge-simple::before { + content: "\f629"; } + +.fa-gauge-simple-med::before { + content: "\f629"; } + +.fa-tachometer-average::before { + content: "\f629"; } + +.fa-book-medical::before { + content: "\f7e6"; } + +.fa-poo::before { + content: "\f2fe"; } + +.fa-quote-right::before { + content: "\f10e"; } + +.fa-quote-right-alt::before { + content: "\f10e"; } + +.fa-shirt::before { + content: "\f553"; } + +.fa-t-shirt::before { + content: "\f553"; } + +.fa-tshirt::before { + content: "\f553"; } + +.fa-cubes::before { + content: "\f1b3"; } + +.fa-divide::before { + content: "\f529"; } + +.fa-tenge-sign::before { + content: "\f7d7"; } + +.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-up-right-from-square::before { + content: "\f35d"; } + +.fa-external-link-alt::before { + content: "\f35d"; } + +.fa-table-cells::before { + content: "\f00a"; } + +.fa-th::before { + content: "\f00a"; } + +.fa-file-pdf::before { + content: "\f1c1"; } + +.fa-book-bible::before { + content: "\f647"; } + +.fa-bible::before { + content: "\f647"; } + +.fa-o::before { + content: "\4f"; } + +.fa-suitcase-medical::before { + content: "\f0fa"; } + +.fa-medkit::before { + content: "\f0fa"; } + +.fa-user-secret::before { + content: "\f21b"; } + +.fa-otter::before { + content: "\f700"; } + +.fa-person-dress::before { + content: "\f182"; } + +.fa-female::before { + content: "\f182"; } + +.fa-comment-dollar::before { + content: "\f651"; } + +.fa-business-time::before { + content: "\f64a"; } + +.fa-briefcase-clock::before { + content: "\f64a"; } + +.fa-table-cells-large::before { + content: "\f009"; } + +.fa-th-large::before { + content: "\f009"; } + +.fa-book-tanakh::before { + content: "\f827"; } + +.fa-tanakh::before { + content: "\f827"; } + +.fa-phone-volume::before { + content: "\f2a0"; } + +.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-cake-candles::before { + content: "\f1fd"; } + +.fa-birthday-cake::before { + content: "\f1fd"; } + +.fa-cake::before { + content: "\f1fd"; } + +.fa-envelope::before { + content: "\f0e0"; } + +.fa-angles-up::before { + content: "\f102"; } + +.fa-angle-double-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 { + content: "\f887"; } + +.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::before { + content: "\f254"; } + +.fa-hourglass-empty::before { + content: "\f254"; } + +.fa-mountain::before { + content: "\f6fc"; } + +.fa-user-doctor::before { + content: "\f0f0"; } + +.fa-user-md::before { + content: "\f0f0"; } + +.fa-circle-info::before { + content: "\f05a"; } + +.fa-info-circle::before { + content: "\f05a"; } + +.fa-cloud-meatball::before { + content: "\f73b"; } + +.fa-camera::before { + content: "\f030"; } + +.fa-camera-alt::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 { + content: "\f162"; } + +.fa-sort-numeric-asc::before { + content: "\f162"; } + +.fa-sort-numeric-down::before { + content: "\f162"; } + +.fa-hand-holding-droplet::before { + content: "\f4c1"; } + +.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-medical::before { + content: "\f486"; } + +.fa-prescription-bottle-alt::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 { + content: "\f15d"; } + +.fa-sort-alpha-asc::before { + content: "\f15d"; } + +.fa-sort-alpha-down::before { + content: "\f15d"; } + +.fa-money-bill-wheat::before { + content: "\e52a"; } + +.fa-cookie::before { + content: "\f563"; } + .fa-arrow-rotate-left::before { content: "\f0e2"; } @@ -736,1733 +3980,11 @@ readers do not read off random characters that represent icons */ .fa-undo::before { content: "\f0e2"; } -.fa-arrow-rotate-right::before { - content: "\f01e"; } +.fa-hard-drive::before { + content: "\f0a0"; } -.fa-arrow-right-rotate::before { - content: "\f01e"; } - -.fa-arrow-rotate-forward::before { - content: "\f01e"; } - -.fa-redo::before { - content: "\f01e"; } - -.fa-arrow-trend-down::before { - content: "\e097"; } - -.fa-arrow-trend-up::before { - content: "\e098"; } - -.fa-arrow-turn-down::before { - content: "\f149"; } - -.fa-level-down::before { - content: "\f149"; } - -.fa-arrow-turn-up::before { - content: "\f148"; } - -.fa-level-up::before { - content: "\f148"; } - -.fa-arrow-up::before { - content: "\f062"; } - -.fa-arrow-up-1-9::before { - content: "\f163"; } - -.fa-sort-numeric-up::before { - content: "\f163"; } - -.fa-arrow-up-9-1::before { - content: "\f887"; } - -.fa-sort-numeric-up-alt::before { - content: "\f887"; } - -.fa-arrow-up-a-z::before { - content: "\f15e"; } - -.fa-sort-alpha-up::before { - content: "\f15e"; } - -.fa-arrow-up-from-bracket::before { - content: "\e09a"; } - -.fa-arrow-up-from-ground-water::before { - content: "\e4b5"; } - -.fa-arrow-up-from-water-pump::before { - content: "\e4b6"; } - -.fa-arrow-up-long::before { - content: "\f176"; } - -.fa-long-arrow-up::before { - content: "\f176"; } - -.fa-arrow-up-right-dots::before { - content: "\e4b7"; } - -.fa-arrow-up-right-from-square::before { - content: "\f08e"; } - -.fa-external-link::before { - content: "\f08e"; } - -.fa-arrow-up-short-wide::before { - content: "\f885"; } - -.fa-sort-amount-up-alt::before { - content: "\f885"; } - -.fa-arrow-up-wide-short::before { - content: "\f161"; } - -.fa-sort-amount-up::before { - content: "\f161"; } - -.fa-arrow-up-z-a::before { - content: "\f882"; } - -.fa-sort-alpha-up-alt::before { - content: "\f882"; } - -.fa-arrows-down-to-line::before { - content: "\e4b8"; } - -.fa-arrows-down-to-people::before { - content: "\e4b9"; } - -.fa-arrows-left-right::before { - content: "\f07e"; } - -.fa-arrows-h::before { - content: "\f07e"; } - -.fa-arrows-left-right-to-line::before { - content: "\e4ba"; } - -.fa-arrows-rotate::before { - content: "\f021"; } - -.fa-refresh::before { - content: "\f021"; } - -.fa-sync::before { - content: "\f021"; } - -.fa-arrows-spin::before { - content: "\e4bb"; } - -.fa-arrows-split-up-and-left::before { - content: "\e4bc"; } - -.fa-arrows-to-circle::before { - content: "\e4bd"; } - -.fa-arrows-to-dot::before { - content: "\e4be"; } - -.fa-arrows-to-eye::before { - content: "\e4bf"; } - -.fa-arrows-turn-right::before { - content: "\e4c0"; } - -.fa-arrows-turn-to-dots::before { - content: "\e4c1"; } - -.fa-arrows-up-down::before { - content: "\f07d"; } - -.fa-arrows-v::before { - content: "\f07d"; } - -.fa-arrows-up-down-left-right::before { - content: "\f047"; } - -.fa-arrows::before { - content: "\f047"; } - -.fa-arrows-up-to-line::before { - content: "\e4c2"; } - -.fa-asterisk::before { - content: "\2a"; } - -.fa-at::before { - content: "\40"; } - -.fa-atom::before { - content: "\f5d2"; } - -.fa-audio-description::before { - content: "\f29e"; } - -.fa-austral-sign::before { - content: "\e0a9"; } - -.fa-award::before { - content: "\f559"; } - -.fa-b::before { - content: "\42"; } - -.fa-baby::before { - content: "\f77c"; } - -.fa-baby-carriage::before { - content: "\f77d"; } - -.fa-carriage-baby::before { - content: "\f77d"; } - -.fa-backward::before { - content: "\f04a"; } - -.fa-backward-fast::before { - content: "\f049"; } - -.fa-fast-backward::before { - content: "\f049"; } - -.fa-backward-step::before { - content: "\f048"; } - -.fa-step-backward::before { - content: "\f048"; } - -.fa-bacon::before { - content: "\f7e5"; } - -.fa-bacteria::before { - content: "\e059"; } - -.fa-bacterium::before { - content: "\e05a"; } - -.fa-bag-shopping::before { - content: "\f290"; } - -.fa-shopping-bag::before { - content: "\f290"; } - -.fa-bahai::before { - content: "\f666"; } - -.fa-baht-sign::before { - content: "\e0ac"; } - -.fa-ban::before { - content: "\f05e"; } - -.fa-cancel::before { - content: "\f05e"; } - -.fa-ban-smoking::before { - content: "\f54d"; } - -.fa-smoking-ban::before { - content: "\f54d"; } - -.fa-bandage::before { - content: "\f462"; } - -.fa-band-aid::before { - content: "\f462"; } - -.fa-barcode::before { - content: "\f02a"; } - -.fa-bars::before { - content: "\f0c9"; } - -.fa-navicon::before { - content: "\f0c9"; } - -.fa-bars-progress::before { - content: "\f828"; } - -.fa-tasks-alt::before { - content: "\f828"; } - -.fa-bars-staggered::before { - content: "\f550"; } - -.fa-reorder::before { - content: "\f550"; } - -.fa-stream::before { - content: "\f550"; } - -.fa-baseball::before { - content: "\f433"; } - -.fa-baseball-ball::before { - content: "\f433"; } - -.fa-baseball-bat-ball::before { - content: "\f432"; } - -.fa-basket-shopping::before { - content: "\f291"; } - -.fa-shopping-basket::before { - content: "\f291"; } - -.fa-basketball::before { - content: "\f434"; } - -.fa-basketball-ball::before { - content: "\f434"; } - -.fa-bath::before { - content: "\f2cd"; } - -.fa-bathtub::before { - content: "\f2cd"; } - -.fa-battery-empty::before { - content: "\f244"; } - -.fa-battery-0::before { - content: "\f244"; } - -.fa-battery-full::before { - content: "\f240"; } - -.fa-battery::before { - content: "\f240"; } - -.fa-battery-5::before { - content: "\f240"; } - -.fa-battery-half::before { - content: "\f242"; } - -.fa-battery-3::before { - content: "\f242"; } - -.fa-battery-quarter::before { - content: "\f243"; } - -.fa-battery-2::before { - content: "\f243"; } - -.fa-battery-three-quarters::before { - content: "\f241"; } - -.fa-battery-4::before { - content: "\f241"; } - -.fa-bed::before { - content: "\f236"; } - -.fa-bed-pulse::before { - content: "\f487"; } - -.fa-procedures::before { - content: "\f487"; } - -.fa-beer-mug-empty::before { - content: "\f0fc"; } - -.fa-beer::before { - content: "\f0fc"; } - -.fa-bell::before { - content: "\f0f3"; } - -.fa-bell-concierge::before { - content: "\f562"; } - -.fa-concierge-bell::before { - content: "\f562"; } - -.fa-bell-slash::before { - content: "\f1f6"; } - -.fa-bezier-curve::before { - content: "\f55b"; } - -.fa-bicycle::before { - content: "\f206"; } - -.fa-binoculars::before { - content: "\f1e5"; } - -.fa-biohazard::before { - content: "\f780"; } - -.fa-bitcoin-sign::before { - content: "\e0b4"; } - -.fa-blender::before { - content: "\f517"; } - -.fa-blender-phone::before { - content: "\f6b6"; } - -.fa-blog::before { - content: "\f781"; } - -.fa-bold::before { - content: "\f032"; } - -.fa-bolt::before { - content: "\f0e7"; } - -.fa-zap::before { - content: "\f0e7"; } - -.fa-bolt-lightning::before { - content: "\e0b7"; } - -.fa-bomb::before { - content: "\f1e2"; } - -.fa-bone::before { - content: "\f5d7"; } - -.fa-bong::before { - content: "\f55c"; } - -.fa-book::before { - content: "\f02d"; } - -.fa-book-atlas::before { - content: "\f558"; } - -.fa-atlas::before { - content: "\f558"; } - -.fa-book-bible::before { - content: "\f647"; } - -.fa-bible::before { - content: "\f647"; } - -.fa-book-bookmark::before { - content: "\e0bb"; } - -.fa-book-journal-whills::before { - content: "\f66a"; } - -.fa-journal-whills::before { - content: "\f66a"; } - -.fa-book-medical::before { - content: "\f7e6"; } - -.fa-book-open::before { - content: "\f518"; } - -.fa-book-open-reader::before { - content: "\f5da"; } - -.fa-book-reader::before { - content: "\f5da"; } - -.fa-book-quran::before { - content: "\f687"; } - -.fa-quran::before { - content: "\f687"; } - -.fa-book-skull::before { - content: "\f6b7"; } - -.fa-book-dead::before { - content: "\f6b7"; } - -.fa-bookmark::before { - content: "\f02e"; } - -.fa-border-all::before { - content: "\f84c"; } - -.fa-border-none::before { - content: "\f850"; } - -.fa-border-top-left::before { - content: "\f853"; } - -.fa-border-style::before { - content: "\f853"; } - -.fa-bore-hole::before { - content: "\e4c3"; } - -.fa-bottle-droplet::before { - content: "\e4c4"; } - -.fa-bottle-water::before { - content: "\e4c5"; } - -.fa-bowl-food::before { - content: "\e4c6"; } - -.fa-bowl-rice::before { - content: "\e2eb"; } - -.fa-bowling-ball::before { - content: "\f436"; } - -.fa-box::before { - content: "\f466"; } - -.fa-box-archive::before { - content: "\f187"; } - -.fa-archive::before { - content: "\f187"; } - -.fa-box-open::before { - content: "\f49e"; } - -.fa-box-tissue::before { - content: "\e05b"; } - -.fa-boxes-packing::before { - content: "\e4c7"; } - -.fa-boxes-stacked::before { - content: "\f468"; } - -.fa-boxes::before { - content: "\f468"; } - -.fa-boxes-alt::before { - content: "\f468"; } - -.fa-braille::before { - content: "\f2a1"; } - -.fa-brain::before { - content: "\f5dc"; } - -.fa-brazilian-real-sign::before { - content: "\e46c"; } - -.fa-bread-slice::before { - content: "\f7ec"; } - -.fa-bridge::before { - content: "\e4c8"; } - -.fa-bridge-circle-check::before { - content: "\e4c9"; } - -.fa-bridge-circle-exclamation::before { - content: "\e4ca"; } - -.fa-bridge-circle-xmark::before { - content: "\e4cb"; } - -.fa-bridge-lock::before { - content: "\e4cc"; } - -.fa-bridge-water::before { - content: "\e4ce"; } - -.fa-briefcase::before { - content: "\f0b1"; } - -.fa-briefcase-medical::before { - content: "\f469"; } - -.fa-broom::before { - content: "\f51a"; } - -.fa-broom-ball::before { - content: "\f458"; } - -.fa-quidditch::before { - content: "\f458"; } - -.fa-quidditch-broom-ball::before { - content: "\f458"; } - -.fa-brush::before { - content: "\f55d"; } - -.fa-bucket::before { - content: "\e4cf"; } - -.fa-bug::before { - content: "\f188"; } - -.fa-bug-slash::before { - content: "\e490"; } - -.fa-bugs::before { - content: "\e4d0"; } - -.fa-building::before { - content: "\f1ad"; } - -.fa-building-circle-arrow-right::before { - content: "\e4d1"; } - -.fa-building-circle-check::before { - content: "\e4d2"; } - -.fa-building-circle-exclamation::before { - content: "\e4d3"; } - -.fa-building-circle-xmark::before { - content: "\e4d4"; } - -.fa-building-columns::before { - content: "\f19c"; } - -.fa-bank::before { - content: "\f19c"; } - -.fa-institution::before { - content: "\f19c"; } - -.fa-museum::before { - content: "\f19c"; } - -.fa-university::before { - content: "\f19c"; } - -.fa-building-flag::before { - content: "\e4d5"; } - -.fa-building-lock::before { - content: "\e4d6"; } - -.fa-building-ngo::before { - content: "\e4d7"; } - -.fa-building-shield::before { - content: "\e4d8"; } - -.fa-building-un::before { - content: "\e4d9"; } - -.fa-building-user::before { - content: "\e4da"; } - -.fa-building-wheat::before { - content: "\e4db"; } - -.fa-bullhorn::before { - content: "\f0a1"; } - -.fa-bullseye::before { - content: "\f140"; } - -.fa-burger::before { - content: "\f805"; } - -.fa-hamburger::before { - content: "\f805"; } - -.fa-burst::before { - content: "\e4dc"; } - -.fa-bus::before { - content: "\f207"; } - -.fa-bus-simple::before { - content: "\f55e"; } - -.fa-bus-alt::before { - content: "\f55e"; } - -.fa-business-time::before { - content: "\f64a"; } - -.fa-briefcase-clock::before { - content: "\f64a"; } - -.fa-c::before { - content: "\43"; } - -.fa-cake-candles::before { - content: "\f1fd"; } - -.fa-birthday-cake::before { - content: "\f1fd"; } - -.fa-cake::before { - content: "\f1fd"; } - -.fa-calculator::before { - content: "\f1ec"; } - -.fa-calendar::before { - content: "\f133"; } - -.fa-calendar-check::before { - content: "\f274"; } - -.fa-calendar-day::before { - content: "\f783"; } - -.fa-calendar-days::before { - content: "\f073"; } - -.fa-calendar-alt::before { - content: "\f073"; } - -.fa-calendar-minus::before { - content: "\f272"; } - -.fa-calendar-plus::before { - content: "\f271"; } - -.fa-calendar-week::before { - content: "\f784"; } - -.fa-calendar-xmark::before { - content: "\f273"; } - -.fa-calendar-times::before { - content: "\f273"; } - -.fa-camera::before { - content: "\f030"; } - -.fa-camera-alt::before { - content: "\f030"; } - -.fa-camera-retro::before { - content: "\f083"; } - -.fa-camera-rotate::before { - content: "\e0d8"; } - -.fa-campground::before { - content: "\f6bb"; } - -.fa-candy-cane::before { - content: "\f786"; } - -.fa-cannabis::before { - content: "\f55f"; } - -.fa-capsules::before { - content: "\f46b"; } - -.fa-car::before { - content: "\f1b9"; } - -.fa-automobile::before { - content: "\f1b9"; } - -.fa-car-battery::before { - content: "\f5df"; } - -.fa-battery-car::before { - content: "\f5df"; } - -.fa-car-burst::before { - content: "\f5e1"; } - -.fa-car-crash::before { - content: "\f5e1"; } - -.fa-car-on::before { - content: "\e4dd"; } - -.fa-car-rear::before { - content: "\f5de"; } - -.fa-car-alt::before { - content: "\f5de"; } - -.fa-car-side::before { - content: "\f5e4"; } - -.fa-car-tunnel::before { - content: "\e4de"; } - -.fa-caravan::before { - content: "\f8ff"; } - -.fa-caret-down::before { - content: "\f0d7"; } - -.fa-caret-left::before { - content: "\f0d9"; } - -.fa-caret-right::before { - content: "\f0da"; } - -.fa-caret-up::before { - content: "\f0d8"; } - -.fa-carrot::before { - content: "\f787"; } - -.fa-cart-arrow-down::before { - content: "\f218"; } - -.fa-cart-flatbed::before { - content: "\f474"; } - -.fa-dolly-flatbed::before { - content: "\f474"; } - -.fa-cart-flatbed-suitcase::before { - content: "\f59d"; } - -.fa-luggage-cart::before { - content: "\f59d"; } - -.fa-cart-plus::before { - content: "\f217"; } - -.fa-cart-shopping::before { - content: "\f07a"; } - -.fa-shopping-cart::before { - content: "\f07a"; } - -.fa-cash-register::before { - content: "\f788"; } - -.fa-cat::before { - content: "\f6be"; } - -.fa-cedi-sign::before { - content: "\e0df"; } - -.fa-cent-sign::before { - content: "\e3f5"; } - -.fa-certificate::before { - content: "\f0a3"; } - -.fa-chair::before { - content: "\f6c0"; } - -.fa-chalkboard::before { - content: "\f51b"; } - -.fa-blackboard::before { - content: "\f51b"; } - -.fa-chalkboard-user::before { - content: "\f51c"; } - -.fa-chalkboard-teacher::before { - content: "\f51c"; } - -.fa-champagne-glasses::before { - content: "\f79f"; } - -.fa-glass-cheers::before { - content: "\f79f"; } - -.fa-charging-station::before { - content: "\f5e7"; } - -.fa-chart-area::before { - content: "\f1fe"; } - -.fa-area-chart::before { - content: "\f1fe"; } - -.fa-chart-bar::before { - content: "\f080"; } - -.fa-bar-chart::before { - content: "\f080"; } - -.fa-chart-column::before { - content: "\e0e3"; } - -.fa-chart-gantt::before { - content: "\e0e4"; } - -.fa-chart-line::before { - content: "\f201"; } - -.fa-line-chart::before { - content: "\f201"; } - -.fa-chart-pie::before { - content: "\f200"; } - -.fa-pie-chart::before { - content: "\f200"; } - -.fa-chart-simple::before { - content: "\e473"; } - -.fa-check::before { - content: "\f00c"; } - -.fa-check-double::before { - content: "\f560"; } - -.fa-check-to-slot::before { - content: "\f772"; } - -.fa-vote-yea::before { - content: "\f772"; } - -.fa-cheese::before { - content: "\f7ef"; } - -.fa-chess::before { - content: "\f439"; } - -.fa-chess-bishop::before { - content: "\f43a"; } - -.fa-chess-board::before { - content: "\f43c"; } - -.fa-chess-king::before { - content: "\f43f"; } - -.fa-chess-knight::before { - content: "\f441"; } - -.fa-chess-pawn::before { - content: "\f443"; } - -.fa-chess-queen::before { - content: "\f445"; } - -.fa-chess-rook::before { - content: "\f447"; } - -.fa-chevron-down::before { - content: "\f078"; } - -.fa-chevron-left::before { - content: "\f053"; } - -.fa-chevron-right::before { - content: "\f054"; } - -.fa-chevron-up::before { - content: "\f077"; } - -.fa-child::before { - content: "\f1ae"; } - -.fa-child-dress::before { - content: "\e59c"; } - -.fa-child-reaching::before { - content: "\e59d"; } - -.fa-child-rifle::before { - content: "\e4e0"; } - -.fa-children::before { - content: "\e4e1"; } - -.fa-church::before { - content: "\f51d"; } - -.fa-circle::before { - content: "\f111"; } - -.fa-circle-arrow-down::before { - content: "\f0ab"; } - -.fa-arrow-circle-down::before { - content: "\f0ab"; } - -.fa-circle-arrow-left::before { - content: "\f0a8"; } - -.fa-arrow-circle-left::before { - content: "\f0a8"; } - -.fa-circle-arrow-right::before { - content: "\f0a9"; } - -.fa-arrow-circle-right::before { - content: "\f0a9"; } - -.fa-circle-arrow-up::before { - content: "\f0aa"; } - -.fa-arrow-circle-up::before { - content: "\f0aa"; } - -.fa-circle-check::before { - content: "\f058"; } - -.fa-check-circle::before { - content: "\f058"; } - -.fa-circle-chevron-down::before { - content: "\f13a"; } - -.fa-chevron-circle-down::before { - content: "\f13a"; } - -.fa-circle-chevron-left::before { - content: "\f137"; } - -.fa-chevron-circle-left::before { - content: "\f137"; } - -.fa-circle-chevron-right::before { - content: "\f138"; } - -.fa-chevron-circle-right::before { - content: "\f138"; } - -.fa-circle-chevron-up::before { - content: "\f139"; } - -.fa-chevron-circle-up::before { - content: "\f139"; } - -.fa-circle-dollar-to-slot::before { - content: "\f4b9"; } - -.fa-donate::before { - content: "\f4b9"; } - -.fa-circle-dot::before { - content: "\f192"; } - -.fa-dot-circle::before { - content: "\f192"; } - -.fa-circle-down::before { - content: "\f358"; } - -.fa-arrow-alt-circle-down::before { - content: "\f358"; } - -.fa-circle-exclamation::before { - content: "\f06a"; } - -.fa-exclamation-circle::before { - content: "\f06a"; } - -.fa-circle-h::before { - content: "\f47e"; } - -.fa-hospital-symbol::before { - content: "\f47e"; } - -.fa-circle-half-stroke::before { - content: "\f042"; } - -.fa-adjust::before { - content: "\f042"; } - -.fa-circle-info::before { - content: "\f05a"; } - -.fa-info-circle::before { - content: "\f05a"; } - -.fa-circle-left::before { - content: "\f359"; } - -.fa-arrow-alt-circle-left::before { - content: "\f359"; } - -.fa-circle-minus::before { - content: "\f056"; } - -.fa-minus-circle::before { - content: "\f056"; } - -.fa-circle-nodes::before { - content: "\e4e2"; } - -.fa-circle-notch::before { - content: "\f1ce"; } - -.fa-circle-pause::before { - content: "\f28b"; } - -.fa-pause-circle::before { - content: "\f28b"; } - -.fa-circle-play::before { - content: "\f144"; } - -.fa-play-circle::before { - content: "\f144"; } - -.fa-circle-plus::before { - content: "\f055"; } - -.fa-plus-circle::before { - content: "\f055"; } - -.fa-circle-question::before { - content: "\f059"; } - -.fa-question-circle::before { - content: "\f059"; } - -.fa-circle-radiation::before { - content: "\f7ba"; } - -.fa-radiation-alt::before { - content: "\f7ba"; } - -.fa-circle-right::before { - content: "\f35a"; } - -.fa-arrow-alt-circle-right::before { - content: "\f35a"; } - -.fa-circle-stop::before { - content: "\f28d"; } - -.fa-stop-circle::before { - content: "\f28d"; } - -.fa-circle-up::before { - content: "\f35b"; } - -.fa-arrow-alt-circle-up::before { - content: "\f35b"; } - -.fa-circle-user::before { - content: "\f2bd"; } - -.fa-user-circle::before { - content: "\f2bd"; } - -.fa-circle-xmark::before { - content: "\f057"; } - -.fa-times-circle::before { - content: "\f057"; } - -.fa-xmark-circle::before { - content: "\f057"; } - -.fa-city::before { - content: "\f64f"; } - -.fa-clapperboard::before { - content: "\e131"; } - -.fa-clipboard::before { - content: "\f328"; } - -.fa-clipboard-check::before { - content: "\f46c"; } - -.fa-clipboard-list::before { - content: "\f46d"; } - -.fa-clipboard-question::before { - content: "\e4e3"; } - -.fa-clipboard-user::before { - content: "\f7f3"; } - -.fa-clock::before { - content: "\f017"; } - -.fa-clock-four::before { - content: "\f017"; } - -.fa-clock-rotate-left::before { - content: "\f1da"; } - -.fa-history::before { - content: "\f1da"; } - -.fa-clone::before { - content: "\f24d"; } - -.fa-closed-captioning::before { - content: "\f20a"; } - -.fa-cloud::before { - content: "\f0c2"; } - -.fa-cloud-arrow-down::before { - content: "\f0ed"; } - -.fa-cloud-download::before { - content: "\f0ed"; } - -.fa-cloud-download-alt::before { - content: "\f0ed"; } - -.fa-cloud-arrow-up::before { - content: "\f0ee"; } - -.fa-cloud-upload::before { - content: "\f0ee"; } - -.fa-cloud-upload-alt::before { - content: "\f0ee"; } - -.fa-cloud-bolt::before { - content: "\f76c"; } - -.fa-thunderstorm::before { - content: "\f76c"; } - -.fa-cloud-meatball::before { - content: "\f73b"; } - -.fa-cloud-moon::before { - content: "\f6c3"; } - -.fa-cloud-moon-rain::before { - content: "\f73c"; } - -.fa-cloud-rain::before { - content: "\f73d"; } - -.fa-cloud-showers-heavy::before { - content: "\f740"; } - -.fa-cloud-showers-water::before { - content: "\e4e4"; } - -.fa-cloud-sun::before { - content: "\f6c4"; } - -.fa-cloud-sun-rain::before { - content: "\f743"; } - -.fa-clover::before { - content: "\e139"; } - -.fa-code::before { - content: "\f121"; } - -.fa-code-branch::before { - content: "\f126"; } - -.fa-code-commit::before { - content: "\f386"; } - -.fa-code-compare::before { - content: "\e13a"; } - -.fa-code-fork::before { - content: "\e13b"; } - -.fa-code-merge::before { - content: "\f387"; } - -.fa-code-pull-request::before { - content: "\e13c"; } - -.fa-coins::before { - content: "\f51e"; } - -.fa-colon-sign::before { - content: "\e140"; } - -.fa-comment::before { - content: "\f075"; } - -.fa-comment-dollar::before { - content: "\f651"; } - -.fa-comment-dots::before { - content: "\f4ad"; } - -.fa-commenting::before { - content: "\f4ad"; } - -.fa-comment-medical::before { - content: "\f7f5"; } - -.fa-comment-slash::before { - content: "\f4b3"; } - -.fa-comment-sms::before { - content: "\f7cd"; } - -.fa-sms::before { - content: "\f7cd"; } - -.fa-comments::before { - content: "\f086"; } - -.fa-comments-dollar::before { - content: "\f653"; } - -.fa-compact-disc::before { - content: "\f51f"; } - -.fa-compass::before { - content: "\f14e"; } - -.fa-compass-drafting::before { - content: "\f568"; } - -.fa-drafting-compass::before { - content: "\f568"; } - -.fa-compress::before { - content: "\f066"; } - -.fa-computer::before { - content: "\e4e5"; } - -.fa-computer-mouse::before { - content: "\f8cc"; } - -.fa-mouse::before { - content: "\f8cc"; } - -.fa-cookie::before { - content: "\f563"; } - -.fa-cookie-bite::before { - content: "\f564"; } - -.fa-copy::before { - content: "\f0c5"; } - -.fa-copyright::before { - content: "\f1f9"; } - -.fa-couch::before { - content: "\f4b8"; } - -.fa-cow::before { - content: "\f6c8"; } - -.fa-credit-card::before { - content: "\f09d"; } - -.fa-credit-card-alt::before { - content: "\f09d"; } - -.fa-crop::before { - content: "\f125"; } - -.fa-crop-simple::before { - content: "\f565"; } - -.fa-crop-alt::before { - content: "\f565"; } - -.fa-cross::before { - content: "\f654"; } - -.fa-crosshairs::before { - content: "\f05b"; } - -.fa-crow::before { - content: "\f520"; } - -.fa-crown::before { - content: "\f521"; } - -.fa-crutch::before { - content: "\f7f7"; } - -.fa-cruzeiro-sign::before { - content: "\e152"; } - -.fa-cube::before { - content: "\f1b2"; } - -.fa-cubes::before { - content: "\f1b3"; } - -.fa-cubes-stacked::before { - content: "\e4e6"; } - -.fa-d::before { - content: "\44"; } - -.fa-database::before { - content: "\f1c0"; } - -.fa-delete-left::before { - content: "\f55a"; } - -.fa-backspace::before { - content: "\f55a"; } - -.fa-democrat::before { - content: "\f747"; } - -.fa-desktop::before { - content: "\f390"; } - -.fa-desktop-alt::before { - content: "\f390"; } - -.fa-dharmachakra::before { - content: "\f655"; } - -.fa-diagram-next::before { - content: "\e476"; } - -.fa-diagram-predecessor::before { - content: "\e477"; } - -.fa-diagram-project::before { - content: "\f542"; } - -.fa-project-diagram::before { - content: "\f542"; } - -.fa-diagram-successor::before { - content: "\e47a"; } - -.fa-diamond::before { - content: "\f219"; } - -.fa-diamond-turn-right::before { - content: "\f5eb"; } - -.fa-directions::before { - content: "\f5eb"; } - -.fa-dice::before { - content: "\f522"; } - -.fa-dice-d20::before { - content: "\f6cf"; } - -.fa-dice-d6::before { - content: "\f6d1"; } - -.fa-dice-five::before { - content: "\f523"; } - -.fa-dice-four::before { - content: "\f524"; } - -.fa-dice-one::before { - content: "\f525"; } - -.fa-dice-six::before { - content: "\f526"; } - -.fa-dice-three::before { - content: "\f527"; } - -.fa-dice-two::before { - content: "\f528"; } - -.fa-disease::before { - content: "\f7fa"; } - -.fa-display::before { - content: "\e163"; } - -.fa-divide::before { - content: "\f529"; } - -.fa-dna::before { - content: "\f471"; } - -.fa-dog::before { - content: "\f6d3"; } - -.fa-dollar-sign::before { - content: "\24"; } - -.fa-dollar::before { - content: "\24"; } - -.fa-usd::before { - content: "\24"; } - -.fa-dolly::before { - content: "\f472"; } - -.fa-dolly-box::before { - content: "\f472"; } - -.fa-dong-sign::before { - content: "\e169"; } - -.fa-door-closed::before { - content: "\f52a"; } - -.fa-door-open::before { - content: "\f52b"; } - -.fa-dove::before { - content: "\f4ba"; } - -.fa-down-left-and-up-right-to-center::before { - content: "\f422"; } - -.fa-compress-alt::before { - content: "\f422"; } - -.fa-down-long::before { - content: "\f309"; } - -.fa-long-arrow-alt-down::before { - content: "\f309"; } - -.fa-download::before { - content: "\f019"; } - -.fa-dragon::before { - content: "\f6d5"; } - -.fa-draw-polygon::before { - content: "\f5ee"; } - -.fa-droplet::before { - content: "\f043"; } - -.fa-tint::before { - content: "\f043"; } - -.fa-droplet-slash::before { - content: "\f5c7"; } - -.fa-tint-slash::before { - content: "\f5c7"; } - -.fa-drum::before { - content: "\f569"; } - -.fa-drum-steelpan::before { - content: "\f56a"; } - -.fa-drumstick-bite::before { - content: "\f6d7"; } - -.fa-dumbbell::before { - content: "\f44b"; } - -.fa-dumpster::before { - content: "\f793"; } - -.fa-dumpster-fire::before { - content: "\f794"; } - -.fa-dungeon::before { - content: "\f6d9"; } - -.fa-e::before { - content: "\45"; } - -.fa-ear-deaf::before { - content: "\f2a4"; } - -.fa-deaf::before { - content: "\f2a4"; } - -.fa-deafness::before { - content: "\f2a4"; } - -.fa-hard-of-hearing::before { - content: "\f2a4"; } - -.fa-ear-listen::before { - content: "\f2a2"; } - -.fa-assistive-listening-systems::before { - content: "\f2a2"; } - -.fa-earth-africa::before { - content: "\f57c"; } - -.fa-globe-africa::before { - content: "\f57c"; } - -.fa-earth-americas::before { - content: "\f57d"; } - -.fa-earth::before { - content: "\f57d"; } - -.fa-earth-america::before { - content: "\f57d"; } - -.fa-globe-americas::before { - content: "\f57d"; } - -.fa-earth-asia::before { - content: "\f57e"; } - -.fa-globe-asia::before { - content: "\f57e"; } - -.fa-earth-europe::before { - content: "\f7a2"; } - -.fa-globe-europe::before { - content: "\f7a2"; } - -.fa-earth-oceania::before { - content: "\e47b"; } - -.fa-globe-oceania::before { - content: "\e47b"; } - -.fa-egg::before { - content: "\f7fb"; } - -.fa-eject::before { - content: "\f052"; } - -.fa-elevator::before { - content: "\e16d"; } - -.fa-ellipsis::before { - content: "\f141"; } - -.fa-ellipsis-h::before { - content: "\f141"; } - -.fa-ellipsis-vertical::before { - content: "\f142"; } - -.fa-ellipsis-v::before { - content: "\f142"; } - -.fa-envelope::before { - content: "\f0e0"; } - -.fa-envelope-circle-check::before { - content: "\e4e8"; } - -.fa-envelope-open::before { - content: "\f2b6"; } - -.fa-envelope-open-text::before { - content: "\f658"; } - -.fa-envelopes-bulk::before { - content: "\f674"; } - -.fa-mail-bulk::before { - content: "\f674"; } - -.fa-equals::before { - content: "\3d"; } - -.fa-eraser::before { - content: "\f12d"; } - -.fa-ethernet::before { - content: "\f796"; } - -.fa-euro-sign::before { - content: "\f153"; } - -.fa-eur::before { - content: "\f153"; } - -.fa-euro::before { - content: "\f153"; } - -.fa-exclamation::before { - content: "\21"; } - -.fa-expand::before { - content: "\f065"; } - -.fa-explosion::before { - content: "\e4e9"; } - -.fa-eye::before { - content: "\f06e"; } - -.fa-eye-dropper::before { - content: "\f1fb"; } - -.fa-eye-dropper-empty::before { - content: "\f1fb"; } - -.fa-eyedropper::before { - content: "\f1fb"; } - -.fa-eye-low-vision::before { - content: "\f2a8"; } - -.fa-low-vision::before { - content: "\f2a8"; } - -.fa-eye-slash::before { - content: "\f070"; } - -.fa-f::before { - content: "\46"; } - -.fa-face-angry::before { - content: "\f556"; } - -.fa-angry::before { - content: "\f556"; } - -.fa-face-dizzy::before { - content: "\f567"; } - -.fa-dizzy::before { - content: "\f567"; } - -.fa-face-flushed::before { - content: "\f579"; } - -.fa-flushed::before { - content: "\f579"; } - -.fa-face-frown::before { - content: "\f119"; } - -.fa-frown::before { - content: "\f119"; } - -.fa-face-frown-open::before { - content: "\f57a"; } - -.fa-frown-open::before { - content: "\f57a"; } - -.fa-face-grimace::before { - content: "\f57f"; } - -.fa-grimace::before { - content: "\f57f"; } - -.fa-face-grin::before { - content: "\f580"; } - -.fa-grin::before { - content: "\f580"; } - -.fa-face-grin-beam::before { - content: "\f582"; } - -.fa-grin-beam::before { - content: "\f582"; } - -.fa-face-grin-beam-sweat::before { - content: "\f583"; } - -.fa-grin-beam-sweat::before { - content: "\f583"; } - -.fa-face-grin-hearts::before { - content: "\f584"; } - -.fa-grin-hearts::before { - content: "\f584"; } - -.fa-face-grin-squint::before { - content: "\f585"; } - -.fa-grin-squint::before { - content: "\f585"; } +.fa-hdd::before { + content: "\f0a0"; } .fa-face-grin-squint-tears::before { content: "\f586"; } @@ -2470,671 +3992,107 @@ readers do not read off random characters that represent icons */ .fa-grin-squint-tears::before { content: "\f586"; } -.fa-face-grin-stars::before { - content: "\f587"; } +.fa-dumbbell::before { + content: "\f44b"; } -.fa-grin-stars::before { - content: "\f587"; } +.fa-rectangle-list::before { + content: "\f022"; } -.fa-face-grin-tears::before { - content: "\f588"; } +.fa-list-alt::before { + content: "\f022"; } -.fa-grin-tears::before { - content: "\f588"; } +.fa-tarp-droplet::before { + content: "\e57c"; } -.fa-face-grin-tongue::before { - content: "\f589"; } +.fa-house-medical-circle-check::before { + content: "\e511"; } -.fa-grin-tongue::before { - content: "\f589"; } +.fa-person-skiing-nordic::before { + content: "\f7ca"; } -.fa-face-grin-tongue-squint::before { - content: "\f58a"; } +.fa-skiing-nordic::before { + content: "\f7ca"; } -.fa-grin-tongue-squint::before { - content: "\f58a"; } +.fa-calendar-plus::before { + content: "\f271"; } -.fa-face-grin-tongue-wink::before { - content: "\f58b"; } +.fa-plane-arrival::before { + content: "\f5af"; } -.fa-grin-tongue-wink::before { - content: "\f58b"; } +.fa-circle-left::before { + content: "\f359"; } -.fa-face-grin-wide::before { - content: "\f581"; } +.fa-arrow-alt-circle-left::before { + content: "\f359"; } -.fa-grin-alt::before { - content: "\f581"; } +.fa-train-subway::before { + content: "\f239"; } -.fa-face-grin-wink::before { - content: "\f58c"; } +.fa-subway::before { + content: "\f239"; } -.fa-grin-wink::before { - content: "\f58c"; } +.fa-chart-gantt::before { + content: "\e0e4"; } -.fa-face-kiss::before { - content: "\f596"; } +.fa-indian-rupee-sign::before { + content: "\e1bc"; } -.fa-kiss::before { - content: "\f596"; } +.fa-indian-rupee::before { + content: "\e1bc"; } -.fa-face-kiss-beam::before { - content: "\f597"; } +.fa-inr::before { + content: "\e1bc"; } -.fa-kiss-beam::before { - content: "\f597"; } +.fa-crop-simple::before { + content: "\f565"; } -.fa-face-kiss-wink-heart::before { - content: "\f598"; } +.fa-crop-alt::before { + content: "\f565"; } -.fa-kiss-wink-heart::before { - content: "\f598"; } +.fa-money-bill-1::before { + content: "\f3d1"; } -.fa-face-laugh::before { - content: "\f599"; } +.fa-money-bill-alt::before { + content: "\f3d1"; } -.fa-laugh::before { - content: "\f599"; } +.fa-left-long::before { + content: "\f30a"; } -.fa-face-laugh-beam::before { - content: "\f59a"; } +.fa-long-arrow-alt-left::before { + content: "\f30a"; } -.fa-laugh-beam::before { - content: "\f59a"; } +.fa-dna::before { + content: "\f471"; } -.fa-face-laugh-squint::before { - content: "\f59b"; } +.fa-virus-slash::before { + content: "\e075"; } -.fa-laugh-squint::before { - content: "\f59b"; } +.fa-minus::before { + content: "\f068"; } -.fa-face-laugh-wink::before { - content: "\f59c"; } +.fa-subtract::before { + content: "\f068"; } -.fa-laugh-wink::before { - content: "\f59c"; } +.fa-chess::before { + content: "\f439"; } -.fa-face-meh::before { - content: "\f11a"; } +.fa-arrow-left-long::before { + content: "\f177"; } -.fa-meh::before { - content: "\f11a"; } +.fa-long-arrow-left::before { + content: "\f177"; } -.fa-face-meh-blank::before { - content: "\f5a4"; } +.fa-plug-circle-check::before { + content: "\e55c"; } -.fa-meh-blank::before { - content: "\f5a4"; } - -.fa-face-rolling-eyes::before { - content: "\f5a5"; } - -.fa-meh-rolling-eyes::before { - content: "\f5a5"; } - -.fa-face-sad-cry::before { - content: "\f5b3"; } - -.fa-sad-cry::before { - content: "\f5b3"; } - -.fa-face-sad-tear::before { - content: "\f5b4"; } - -.fa-sad-tear::before { - content: "\f5b4"; } - -.fa-face-smile::before { - content: "\f118"; } - -.fa-smile::before { - content: "\f118"; } - -.fa-face-smile-beam::before { - content: "\f5b8"; } - -.fa-smile-beam::before { - content: "\f5b8"; } - -.fa-face-smile-wink::before { - content: "\f4da"; } - -.fa-smile-wink::before { - content: "\f4da"; } - -.fa-face-surprise::before { - content: "\f5c2"; } - -.fa-surprise::before { - content: "\f5c2"; } - -.fa-face-tired::before { - content: "\f5c8"; } - -.fa-tired::before { - content: "\f5c8"; } - -.fa-fan::before { - content: "\f863"; } - -.fa-faucet::before { - content: "\e005"; } - -.fa-faucet-drip::before { - content: "\e006"; } - -.fa-fax::before { - content: "\f1ac"; } - -.fa-feather::before { - content: "\f52d"; } - -.fa-feather-pointed::before { - content: "\f56b"; } - -.fa-feather-alt::before { - content: "\f56b"; } - -.fa-ferry::before { - content: "\e4ea"; } - -.fa-file::before { - content: "\f15b"; } - -.fa-file-arrow-down::before { - content: "\f56d"; } - -.fa-file-download::before { - content: "\f56d"; } - -.fa-file-arrow-up::before { - content: "\f574"; } - -.fa-file-upload::before { - content: "\f574"; } - -.fa-file-audio::before { - content: "\f1c7"; } - -.fa-file-circle-check::before { - content: "\e493"; } - -.fa-file-circle-exclamation::before { - content: "\e4eb"; } - -.fa-file-circle-minus::before { - content: "\e4ed"; } - -.fa-file-circle-plus::before { - content: "\e4ee"; } - -.fa-file-circle-question::before { - content: "\e4ef"; } - -.fa-file-circle-xmark::before { - content: "\e494"; } - -.fa-file-code::before { - content: "\f1c9"; } - -.fa-file-contract::before { - content: "\f56c"; } - -.fa-file-csv::before { - content: "\f6dd"; } - -.fa-file-excel::before { - content: "\f1c3"; } - -.fa-file-export::before { - content: "\f56e"; } - -.fa-arrow-right-from-file::before { - content: "\f56e"; } - -.fa-file-image::before { - content: "\f1c5"; } - -.fa-file-import::before { - content: "\f56f"; } - -.fa-arrow-right-to-file::before { - content: "\f56f"; } - -.fa-file-invoice::before { - content: "\f570"; } - -.fa-file-invoice-dollar::before { - content: "\f571"; } - -.fa-file-lines::before { - content: "\f15c"; } - -.fa-file-alt::before { - content: "\f15c"; } - -.fa-file-text::before { - content: "\f15c"; } - -.fa-file-medical::before { - content: "\f477"; } - -.fa-file-pdf::before { - content: "\f1c1"; } - -.fa-file-pen::before { - content: "\f31c"; } - -.fa-file-edit::before { - content: "\f31c"; } - -.fa-file-powerpoint::before { - content: "\f1c4"; } - -.fa-file-prescription::before { - content: "\f572"; } - -.fa-file-shield::before { - content: "\e4f0"; } - -.fa-file-signature::before { - content: "\f573"; } - -.fa-file-video::before { - content: "\f1c8"; } - -.fa-file-waveform::before { - content: "\f478"; } - -.fa-file-medical-alt::before { - content: "\f478"; } - -.fa-file-word::before { - content: "\f1c2"; } - -.fa-file-zipper::before { - content: "\f1c6"; } - -.fa-file-archive::before { - content: "\f1c6"; } - -.fa-fill::before { - content: "\f575"; } - -.fa-fill-drip::before { - content: "\f576"; } - -.fa-film::before { - content: "\f008"; } - -.fa-filter::before { - content: "\f0b0"; } - -.fa-filter-circle-dollar::before { - content: "\f662"; } - -.fa-funnel-dollar::before { - content: "\f662"; } - -.fa-filter-circle-xmark::before { - content: "\e17b"; } - -.fa-fingerprint::before { - content: "\f577"; } - -.fa-fire::before { - content: "\f06d"; } - -.fa-fire-burner::before { - content: "\e4f1"; } - -.fa-fire-extinguisher::before { - content: "\f134"; } - -.fa-fire-flame-curved::before { - content: "\f7e4"; } - -.fa-fire-alt::before { - content: "\f7e4"; } - -.fa-fire-flame-simple::before { - content: "\f46a"; } - -.fa-burn::before { - content: "\f46a"; } - -.fa-fish::before { - content: "\f578"; } - -.fa-fish-fins::before { - content: "\e4f2"; } - -.fa-flag::before { - content: "\f024"; } - -.fa-flag-checkered::before { - content: "\f11e"; } - -.fa-flag-usa::before { - content: "\f74d"; } - -.fa-flask::before { - content: "\f0c3"; } - -.fa-flask-vial::before { - content: "\e4f3"; } - -.fa-floppy-disk::before { - content: "\f0c7"; } - -.fa-save::before { - content: "\f0c7"; } - -.fa-florin-sign::before { - content: "\e184"; } - -.fa-folder::before { - content: "\f07b"; } - -.fa-folder-blank::before { - content: "\f07b"; } - -.fa-folder-closed::before { - content: "\e185"; } - -.fa-folder-minus::before { - content: "\f65d"; } - -.fa-folder-open::before { - content: "\f07c"; } - -.fa-folder-plus::before { - content: "\f65e"; } - -.fa-folder-tree::before { - content: "\f802"; } - -.fa-font::before { - content: "\f031"; } - -.fa-football::before { - content: "\f44e"; } - -.fa-football-ball::before { - content: "\f44e"; } - -.fa-forward::before { - content: "\f04e"; } - -.fa-forward-fast::before { - content: "\f050"; } - -.fa-fast-forward::before { - content: "\f050"; } - -.fa-forward-step::before { - content: "\f051"; } - -.fa-step-forward::before { - content: "\f051"; } +.fa-street-view::before { + content: "\f21d"; } .fa-franc-sign::before { content: "\e18f"; } -.fa-frog::before { - content: "\f52e"; } - -.fa-futbol::before { - content: "\f1e3"; } - -.fa-futbol-ball::before { - content: "\f1e3"; } - -.fa-soccer-ball::before { - content: "\f1e3"; } - -.fa-g::before { - content: "\47"; } - -.fa-gamepad::before { - content: "\f11b"; } - -.fa-gas-pump::before { - content: "\f52f"; } - -.fa-gauge::before { - content: "\f624"; } - -.fa-dashboard::before { - content: "\f624"; } - -.fa-gauge-med::before { - content: "\f624"; } - -.fa-tachometer-alt-average::before { - content: "\f624"; } - -.fa-gauge-high::before { - content: "\f625"; } - -.fa-tachometer-alt::before { - content: "\f625"; } - -.fa-tachometer-alt-fast::before { - content: "\f625"; } - -.fa-gauge-simple::before { - content: "\f629"; } - -.fa-gauge-simple-med::before { - content: "\f629"; } - -.fa-tachometer-average::before { - content: "\f629"; } - -.fa-gauge-simple-high::before { - content: "\f62a"; } - -.fa-tachometer::before { - content: "\f62a"; } - -.fa-tachometer-fast::before { - content: "\f62a"; } - -.fa-gavel::before { - content: "\f0e3"; } - -.fa-legal::before { - content: "\f0e3"; } - -.fa-gear::before { - content: "\f013"; } - -.fa-cog::before { - content: "\f013"; } - -.fa-gears::before { - content: "\f085"; } - -.fa-cogs::before { - content: "\f085"; } - -.fa-gem::before { - content: "\f3a5"; } - -.fa-genderless::before { - content: "\f22d"; } - -.fa-ghost::before { - content: "\f6e2"; } - -.fa-gift::before { - content: "\f06b"; } - -.fa-gifts::before { - content: "\f79c"; } - -.fa-glass-water::before { - content: "\e4f4"; } - -.fa-glass-water-droplet::before { - content: "\e4f5"; } - -.fa-glasses::before { - content: "\f530"; } - -.fa-globe::before { - content: "\f0ac"; } - -.fa-golf-ball-tee::before { - content: "\f450"; } - -.fa-golf-ball::before { - content: "\f450"; } - -.fa-gopuram::before { - content: "\f664"; } - -.fa-graduation-cap::before { - content: "\f19d"; } - -.fa-mortar-board::before { - content: "\f19d"; } - -.fa-greater-than::before { - content: "\3e"; } - -.fa-greater-than-equal::before { - content: "\f532"; } - -.fa-grip::before { - content: "\f58d"; } - -.fa-grip-horizontal::before { - content: "\f58d"; } - -.fa-grip-lines::before { - content: "\f7a4"; } - -.fa-grip-lines-vertical::before { - content: "\f7a5"; } - -.fa-grip-vertical::before { - content: "\f58e"; } - -.fa-group-arrows-rotate::before { - content: "\e4f6"; } - -.fa-guarani-sign::before { - content: "\e19a"; } - -.fa-guitar::before { - content: "\f7a6"; } - -.fa-gun::before { - content: "\e19b"; } - -.fa-h::before { - content: "\48"; } - -.fa-hammer::before { - content: "\f6e3"; } - -.fa-hamsa::before { - content: "\f665"; } - -.fa-hand::before { - content: "\f256"; } - -.fa-hand-paper::before { - content: "\f256"; } - -.fa-hand-back-fist::before { - content: "\f255"; } - -.fa-hand-rock::before { - content: "\f255"; } - -.fa-hand-dots::before { - content: "\f461"; } - -.fa-allergies::before { - content: "\f461"; } - -.fa-hand-fist::before { - content: "\f6de"; } - -.fa-fist-raised::before { - content: "\f6de"; } - -.fa-hand-holding::before { - content: "\f4bd"; } - -.fa-hand-holding-dollar::before { - content: "\f4c0"; } - -.fa-hand-holding-usd::before { - content: "\f4c0"; } - -.fa-hand-holding-droplet::before { - content: "\f4c1"; } - -.fa-hand-holding-water::before { - content: "\f4c1"; } - -.fa-hand-holding-hand::before { - content: "\e4f7"; } - -.fa-hand-holding-heart::before { - content: "\f4be"; } - -.fa-hand-holding-medical::before { - content: "\e05c"; } - -.fa-hand-lizard::before { - content: "\f258"; } - -.fa-hand-middle-finger::before { - content: "\f806"; } - -.fa-hand-peace::before { - content: "\f25b"; } - -.fa-hand-point-down::before { - content: "\f0a7"; } - -.fa-hand-point-left::before { - content: "\f0a5"; } - -.fa-hand-point-right::before { - content: "\f0a4"; } - -.fa-hand-point-up::before { - content: "\f0a6"; } - -.fa-hand-pointer::before { - content: "\f25a"; } - -.fa-hand-scissors::before { - content: "\f257"; } - -.fa-hand-sparkles::before { - content: "\e05d"; } - -.fa-hand-spock::before { - content: "\f259"; } - -.fa-handcuffs::before { - content: "\e4f8"; } - -.fa-hands::before { - content: "\f2a7"; } - -.fa-sign-language::before { - content: "\f2a7"; } - -.fa-signing::before { - content: "\f2a7"; } +.fa-volume-off::before { + content: "\f026"; } .fa-hands-asl-interpreting::before { content: "\f2a3"; } @@ -3148,902 +4106,17 @@ readers do not read off random characters that represent icons */ .fa-hands-american-sign-language-interpreting::before { content: "\f2a3"; } -.fa-hands-bound::before { - content: "\e4f9"; } +.fa-gear::before { + content: "\f013"; } -.fa-hands-bubbles::before { - content: "\e05e"; } +.fa-cog::before { + content: "\f013"; } -.fa-hands-wash::before { - content: "\e05e"; } +.fa-droplet-slash::before { + content: "\f5c7"; } -.fa-hands-clapping::before { - content: "\e1a8"; } - -.fa-hands-holding::before { - content: "\f4c2"; } - -.fa-hands-holding-child::before { - content: "\e4fa"; } - -.fa-hands-holding-circle::before { - content: "\e4fb"; } - -.fa-hands-praying::before { - content: "\f684"; } - -.fa-praying-hands::before { - content: "\f684"; } - -.fa-handshake::before { - content: "\f2b5"; } - -.fa-handshake-angle::before { - content: "\f4c4"; } - -.fa-hands-helping::before { - content: "\f4c4"; } - -.fa-handshake-simple::before { - content: "\f4c6"; } - -.fa-handshake-alt::before { - content: "\f4c6"; } - -.fa-handshake-simple-slash::before { - content: "\e05f"; } - -.fa-handshake-alt-slash::before { - content: "\e05f"; } - -.fa-handshake-slash::before { - content: "\e060"; } - -.fa-hanukiah::before { - content: "\f6e6"; } - -.fa-hard-drive::before { - content: "\f0a0"; } - -.fa-hdd::before { - content: "\f0a0"; } - -.fa-hashtag::before { - content: "\23"; } - -.fa-hat-cowboy::before { - content: "\f8c0"; } - -.fa-hat-cowboy-side::before { - content: "\f8c1"; } - -.fa-hat-wizard::before { - content: "\f6e8"; } - -.fa-head-side-cough::before { - content: "\e061"; } - -.fa-head-side-cough-slash::before { - content: "\e062"; } - -.fa-head-side-mask::before { - content: "\e063"; } - -.fa-head-side-virus::before { - content: "\e064"; } - -.fa-heading::before { - content: "\f1dc"; } - -.fa-header::before { - content: "\f1dc"; } - -.fa-headphones::before { - content: "\f025"; } - -.fa-headphones-simple::before { - content: "\f58f"; } - -.fa-headphones-alt::before { - content: "\f58f"; } - -.fa-headset::before { - content: "\f590"; } - -.fa-heart::before { - content: "\f004"; } - -.fa-heart-circle-bolt::before { - content: "\e4fc"; } - -.fa-heart-circle-check::before { - content: "\e4fd"; } - -.fa-heart-circle-exclamation::before { - content: "\e4fe"; } - -.fa-heart-circle-minus::before { - content: "\e4ff"; } - -.fa-heart-circle-plus::before { - content: "\e500"; } - -.fa-heart-circle-xmark::before { - content: "\e501"; } - -.fa-heart-crack::before { - content: "\f7a9"; } - -.fa-heart-broken::before { - content: "\f7a9"; } - -.fa-heart-pulse::before { - content: "\f21e"; } - -.fa-heartbeat::before { - content: "\f21e"; } - -.fa-helicopter::before { - content: "\f533"; } - -.fa-helicopter-symbol::before { - content: "\e502"; } - -.fa-helmet-safety::before { - content: "\f807"; } - -.fa-hard-hat::before { - content: "\f807"; } - -.fa-hat-hard::before { - content: "\f807"; } - -.fa-helmet-un::before { - content: "\e503"; } - -.fa-highlighter::before { - content: "\f591"; } - -.fa-hill-avalanche::before { - content: "\e507"; } - -.fa-hill-rockslide::before { - content: "\e508"; } - -.fa-hippo::before { - content: "\f6ed"; } - -.fa-hockey-puck::before { - content: "\f453"; } - -.fa-holly-berry::before { - content: "\f7aa"; } - -.fa-horse::before { - content: "\f6f0"; } - -.fa-horse-head::before { - content: "\f7ab"; } - -.fa-hospital::before { - content: "\f0f8"; } - -.fa-hospital-alt::before { - content: "\f0f8"; } - -.fa-hospital-wide::before { - content: "\f0f8"; } - -.fa-hospital-user::before { - content: "\f80d"; } - -.fa-hot-tub-person::before { - content: "\f593"; } - -.fa-hot-tub::before { - content: "\f593"; } - -.fa-hotdog::before { - content: "\f80f"; } - -.fa-hotel::before { - content: "\f594"; } - -.fa-hourglass::before { - content: "\f254"; } - -.fa-hourglass-2::before { - content: "\f254"; } - -.fa-hourglass-half::before { - content: "\f254"; } - -.fa-hourglass-empty::before { - content: "\f252"; } - -.fa-hourglass-end::before { - content: "\f253"; } - -.fa-hourglass-3::before { - content: "\f253"; } - -.fa-hourglass-start::before { - content: "\f251"; } - -.fa-hourglass-1::before { - content: "\f251"; } - -.fa-house::before { - content: "\f015"; } - -.fa-home::before { - content: "\f015"; } - -.fa-home-alt::before { - content: "\f015"; } - -.fa-home-lg-alt::before { - content: "\f015"; } - -.fa-house-chimney::before { - content: "\e3af"; } - -.fa-home-lg::before { - content: "\e3af"; } - -.fa-house-chimney-crack::before { - content: "\f6f1"; } - -.fa-house-damage::before { - content: "\f6f1"; } - -.fa-house-chimney-medical::before { - content: "\f7f2"; } - -.fa-clinic-medical::before { - content: "\f7f2"; } - -.fa-house-chimney-user::before { - content: "\e065"; } - -.fa-house-chimney-window::before { - content: "\e00d"; } - -.fa-house-circle-check::before { - content: "\e509"; } - -.fa-house-circle-exclamation::before { - content: "\e50a"; } - -.fa-house-circle-xmark::before { - content: "\e50b"; } - -.fa-house-crack::before { - content: "\e3b1"; } - -.fa-house-fire::before { - content: "\e50c"; } - -.fa-house-flag::before { - content: "\e50d"; } - -.fa-house-flood-water::before { - content: "\e50e"; } - -.fa-house-flood-water-circle-arrow-right::before { - content: "\e50f"; } - -.fa-house-laptop::before { - content: "\e066"; } - -.fa-laptop-house::before { - content: "\e066"; } - -.fa-house-lock::before { - content: "\e510"; } - -.fa-house-medical::before { - content: "\e3b2"; } - -.fa-house-medical-circle-check::before { - content: "\e511"; } - -.fa-house-medical-circle-exclamation::before { - content: "\e512"; } - -.fa-house-medical-circle-xmark::before { - content: "\e513"; } - -.fa-house-medical-flag::before { - content: "\e514"; } - -.fa-house-signal::before { - content: "\e012"; } - -.fa-house-tsunami::before { - content: "\e515"; } - -.fa-house-user::before { - content: "\e1b0"; } - -.fa-home-user::before { - content: "\e1b0"; } - -.fa-hryvnia-sign::before { - content: "\f6f2"; } - -.fa-hryvnia::before { - content: "\f6f2"; } - -.fa-hurricane::before { - content: "\f751"; } - -.fa-i::before { - content: "\49"; } - -.fa-i-cursor::before { - content: "\f246"; } - -.fa-ice-cream::before { - content: "\f810"; } - -.fa-icicles::before { - content: "\f7ad"; } - -.fa-icons::before { - content: "\f86d"; } - -.fa-heart-music-camera-bolt::before { - content: "\f86d"; } - -.fa-id-badge::before { - content: "\f2c1"; } - -.fa-id-card::before { - content: "\f2c2"; } - -.fa-drivers-license::before { - content: "\f2c2"; } - -.fa-id-card-clip::before { - content: "\f47f"; } - -.fa-id-card-alt::before { - content: "\f47f"; } - -.fa-igloo::before { - content: "\f7ae"; } - -.fa-image::before { - content: "\f03e"; } - -.fa-image-portrait::before { - content: "\f3e0"; } - -.fa-portrait::before { - content: "\f3e0"; } - -.fa-images::before { - content: "\f302"; } - -.fa-inbox::before { - content: "\f01c"; } - -.fa-indent::before { - content: "\f03c"; } - -.fa-indian-rupee-sign::before { - content: "\e1bc"; } - -.fa-indian-rupee::before { - content: "\e1bc"; } - -.fa-inr::before { - content: "\e1bc"; } - -.fa-industry::before { - content: "\f275"; } - -.fa-infinity::before { - content: "\f534"; } - -.fa-info::before { - content: "\f129"; } - -.fa-italic::before { - content: "\f033"; } - -.fa-j::before { - content: "\4a"; } - -.fa-jar::before { - content: "\e516"; } - -.fa-jar-wheat::before { - content: "\e517"; } - -.fa-jedi::before { - content: "\f669"; } - -.fa-jet-fighter::before { - content: "\f0fb"; } - -.fa-fighter-jet::before { - content: "\f0fb"; } - -.fa-jet-fighter-up::before { - content: "\e518"; } - -.fa-joint::before { - content: "\f595"; } - -.fa-jug-detergent::before { - content: "\e519"; } - -.fa-k::before { - content: "\4b"; } - -.fa-kaaba::before { - content: "\f66b"; } - -.fa-key::before { - content: "\f084"; } - -.fa-keyboard::before { - content: "\f11c"; } - -.fa-khanda::before { - content: "\f66d"; } - -.fa-kip-sign::before { - content: "\e1c4"; } - -.fa-kit-medical::before { - content: "\f479"; } - -.fa-first-aid::before { - content: "\f479"; } - -.fa-kitchen-set::before { - content: "\e51a"; } - -.fa-kiwi-bird::before { - content: "\f535"; } - -.fa-l::before { - content: "\4c"; } - -.fa-land-mine-on::before { - content: "\e51b"; } - -.fa-landmark::before { - content: "\f66f"; } - -.fa-landmark-dome::before { - content: "\f752"; } - -.fa-landmark-alt::before { - content: "\f752"; } - -.fa-landmark-flag::before { - content: "\e51c"; } - -.fa-language::before { - content: "\f1ab"; } - -.fa-laptop::before { - content: "\f109"; } - -.fa-laptop-code::before { - content: "\f5fc"; } - -.fa-laptop-file::before { - content: "\e51d"; } - -.fa-laptop-medical::before { - content: "\f812"; } - -.fa-lari-sign::before { - content: "\e1c8"; } - -.fa-layer-group::before { - content: "\f5fd"; } - -.fa-leaf::before { - content: "\f06c"; } - -.fa-left-long::before { - content: "\f30a"; } - -.fa-long-arrow-alt-left::before { - content: "\f30a"; } - -.fa-left-right::before { - content: "\f337"; } - -.fa-arrows-alt-h::before { - content: "\f337"; } - -.fa-lemon::before { - content: "\f094"; } - -.fa-less-than::before { - content: "\3c"; } - -.fa-less-than-equal::before { - content: "\f537"; } - -.fa-life-ring::before { - content: "\f1cd"; } - -.fa-lightbulb::before { - content: "\f0eb"; } - -.fa-lines-leaning::before { - content: "\e51e"; } - -.fa-link::before { - content: "\f0c1"; } - -.fa-chain::before { - content: "\f0c1"; } - -.fa-link-slash::before { - content: "\f127"; } - -.fa-chain-broken::before { - content: "\f127"; } - -.fa-chain-slash::before { - content: "\f127"; } - -.fa-unlink::before { - content: "\f127"; } - -.fa-lira-sign::before { - content: "\f195"; } - -.fa-list::before { - content: "\f03a"; } - -.fa-list-squares::before { - content: "\f03a"; } - -.fa-list-check::before { - content: "\f0ae"; } - -.fa-tasks::before { - content: "\f0ae"; } - -.fa-list-ol::before { - content: "\f0cb"; } - -.fa-list-1-2::before { - content: "\f0cb"; } - -.fa-list-numeric::before { - content: "\f0cb"; } - -.fa-list-ul::before { - content: "\f0ca"; } - -.fa-list-dots::before { - content: "\f0ca"; } - -.fa-litecoin-sign::before { - content: "\e1d3"; } - -.fa-location-arrow::before { - content: "\f124"; } - -.fa-location-crosshairs::before { - content: "\f601"; } - -.fa-location::before { - content: "\f601"; } - -.fa-location-dot::before { - content: "\f3c5"; } - -.fa-map-marker-alt::before { - content: "\f3c5"; } - -.fa-location-pin::before { - content: "\f041"; } - -.fa-map-marker::before { - content: "\f041"; } - -.fa-location-pin-lock::before { - content: "\e51f"; } - -.fa-lock::before { - content: "\f023"; } - -.fa-lock-open::before { - content: "\f3c1"; } - -.fa-locust::before { - content: "\e520"; } - -.fa-lungs::before { - content: "\f604"; } - -.fa-lungs-virus::before { - content: "\e067"; } - -.fa-m::before { - content: "\4d"; } - -.fa-magnet::before { - content: "\f076"; } - -.fa-magnifying-glass::before { - content: "\f002"; } - -.fa-search::before { - content: "\f002"; } - -.fa-magnifying-glass-arrow-right::before { - content: "\e521"; } - -.fa-magnifying-glass-chart::before { - content: "\e522"; } - -.fa-magnifying-glass-dollar::before { - content: "\f688"; } - -.fa-search-dollar::before { - content: "\f688"; } - -.fa-magnifying-glass-location::before { - content: "\f689"; } - -.fa-search-location::before { - content: "\f689"; } - -.fa-magnifying-glass-minus::before { - content: "\f010"; } - -.fa-search-minus::before { - content: "\f010"; } - -.fa-magnifying-glass-plus::before { - content: "\f00e"; } - -.fa-search-plus::before { - content: "\f00e"; } - -.fa-manat-sign::before { - content: "\e1d5"; } - -.fa-map::before { - content: "\f279"; } - -.fa-map-location::before { - content: "\f59f"; } - -.fa-map-marked::before { - content: "\f59f"; } - -.fa-map-location-dot::before { - content: "\f5a0"; } - -.fa-map-marked-alt::before { - content: "\f5a0"; } - -.fa-map-pin::before { - content: "\f276"; } - -.fa-marker::before { - content: "\f5a1"; } - -.fa-mars::before { - content: "\f222"; } - -.fa-mars-and-venus::before { - content: "\f224"; } - -.fa-mars-and-venus-burst::before { - content: "\e523"; } - -.fa-mars-double::before { - content: "\f227"; } - -.fa-mars-stroke::before { - content: "\f229"; } - -.fa-mars-stroke-right::before { - content: "\f22b"; } - -.fa-mars-stroke-h::before { - content: "\f22b"; } - -.fa-mars-stroke-up::before { - content: "\f22a"; } - -.fa-mars-stroke-v::before { - content: "\f22a"; } - -.fa-martini-glass::before { - content: "\f57b"; } - -.fa-glass-martini-alt::before { - content: "\f57b"; } - -.fa-martini-glass-citrus::before { - content: "\f561"; } - -.fa-cocktail::before { - content: "\f561"; } - -.fa-martini-glass-empty::before { - content: "\f000"; } - -.fa-glass-martini::before { - content: "\f000"; } - -.fa-mask::before { - content: "\f6fa"; } - -.fa-mask-face::before { - content: "\e1d7"; } - -.fa-mask-ventilator::before { - content: "\e524"; } - -.fa-masks-theater::before { - content: "\f630"; } - -.fa-theater-masks::before { - content: "\f630"; } - -.fa-mattress-pillow::before { - content: "\e525"; } - -.fa-maximize::before { - content: "\f31e"; } - -.fa-expand-arrows-alt::before { - content: "\f31e"; } - -.fa-medal::before { - content: "\f5a2"; } - -.fa-memory::before { - content: "\f538"; } - -.fa-menorah::before { - content: "\f676"; } - -.fa-mercury::before { - content: "\f223"; } - -.fa-message::before { - content: "\f27a"; } - -.fa-comment-alt::before { - content: "\f27a"; } - -.fa-meteor::before { - content: "\f753"; } - -.fa-microchip::before { - content: "\f2db"; } - -.fa-microphone::before { - content: "\f130"; } - -.fa-microphone-lines::before { - content: "\f3c9"; } - -.fa-microphone-alt::before { - content: "\f3c9"; } - -.fa-microphone-lines-slash::before { - content: "\f539"; } - -.fa-microphone-alt-slash::before { - content: "\f539"; } - -.fa-microphone-slash::before { - content: "\f131"; } - -.fa-microscope::before { - content: "\f610"; } - -.fa-mill-sign::before { - content: "\e1ed"; } - -.fa-minimize::before { - content: "\f78c"; } - -.fa-compress-arrows-alt::before { - content: "\f78c"; } - -.fa-minus::before { - content: "\f068"; } - -.fa-subtract::before { - content: "\f068"; } - -.fa-mitten::before { - content: "\f7b5"; } - -.fa-mobile::before { - content: "\f3ce"; } - -.fa-mobile-android::before { - content: "\f3ce"; } - -.fa-mobile-phone::before { - content: "\f3ce"; } - -.fa-mobile-button::before { - content: "\f10b"; } - -.fa-mobile-retro::before { - content: "\e527"; } - -.fa-mobile-screen::before { - content: "\f3cf"; } - -.fa-mobile-android-alt::before { - content: "\f3cf"; } - -.fa-mobile-screen-button::before { - content: "\f3cd"; } - -.fa-mobile-alt::before { - content: "\f3cd"; } - -.fa-money-bill::before { - content: "\f0d6"; } - -.fa-money-bill-1::before { - content: "\f3d1"; } - -.fa-money-bill-alt::before { - content: "\f3d1"; } - -.fa-money-bill-1-wave::before { - content: "\f53b"; } - -.fa-money-bill-wave-alt::before { - content: "\f53b"; } - -.fa-money-bill-transfer::before { - content: "\e528"; } - -.fa-money-bill-trend-up::before { - content: "\e529"; } - -.fa-money-bill-wave::before { - content: "\f53a"; } - -.fa-money-bill-wheat::before { - content: "\e52a"; } - -.fa-money-bills::before { - content: "\e1f3"; } - -.fa-money-check::before { - content: "\f53c"; } - -.fa-money-check-dollar::before { - content: "\f53d"; } - -.fa-money-check-alt::before { - content: "\f53d"; } - -.fa-monument::before { - content: "\f5a6"; } - -.fa-moon::before { - content: "\f186"; } - -.fa-mortar-pestle::before { - content: "\f5a7"; } +.fa-tint-slash::before { + content: "\f5c7"; } .fa-mosque::before { content: "\f678"; } @@ -4051,1223 +4124,38 @@ readers do not read off random characters that represent icons */ .fa-mosquito::before { content: "\e52b"; } -.fa-mosquito-net::before { - content: "\e52c"; } - -.fa-motorcycle::before { - content: "\f21c"; } - -.fa-mound::before { - content: "\e52d"; } - -.fa-mountain::before { - content: "\f6fc"; } - -.fa-mountain-city::before { - content: "\e52e"; } - -.fa-mountain-sun::before { - content: "\e52f"; } - -.fa-mug-hot::before { - content: "\f7b6"; } - -.fa-mug-saucer::before { - content: "\f0f4"; } - -.fa-coffee::before { - content: "\f0f4"; } - -.fa-music::before { - content: "\f001"; } - -.fa-n::before { - content: "\4e"; } - -.fa-naira-sign::before { - content: "\e1f6"; } - -.fa-network-wired::before { - content: "\f6ff"; } - -.fa-neuter::before { - content: "\f22c"; } - -.fa-newspaper::before { - content: "\f1ea"; } - -.fa-not-equal::before { - content: "\f53e"; } - -.fa-note-sticky::before { - content: "\f249"; } - -.fa-sticky-note::before { - content: "\f249"; } - -.fa-notes-medical::before { - content: "\f481"; } - -.fa-o::before { - content: "\4f"; } - -.fa-object-group::before { - content: "\f247"; } - -.fa-object-ungroup::before { - content: "\f248"; } - -.fa-oil-can::before { - content: "\f613"; } - -.fa-oil-well::before { - content: "\e532"; } - -.fa-om::before { - content: "\f679"; } - -.fa-otter::before { - content: "\f700"; } - -.fa-outdent::before { - content: "\f03b"; } - -.fa-dedent::before { - content: "\f03b"; } - -.fa-p::before { - content: "\50"; } - -.fa-pager::before { - content: "\f815"; } - -.fa-paint-roller::before { - content: "\f5aa"; } - -.fa-paintbrush::before { - content: "\f1fc"; } - -.fa-paint-brush::before { - content: "\f1fc"; } - -.fa-palette::before { - content: "\f53f"; } - -.fa-pallet::before { - content: "\f482"; } - -.fa-panorama::before { - content: "\e209"; } - -.fa-paper-plane::before { - content: "\f1d8"; } - -.fa-paperclip::before { - content: "\f0c6"; } - -.fa-parachute-box::before { - content: "\f4cd"; } - -.fa-paragraph::before { - content: "\f1dd"; } - -.fa-passport::before { - content: "\f5ab"; } - -.fa-paste::before { - content: "\f0ea"; } - -.fa-file-clipboard::before { - content: "\f0ea"; } - -.fa-pause::before { - content: "\f04c"; } - -.fa-paw::before { - content: "\f1b0"; } - -.fa-peace::before { - content: "\f67c"; } - -.fa-pen::before { - content: "\f304"; } - -.fa-pen-clip::before { - content: "\f305"; } - -.fa-pen-alt::before { - content: "\f305"; } - -.fa-pen-fancy::before { - content: "\f5ac"; } - -.fa-pen-nib::before { - content: "\f5ad"; } - -.fa-pen-ruler::before { - content: "\f5ae"; } - -.fa-pencil-ruler::before { - content: "\f5ae"; } - -.fa-pen-to-square::before { - content: "\f044"; } - -.fa-edit::before { - content: "\f044"; } - -.fa-pencil::before { - content: "\f303"; } - -.fa-pencil-alt::before { - content: "\f303"; } - -.fa-people-arrows-left-right::before { - content: "\e068"; } - -.fa-people-arrows::before { - content: "\e068"; } - -.fa-people-carry-box::before { - content: "\f4ce"; } - -.fa-people-carry::before { - content: "\f4ce"; } - -.fa-people-group::before { - content: "\e533"; } - -.fa-people-line::before { - content: "\e534"; } - -.fa-people-pulling::before { - content: "\e535"; } - -.fa-people-robbery::before { - content: "\e536"; } - -.fa-people-roof::before { - content: "\e537"; } - -.fa-pepper-hot::before { - content: "\f816"; } - -.fa-percent::before { - content: "\25"; } - -.fa-percentage::before { - content: "\25"; } - -.fa-person::before { - content: "\f183"; } - -.fa-male::before { - content: "\f183"; } - -.fa-person-arrow-down-to-line::before { - content: "\e538"; } - -.fa-person-arrow-up-from-line::before { - content: "\e539"; } - -.fa-person-biking::before { - content: "\f84a"; } - -.fa-biking::before { - content: "\f84a"; } - -.fa-person-booth::before { - content: "\f756"; } - -.fa-person-breastfeeding::before { - content: "\e53a"; } - -.fa-person-burst::before { - content: "\e53b"; } - -.fa-person-cane::before { - content: "\e53c"; } - -.fa-person-chalkboard::before { - content: "\e53d"; } - -.fa-person-circle-check::before { - content: "\e53e"; } - -.fa-person-circle-exclamation::before { - content: "\e53f"; } - -.fa-person-circle-minus::before { - content: "\e540"; } - -.fa-person-circle-plus::before { - content: "\e541"; } - -.fa-person-circle-question::before { - content: "\e542"; } - -.fa-person-circle-xmark::before { - content: "\e543"; } - -.fa-person-digging::before { - content: "\f85e"; } - -.fa-digging::before { - content: "\f85e"; } - -.fa-person-dots-from-line::before { - content: "\f470"; } - -.fa-diagnoses::before { - content: "\f470"; } - -.fa-person-dress::before { - content: "\f182"; } - -.fa-female::before { - content: "\f182"; } - -.fa-person-dress-burst::before { - content: "\e544"; } - -.fa-person-drowning::before { - content: "\e545"; } - -.fa-person-falling::before { - content: "\e546"; } - -.fa-person-falling-burst::before { - content: "\e547"; } - -.fa-person-half-dress::before { - content: "\e548"; } - -.fa-person-harassing::before { - content: "\e549"; } - -.fa-person-hiking::before { - content: "\f6ec"; } - -.fa-hiking::before { - content: "\f6ec"; } - -.fa-person-military-pointing::before { - content: "\e54a"; } +.fa-star-of-david::before { + content: "\f69a"; } .fa-person-military-rifle::before { content: "\e54b"; } -.fa-person-military-to-person::before { - content: "\e54c"; } +.fa-cart-shopping::before { + content: "\f07a"; } -.fa-person-praying::before { - content: "\f683"; } +.fa-shopping-cart::before { + content: "\f07a"; } -.fa-pray::before { - content: "\f683"; } - -.fa-person-pregnant::before { - content: "\e31e"; } - -.fa-person-rays::before { - content: "\e54d"; } - -.fa-person-rifle::before { - content: "\e54e"; } - -.fa-person-running::before { - content: "\f70c"; } - -.fa-running::before { - content: "\f70c"; } - -.fa-person-shelter::before { - content: "\e54f"; } - -.fa-person-skating::before { - content: "\f7c5"; } - -.fa-skating::before { - content: "\f7c5"; } - -.fa-person-skiing::before { - content: "\f7c9"; } - -.fa-skiing::before { - content: "\f7c9"; } - -.fa-person-skiing-nordic::before { - content: "\f7ca"; } - -.fa-skiing-nordic::before { - content: "\f7ca"; } - -.fa-person-snowboarding::before { - content: "\f7ce"; } - -.fa-snowboarding::before { - content: "\f7ce"; } - -.fa-person-swimming::before { - content: "\f5c4"; } - -.fa-swimmer::before { - content: "\f5c4"; } - -.fa-person-through-window::before { - content: "\e433"; } - -.fa-person-walking::before { - content: "\f554"; } - -.fa-walking::before { - content: "\f554"; } - -.fa-person-walking-arrow-loop-left::before { - content: "\e551"; } - -.fa-person-walking-arrow-right::before { - content: "\e552"; } - -.fa-person-walking-dashed-line-arrow-right::before { - content: "\e553"; } - -.fa-person-walking-luggage::before { - content: "\e554"; } - -.fa-person-walking-with-cane::before { - content: "\f29d"; } - -.fa-blind::before { - content: "\f29d"; } - -.fa-peseta-sign::before { - content: "\e221"; } - -.fa-peso-sign::before { - content: "\e222"; } - -.fa-phone::before { - content: "\f095"; } - -.fa-phone-flip::before { - content: "\f879"; } - -.fa-phone-alt::before { - content: "\f879"; } - -.fa-phone-slash::before { - content: "\f3dd"; } - -.fa-phone-volume::before { - content: "\f2a0"; } - -.fa-volume-control-phone::before { - content: "\f2a0"; } - -.fa-photo-film::before { - content: "\f87c"; } - -.fa-photo-video::before { - content: "\f87c"; } - -.fa-piggy-bank::before { - content: "\f4d3"; } - -.fa-pills::before { - content: "\f484"; } - -.fa-pizza-slice::before { - content: "\f818"; } - -.fa-place-of-worship::before { - content: "\f67f"; } - -.fa-plane::before { - content: "\f072"; } - -.fa-plane-arrival::before { - content: "\f5af"; } - -.fa-plane-circle-check::before { - content: "\e555"; } - -.fa-plane-circle-exclamation::before { - content: "\e556"; } - -.fa-plane-circle-xmark::before { - content: "\e557"; } - -.fa-plane-departure::before { - content: "\f5b0"; } - -.fa-plane-lock::before { - content: "\e558"; } - -.fa-plane-slash::before { - content: "\e069"; } - -.fa-plane-up::before { - content: "\e22d"; } - -.fa-plant-wilt::before { - content: "\e43b"; } - -.fa-plate-wheat::before { - content: "\e55a"; } - -.fa-play::before { - content: "\f04b"; } - -.fa-plug::before { - content: "\f1e6"; } - -.fa-plug-circle-bolt::before { - content: "\e55b"; } - -.fa-plug-circle-check::before { - content: "\e55c"; } - -.fa-plug-circle-exclamation::before { - content: "\e55d"; } - -.fa-plug-circle-minus::before { - content: "\e55e"; } +.fa-vials::before { + content: "\f493"; } .fa-plug-circle-plus::before { content: "\e55f"; } -.fa-plug-circle-xmark::before { - content: "\e560"; } +.fa-place-of-worship::before { + content: "\f67f"; } -.fa-plus::before { - content: "\2b"; } +.fa-grip-vertical::before { + content: "\f58e"; } -.fa-add::before { - content: "\2b"; } +.fa-arrow-turn-up::before { + content: "\f148"; } -.fa-plus-minus::before { - content: "\e43c"; } +.fa-level-up::before { + content: "\f148"; } -.fa-podcast::before { - content: "\f2ce"; } - -.fa-poo::before { - content: "\f2fe"; } - -.fa-poo-storm::before { - content: "\f75a"; } - -.fa-poo-bolt::before { - content: "\f75a"; } - -.fa-poop::before { - content: "\f619"; } - -.fa-power-off::before { - content: "\f011"; } - -.fa-prescription::before { - content: "\f5b1"; } - -.fa-prescription-bottle::before { - content: "\f485"; } - -.fa-prescription-bottle-medical::before { - content: "\f486"; } - -.fa-prescription-bottle-alt::before { - content: "\f486"; } - -.fa-print::before { - content: "\f02f"; } - -.fa-pump-medical::before { - content: "\e06a"; } - -.fa-pump-soap::before { - content: "\e06b"; } - -.fa-puzzle-piece::before { - content: "\f12e"; } - -.fa-q::before { - content: "\51"; } - -.fa-qrcode::before { - content: "\f029"; } - -.fa-question::before { - content: "\3f"; } - -.fa-quote-left::before { - content: "\f10d"; } - -.fa-quote-left-alt::before { - content: "\f10d"; } - -.fa-quote-right::before { - content: "\f10e"; } - -.fa-quote-right-alt::before { - content: "\f10e"; } - -.fa-r::before { - content: "\52"; } - -.fa-radiation::before { - content: "\f7b9"; } - -.fa-radio::before { - content: "\f8d7"; } - -.fa-rainbow::before { - content: "\f75b"; } - -.fa-ranking-star::before { - content: "\e561"; } - -.fa-receipt::before { - content: "\f543"; } - -.fa-record-vinyl::before { - content: "\f8d9"; } - -.fa-rectangle-ad::before { - content: "\f641"; } - -.fa-ad::before { - content: "\f641"; } - -.fa-rectangle-list::before { - content: "\f022"; } - -.fa-list-alt::before { - content: "\f022"; } - -.fa-rectangle-xmark::before { - content: "\f410"; } - -.fa-rectangle-times::before { - content: "\f410"; } - -.fa-times-rectangle::before { - content: "\f410"; } - -.fa-window-close::before { - content: "\f410"; } - -.fa-recycle::before { - content: "\f1b8"; } - -.fa-registered::before { - content: "\f25d"; } - -.fa-repeat::before { - content: "\f363"; } - -.fa-reply::before { - content: "\f3e5"; } - -.fa-mail-reply::before { - content: "\f3e5"; } - -.fa-reply-all::before { - content: "\f122"; } - -.fa-mail-reply-all::before { - content: "\f122"; } - -.fa-republican::before { - content: "\f75e"; } - -.fa-restroom::before { - content: "\f7bd"; } - -.fa-retweet::before { - content: "\f079"; } - -.fa-ribbon::before { - content: "\f4d6"; } - -.fa-right-from-bracket::before { - content: "\f2f5"; } - -.fa-sign-out-alt::before { - content: "\f2f5"; } - -.fa-right-left::before { - content: "\f362"; } - -.fa-exchange-alt::before { - content: "\f362"; } - -.fa-right-long::before { - content: "\f30b"; } - -.fa-long-arrow-alt-right::before { - content: "\f30b"; } - -.fa-right-to-bracket::before { - content: "\f2f6"; } - -.fa-sign-in-alt::before { - content: "\f2f6"; } - -.fa-ring::before { - content: "\f70b"; } - -.fa-road::before { - content: "\f018"; } - -.fa-road-barrier::before { - content: "\e562"; } - -.fa-road-bridge::before { - content: "\e563"; } - -.fa-road-circle-check::before { - content: "\e564"; } - -.fa-road-circle-exclamation::before { - content: "\e565"; } - -.fa-road-circle-xmark::before { - content: "\e566"; } - -.fa-road-lock::before { - content: "\e567"; } - -.fa-road-spikes::before { - content: "\e568"; } - -.fa-robot::before { - content: "\f544"; } - -.fa-rocket::before { - content: "\f135"; } - -.fa-rotate::before { - content: "\f2f1"; } - -.fa-sync-alt::before { - content: "\f2f1"; } - -.fa-rotate-left::before { - content: "\f2ea"; } - -.fa-rotate-back::before { - content: "\f2ea"; } - -.fa-rotate-backward::before { - content: "\f2ea"; } - -.fa-undo-alt::before { - content: "\f2ea"; } - -.fa-rotate-right::before { - content: "\f2f9"; } - -.fa-redo-alt::before { - content: "\f2f9"; } - -.fa-rotate-forward::before { - content: "\f2f9"; } - -.fa-route::before { - content: "\f4d7"; } - -.fa-rss::before { - content: "\f09e"; } - -.fa-feed::before { - content: "\f09e"; } - -.fa-ruble-sign::before { - content: "\f158"; } - -.fa-rouble::before { - content: "\f158"; } - -.fa-rub::before { - content: "\f158"; } - -.fa-ruble::before { - content: "\f158"; } - -.fa-rug::before { - content: "\e569"; } - -.fa-ruler::before { - content: "\f545"; } - -.fa-ruler-combined::before { - content: "\f546"; } - -.fa-ruler-horizontal::before { - content: "\f547"; } - -.fa-ruler-vertical::before { - content: "\f548"; } - -.fa-rupee-sign::before { - content: "\f156"; } - -.fa-rupee::before { - content: "\f156"; } - -.fa-rupiah-sign::before { - content: "\e23d"; } - -.fa-s::before { - content: "\53"; } - -.fa-sack-dollar::before { - content: "\f81d"; } - -.fa-sack-xmark::before { - content: "\e56a"; } - -.fa-sailboat::before { - content: "\e445"; } - -.fa-satellite::before { - content: "\f7bf"; } - -.fa-satellite-dish::before { - content: "\f7c0"; } - -.fa-scale-balanced::before { - content: "\f24e"; } - -.fa-balance-scale::before { - content: "\f24e"; } - -.fa-scale-unbalanced::before { - content: "\f515"; } - -.fa-balance-scale-left::before { - content: "\f515"; } - -.fa-scale-unbalanced-flip::before { - content: "\f516"; } - -.fa-balance-scale-right::before { - content: "\f516"; } - -.fa-school::before { - content: "\f549"; } - -.fa-school-circle-check::before { - content: "\e56b"; } - -.fa-school-circle-exclamation::before { - content: "\e56c"; } - -.fa-school-circle-xmark::before { - content: "\e56d"; } - -.fa-school-flag::before { - content: "\e56e"; } - -.fa-school-lock::before { - content: "\e56f"; } - -.fa-scissors::before { - content: "\f0c4"; } - -.fa-cut::before { - content: "\f0c4"; } - -.fa-screwdriver::before { - content: "\f54a"; } - -.fa-screwdriver-wrench::before { - content: "\f7d9"; } - -.fa-tools::before { - content: "\f7d9"; } - -.fa-scroll::before { - content: "\f70e"; } - -.fa-scroll-torah::before { - content: "\f6a0"; } - -.fa-torah::before { - content: "\f6a0"; } - -.fa-sd-card::before { - content: "\f7c2"; } - -.fa-section::before { - content: "\e447"; } - -.fa-seedling::before { - content: "\f4d8"; } - -.fa-sprout::before { - content: "\f4d8"; } - -.fa-server::before { - content: "\f233"; } - -.fa-shapes::before { - content: "\f61f"; } - -.fa-triangle-circle-square::before { - content: "\f61f"; } - -.fa-share::before { - content: "\f064"; } - -.fa-arrow-turn-right::before { - content: "\f064"; } - -.fa-mail-forward::before { - content: "\f064"; } - -.fa-share-from-square::before { - content: "\f14d"; } - -.fa-share-square::before { - content: "\f14d"; } - -.fa-share-nodes::before { - content: "\f1e0"; } - -.fa-share-alt::before { - content: "\f1e0"; } - -.fa-sheet-plastic::before { - content: "\e571"; } - -.fa-shekel-sign::before { - content: "\f20b"; } - -.fa-ils::before { - content: "\f20b"; } - -.fa-shekel::before { - content: "\f20b"; } - -.fa-sheqel::before { - content: "\f20b"; } - -.fa-sheqel-sign::before { - content: "\f20b"; } - -.fa-shield::before { - content: "\f132"; } - -.fa-shield-blank::before { - content: "\f132"; } - -.fa-shield-cat::before { - content: "\e572"; } - -.fa-shield-dog::before { - content: "\e573"; } - -.fa-shield-halved::before { - content: "\f3ed"; } - -.fa-shield-alt::before { - content: "\f3ed"; } - -.fa-shield-heart::before { - content: "\e574"; } - -.fa-shield-virus::before { - content: "\e06c"; } - -.fa-ship::before { - content: "\f21a"; } - -.fa-shirt::before { - content: "\f553"; } - -.fa-t-shirt::before { - content: "\f553"; } - -.fa-tshirt::before { - content: "\f553"; } - -.fa-shoe-prints::before { - content: "\f54b"; } - -.fa-shop::before { - content: "\f54f"; } - -.fa-store-alt::before { - content: "\f54f"; } - -.fa-shop-lock::before { - content: "\e4a5"; } - -.fa-shop-slash::before { - content: "\e070"; } - -.fa-store-alt-slash::before { - content: "\e070"; } - -.fa-shower::before { - content: "\f2cc"; } - -.fa-shrimp::before { - content: "\e448"; } - -.fa-shuffle::before { - content: "\f074"; } - -.fa-random::before { - content: "\f074"; } - -.fa-shuttle-space::before { - content: "\f197"; } - -.fa-space-shuttle::before { - content: "\f197"; } - -.fa-sign-hanging::before { - content: "\f4d9"; } - -.fa-sign::before { - content: "\f4d9"; } - -.fa-signal::before { - content: "\f012"; } - -.fa-signal-5::before { - content: "\f012"; } - -.fa-signal-perfect::before { - content: "\f012"; } - -.fa-signature::before { - content: "\f5b7"; } - -.fa-signs-post::before { - content: "\f277"; } - -.fa-map-signs::before { - content: "\f277"; } - -.fa-sim-card::before { - content: "\f7c4"; } - -.fa-sink::before { - content: "\e06d"; } - -.fa-sitemap::before { - content: "\f0e8"; } - -.fa-skull::before { - content: "\f54c"; } - -.fa-skull-crossbones::before { - content: "\f714"; } - -.fa-slash::before { - content: "\f715"; } - -.fa-sleigh::before { - content: "\f7cc"; } - -.fa-sliders::before { - content: "\f1de"; } - -.fa-sliders-h::before { - content: "\f1de"; } - -.fa-smog::before { - content: "\f75f"; } - -.fa-smoking::before { - content: "\f48d"; } - -.fa-snowflake::before { - content: "\f2dc"; } - -.fa-snowman::before { - content: "\f7d0"; } - -.fa-snowplow::before { - content: "\f7d2"; } - -.fa-soap::before { - content: "\e06e"; } - -.fa-socks::before { - content: "\f696"; } - -.fa-solar-panel::before { - content: "\f5ba"; } - -.fa-sort::before { - content: "\f0dc"; } - -.fa-unsorted::before { - content: "\f0dc"; } - -.fa-sort-down::before { - content: "\f0dd"; } - -.fa-sort-desc::before { - content: "\f0dd"; } - -.fa-sort-up::before { - content: "\f0de"; } - -.fa-sort-asc::before { - content: "\f0de"; } - -.fa-spa::before { - content: "\f5bb"; } - -.fa-spaghetti-monster-flying::before { - content: "\f67b"; } - -.fa-pastafarianism::before { - content: "\f67b"; } - -.fa-spell-check::before { - content: "\f891"; } - -.fa-spider::before { - content: "\f717"; } - -.fa-spinner::before { - content: "\f110"; } - -.fa-splotch::before { - content: "\f5bc"; } - -.fa-spoon::before { - content: "\f2e5"; } - -.fa-utensil-spoon::before { - content: "\f2e5"; } - -.fa-spray-can::before { - content: "\f5bd"; } - -.fa-spray-can-sparkles::before { - content: "\f5d0"; } - -.fa-air-freshener::before { - content: "\f5d0"; } - -.fa-square::before { - content: "\f0c8"; } - -.fa-square-arrow-up-right::before { - content: "\f14c"; } - -.fa-external-link-square::before { - content: "\f14c"; } - -.fa-square-caret-down::before { - content: "\f150"; } - -.fa-caret-square-down::before { - content: "\f150"; } - -.fa-square-caret-left::before { - content: "\f191"; } - -.fa-caret-square-left::before { - content: "\f191"; } - -.fa-square-caret-right::before { - content: "\f152"; } - -.fa-caret-square-right::before { - content: "\f152"; } - -.fa-square-caret-up::before { - content: "\f151"; } - -.fa-caret-square-up::before { - content: "\f151"; } - -.fa-square-check::before { - content: "\f14a"; } - -.fa-check-square::before { - content: "\f14a"; } - -.fa-square-envelope::before { - content: "\f199"; } - -.fa-envelope-square::before { - content: "\f199"; } - -.fa-square-full::before { - content: "\f45c"; } - -.fa-square-h::before { - content: "\f0fd"; } - -.fa-h-square::before { - content: "\f0fd"; } - -.fa-square-minus::before { - content: "\f146"; } - -.fa-minus-square::before { - content: "\f146"; } - -.fa-square-nfi::before { - content: "\e576"; } - -.fa-square-parking::before { - content: "\f540"; } - -.fa-parking::before { - content: "\f540"; } - -.fa-square-pen::before { - content: "\f14b"; } - -.fa-pen-square::before { - content: "\f14b"; } - -.fa-pencil-square::before { - content: "\f14b"; } - -.fa-square-person-confined::before { - content: "\e577"; } - -.fa-square-phone::before { - content: "\f098"; } - -.fa-phone-square::before { - content: "\f098"; } - -.fa-square-phone-flip::before { - content: "\f87b"; } - -.fa-phone-square-alt::before { - content: "\f87b"; } - -.fa-square-plus::before { - content: "\f0fe"; } - -.fa-plus-square::before { - content: "\f0fe"; } - -.fa-square-poll-horizontal::before { - content: "\f682"; } - -.fa-poll-h::before { - content: "\f682"; } - -.fa-square-poll-vertical::before { - content: "\f681"; } - -.fa-poll::before { - content: "\f681"; } +.fa-u::before { + content: "\55"; } .fa-square-root-variable::before { content: "\f698"; } @@ -5275,299 +4163,44 @@ readers do not read off random characters that represent icons */ .fa-square-root-alt::before { content: "\f698"; } -.fa-square-rss::before { - content: "\f143"; } +.fa-clock::before { + content: "\f017"; } -.fa-rss-square::before { - content: "\f143"; } +.fa-clock-four::before { + content: "\f017"; } -.fa-square-share-nodes::before { - content: "\f1e1"; } +.fa-backward-step::before { + content: "\f048"; } -.fa-share-alt-square::before { - content: "\f1e1"; } +.fa-step-backward::before { + content: "\f048"; } -.fa-square-up-right::before { - content: "\f360"; } +.fa-pallet::before { + content: "\f482"; } -.fa-external-link-square-alt::before { - content: "\f360"; } +.fa-faucet::before { + content: "\e005"; } -.fa-square-virus::before { - content: "\e578"; } +.fa-baseball-bat-ball::before { + content: "\f432"; } -.fa-square-xmark::before { - content: "\f2d3"; } +.fa-s::before { + content: "\53"; } -.fa-times-square::before { - content: "\f2d3"; } +.fa-timeline::before { + content: "\e29c"; } -.fa-xmark-square::before { - content: "\f2d3"; } +.fa-keyboard::before { + content: "\f11c"; } -.fa-staff-aesculapius::before { - content: "\e579"; } +.fa-caret-down::before { + content: "\f0d7"; } -.fa-rod-asclepius::before { - content: "\e579"; } +.fa-house-chimney-medical::before { + content: "\f7f2"; } -.fa-rod-snake::before { - content: "\e579"; } - -.fa-staff-snake::before { - content: "\e579"; } - -.fa-stairs::before { - content: "\e289"; } - -.fa-stamp::before { - content: "\f5bf"; } - -.fa-star::before { - content: "\f005"; } - -.fa-star-and-crescent::before { - content: "\f699"; } - -.fa-star-half::before { - content: "\f089"; } - -.fa-star-half-stroke::before { - content: "\f5c0"; } - -.fa-star-half-alt::before { - content: "\f5c0"; } - -.fa-star-of-david::before { - content: "\f69a"; } - -.fa-star-of-life::before { - content: "\f621"; } - -.fa-sterling-sign::before { - content: "\f154"; } - -.fa-gbp::before { - content: "\f154"; } - -.fa-pound-sign::before { - content: "\f154"; } - -.fa-stethoscope::before { - content: "\f0f1"; } - -.fa-stop::before { - content: "\f04d"; } - -.fa-stopwatch::before { - content: "\f2f2"; } - -.fa-stopwatch-20::before { - content: "\e06f"; } - -.fa-store::before { - content: "\f54e"; } - -.fa-store-slash::before { - content: "\e071"; } - -.fa-street-view::before { - content: "\f21d"; } - -.fa-strikethrough::before { - content: "\f0cc"; } - -.fa-stroopwafel::before { - content: "\f551"; } - -.fa-subscript::before { - content: "\f12c"; } - -.fa-suitcase::before { - content: "\f0f2"; } - -.fa-suitcase-medical::before { - content: "\f0fa"; } - -.fa-medkit::before { - content: "\f0fa"; } - -.fa-suitcase-rolling::before { - content: "\f5c1"; } - -.fa-sun::before { - content: "\f185"; } - -.fa-sun-plant-wilt::before { - content: "\e57a"; } - -.fa-superscript::before { - content: "\f12b"; } - -.fa-swatchbook::before { - content: "\f5c3"; } - -.fa-synagogue::before { - content: "\f69b"; } - -.fa-syringe::before { - content: "\f48e"; } - -.fa-t::before { - content: "\54"; } - -.fa-table::before { - content: "\f0ce"; } - -.fa-table-cells::before { - content: "\f00a"; } - -.fa-th::before { - content: "\f00a"; } - -.fa-table-cells-large::before { - content: "\f009"; } - -.fa-th-large::before { - content: "\f009"; } - -.fa-table-columns::before { - content: "\f0db"; } - -.fa-columns::before { - content: "\f0db"; } - -.fa-table-list::before { - content: "\f00b"; } - -.fa-th-list::before { - content: "\f00b"; } - -.fa-table-tennis-paddle-ball::before { - content: "\f45d"; } - -.fa-ping-pong-paddle-ball::before { - content: "\f45d"; } - -.fa-table-tennis::before { - content: "\f45d"; } - -.fa-tablet::before { - content: "\f3fb"; } - -.fa-tablet-android::before { - content: "\f3fb"; } - -.fa-tablet-button::before { - content: "\f10a"; } - -.fa-tablet-screen-button::before { - content: "\f3fa"; } - -.fa-tablet-alt::before { - content: "\f3fa"; } - -.fa-tablets::before { - content: "\f490"; } - -.fa-tachograph-digital::before { - content: "\f566"; } - -.fa-digital-tachograph::before { - content: "\f566"; } - -.fa-tag::before { - content: "\f02b"; } - -.fa-tags::before { - content: "\f02c"; } - -.fa-tape::before { - content: "\f4db"; } - -.fa-tarp::before { - content: "\e57b"; } - -.fa-tarp-droplet::before { - content: "\e57c"; } - -.fa-taxi::before { - content: "\f1ba"; } - -.fa-cab::before { - content: "\f1ba"; } - -.fa-teeth::before { - content: "\f62e"; } - -.fa-teeth-open::before { - content: "\f62f"; } - -.fa-temperature-arrow-down::before { - content: "\e03f"; } - -.fa-temperature-down::before { - content: "\e03f"; } - -.fa-temperature-arrow-up::before { - content: "\e040"; } - -.fa-temperature-up::before { - content: "\e040"; } - -.fa-temperature-empty::before { - content: "\f2cb"; } - -.fa-temperature-0::before { - content: "\f2cb"; } - -.fa-thermometer-0::before { - content: "\f2cb"; } - -.fa-thermometer-empty::before { - content: "\f2cb"; } - -.fa-temperature-full::before { - content: "\f2c7"; } - -.fa-temperature-4::before { - content: "\f2c7"; } - -.fa-thermometer-4::before { - content: "\f2c7"; } - -.fa-thermometer-full::before { - content: "\f2c7"; } - -.fa-temperature-half::before { - content: "\f2c9"; } - -.fa-temperature-2::before { - content: "\f2c9"; } - -.fa-thermometer-2::before { - content: "\f2c9"; } - -.fa-thermometer-half::before { - content: "\f2c9"; } - -.fa-temperature-high::before { - content: "\f769"; } - -.fa-temperature-low::before { - content: "\f76b"; } - -.fa-temperature-quarter::before { - content: "\f2ca"; } - -.fa-temperature-1::before { - content: "\f2ca"; } - -.fa-thermometer-1::before { - content: "\f2ca"; } - -.fa-thermometer-quarter::before { - content: "\f2ca"; } +.fa-clinic-medical::before { + content: "\f7f2"; } .fa-temperature-three-quarters::before { content: "\f2c8"; } @@ -5581,242 +4214,86 @@ readers do not read off random characters that represent icons */ .fa-thermometer-three-quarters::before { content: "\f2c8"; } -.fa-tenge-sign::before { - content: "\f7d7"; } +.fa-mobile-screen::before { + content: "\f3cf"; } -.fa-tenge::before { - content: "\f7d7"; } +.fa-mobile-android-alt::before { + content: "\f3cf"; } -.fa-tent::before { - content: "\e57d"; } +.fa-plane-up::before { + content: "\e22d"; } -.fa-tent-arrow-down-to-line::before { - content: "\e57e"; } +.fa-piggy-bank::before { + content: "\f4d3"; } -.fa-tent-arrow-left-right::before { - content: "\e57f"; } +.fa-battery-half::before { + content: "\f242"; } -.fa-tent-arrow-turn-left::before { - content: "\e580"; } +.fa-battery-3::before { + content: "\f242"; } -.fa-tent-arrows-down::before { - content: "\e581"; } +.fa-mountain-city::before { + content: "\e52e"; } -.fa-tents::before { - content: "\e582"; } +.fa-coins::before { + content: "\f51e"; } -.fa-terminal::before { - content: "\f120"; } +.fa-khanda::before { + content: "\f66d"; } -.fa-text-height::before { - content: "\f034"; } +.fa-sliders::before { + content: "\f1de"; } -.fa-text-slash::before { - content: "\f87d"; } +.fa-sliders-h::before { + content: "\f1de"; } -.fa-remove-format::before { - content: "\f87d"; } +.fa-folder-tree::before { + content: "\f802"; } -.fa-text-width::before { - content: "\f035"; } +.fa-network-wired::before { + content: "\f6ff"; } -.fa-thermometer::before { - content: "\f491"; } +.fa-map-pin::before { + content: "\f276"; } -.fa-thumbs-down::before { - content: "\f165"; } +.fa-hamsa::before { + content: "\f665"; } -.fa-thumbs-up::before { - content: "\f164"; } +.fa-cent-sign::before { + content: "\e3f5"; } -.fa-thumbtack::before { - content: "\f08d"; } +.fa-flask::before { + content: "\f0c3"; } -.fa-thumb-tack::before { - content: "\f08d"; } +.fa-person-pregnant::before { + content: "\e31e"; } + +.fa-wand-sparkles::before { + content: "\f72b"; } + +.fa-ellipsis-vertical::before { + content: "\f142"; } + +.fa-ellipsis-v::before { + content: "\f142"; } .fa-ticket::before { content: "\f145"; } -.fa-ticket-simple::before { - content: "\f3ff"; } +.fa-power-off::before { + content: "\f011"; } -.fa-ticket-alt::before { - content: "\f3ff"; } +.fa-right-long::before { + content: "\f30b"; } -.fa-timeline::before { - content: "\e29c"; } +.fa-long-arrow-alt-right::before { + content: "\f30b"; } -.fa-toggle-off::before { - content: "\f204"; } +.fa-flag-usa::before { + content: "\f74d"; } -.fa-toggle-on::before { - content: "\f205"; } - -.fa-toilet::before { - content: "\f7d8"; } - -.fa-toilet-paper::before { - content: "\f71e"; } - -.fa-toilet-paper-slash::before { - content: "\e072"; } - -.fa-toilet-portable::before { - content: "\e583"; } - -.fa-toilets-portable::before { - content: "\e584"; } - -.fa-toolbox::before { - content: "\f552"; } - -.fa-tooth::before { - content: "\f5c9"; } - -.fa-torii-gate::before { - content: "\f6a1"; } - -.fa-tornado::before { - content: "\f76f"; } - -.fa-tower-broadcast::before { - content: "\f519"; } - -.fa-broadcast-tower::before { - content: "\f519"; } - -.fa-tower-cell::before { - content: "\e585"; } - -.fa-tower-observation::before { - content: "\e586"; } - -.fa-tractor::before { - content: "\f722"; } - -.fa-trademark::before { - content: "\f25c"; } - -.fa-traffic-light::before { - content: "\f637"; } - -.fa-trailer::before { - content: "\e041"; } - -.fa-train::before { - content: "\f238"; } - -.fa-train-subway::before { - content: "\f239"; } - -.fa-subway::before { - content: "\f239"; } - -.fa-train-tram::before { - content: "\f7da"; } - -.fa-tram::before { - content: "\f7da"; } - -.fa-transgender::before { - content: "\f225"; } - -.fa-transgender-alt::before { - content: "\f225"; } - -.fa-trash::before { - content: "\f1f8"; } - -.fa-trash-arrow-up::before { - content: "\f829"; } - -.fa-trash-restore::before { - content: "\f829"; } - -.fa-trash-can::before { - content: "\f2ed"; } - -.fa-trash-alt::before { - content: "\f2ed"; } - -.fa-trash-can-arrow-up::before { - content: "\f82a"; } - -.fa-trash-restore-alt::before { - content: "\f82a"; } - -.fa-tree::before { - content: "\f1bb"; } - -.fa-tree-city::before { - content: "\e587"; } - -.fa-triangle-exclamation::before { - content: "\f071"; } - -.fa-exclamation-triangle::before { - content: "\f071"; } - -.fa-warning::before { - content: "\f071"; } - -.fa-trophy::before { - content: "\f091"; } - -.fa-trowel::before { - content: "\e589"; } - -.fa-trowel-bricks::before { - content: "\e58a"; } - -.fa-truck::before { - content: "\f0d1"; } - -.fa-truck-arrow-right::before { - content: "\e58b"; } - -.fa-truck-droplet::before { - content: "\e58c"; } - -.fa-truck-fast::before { - content: "\f48b"; } - -.fa-shipping-fast::before { - content: "\f48b"; } - -.fa-truck-field::before { - content: "\e58d"; } - -.fa-truck-field-un::before { - content: "\e58e"; } - -.fa-truck-front::before { - content: "\e2b7"; } - -.fa-truck-medical::before { - content: "\f0f9"; } - -.fa-ambulance::before { - content: "\f0f9"; } - -.fa-truck-monster::before { - content: "\f63b"; } - -.fa-truck-moving::before { - content: "\f4df"; } - -.fa-truck-pickup::before { - content: "\f63c"; } - -.fa-truck-plane::before { - content: "\e58f"; } - -.fa-truck-ramp-box::before { - content: "\f4de"; } - -.fa-truck-loading::before { - content: "\f4de"; } +.fa-laptop-file::before { + content: "\e51d"; } .fa-tty::before { content: "\f1e4"; } @@ -5824,209 +4301,170 @@ readers do not read off random characters that represent icons */ .fa-teletype::before { content: "\f1e4"; } -.fa-turkish-lira-sign::before { - content: "\e2bb"; } +.fa-diagram-next::before { + content: "\e476"; } -.fa-try::before { - content: "\e2bb"; } +.fa-person-rifle::before { + content: "\e54e"; } -.fa-turkish-lira::before { - content: "\e2bb"; } +.fa-house-medical-circle-exclamation::before { + content: "\e512"; } -.fa-turn-down::before { - content: "\f3be"; } +.fa-closed-captioning::before { + content: "\f20a"; } -.fa-level-down-alt::before { - content: "\f3be"; } +.fa-person-hiking::before { + content: "\f6ec"; } -.fa-turn-up::before { - content: "\f3bf"; } +.fa-hiking::before { + content: "\f6ec"; } -.fa-level-up-alt::before { - content: "\f3bf"; } +.fa-venus-double::before { + content: "\f226"; } -.fa-tv::before { - content: "\f26c"; } +.fa-images::before { + content: "\f302"; } -.fa-television::before { - content: "\f26c"; } +.fa-calculator::before { + content: "\f1ec"; } -.fa-tv-alt::before { - content: "\f26c"; } +.fa-people-pulling::before { + content: "\e535"; } -.fa-u::before { - content: "\55"; } +.fa-n::before { + content: "\4e"; } -.fa-umbrella::before { - content: "\f0e9"; } +.fa-cable-car::before { + content: "\f7da"; } -.fa-umbrella-beach::before { - content: "\f5ca"; } +.fa-tram::before { + content: "\f7da"; } -.fa-underline::before { - content: "\f0cd"; } +.fa-cloud-rain::before { + content: "\f73d"; } -.fa-universal-access::before { - content: "\f29a"; } +.fa-building-circle-xmark::before { + content: "\e4d4"; } -.fa-unlock::before { - content: "\f09c"; } +.fa-ship::before { + content: "\f21a"; } -.fa-unlock-keyhole::before { - content: "\f13e"; } +.fa-arrows-down-to-line::before { + content: "\e4b8"; } -.fa-unlock-alt::before { - content: "\f13e"; } +.fa-download::before { + content: "\f019"; } -.fa-up-down::before { - content: "\f338"; } +.fa-face-grin::before { + content: "\f580"; } -.fa-arrows-alt-v::before { - content: "\f338"; } +.fa-grin::before { + content: "\f580"; } -.fa-up-down-left-right::before { - content: "\f0b2"; } +.fa-delete-left::before { + content: "\f55a"; } -.fa-arrows-alt::before { - content: "\f0b2"; } +.fa-backspace::before { + content: "\f55a"; } -.fa-up-long::before { - content: "\f30c"; } +.fa-eye-dropper::before { + content: "\f1fb"; } -.fa-long-arrow-alt-up::before { - content: "\f30c"; } +.fa-eye-dropper-empty::before { + content: "\f1fb"; } -.fa-up-right-and-down-left-from-center::before { - content: "\f424"; } +.fa-eyedropper::before { + content: "\f1fb"; } -.fa-expand-alt::before { - content: "\f424"; } +.fa-file-circle-check::before { + content: "\e5a0"; } -.fa-up-right-from-square::before { - content: "\f35d"; } +.fa-forward::before { + content: "\f04e"; } -.fa-external-link-alt::before { - content: "\f35d"; } +.fa-mobile::before { + content: "\f3ce"; } -.fa-upload::before { - content: "\f093"; } +.fa-mobile-android::before { + content: "\f3ce"; } -.fa-user::before { - content: "\f007"; } +.fa-mobile-phone::before { + content: "\f3ce"; } -.fa-user-astronaut::before { - content: "\f4fb"; } +.fa-face-meh::before { + content: "\f11a"; } -.fa-user-check::before { - content: "\f4fc"; } +.fa-meh::before { + content: "\f11a"; } -.fa-user-clock::before { - content: "\f4fd"; } +.fa-align-center::before { + content: "\f037"; } -.fa-user-doctor::before { - content: "\f0f0"; } +.fa-book-skull::before { + content: "\f6b7"; } -.fa-user-md::before { - content: "\f0f0"; } +.fa-book-dead::before { + content: "\f6b7"; } -.fa-user-gear::before { - content: "\f4fe"; } +.fa-id-card::before { + content: "\f2c2"; } -.fa-user-cog::before { - content: "\f4fe"; } +.fa-drivers-license::before { + content: "\f2c2"; } -.fa-user-graduate::before { - content: "\f501"; } +.fa-outdent::before { + content: "\f03b"; } -.fa-user-group::before { - content: "\f500"; } +.fa-dedent::before { + content: "\f03b"; } -.fa-user-friends::before { - content: "\f500"; } +.fa-heart-circle-exclamation::before { + content: "\e4fe"; } -.fa-user-injured::before { - content: "\f728"; } +.fa-house::before { + content: "\f015"; } -.fa-user-large::before { - content: "\f406"; } +.fa-home::before { + content: "\f015"; } -.fa-user-alt::before { - content: "\f406"; } +.fa-home-alt::before { + content: "\f015"; } -.fa-user-large-slash::before { - content: "\f4fa"; } +.fa-home-lg-alt::before { + content: "\f015"; } -.fa-user-alt-slash::before { - content: "\f4fa"; } +.fa-calendar-week::before { + content: "\f784"; } -.fa-user-lock::before { - content: "\f502"; } +.fa-laptop-medical::before { + content: "\f812"; } -.fa-user-minus::before { - content: "\f503"; } +.fa-b::before { + content: "\42"; } -.fa-user-ninja::before { - content: "\f504"; } +.fa-file-medical::before { + content: "\f477"; } -.fa-user-nurse::before { - content: "\f82f"; } +.fa-dice-one::before { + content: "\f525"; } -.fa-user-pen::before { - content: "\f4ff"; } +.fa-kiwi-bird::before { + content: "\f535"; } -.fa-user-edit::before { - content: "\f4ff"; } +.fa-arrow-right-arrow-left::before { + content: "\f0ec"; } -.fa-user-plus::before { - content: "\f234"; } +.fa-exchange::before { + content: "\f0ec"; } -.fa-user-secret::before { - content: "\f21b"; } +.fa-rotate-right::before { + content: "\f2f9"; } -.fa-user-shield::before { - content: "\f505"; } +.fa-redo-alt::before { + content: "\f2f9"; } -.fa-user-slash::before { - content: "\f506"; } - -.fa-user-tag::before { - content: "\f507"; } - -.fa-user-tie::before { - content: "\f508"; } - -.fa-user-xmark::before { - content: "\f235"; } - -.fa-user-times::before { - content: "\f235"; } - -.fa-users::before { - content: "\f0c0"; } - -.fa-users-between-lines::before { - content: "\e591"; } - -.fa-users-gear::before { - content: "\f509"; } - -.fa-users-cog::before { - content: "\f509"; } - -.fa-users-line::before { - content: "\e592"; } - -.fa-users-rays::before { - content: "\e593"; } - -.fa-users-rectangle::before { - content: "\e594"; } - -.fa-users-slash::before { - content: "\e073"; } - -.fa-users-viewfinder::before { - content: "\e595"; } +.fa-rotate-forward::before { + content: "\f2f9"; } .fa-utensils::before { content: "\f2e7"; } @@ -6034,263 +4472,92 @@ readers do not read off random characters that represent icons */ .fa-cutlery::before { content: "\f2e7"; } -.fa-v::before { - content: "\56"; } +.fa-arrow-up-wide-short::before { + content: "\f161"; } -.fa-van-shuttle::before { - content: "\f5b6"; } +.fa-sort-amount-up::before { + content: "\f161"; } -.fa-shuttle-van::before { - content: "\f5b6"; } +.fa-mill-sign::before { + content: "\e1ed"; } + +.fa-bowl-rice::before { + content: "\e2eb"; } + +.fa-skull::before { + content: "\f54c"; } + +.fa-tower-broadcast::before { + content: "\f519"; } + +.fa-broadcast-tower::before { + content: "\f519"; } + +.fa-truck-pickup::before { + content: "\f63c"; } + +.fa-up-long::before { + content: "\f30c"; } + +.fa-long-arrow-alt-up::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 { + content: "\f56d"; } + +.fa-file-download::before { + content: "\f56d"; } + +.fa-caravan::before { + content: "\f8ff"; } + +.fa-shield-cat::before { + content: "\e572"; } + +.fa-bolt::before { + content: "\f0e7"; } + +.fa-zap::before { + content: "\f0e7"; } + +.fa-glass-water::before { + content: "\e4f4"; } + +.fa-oil-well::before { + content: "\e532"; } .fa-vault::before { content: "\e2c5"; } -.fa-vector-square::before { - content: "\f5cb"; } +.fa-mars::before { + content: "\f222"; } -.fa-venus::before { - content: "\f221"; } +.fa-toilet::before { + content: "\f7d8"; } -.fa-venus-double::before { - content: "\f226"; } - -.fa-venus-mars::before { - content: "\f228"; } - -.fa-vest::before { - content: "\e085"; } - -.fa-vest-patches::before { - content: "\e086"; } - -.fa-vial::before { - content: "\f492"; } - -.fa-vial-circle-check::before { - content: "\e596"; } - -.fa-vial-virus::before { - content: "\e597"; } - -.fa-vials::before { - content: "\f493"; } - -.fa-video::before { - content: "\f03d"; } - -.fa-video-camera::before { - content: "\f03d"; } - -.fa-video-slash::before { - content: "\f4e2"; } - -.fa-vihara::before { - content: "\f6a7"; } - -.fa-virus::before { - content: "\e074"; } - -.fa-virus-covid::before { - content: "\e4a8"; } - -.fa-virus-covid-slash::before { - content: "\e4a9"; } - -.fa-virus-slash::before { - content: "\e075"; } - -.fa-viruses::before { - content: "\e076"; } - -.fa-voicemail::before { - content: "\f897"; } - -.fa-volcano::before { - content: "\f770"; } - -.fa-volleyball::before { - content: "\f45f"; } - -.fa-volleyball-ball::before { - content: "\f45f"; } - -.fa-volume-high::before { - content: "\f028"; } - -.fa-volume-up::before { - content: "\f028"; } - -.fa-volume-low::before { - content: "\f027"; } - -.fa-volume-down::before { - content: "\f027"; } - -.fa-volume-off::before { - content: "\f026"; } - -.fa-volume-xmark::before { - content: "\f6a9"; } - -.fa-volume-mute::before { - content: "\f6a9"; } - -.fa-volume-times::before { - content: "\f6a9"; } - -.fa-vr-cardboard::before { - content: "\f729"; } - -.fa-w::before { - content: "\57"; } - -.fa-walkie-talkie::before { - content: "\f8ef"; } - -.fa-wallet::before { - content: "\f555"; } - -.fa-wand-magic::before { - content: "\f0d0"; } - -.fa-magic::before { - content: "\f0d0"; } - -.fa-wand-magic-sparkles::before { - content: "\e2ca"; } - -.fa-magic-wand-sparkles::before { - content: "\e2ca"; } - -.fa-wand-sparkles::before { - content: "\f72b"; } - -.fa-warehouse::before { - content: "\f494"; } - -.fa-water::before { - content: "\f773"; } - -.fa-water-ladder::before { - content: "\f5c5"; } - -.fa-ladder-water::before { - content: "\f5c5"; } - -.fa-swimming-pool::before { - content: "\f5c5"; } - -.fa-wave-square::before { - content: "\f83e"; } - -.fa-weight-hanging::before { - content: "\f5cd"; } - -.fa-weight-scale::before { - content: "\f496"; } - -.fa-weight::before { - content: "\f496"; } - -.fa-wheat-awn::before { - content: "\e2cd"; } - -.fa-wheat-alt::before { - content: "\e2cd"; } - -.fa-wheat-awn-circle-exclamation::before { - content: "\e598"; } - -.fa-wheelchair::before { - content: "\f193"; } - -.fa-wheelchair-move::before { - content: "\e2ce"; } - -.fa-wheelchair-alt::before { - content: "\e2ce"; } - -.fa-whiskey-glass::before { - content: "\f7a0"; } - -.fa-glass-whiskey::before { - content: "\f7a0"; } - -.fa-wifi::before { - content: "\f1eb"; } - -.fa-wifi-3::before { - content: "\f1eb"; } - -.fa-wifi-strong::before { - content: "\f1eb"; } - -.fa-wind::before { - content: "\f72e"; } - -.fa-window-maximize::before { - content: "\f2d0"; } - -.fa-window-minimize::before { - content: "\f2d1"; } - -.fa-window-restore::before { - content: "\f2d2"; } - -.fa-wine-bottle::before { - content: "\f72f"; } - -.fa-wine-glass::before { - content: "\f4e3"; } - -.fa-wine-glass-empty::before { - content: "\f5ce"; } - -.fa-wine-glass-alt::before { - content: "\f5ce"; } - -.fa-won-sign::before { - content: "\f159"; } - -.fa-krw::before { - content: "\f159"; } - -.fa-won::before { - content: "\f159"; } - -.fa-worm::before { - content: "\e599"; } - -.fa-wrench::before { - content: "\f0ad"; } - -.fa-x::before { - content: "\58"; } - -.fa-x-ray::before { - content: "\f497"; } - -.fa-xmark::before { - content: "\f00d"; } - -.fa-close::before { - content: "\f00d"; } - -.fa-multiply::before { - content: "\f00d"; } - -.fa-remove::before { - content: "\f00d"; } - -.fa-times::before { - content: "\f00d"; } - -.fa-xmarks-lines::before { - content: "\e59a"; } - -.fa-y::before { - content: "\59"; } +.fa-plane-circle-xmark::before { + content: "\e557"; } .fa-yen-sign::before { content: "\f157"; } @@ -6307,11 +4574,1781 @@ readers do not read off random characters that represent icons */ .fa-yen::before { content: "\f157"; } +.fa-ruble-sign::before { + content: "\f158"; } + +.fa-rouble::before { + content: "\f158"; } + +.fa-rub::before { + content: "\f158"; } + +.fa-ruble::before { + content: "\f158"; } + +.fa-sun::before { + content: "\f185"; } + +.fa-guitar::before { + content: "\f7a6"; } + +.fa-face-laugh-wink::before { + content: "\f59c"; } + +.fa-laugh-wink::before { + content: "\f59c"; } + +.fa-horse-head::before { + content: "\f7ab"; } + +.fa-bore-hole::before { + content: "\e4c3"; } + +.fa-industry::before { + content: "\f275"; } + +.fa-circle-down::before { + content: "\f358"; } + +.fa-arrow-alt-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 { + content: "\f884"; } + +.fa-sort-amount-desc::before { + content: "\f884"; } + +.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 { + content: "\f178"; } + +.fa-long-arrow-right::before { + content: "\f178"; } + +.fa-anchor-circle-xmark::before { + content: "\e4ac"; } + +.fa-ellipsis::before { + content: "\f141"; } + +.fa-ellipsis-h::before { + content: "\f141"; } + +.fa-chess-pawn::before { + content: "\f443"; } + +.fa-kit-medical::before { + content: "\f479"; } + +.fa-first-aid::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::before { + content: "\f09d"; } + +.fa-credit-card-alt::before { + content: "\f09d"; } + +.fa-car::before { + content: "\f1b9"; } + +.fa-automobile::before { + content: "\f1b9"; } + +.fa-hand-holding-hand::before { + content: "\e4f7"; } + +.fa-book-open-reader::before { + content: "\f5da"; } + +.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 { + content: "\e040"; } + +.fa-temperature-up::before { + content: "\e040"; } + +.fa-medal::before { + content: "\f5a2"; } + +.fa-bed::before { + content: "\f236"; } + +.fa-square-h::before { + content: "\f0fd"; } + +.fa-h-square::before { + content: "\f0fd"; } + +.fa-podcast::before { + content: "\f2ce"; } + +.fa-temperature-full::before { + content: "\f2c7"; } + +.fa-temperature-4::before { + content: "\f2c7"; } + +.fa-thermometer-4::before { + content: "\f2c7"; } + +.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-handshake-angle::before { + content: "\f4c4"; } + +.fa-hands-helping::before { + content: "\f4c4"; } + +.fa-location-dot::before { + content: "\f3c5"; } + +.fa-map-marker-alt::before { + content: "\f3c5"; } + +.fa-file::before { + content: "\f15b"; } + +.fa-greater-than::before { + content: "\3e"; } + +.fa-person-swimming::before { + content: "\f5c4"; } + +.fa-swimmer::before { + content: "\f5c4"; } + +.fa-arrow-down::before { + content: "\f063"; } + +.fa-droplet::before { + content: "\f043"; } + +.fa-tint::before { + content: "\f043"; } + +.fa-eraser::before { + content: "\f12d"; } + +.fa-earth-americas::before { + content: "\f57d"; } + +.fa-earth::before { + content: "\f57d"; } + +.fa-earth-america::before { + content: "\f57d"; } + +.fa-globe-americas::before { + content: "\f57d"; } + +.fa-person-burst::before { + content: "\e53b"; } + +.fa-dove::before { + content: "\f4ba"; } + +.fa-battery-empty::before { + content: "\f244"; } + +.fa-battery-0::before { + content: "\f244"; } + +.fa-socks::before { + content: "\f696"; } + +.fa-inbox::before { + content: "\f01c"; } + +.fa-section::before { + content: "\e447"; } + +.fa-gauge-high::before { + content: "\f625"; } + +.fa-tachometer-alt::before { + content: "\f625"; } + +.fa-tachometer-alt-fast::before { + content: "\f625"; } + +.fa-envelope-open-text::before { + content: "\f658"; } + +.fa-hospital::before { + content: "\f0f8"; } + +.fa-hospital-alt::before { + content: "\f0f8"; } + +.fa-hospital-wide::before { + content: "\f0f8"; } + +.fa-wine-bottle::before { + content: "\f72f"; } + +.fa-chess-rook::before { + content: "\f447"; } + +.fa-bars-staggered::before { + content: "\f550"; } + +.fa-reorder::before { + content: "\f550"; } + +.fa-stream::before { + content: "\f550"; } + +.fa-dharmachakra::before { + content: "\f655"; } + +.fa-hotdog::before { + content: "\f80f"; } + +.fa-person-walking-with-cane::before { + content: "\f29d"; } + +.fa-blind::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 { + content: "\f772"; } + +.fa-vote-yea::before { + content: "\f772"; } + +.fa-star-half::before { + content: "\f089"; } + +.fa-boxes-stacked::before { + content: "\f468"; } + +.fa-boxes::before { + content: "\f468"; } + +.fa-boxes-alt::before { + content: "\f468"; } + +.fa-link::before { + content: "\f0c1"; } + +.fa-chain::before { + content: "\f0c1"; } + +.fa-ear-listen::before { + content: "\f2a2"; } + +.fa-assistive-listening-systems::before { + content: "\f2a2"; } + +.fa-tree-city::before { + content: "\e587"; } + +.fa-play::before { + content: "\f04b"; } + +.fa-font::before { + content: "\f031"; } + +.fa-table-cells-row-lock::before { + content: "\e67a"; } + +.fa-rupiah-sign::before { + content: "\e23d"; } + +.fa-magnifying-glass::before { + content: "\f002"; } + +.fa-search::before { + content: "\f002"; } + +.fa-table-tennis-paddle-ball::before { + content: "\f45d"; } + +.fa-ping-pong-paddle-ball::before { + content: "\f45d"; } + +.fa-table-tennis::before { + content: "\f45d"; } + +.fa-person-dots-from-line::before { + content: "\f470"; } + +.fa-diagnoses::before { + content: "\f470"; } + +.fa-trash-can-arrow-up::before { + content: "\f82a"; } + +.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-pen::before { + content: "\f31c"; } + +.fa-file-edit::before { + content: "\f31c"; } + +.fa-receipt::before { + content: "\f543"; } + +.fa-square-pen::before { + content: "\f14b"; } + +.fa-pen-square::before { + content: "\f14b"; } + +.fa-pencil-square::before { + content: "\f14b"; } + +.fa-suitcase-rolling::before { + content: "\f5c1"; } + +.fa-person-circle-exclamation::before { + content: "\e53f"; } + +.fa-chevron-down::before { + content: "\f078"; } + +.fa-battery-full::before { + content: "\f240"; } + +.fa-battery::before { + content: "\f240"; } + +.fa-battery-5::before { + content: "\f240"; } + +.fa-skull-crossbones::before { + content: "\f714"; } + +.fa-code-compare::before { + content: "\e13a"; } + +.fa-list-ul::before { + content: "\f0ca"; } + +.fa-list-dots::before { + content: "\f0ca"; } + +.fa-school-lock::before { + content: "\e56f"; } + +.fa-tower-cell::before { + content: "\e585"; } + +.fa-down-long::before { + content: "\f309"; } + +.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-dome::before { + content: "\f752"; } + +.fa-landmark-alt::before { + content: "\f752"; } + +.fa-arrow-up::before { + content: "\f062"; } + +.fa-tv::before { + content: "\f26c"; } + +.fa-television::before { + content: "\f26c"; } + +.fa-tv-alt::before { + content: "\f26c"; } + +.fa-shrimp::before { + content: "\e448"; } + +.fa-list-check::before { + content: "\f0ae"; } + +.fa-tasks::before { + content: "\f0ae"; } + +.fa-jug-detergent::before { + content: "\e519"; } + +.fa-circle-user::before { + content: "\f2bd"; } + +.fa-user-circle::before { + content: "\f2bd"; } + +.fa-user-shield::before { + content: "\f505"; } + +.fa-wind::before { + content: "\f72e"; } + +.fa-car-burst::before { + content: "\f5e1"; } + +.fa-car-crash::before { + content: "\f5e1"; } + +.fa-y::before { + content: "\59"; } + +.fa-person-snowboarding::before { + content: "\f7ce"; } + +.fa-snowboarding::before { + content: "\f7ce"; } + +.fa-truck-fast::before { + content: "\f48b"; } + +.fa-shipping-fast::before { + content: "\f48b"; } + +.fa-fish::before { + content: "\f578"; } + +.fa-user-graduate::before { + content: "\f501"; } + +.fa-circle-half-stroke::before { + content: "\f042"; } + +.fa-adjust::before { + content: "\f042"; } + +.fa-clapperboard::before { + content: "\e131"; } + +.fa-circle-radiation::before { + content: "\f7ba"; } + +.fa-radiation-alt::before { + content: "\f7ba"; } + +.fa-baseball::before { + content: "\f433"; } + +.fa-baseball-ball::before { + content: "\f433"; } + +.fa-jet-fighter-up::before { + content: "\e518"; } + +.fa-diagram-project::before { + content: "\f542"; } + +.fa-project-diagram::before { + content: "\f542"; } + +.fa-copy::before { + content: "\f0c5"; } + +.fa-volume-xmark::before { + content: "\f6a9"; } + +.fa-volume-mute::before { + content: "\f6a9"; } + +.fa-volume-times::before { + content: "\f6a9"; } + +.fa-hand-sparkles::before { + content: "\e05d"; } + +.fa-grip::before { + content: "\f58d"; } + +.fa-grip-horizontal::before { + content: "\f58d"; } + +.fa-share-from-square::before { + content: "\f14d"; } + +.fa-share-square::before { + content: "\f14d"; } + +.fa-child-combatant::before { + content: "\e4e0"; } + +.fa-child-rifle::before { + content: "\e4e0"; } + +.fa-gun::before { + content: "\e19b"; } + +.fa-square-phone::before { + content: "\f098"; } + +.fa-phone-square::before { + content: "\f098"; } + +.fa-plus::before { + content: "\2b"; } + +.fa-add::before { + content: "\2b"; } + +.fa-expand::before { + content: "\f065"; } + +.fa-computer::before { + content: "\e4e5"; } + +.fa-xmark::before { + content: "\f00d"; } + +.fa-close::before { + content: "\f00d"; } + +.fa-multiply::before { + content: "\f00d"; } + +.fa-remove::before { + content: "\f00d"; } + +.fa-times::before { + content: "\f00d"; } + +.fa-arrows-up-down-left-right::before { + content: "\f047"; } + +.fa-arrows::before { + content: "\f047"; } + +.fa-chalkboard-user::before { + content: "\f51c"; } + +.fa-chalkboard-teacher::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::before { + content: "\f10d"; } + +.fa-quote-left-alt::before { + content: "\f10d"; } + +.fa-tractor::before { + content: "\f722"; } + +.fa-trash-arrow-up::before { + content: "\f829"; } + +.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-shekel-sign::before { + content: "\f20b"; } + +.fa-ils::before { + content: "\f20b"; } + +.fa-shekel::before { + content: "\f20b"; } + +.fa-sheqel::before { + content: "\f20b"; } + +.fa-sheqel-sign::before { + content: "\f20b"; } + +.fa-map::before { + content: "\f279"; } + +.fa-rocket::before { + content: "\f135"; } + +.fa-photo-film::before { + content: "\f87c"; } + +.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 { + content: "\f4d9"; } + +.fa-sign::before { + content: "\f4d9"; } + +.fa-bezier-curve::before { + content: "\f55b"; } + +.fa-bell-slash::before { + content: "\f1f6"; } + +.fa-tablet::before { + content: "\f3fb"; } + +.fa-tablet-android::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-rear::before { + content: "\f5de"; } + +.fa-car-alt::before { + content: "\f5de"; } + +.fa-pump-soap::before { + content: "\e06b"; } + +.fa-video-slash::before { + content: "\f4e2"; } + +.fa-battery-quarter::before { + content: "\f243"; } + +.fa-battery-2::before { + content: "\f243"; } + +.fa-radio::before { + content: "\f8d7"; } + +.fa-baby-carriage::before { + content: "\f77d"; } + +.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 { + content: "\25"; } + +.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 { + content: "\f118"; } + +.fa-smile::before { + content: "\f118"; } + +.fa-thumbtack::before { + content: "\f08d"; } + +.fa-thumb-tack::before { + content: "\f08d"; } + +.fa-trophy::before { + content: "\f091"; } + +.fa-person-praying::before { + content: "\f683"; } + +.fa-pray::before { + content: "\f683"; } + +.fa-hammer::before { + content: "\f6e3"; } + +.fa-hand-peace::before { + content: "\f25b"; } + +.fa-rotate::before { + content: "\f2f1"; } + +.fa-sync-alt::before { + content: "\f2f1"; } + +.fa-spinner::before { + content: "\f110"; } + +.fa-robot::before { + content: "\f544"; } + +.fa-peace::before { + content: "\f67c"; } + +.fa-gears::before { + content: "\f085"; } + +.fa-cogs::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 { + content: "\f584"; } + +.fa-grin-hearts::before { + content: "\f584"; } + +.fa-dice-four::before { + content: "\f524"; } + +.fa-sim-card::before { + content: "\f7c4"; } + +.fa-transgender::before { + content: "\f225"; } + +.fa-transgender-alt::before { + content: "\f225"; } + +.fa-mercury::before { + content: "\f223"; } + +.fa-arrow-turn-down::before { + content: "\f149"; } + +.fa-level-down::before { + content: "\f149"; } + +.fa-person-falling-burst::before { + content: "\e547"; } + +.fa-award::before { + content: "\f559"; } + +.fa-ticket-simple::before { + content: "\f3ff"; } + +.fa-ticket-alt::before { + content: "\f3ff"; } + +.fa-building::before { + content: "\f1ad"; } + +.fa-angles-left::before { + content: "\f100"; } + +.fa-angle-double-left::before { + content: "\f100"; } + +.fa-qrcode::before { + content: "\f029"; } + +.fa-clock-rotate-left::before { + content: "\f1da"; } + +.fa-history::before { + content: "\f1da"; } + +.fa-face-grin-beam-sweat::before { + content: "\f583"; } + +.fa-grin-beam-sweat::before { + content: "\f583"; } + +.fa-file-export::before { + content: "\f56e"; } + +.fa-arrow-right-from-file::before { + content: "\f56e"; } + +.fa-shield::before { + content: "\f132"; } + +.fa-shield-blank::before { + content: "\f132"; } + +.fa-arrow-up-short-wide::before { + content: "\f885"; } + +.fa-sort-amount-up-alt::before { + content: "\f885"; } + +.fa-house-medical::before { + content: "\e3b2"; } + +.fa-golf-ball-tee::before { + content: "\f450"; } + +.fa-golf-ball::before { + content: "\f450"; } + +.fa-circle-chevron-left::before { + content: "\f137"; } + +.fa-chevron-circle-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-wand-magic::before { + content: "\f0d0"; } + +.fa-magic::before { + content: "\f0d0"; } + +.fa-dog::before { + content: "\f6d3"; } + +.fa-carrot::before { + content: "\f787"; } + +.fa-moon::before { + content: "\f186"; } + +.fa-wine-glass-empty::before { + content: "\f5ce"; } + +.fa-wine-glass-alt::before { + content: "\f5ce"; } + +.fa-cheese::before { + content: "\f7ef"; } + .fa-yin-yang::before { content: "\f6ad"; } -.fa-z::before { - content: "\5a"; } +.fa-music::before { + content: "\f001"; } + +.fa-code-commit::before { + content: "\f386"; } + +.fa-temperature-low::before { + content: "\f76b"; } + +.fa-person-biking::before { + content: "\f84a"; } + +.fa-biking::before { + content: "\f84a"; } + +.fa-broom::before { + content: "\f51a"; } + +.fa-shield-heart::before { + content: "\e574"; } + +.fa-gopuram::before { + content: "\f664"; } + +.fa-earth-oceania::before { + content: "\e47b"; } + +.fa-globe-oceania::before { + content: "\e47b"; } + +.fa-square-xmark::before { + content: "\f2d3"; } + +.fa-times-square::before { + content: "\f2d3"; } + +.fa-xmark-square::before { + content: "\f2d3"; } + +.fa-hashtag::before { + content: "\23"; } + +.fa-up-right-and-down-left-from-center::before { + content: "\f424"; } + +.fa-expand-alt::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-up-down::before { + content: "\f338"; } + +.fa-arrows-alt-v::before { + content: "\f338"; } + +.fa-cloud-moon-rain::before { + content: "\f73c"; } + +.fa-calendar::before { + content: "\f133"; } + +.fa-trailer::before { + content: "\e041"; } + +.fa-bahai::before { + content: "\f666"; } + +.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 { + content: "\f055"; } + +.fa-plus-circle::before { + content: "\f055"; } + +.fa-face-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-hand-holding::before { + content: "\f4bd"; } + +.fa-plug-circle-exclamation::before { + content: "\e55d"; } + +.fa-link-slash::before { + content: "\f127"; } + +.fa-chain-broken::before { + content: "\f127"; } + +.fa-chain-slash::before { + content: "\f127"; } + +.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 { + content: "\f882"; } + +.fa-sort-alpha-up-alt::before { + content: "\f882"; } + +.fa-fire-flame-curved::before { + content: "\f7e4"; } + +.fa-fire-alt::before { + content: "\f7e4"; } + +.fa-tornado::before { + content: "\f76f"; } + +.fa-file-circle-plus::before { + content: "\e494"; } + +.fa-book-quran::before { + content: "\f687"; } + +.fa-quran::before { + content: "\f687"; } + +.fa-anchor::before { + content: "\f13d"; } + +.fa-border-all::before { + content: "\f84c"; } + +.fa-face-angry::before { + content: "\f556"; } + +.fa-angry::before { + content: "\f556"; } + +.fa-cookie-bite::before { + content: "\f564"; } + +.fa-arrow-trend-down::before { + content: "\e097"; } + +.fa-rss::before { + content: "\f09e"; } + +.fa-feed::before { + content: "\f09e"; } + +.fa-draw-polygon::before { + content: "\f5ee"; } + +.fa-scale-balanced::before { + content: "\f24e"; } + +.fa-balance-scale::before { + content: "\f24e"; } + +.fa-gauge-simple-high::before { + content: "\f62a"; } + +.fa-tachometer::before { + content: "\f62a"; } + +.fa-tachometer-fast::before { + content: "\f62a"; } + +.fa-shower::before { + content: "\f2cc"; } + +.fa-desktop::before { + content: "\f390"; } + +.fa-desktop-alt::before { + content: "\f390"; } + +.fa-m::before { + content: "\4d"; } + +.fa-table-list::before { + content: "\f00b"; } + +.fa-th-list::before { + content: "\f00b"; } + +.fa-comment-sms::before { + content: "\f7cd"; } + +.fa-sms::before { + content: "\f7cd"; } + +.fa-book::before { + content: "\f02d"; } + +.fa-user-plus::before { + content: "\f234"; } + +.fa-check::before { + content: "\f00c"; } + +.fa-battery-three-quarters::before { + content: "\f241"; } + +.fa-battery-4::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-hand-fist::before { + content: "\f6de"; } + +.fa-fist-raised::before { + content: "\f6de"; } + +.fa-cloud-moon::before { + content: "\f6c3"; } + +.fa-briefcase::before { + content: "\f0b1"; } + +.fa-person-falling::before { + content: "\e546"; } + +.fa-image-portrait::before { + content: "\f3e0"; } + +.fa-portrait::before { + content: "\f3e0"; } + +.fa-user-tag::before { + content: "\f507"; } + +.fa-rug::before { + content: "\e569"; } + +.fa-earth-europe::before { + content: "\f7a2"; } + +.fa-globe-europe::before { + content: "\f7a2"; } + +.fa-cart-flatbed-suitcase::before { + content: "\f59d"; } + +.fa-luggage-cart::before { + content: "\f59d"; } + +.fa-rectangle-xmark::before { + content: "\f410"; } + +.fa-rectangle-times::before { + content: "\f410"; } + +.fa-times-rectangle::before { + content: "\f410"; } + +.fa-window-close::before { + content: "\f410"; } + +.fa-baht-sign::before { + content: "\e0ac"; } + +.fa-book-open::before { + content: "\f518"; } + +.fa-book-journal-whills::before { + content: "\f66a"; } + +.fa-journal-whills::before { + content: "\f66a"; } + +.fa-handcuffs::before { + content: "\e4f8"; } + +.fa-triangle-exclamation::before { + content: "\f071"; } + +.fa-exclamation-triangle::before { + content: "\f071"; } + +.fa-warning::before { + content: "\f071"; } + +.fa-database::before { + content: "\f1c0"; } + +.fa-share::before { + content: "\f064"; } + +.fa-mail-forward::before { + content: "\f064"; } + +.fa-bottle-droplet::before { + content: "\e4c4"; } + +.fa-mask-face::before { + content: "\e1d7"; } + +.fa-hill-rockslide::before { + content: "\e508"; } + +.fa-right-left::before { + content: "\f362"; } + +.fa-exchange-alt::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 { + content: "\f53b"; } + +.fa-money-bill-wave-alt::before { + content: "\f53b"; } + +.fa-life-ring::before { + content: "\f1cd"; } + +.fa-hands::before { + content: "\f2a7"; } + +.fa-sign-language::before { + content: "\f2a7"; } + +.fa-signing::before { + content: "\f2a7"; } + +.fa-calendar-day::before { + content: "\f783"; } + +.fa-water-ladder::before { + content: "\f5c5"; } + +.fa-ladder-water::before { + content: "\f5c5"; } + +.fa-swimming-pool::before { + content: "\f5c5"; } + +.fa-arrows-up-down::before { + content: "\f07d"; } + +.fa-arrows-v::before { + content: "\f07d"; } + +.fa-face-grimace::before { + content: "\f57f"; } + +.fa-grimace::before { + content: "\f57f"; } + +.fa-wheelchair-move::before { + content: "\e2ce"; } + +.fa-wheelchair-alt::before { + content: "\e2ce"; } + +.fa-turn-down::before { + content: "\f3be"; } + +.fa-level-down-alt::before { + content: "\f3be"; } + +.fa-person-walking-arrow-right::before { + content: "\e552"; } + +.fa-square-envelope::before { + content: "\f199"; } + +.fa-envelope-square::before { + content: "\f199"; } + +.fa-dice::before { + content: "\f522"; } + +.fa-bowling-ball::before { + content: "\f436"; } + +.fa-brain::before { + content: "\f5dc"; } + +.fa-bandage::before { + content: "\f462"; } + +.fa-band-aid::before { + content: "\f462"; } + +.fa-calendar-minus::before { + content: "\f272"; } + +.fa-circle-xmark::before { + content: "\f057"; } + +.fa-times-circle::before { + content: "\f057"; } + +.fa-xmark-circle::before { + content: "\f057"; } + +.fa-gifts::before { + content: "\f79c"; } + +.fa-hotel::before { + content: "\f594"; } + +.fa-earth-asia::before { + content: "\f57e"; } + +.fa-globe-asia::before { + content: "\f57e"; } + +.fa-id-card-clip::before { + content: "\f47f"; } + +.fa-id-card-alt::before { + content: "\f47f"; } + +.fa-magnifying-glass-plus::before { + content: "\f00e"; } + +.fa-search-plus::before { + content: "\f00e"; } + +.fa-thumbs-up::before { + content: "\f164"; } + +.fa-user-clock::before { + content: "\f4fd"; } + +.fa-hand-dots::before { + content: "\f461"; } + +.fa-allergies::before { + content: "\f461"; } + +.fa-file-invoice::before { + content: "\f570"; } + +.fa-window-minimize::before { + content: "\f2d1"; } + +.fa-mug-saucer::before { + content: "\f0f4"; } + +.fa-coffee::before { + content: "\f0f4"; } + +.fa-brush::before { + content: "\f55d"; } + +.fa-mask::before { + content: "\f6fa"; } + +.fa-magnifying-glass-minus::before { + content: "\f010"; } + +.fa-search-minus::before { + content: "\f010"; } + +.fa-ruler-vertical::before { + content: "\f548"; } + +.fa-user-large::before { + content: "\f406"; } + +.fa-user-alt::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 { + content: "\f249"; } + +.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 { + content: "\f5b4"; } + +.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-turkish-lira-sign::before { + content: "\e2bb"; } + +.fa-try::before { + content: "\e2bb"; } + +.fa-turkish-lira::before { + content: "\e2bb"; } + +.fa-dollar-sign::before { + content: "\24"; } + +.fa-dollar::before { + content: "\24"; } + +.fa-usd::before { + content: "\24"; } + +.fa-x::before { + content: "\58"; } + +.fa-magnifying-glass-dollar::before { + content: "\f688"; } + +.fa-search-dollar::before { + content: "\f688"; } + +.fa-users-gear::before { + content: "\f509"; } + +.fa-users-cog::before { + content: "\f509"; } + +.fa-person-military-pointing::before { + content: "\e54a"; } + +.fa-building-columns::before { + content: "\f19c"; } + +.fa-bank::before { + content: "\f19c"; } + +.fa-institution::before { + content: "\f19c"; } + +.fa-museum::before { + content: "\f19c"; } + +.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 { + content: "\f630"; } + +.fa-theater-masks::before { + content: "\f630"; } + +.fa-kip-sign::before { + content: "\e1c4"; } + +.fa-hand-point-left::before { + content: "\f0a5"; } + +.fa-handshake-simple::before { + content: "\f4c6"; } + +.fa-handshake-alt::before { + content: "\f4c6"; } + +.fa-jet-fighter::before { + content: "\f0fb"; } + +.fa-fighter-jet::before { + content: "\f0fb"; } + +.fa-square-share-nodes::before { + content: "\f1e1"; } + +.fa-share-alt-square::before { + content: "\f1e1"; } + +.fa-barcode::before { + content: "\f02a"; } + +.fa-plus-minus::before { + content: "\e43c"; } + +.fa-video::before { + content: "\f03d"; } + +.fa-video-camera::before { + content: "\f03d"; } + +.fa-graduation-cap::before { + content: "\f19d"; } + +.fa-mortar-board::before { + content: "\f19d"; } + +.fa-hand-holding-medical::before { + content: "\e05c"; } + +.fa-person-circle-check::before { + content: "\e53e"; } + +.fa-turn-up::before { + content: "\f3bf"; } + +.fa-level-up-alt::before { + content: "\f3bf"; } .sr-only, .fa-sr-only { diff --git a/resources/fontawesome/css/fontawesome.min.css b/resources/fontawesome/css/fontawesome.min.css new file mode 100644 index 0000000..7e1c254 --- /dev/null +++ b/resources/fontawesome/css/fontawesome.min.css @@ -0,0 +1,9 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-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,0));transform:rotate(var(--fa-rotate-angle,0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)} + +.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-fill-drip:before{content:"\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-table-cells-column-lock:before{content:"\e678"}.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-table-cells-row-lock:before{content:"\e67a"}.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-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"} +.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0} \ No newline at end of file diff --git a/resources/fontawesome/css/regular.css b/resources/fontawesome/css/regular.css new file mode 100644 index 0000000..dfb7e76 --- /dev/null +++ b/resources/fontawesome/css/regular.css @@ -0,0 +1,19 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +:root, :host { + --fa-style-family-classic: 'Font Awesome 6 Free'; + --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); } + +.far, +.fa-regular { + font-weight: 400; } diff --git a/resources/fontawesome/css/regular.min.css b/resources/fontawesome/css/regular.min.css new file mode 100644 index 0000000..7f1cb00 --- /dev/null +++ b/resources/fontawesome/css/regular.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400} \ No newline at end of file diff --git a/resources/fontawesome/css/solid.css b/resources/fontawesome/css/solid.css new file mode 100644 index 0000000..3897c23 --- /dev/null +++ b/resources/fontawesome/css/solid.css @@ -0,0 +1,19 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +:root, :host { + --fa-style-family-classic: 'Font Awesome 6 Free'; + --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 900; + font-display: block; + src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } + +.fas, +.fa-solid { + font-weight: 900; } diff --git a/resources/fontawesome/css/solid.min.css b/resources/fontawesome/css/solid.min.css new file mode 100644 index 0000000..e7d97d2 --- /dev/null +++ b/resources/fontawesome/css/solid.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +: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} \ No newline at end of file diff --git a/resources/fontawesome/css/svg-with-js.css b/resources/fontawesome/css/svg-with-js.css new file mode 100644 index 0000000..85b8e6d --- /dev/null +++ b/resources/fontawesome/css/svg-with-js.css @@ -0,0 +1,640 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +:root, :host { + --fa-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-sharp-thin: normal 100 1em/1 'Font Awesome 6 Sharp'; + --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; } + +svg:not(:root).svg-inline--fa, svg:not(:host).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: 0.1em; } + .svg-inline--fa.fa-xs { + vertical-align: 0em; } + .svg-inline--fa.fa-sm { + vertical-align: -0.07143em; } + .svg-inline--fa.fa-lg { + vertical-align: -0.2em; } + .svg-inline--fa.fa-xl { + vertical-align: -0.25em; } + .svg-inline--fa.fa-2xl { + vertical-align: -0.3125em; } + .svg-inline--fa.fa-pull-left { + margin-right: var(--fa-pull-margin, 0.3em); + width: auto; } + .svg-inline--fa.fa-pull-right { + margin-left: var(--fa-pull-margin, 0.3em); + width: auto; } + .svg-inline--fa.fa-li { + width: var(--fa-li-width, 2em); + top: 0.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-text, .fa-layers-counter { + 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, 0.25em 0.5em); + right: var(--fa-right, 0); + text-overflow: ellipsis; + top: var(--fa-top, 0); + -webkit-transform: scale(var(--fa-counter-scale, 0.25)); + transform: scale(var(--fa-counter-scale, 0.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, 0.25)); + transform: scale(var(--fa-layers-scale, 0.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, 0.25)); + transform: scale(var(--fa-layers-scale, 0.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, 0.25)); + transform: scale(var(--fa-layers-scale, 0.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, 0.25)); + transform: scale(var(--fa-layers-scale, 0.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: 0.625em; + line-height: 0.1em; + vertical-align: 0.225em; } + +.fa-xs { + font-size: 0.75em; + line-height: 0.08333em; + vertical-align: 0.125em; } + +.fa-sm { + font-size: 0.875em; + line-height: 0.07143em; + vertical-align: 0.05357em; } + +.fa-lg { + font-size: 1.25em; + line-height: 0.05em; + vertical-align: -0.075em; } + +.fa-xl { + font-size: 1.5em; + line-height: 0.04167em; + vertical-align: -0.125em; } + +.fa-2xl { + font-size: 2em; + line-height: 0.03125em; + vertical-align: -0.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, 0.1em); + border-style: var(--fa-border-style, solid); + border-width: var(--fa-border-width, 0.08em); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); } + +.fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); } + +.fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.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(0.28, 0.84, 0.42, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.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(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 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(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 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-bounce, + .fa-fade, + .fa-beat-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, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -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)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.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, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -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)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.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, 0.4); } } + +@keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@-webkit-keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.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, 0.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%, 100% { + -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%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 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, 0)); + transform: rotate(var(--fa-rotate-angle, 0)); } + +.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); } + +.sr-only, +.fa-sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } + +.sr-only-focusable:not(:focus), +.fa-sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } + +.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, 0.4); } + +.svg-inline--fa.fa-swap-opacity .fa-primary { + opacity: var(--fa-secondary-opacity, 0.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: black; } + +.fad.fa-inverse, +.fa-duotone.fa-inverse { + color: var(--fa-inverse, #fff); } diff --git a/resources/fontawesome/css/svg-with-js.min.css b/resources/fontawesome/css/svg-with-js.min.css new file mode 100644 index 0000000..a99cebb --- /dev/null +++ b/resources/fontawesome/css/svg-with-js.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +: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-sharp-thin:normal 100 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,0));transform:rotate(var(--fa-rotate-angle,0))}.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)} \ No newline at end of file diff --git a/resources/fontawesome/css/v4-font-face.css b/resources/fontawesome/css/v4-font-face.css new file mode 100644 index 0000000..9e02283 --- /dev/null +++ b/resources/fontawesome/css/v4-font-face.css @@ -0,0 +1,26 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +@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; } diff --git a/resources/fontawesome/css/v4-font-face.min.css b/resources/fontawesome/css/v4-font-face.min.css new file mode 100644 index 0000000..140e09d --- /dev/null +++ b/resources/fontawesome/css/v4-font-face.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +@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} \ No newline at end of file diff --git a/resources/fontawesome/css/v4-shims.css b/resources/fontawesome/css/v4-shims.css new file mode 100644 index 0000000..ea60ea4 --- /dev/null +++ b/resources/fontawesome/css/v4-shims.css @@ -0,0 +1,2194 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +.fa.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-remove:before { + content: "\f00d"; } + +.fa.fa-close: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 { + content: "\f01e"; } + +.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 { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.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:before { + content: "\e0e3"; } + +.fa.fa-bar-chart-o: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-twitter { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-facebook { + 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 { + content: "\f0c9"; } + +.fa.fa-reorder:before { + content: "\f0c9"; } + +.fa.fa-magic:before { + content: "\e2ca"; } + +.fa.fa-pinterest { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.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-tachometer:before { + content: "\f625"; } + +.fa.fa-dashboard: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:before { + content: "\f3cd"; } + +.fa.fa-mobile-phone: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 { + content: "\f127"; } + +.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-maxcdn { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-html5 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-css3 { + 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 { + content: "\f153"; } + +.fa.fa-euro:before { + content: "\f153"; } + +.fa.fa-gbp:before { + content: "\f154"; } + +.fa.fa-usd:before { + content: "\24"; } + +.fa.fa-dollar:before { + content: "\24"; } + +.fa.fa-inr:before { + content: "\e1bc"; } + +.fa.fa-rupee:before { + content: "\e1bc"; } + +.fa.fa-jpy:before { + content: "\f157"; } + +.fa.fa-cny:before { + content: "\f157"; } + +.fa.fa-rmb:before { + content: "\f157"; } + +.fa.fa-yen:before { + content: "\f157"; } + +.fa.fa-rub:before { + content: "\f158"; } + +.fa.fa-ruble:before { + content: "\f158"; } + +.fa.fa-rouble:before { + content: "\f158"; } + +.fa.fa-krw:before { + content: "\f159"; } + +.fa.fa-won:before { + content: "\f159"; } + +.fa.fa-btc { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitcoin { + 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-youtube { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-xing { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-xing-square { + 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-dropbox { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-stack-overflow { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-instagram { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-flickr { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-adn { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitbucket { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitbucket-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitbucket-square:before { + content: "\f171"; } + +.fa.fa-tumblr { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.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-apple { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-windows { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-android { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-linux { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-dribbble { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-skype { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-foursquare { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-trello { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gratipay { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gittip { + 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-vk { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-weibo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-renren { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pagelines { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-stack-exchange { + 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 { + content: "\e2bb"; } + +.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-slack { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wordpress { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-openid { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-institution:before { + content: "\f19c"; } + +.fa.fa-bank:before { + content: "\f19c"; } + +.fa.fa-mortar-board:before { + content: "\f19d"; } + +.fa.fa-yahoo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-reddit { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-reddit-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-reddit-square:before { + content: "\f1a2"; } + +.fa.fa-stumbleupon-circle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-stumbleupon { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-delicious { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-digg { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pied-piper-pp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pied-piper-alt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-drupal { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-joomla { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-behance { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-behance-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-behance-square:before { + content: "\f1b5"; } + +.fa.fa-steam { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.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-spotify { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-deviantart { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-soundcloud { + 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-vine { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-codepen { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-jsfiddle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-life-bouy:before { + content: "\f1cd"; } + +.fa.fa-life-buoy:before { + content: "\f1cd"; } + +.fa.fa-life-saver:before { + content: "\f1cd"; } + +.fa.fa-support:before { + content: "\f1cd"; } + +.fa.fa-circle-o-notch:before { + content: "\f1ce"; } + +.fa.fa-rebel { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-ra { + 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 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.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 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-hacker-news { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.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-tencent-weibo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-qq { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-weixin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wechat { + 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 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-twitch { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.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-paypal { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-wallet { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-visa { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-mastercard { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-discover { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-amex { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-paypal { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-stripe { + 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 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-lastfm-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-lastfm-square:before { + content: "\f203"; } + +.fa.fa-ioxhost { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-angellist { + 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 { + content: "\f20b"; } + +.fa.fa-shekel:before { + content: "\f20b"; } + +.fa.fa-sheqel:before { + content: "\f20b"; } + +.fa.fa-buysellads { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-connectdevelop { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-dashcube { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-forumbee { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-leanpub { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-sellsy { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-shirtsinbulk { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-simplybuilt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.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-transgender:before { + content: "\f224"; } + +.fa.fa-intersex: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 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-whatsapp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-hotel:before { + content: "\f236"; } + +.fa.fa-viacoin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-medium { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-y-combinator { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-yc { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-yc:before { + content: "\f23b"; } + +.fa.fa-optin-monster { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-opencart { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-expeditedssl { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-battery-4:before { + content: "\f240"; } + +.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 { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-object-ungroup { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.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-jcb { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-diners-club { + 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 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gg { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gg-circle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-odnoklassniki { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-odnoklassniki-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa.fa-get-pocket { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wikipedia-w { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-safari { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-chrome { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-firefox { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-opera { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-internet-explorer { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-television:before { + content: "\f26c"; } + +.fa.fa-contao { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-500px { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-amazon { + 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 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-vimeo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-vimeo:before { + content: "\f27d"; } + +.fa.fa-black-tie { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-fonticons { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-reddit-alien { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-edge { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-credit-card-alt:before { + content: "\f09d"; } + +.fa.fa-codiepie { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-modx { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-fort-awesome { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-usb { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-product-hunt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-mixcloud { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-scribd { + 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 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bluetooth-b { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gitlab { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wpbeginner { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wpforms { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-envira { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wheelchair-alt { + 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 { + content: "\f2a4"; } + +.fa.fa-hard-of-hearing:before { + content: "\f2a4"; } + +.fa.fa-glide { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-glide-g { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-signing:before { + content: "\f2a7"; } + +.fa.fa-viadeo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-viadeo-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa.fa-snapchat { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.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-pied-piper { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-first-order { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-yoast { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-themeisle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-plus-official { + 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-font-awesome { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-fa { + 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-quora { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-free-code-camp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-telegram { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-thermometer-4:before { + content: "\f2c7"; } + +.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 { + content: "\f2cd"; } + +.fa.fa-s15:before { + content: "\f2cd"; } + +.fa.fa-window-maximize { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.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 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-grav { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-etsy { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-imdb { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-ravelry { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-eercast { + 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-superpowers { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wpexplorer { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-meetup { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } diff --git a/resources/fontawesome/css/v4-shims.min.css b/resources/fontawesome/css/v4-shims.min.css new file mode 100644 index 0000000..09baf5f --- /dev/null +++ b/resources/fontawesome/css/v4-shims.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +.fa.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} \ No newline at end of file diff --git a/resources/fontawesome/css/v5-font-face.css b/resources/fontawesome/css/v5-font-face.css new file mode 100644 index 0000000..7b736b1 --- /dev/null +++ b/resources/fontawesome/css/v5-font-face.css @@ -0,0 +1,22 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +@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"); } diff --git a/resources/fontawesome/css/v5-font-face.min.css b/resources/fontawesome/css/v5-font-face.min.css new file mode 100644 index 0000000..0cb8f13 --- /dev/null +++ b/resources/fontawesome/css/v5-font-face.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +@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")} \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/42-group.svg b/resources/fontawesome/svgs/brands/42-group.svg new file mode 100644 index 0000000..1b5e45d --- /dev/null +++ b/resources/fontawesome/svgs/brands/42-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/500px.svg b/resources/fontawesome/svgs/brands/500px.svg new file mode 100644 index 0000000..1f17fc8 --- /dev/null +++ b/resources/fontawesome/svgs/brands/500px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/accessible-icon.svg b/resources/fontawesome/svgs/brands/accessible-icon.svg new file mode 100644 index 0000000..6b6aff6 --- /dev/null +++ b/resources/fontawesome/svgs/brands/accessible-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/accusoft.svg b/resources/fontawesome/svgs/brands/accusoft.svg new file mode 100644 index 0000000..5f6a73e --- /dev/null +++ b/resources/fontawesome/svgs/brands/accusoft.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/adn.svg b/resources/fontawesome/svgs/brands/adn.svg new file mode 100644 index 0000000..54982ba --- /dev/null +++ b/resources/fontawesome/svgs/brands/adn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/adversal.svg b/resources/fontawesome/svgs/brands/adversal.svg new file mode 100644 index 0000000..cddc08d --- /dev/null +++ b/resources/fontawesome/svgs/brands/adversal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/affiliatetheme.svg b/resources/fontawesome/svgs/brands/affiliatetheme.svg new file mode 100644 index 0000000..1f2b266 --- /dev/null +++ b/resources/fontawesome/svgs/brands/affiliatetheme.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/airbnb.svg b/resources/fontawesome/svgs/brands/airbnb.svg new file mode 100644 index 0000000..ecd4172 --- /dev/null +++ b/resources/fontawesome/svgs/brands/airbnb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/algolia.svg b/resources/fontawesome/svgs/brands/algolia.svg new file mode 100644 index 0000000..fa5afbf --- /dev/null +++ b/resources/fontawesome/svgs/brands/algolia.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/alipay.svg b/resources/fontawesome/svgs/brands/alipay.svg new file mode 100644 index 0000000..10b10c9 --- /dev/null +++ b/resources/fontawesome/svgs/brands/alipay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/amazon-pay.svg b/resources/fontawesome/svgs/brands/amazon-pay.svg new file mode 100644 index 0000000..cdca9ad --- /dev/null +++ b/resources/fontawesome/svgs/brands/amazon-pay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/amazon.svg b/resources/fontawesome/svgs/brands/amazon.svg new file mode 100644 index 0000000..e33ea7a --- /dev/null +++ b/resources/fontawesome/svgs/brands/amazon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/amilia.svg b/resources/fontawesome/svgs/brands/amilia.svg new file mode 100644 index 0000000..ca939b3 --- /dev/null +++ b/resources/fontawesome/svgs/brands/amilia.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/android.svg b/resources/fontawesome/svgs/brands/android.svg new file mode 100644 index 0000000..c287199 --- /dev/null +++ b/resources/fontawesome/svgs/brands/android.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/angellist.svg b/resources/fontawesome/svgs/brands/angellist.svg new file mode 100644 index 0000000..50b5cfd --- /dev/null +++ b/resources/fontawesome/svgs/brands/angellist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/angrycreative.svg b/resources/fontawesome/svgs/brands/angrycreative.svg new file mode 100644 index 0000000..b510344 --- /dev/null +++ b/resources/fontawesome/svgs/brands/angrycreative.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/angular.svg b/resources/fontawesome/svgs/brands/angular.svg new file mode 100644 index 0000000..feb2a49 --- /dev/null +++ b/resources/fontawesome/svgs/brands/angular.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/app-store-ios.svg b/resources/fontawesome/svgs/brands/app-store-ios.svg new file mode 100644 index 0000000..25cf325 --- /dev/null +++ b/resources/fontawesome/svgs/brands/app-store-ios.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/app-store.svg b/resources/fontawesome/svgs/brands/app-store.svg new file mode 100644 index 0000000..999b116 --- /dev/null +++ b/resources/fontawesome/svgs/brands/app-store.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/apper.svg b/resources/fontawesome/svgs/brands/apper.svg new file mode 100644 index 0000000..e579c54 --- /dev/null +++ b/resources/fontawesome/svgs/brands/apper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/apple-pay.svg b/resources/fontawesome/svgs/brands/apple-pay.svg new file mode 100644 index 0000000..9c90232 --- /dev/null +++ b/resources/fontawesome/svgs/brands/apple-pay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/apple.svg b/resources/fontawesome/svgs/brands/apple.svg new file mode 100644 index 0000000..2540c78 --- /dev/null +++ b/resources/fontawesome/svgs/brands/apple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/artstation.svg b/resources/fontawesome/svgs/brands/artstation.svg new file mode 100644 index 0000000..520d755 --- /dev/null +++ b/resources/fontawesome/svgs/brands/artstation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/asymmetrik.svg b/resources/fontawesome/svgs/brands/asymmetrik.svg new file mode 100644 index 0000000..5a016a8 --- /dev/null +++ b/resources/fontawesome/svgs/brands/asymmetrik.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/atlassian.svg b/resources/fontawesome/svgs/brands/atlassian.svg new file mode 100644 index 0000000..e4c2e50 --- /dev/null +++ b/resources/fontawesome/svgs/brands/atlassian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/audible.svg b/resources/fontawesome/svgs/brands/audible.svg new file mode 100644 index 0000000..e010329 --- /dev/null +++ b/resources/fontawesome/svgs/brands/audible.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/autoprefixer.svg b/resources/fontawesome/svgs/brands/autoprefixer.svg new file mode 100644 index 0000000..b8c4bbc --- /dev/null +++ b/resources/fontawesome/svgs/brands/autoprefixer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/avianex.svg b/resources/fontawesome/svgs/brands/avianex.svg new file mode 100644 index 0000000..c52e8c8 --- /dev/null +++ b/resources/fontawesome/svgs/brands/avianex.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/aviato.svg b/resources/fontawesome/svgs/brands/aviato.svg new file mode 100644 index 0000000..8c26685 --- /dev/null +++ b/resources/fontawesome/svgs/brands/aviato.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/aws.svg b/resources/fontawesome/svgs/brands/aws.svg new file mode 100644 index 0000000..1547fa0 --- /dev/null +++ b/resources/fontawesome/svgs/brands/aws.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/bandcamp.svg b/resources/fontawesome/svgs/brands/bandcamp.svg new file mode 100644 index 0000000..24aeb08 --- /dev/null +++ b/resources/fontawesome/svgs/brands/bandcamp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/battle-net.svg b/resources/fontawesome/svgs/brands/battle-net.svg new file mode 100644 index 0000000..1b49d11 --- /dev/null +++ b/resources/fontawesome/svgs/brands/battle-net.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/behance.svg b/resources/fontawesome/svgs/brands/behance.svg new file mode 100644 index 0000000..0ec1746 --- /dev/null +++ b/resources/fontawesome/svgs/brands/behance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/bilibili.svg b/resources/fontawesome/svgs/brands/bilibili.svg new file mode 100644 index 0000000..8b8aff0 --- /dev/null +++ b/resources/fontawesome/svgs/brands/bilibili.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/bimobject.svg b/resources/fontawesome/svgs/brands/bimobject.svg new file mode 100644 index 0000000..2c4f1e2 --- /dev/null +++ b/resources/fontawesome/svgs/brands/bimobject.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/bitbucket.svg b/resources/fontawesome/svgs/brands/bitbucket.svg new file mode 100644 index 0000000..e17035a --- /dev/null +++ b/resources/fontawesome/svgs/brands/bitbucket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/bitcoin.svg b/resources/fontawesome/svgs/brands/bitcoin.svg new file mode 100644 index 0000000..86b569d --- /dev/null +++ b/resources/fontawesome/svgs/brands/bitcoin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/bity.svg b/resources/fontawesome/svgs/brands/bity.svg new file mode 100644 index 0000000..13e4dee --- /dev/null +++ b/resources/fontawesome/svgs/brands/bity.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/black-tie.svg b/resources/fontawesome/svgs/brands/black-tie.svg new file mode 100644 index 0000000..9879475 --- /dev/null +++ b/resources/fontawesome/svgs/brands/black-tie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/blackberry.svg b/resources/fontawesome/svgs/brands/blackberry.svg new file mode 100644 index 0000000..220d866 --- /dev/null +++ b/resources/fontawesome/svgs/brands/blackberry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/blogger-b.svg b/resources/fontawesome/svgs/brands/blogger-b.svg new file mode 100644 index 0000000..701068f --- /dev/null +++ b/resources/fontawesome/svgs/brands/blogger-b.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/blogger.svg b/resources/fontawesome/svgs/brands/blogger.svg new file mode 100644 index 0000000..8eea140 --- /dev/null +++ b/resources/fontawesome/svgs/brands/blogger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/bluesky.svg b/resources/fontawesome/svgs/brands/bluesky.svg new file mode 100644 index 0000000..5fe8ad3 --- /dev/null +++ b/resources/fontawesome/svgs/brands/bluesky.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/bluetooth-b.svg b/resources/fontawesome/svgs/brands/bluetooth-b.svg new file mode 100644 index 0000000..43cd196 --- /dev/null +++ b/resources/fontawesome/svgs/brands/bluetooth-b.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/bluetooth.svg b/resources/fontawesome/svgs/brands/bluetooth.svg new file mode 100644 index 0000000..3b9f5a5 --- /dev/null +++ b/resources/fontawesome/svgs/brands/bluetooth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/bootstrap.svg b/resources/fontawesome/svgs/brands/bootstrap.svg new file mode 100644 index 0000000..2644ad4 --- /dev/null +++ b/resources/fontawesome/svgs/brands/bootstrap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/bots.svg b/resources/fontawesome/svgs/brands/bots.svg new file mode 100644 index 0000000..4c4e68e --- /dev/null +++ b/resources/fontawesome/svgs/brands/bots.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/brave-reverse.svg b/resources/fontawesome/svgs/brands/brave-reverse.svg new file mode 100644 index 0000000..61055b5 --- /dev/null +++ b/resources/fontawesome/svgs/brands/brave-reverse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/brave.svg b/resources/fontawesome/svgs/brands/brave.svg new file mode 100644 index 0000000..5003d78 --- /dev/null +++ b/resources/fontawesome/svgs/brands/brave.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/btc.svg b/resources/fontawesome/svgs/brands/btc.svg new file mode 100644 index 0000000..e83566e --- /dev/null +++ b/resources/fontawesome/svgs/brands/btc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/buffer.svg b/resources/fontawesome/svgs/brands/buffer.svg new file mode 100644 index 0000000..1001127 --- /dev/null +++ b/resources/fontawesome/svgs/brands/buffer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/buromobelexperte.svg b/resources/fontawesome/svgs/brands/buromobelexperte.svg new file mode 100644 index 0000000..39bd62c --- /dev/null +++ b/resources/fontawesome/svgs/brands/buromobelexperte.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/buy-n-large.svg b/resources/fontawesome/svgs/brands/buy-n-large.svg new file mode 100644 index 0000000..60ebc1d --- /dev/null +++ b/resources/fontawesome/svgs/brands/buy-n-large.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/buysellads.svg b/resources/fontawesome/svgs/brands/buysellads.svg new file mode 100644 index 0000000..36f4a8f --- /dev/null +++ b/resources/fontawesome/svgs/brands/buysellads.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/canadian-maple-leaf.svg b/resources/fontawesome/svgs/brands/canadian-maple-leaf.svg new file mode 100644 index 0000000..7024795 --- /dev/null +++ b/resources/fontawesome/svgs/brands/canadian-maple-leaf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/cc-amazon-pay.svg b/resources/fontawesome/svgs/brands/cc-amazon-pay.svg new file mode 100644 index 0000000..c3aaee7 --- /dev/null +++ b/resources/fontawesome/svgs/brands/cc-amazon-pay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/cc-amex.svg b/resources/fontawesome/svgs/brands/cc-amex.svg new file mode 100644 index 0000000..aa6c8df --- /dev/null +++ b/resources/fontawesome/svgs/brands/cc-amex.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/cc-apple-pay.svg b/resources/fontawesome/svgs/brands/cc-apple-pay.svg new file mode 100644 index 0000000..dab0dcb --- /dev/null +++ b/resources/fontawesome/svgs/brands/cc-apple-pay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/cc-diners-club.svg b/resources/fontawesome/svgs/brands/cc-diners-club.svg new file mode 100644 index 0000000..85c7922 --- /dev/null +++ b/resources/fontawesome/svgs/brands/cc-diners-club.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/cc-discover.svg b/resources/fontawesome/svgs/brands/cc-discover.svg new file mode 100644 index 0000000..a5d13ad --- /dev/null +++ b/resources/fontawesome/svgs/brands/cc-discover.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/cc-jcb.svg b/resources/fontawesome/svgs/brands/cc-jcb.svg new file mode 100644 index 0000000..9a0c6b6 --- /dev/null +++ b/resources/fontawesome/svgs/brands/cc-jcb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/cc-mastercard.svg b/resources/fontawesome/svgs/brands/cc-mastercard.svg new file mode 100644 index 0000000..b7b3b85 --- /dev/null +++ b/resources/fontawesome/svgs/brands/cc-mastercard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/cc-paypal.svg b/resources/fontawesome/svgs/brands/cc-paypal.svg new file mode 100644 index 0000000..d5281da --- /dev/null +++ b/resources/fontawesome/svgs/brands/cc-paypal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/cc-stripe.svg b/resources/fontawesome/svgs/brands/cc-stripe.svg new file mode 100644 index 0000000..9a93918 --- /dev/null +++ b/resources/fontawesome/svgs/brands/cc-stripe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/cc-visa.svg b/resources/fontawesome/svgs/brands/cc-visa.svg new file mode 100644 index 0000000..23526c1 --- /dev/null +++ b/resources/fontawesome/svgs/brands/cc-visa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/centercode.svg b/resources/fontawesome/svgs/brands/centercode.svg new file mode 100644 index 0000000..d3ebe7c --- /dev/null +++ b/resources/fontawesome/svgs/brands/centercode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/centos.svg b/resources/fontawesome/svgs/brands/centos.svg new file mode 100644 index 0000000..01bb0d1 --- /dev/null +++ b/resources/fontawesome/svgs/brands/centos.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/chrome.svg b/resources/fontawesome/svgs/brands/chrome.svg new file mode 100644 index 0000000..70f9182 --- /dev/null +++ b/resources/fontawesome/svgs/brands/chrome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/chromecast.svg b/resources/fontawesome/svgs/brands/chromecast.svg new file mode 100644 index 0000000..5308a4e --- /dev/null +++ b/resources/fontawesome/svgs/brands/chromecast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/cloudflare.svg b/resources/fontawesome/svgs/brands/cloudflare.svg new file mode 100644 index 0000000..5d68627 --- /dev/null +++ b/resources/fontawesome/svgs/brands/cloudflare.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/cloudscale.svg b/resources/fontawesome/svgs/brands/cloudscale.svg new file mode 100644 index 0000000..d107163 --- /dev/null +++ b/resources/fontawesome/svgs/brands/cloudscale.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/cloudsmith.svg b/resources/fontawesome/svgs/brands/cloudsmith.svg new file mode 100644 index 0000000..c9f0ad7 --- /dev/null +++ b/resources/fontawesome/svgs/brands/cloudsmith.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/cloudversify.svg b/resources/fontawesome/svgs/brands/cloudversify.svg new file mode 100644 index 0000000..b1fd5b2 --- /dev/null +++ b/resources/fontawesome/svgs/brands/cloudversify.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/cmplid.svg b/resources/fontawesome/svgs/brands/cmplid.svg new file mode 100644 index 0000000..52e273e --- /dev/null +++ b/resources/fontawesome/svgs/brands/cmplid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/codepen.svg b/resources/fontawesome/svgs/brands/codepen.svg new file mode 100644 index 0000000..3c2bb5d --- /dev/null +++ b/resources/fontawesome/svgs/brands/codepen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/codiepie.svg b/resources/fontawesome/svgs/brands/codiepie.svg new file mode 100644 index 0000000..53188c9 --- /dev/null +++ b/resources/fontawesome/svgs/brands/codiepie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/confluence.svg b/resources/fontawesome/svgs/brands/confluence.svg new file mode 100644 index 0000000..02e4f0b --- /dev/null +++ b/resources/fontawesome/svgs/brands/confluence.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/connectdevelop.svg b/resources/fontawesome/svgs/brands/connectdevelop.svg new file mode 100644 index 0000000..105a86a --- /dev/null +++ b/resources/fontawesome/svgs/brands/connectdevelop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/contao.svg b/resources/fontawesome/svgs/brands/contao.svg new file mode 100644 index 0000000..bb56e78 --- /dev/null +++ b/resources/fontawesome/svgs/brands/contao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/cotton-bureau.svg b/resources/fontawesome/svgs/brands/cotton-bureau.svg new file mode 100644 index 0000000..0cb6a4d --- /dev/null +++ b/resources/fontawesome/svgs/brands/cotton-bureau.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/cpanel.svg b/resources/fontawesome/svgs/brands/cpanel.svg new file mode 100644 index 0000000..914a85b --- /dev/null +++ b/resources/fontawesome/svgs/brands/cpanel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/creative-commons-by.svg b/resources/fontawesome/svgs/brands/creative-commons-by.svg new file mode 100644 index 0000000..8771d65 --- /dev/null +++ b/resources/fontawesome/svgs/brands/creative-commons-by.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/creative-commons-nc-eu.svg b/resources/fontawesome/svgs/brands/creative-commons-nc-eu.svg new file mode 100644 index 0000000..6faf966 --- /dev/null +++ b/resources/fontawesome/svgs/brands/creative-commons-nc-eu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/creative-commons-nc-jp.svg b/resources/fontawesome/svgs/brands/creative-commons-nc-jp.svg new file mode 100644 index 0000000..e72abe6 --- /dev/null +++ b/resources/fontawesome/svgs/brands/creative-commons-nc-jp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/creative-commons-nc.svg b/resources/fontawesome/svgs/brands/creative-commons-nc.svg new file mode 100644 index 0000000..1c8c294 --- /dev/null +++ b/resources/fontawesome/svgs/brands/creative-commons-nc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/creative-commons-nd.svg b/resources/fontawesome/svgs/brands/creative-commons-nd.svg new file mode 100644 index 0000000..5643f60 --- /dev/null +++ b/resources/fontawesome/svgs/brands/creative-commons-nd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/creative-commons-pd-alt.svg b/resources/fontawesome/svgs/brands/creative-commons-pd-alt.svg new file mode 100644 index 0000000..18fd93d --- /dev/null +++ b/resources/fontawesome/svgs/brands/creative-commons-pd-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/creative-commons-pd.svg b/resources/fontawesome/svgs/brands/creative-commons-pd.svg new file mode 100644 index 0000000..96f4f14 --- /dev/null +++ b/resources/fontawesome/svgs/brands/creative-commons-pd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/creative-commons-remix.svg b/resources/fontawesome/svgs/brands/creative-commons-remix.svg new file mode 100644 index 0000000..4e64088 --- /dev/null +++ b/resources/fontawesome/svgs/brands/creative-commons-remix.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/creative-commons-sa.svg b/resources/fontawesome/svgs/brands/creative-commons-sa.svg new file mode 100644 index 0000000..183ef72 --- /dev/null +++ b/resources/fontawesome/svgs/brands/creative-commons-sa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/creative-commons-sampling-plus.svg b/resources/fontawesome/svgs/brands/creative-commons-sampling-plus.svg new file mode 100644 index 0000000..1eebde4 --- /dev/null +++ b/resources/fontawesome/svgs/brands/creative-commons-sampling-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/creative-commons-sampling.svg b/resources/fontawesome/svgs/brands/creative-commons-sampling.svg new file mode 100644 index 0000000..f7ac9d2 --- /dev/null +++ b/resources/fontawesome/svgs/brands/creative-commons-sampling.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/creative-commons-share.svg b/resources/fontawesome/svgs/brands/creative-commons-share.svg new file mode 100644 index 0000000..34cda89 --- /dev/null +++ b/resources/fontawesome/svgs/brands/creative-commons-share.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/creative-commons-zero.svg b/resources/fontawesome/svgs/brands/creative-commons-zero.svg new file mode 100644 index 0000000..1228a4a --- /dev/null +++ b/resources/fontawesome/svgs/brands/creative-commons-zero.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/creative-commons.svg b/resources/fontawesome/svgs/brands/creative-commons.svg new file mode 100644 index 0000000..6ec3aab --- /dev/null +++ b/resources/fontawesome/svgs/brands/creative-commons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/critical-role.svg b/resources/fontawesome/svgs/brands/critical-role.svg new file mode 100644 index 0000000..0821856 --- /dev/null +++ b/resources/fontawesome/svgs/brands/critical-role.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/css3-alt.svg b/resources/fontawesome/svgs/brands/css3-alt.svg new file mode 100644 index 0000000..b74cdd7 --- /dev/null +++ b/resources/fontawesome/svgs/brands/css3-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/css3.svg b/resources/fontawesome/svgs/brands/css3.svg new file mode 100644 index 0000000..93fe0de --- /dev/null +++ b/resources/fontawesome/svgs/brands/css3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/cuttlefish.svg b/resources/fontawesome/svgs/brands/cuttlefish.svg new file mode 100644 index 0000000..17c93fe --- /dev/null +++ b/resources/fontawesome/svgs/brands/cuttlefish.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/d-and-d-beyond.svg b/resources/fontawesome/svgs/brands/d-and-d-beyond.svg new file mode 100644 index 0000000..f0f7827 --- /dev/null +++ b/resources/fontawesome/svgs/brands/d-and-d-beyond.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/d-and-d.svg b/resources/fontawesome/svgs/brands/d-and-d.svg new file mode 100644 index 0000000..946a86b --- /dev/null +++ b/resources/fontawesome/svgs/brands/d-and-d.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/dailymotion.svg b/resources/fontawesome/svgs/brands/dailymotion.svg new file mode 100644 index 0000000..d4f44c5 --- /dev/null +++ b/resources/fontawesome/svgs/brands/dailymotion.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/dashcube.svg b/resources/fontawesome/svgs/brands/dashcube.svg new file mode 100644 index 0000000..d06d976 --- /dev/null +++ b/resources/fontawesome/svgs/brands/dashcube.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/debian.svg b/resources/fontawesome/svgs/brands/debian.svg new file mode 100644 index 0000000..27e2d6d --- /dev/null +++ b/resources/fontawesome/svgs/brands/debian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/deezer.svg b/resources/fontawesome/svgs/brands/deezer.svg new file mode 100644 index 0000000..9b3d891 --- /dev/null +++ b/resources/fontawesome/svgs/brands/deezer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/delicious.svg b/resources/fontawesome/svgs/brands/delicious.svg new file mode 100644 index 0000000..73495ba --- /dev/null +++ b/resources/fontawesome/svgs/brands/delicious.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/deploydog.svg b/resources/fontawesome/svgs/brands/deploydog.svg new file mode 100644 index 0000000..2c92fc6 --- /dev/null +++ b/resources/fontawesome/svgs/brands/deploydog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/deskpro.svg b/resources/fontawesome/svgs/brands/deskpro.svg new file mode 100644 index 0000000..6fea4bb --- /dev/null +++ b/resources/fontawesome/svgs/brands/deskpro.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/dev.svg b/resources/fontawesome/svgs/brands/dev.svg new file mode 100644 index 0000000..51be392 --- /dev/null +++ b/resources/fontawesome/svgs/brands/dev.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/deviantart.svg b/resources/fontawesome/svgs/brands/deviantart.svg new file mode 100644 index 0000000..19c56a4 --- /dev/null +++ b/resources/fontawesome/svgs/brands/deviantart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/dhl.svg b/resources/fontawesome/svgs/brands/dhl.svg new file mode 100644 index 0000000..c357ea0 --- /dev/null +++ b/resources/fontawesome/svgs/brands/dhl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/diaspora.svg b/resources/fontawesome/svgs/brands/diaspora.svg new file mode 100644 index 0000000..98d60e7 --- /dev/null +++ b/resources/fontawesome/svgs/brands/diaspora.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/digg.svg b/resources/fontawesome/svgs/brands/digg.svg new file mode 100644 index 0000000..d01d751 --- /dev/null +++ b/resources/fontawesome/svgs/brands/digg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/digital-ocean.svg b/resources/fontawesome/svgs/brands/digital-ocean.svg new file mode 100644 index 0000000..c7b07a0 --- /dev/null +++ b/resources/fontawesome/svgs/brands/digital-ocean.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/discord.svg b/resources/fontawesome/svgs/brands/discord.svg new file mode 100644 index 0000000..7883ac3 --- /dev/null +++ b/resources/fontawesome/svgs/brands/discord.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/discourse.svg b/resources/fontawesome/svgs/brands/discourse.svg new file mode 100644 index 0000000..70cb7c5 --- /dev/null +++ b/resources/fontawesome/svgs/brands/discourse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/dochub.svg b/resources/fontawesome/svgs/brands/dochub.svg new file mode 100644 index 0000000..e4e865f --- /dev/null +++ b/resources/fontawesome/svgs/brands/dochub.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/docker.svg b/resources/fontawesome/svgs/brands/docker.svg new file mode 100644 index 0000000..1d2fd1a --- /dev/null +++ b/resources/fontawesome/svgs/brands/docker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/draft2digital.svg b/resources/fontawesome/svgs/brands/draft2digital.svg new file mode 100644 index 0000000..e9194c7 --- /dev/null +++ b/resources/fontawesome/svgs/brands/draft2digital.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/dribbble.svg b/resources/fontawesome/svgs/brands/dribbble.svg new file mode 100644 index 0000000..2ce74c8 --- /dev/null +++ b/resources/fontawesome/svgs/brands/dribbble.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/dropbox.svg b/resources/fontawesome/svgs/brands/dropbox.svg new file mode 100644 index 0000000..09a94f9 --- /dev/null +++ b/resources/fontawesome/svgs/brands/dropbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/drupal.svg b/resources/fontawesome/svgs/brands/drupal.svg new file mode 100644 index 0000000..d4a8cfe --- /dev/null +++ b/resources/fontawesome/svgs/brands/drupal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/dyalog.svg b/resources/fontawesome/svgs/brands/dyalog.svg new file mode 100644 index 0000000..57d4fce --- /dev/null +++ b/resources/fontawesome/svgs/brands/dyalog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/earlybirds.svg b/resources/fontawesome/svgs/brands/earlybirds.svg new file mode 100644 index 0000000..21b89ce --- /dev/null +++ b/resources/fontawesome/svgs/brands/earlybirds.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/ebay.svg b/resources/fontawesome/svgs/brands/ebay.svg new file mode 100644 index 0000000..5fe4944 --- /dev/null +++ b/resources/fontawesome/svgs/brands/ebay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/edge-legacy.svg b/resources/fontawesome/svgs/brands/edge-legacy.svg new file mode 100644 index 0000000..1c1c152 --- /dev/null +++ b/resources/fontawesome/svgs/brands/edge-legacy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/edge.svg b/resources/fontawesome/svgs/brands/edge.svg new file mode 100644 index 0000000..58dded3 --- /dev/null +++ b/resources/fontawesome/svgs/brands/edge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/elementor.svg b/resources/fontawesome/svgs/brands/elementor.svg new file mode 100644 index 0000000..633c896 --- /dev/null +++ b/resources/fontawesome/svgs/brands/elementor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/ello.svg b/resources/fontawesome/svgs/brands/ello.svg new file mode 100644 index 0000000..0fe83d5 --- /dev/null +++ b/resources/fontawesome/svgs/brands/ello.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/ember.svg b/resources/fontawesome/svgs/brands/ember.svg new file mode 100644 index 0000000..62916cf --- /dev/null +++ b/resources/fontawesome/svgs/brands/ember.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/empire.svg b/resources/fontawesome/svgs/brands/empire.svg new file mode 100644 index 0000000..c8db252 --- /dev/null +++ b/resources/fontawesome/svgs/brands/empire.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/envira.svg b/resources/fontawesome/svgs/brands/envira.svg new file mode 100644 index 0000000..77fd55b --- /dev/null +++ b/resources/fontawesome/svgs/brands/envira.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/erlang.svg b/resources/fontawesome/svgs/brands/erlang.svg new file mode 100644 index 0000000..80a7eb5 --- /dev/null +++ b/resources/fontawesome/svgs/brands/erlang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/ethereum.svg b/resources/fontawesome/svgs/brands/ethereum.svg new file mode 100644 index 0000000..a7911bd --- /dev/null +++ b/resources/fontawesome/svgs/brands/ethereum.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/etsy.svg b/resources/fontawesome/svgs/brands/etsy.svg new file mode 100644 index 0000000..34b15f6 --- /dev/null +++ b/resources/fontawesome/svgs/brands/etsy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/evernote.svg b/resources/fontawesome/svgs/brands/evernote.svg new file mode 100644 index 0000000..4a0dd3b --- /dev/null +++ b/resources/fontawesome/svgs/brands/evernote.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/expeditedssl.svg b/resources/fontawesome/svgs/brands/expeditedssl.svg new file mode 100644 index 0000000..96c39ad --- /dev/null +++ b/resources/fontawesome/svgs/brands/expeditedssl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/facebook-f.svg b/resources/fontawesome/svgs/brands/facebook-f.svg new file mode 100644 index 0000000..2c9e341 --- /dev/null +++ b/resources/fontawesome/svgs/brands/facebook-f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/facebook-messenger.svg b/resources/fontawesome/svgs/brands/facebook-messenger.svg new file mode 100644 index 0000000..a46911f --- /dev/null +++ b/resources/fontawesome/svgs/brands/facebook-messenger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/facebook.svg b/resources/fontawesome/svgs/brands/facebook.svg new file mode 100644 index 0000000..d095174 --- /dev/null +++ b/resources/fontawesome/svgs/brands/facebook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/fantasy-flight-games.svg b/resources/fontawesome/svgs/brands/fantasy-flight-games.svg new file mode 100644 index 0000000..58ba450 --- /dev/null +++ b/resources/fontawesome/svgs/brands/fantasy-flight-games.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/fedex.svg b/resources/fontawesome/svgs/brands/fedex.svg new file mode 100644 index 0000000..dd00f49 --- /dev/null +++ b/resources/fontawesome/svgs/brands/fedex.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/fedora.svg b/resources/fontawesome/svgs/brands/fedora.svg new file mode 100644 index 0000000..1d1db06 --- /dev/null +++ b/resources/fontawesome/svgs/brands/fedora.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/figma.svg b/resources/fontawesome/svgs/brands/figma.svg new file mode 100644 index 0000000..d56446a --- /dev/null +++ b/resources/fontawesome/svgs/brands/figma.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/firefox-browser.svg b/resources/fontawesome/svgs/brands/firefox-browser.svg new file mode 100644 index 0000000..511b09f --- /dev/null +++ b/resources/fontawesome/svgs/brands/firefox-browser.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/firefox.svg b/resources/fontawesome/svgs/brands/firefox.svg new file mode 100644 index 0000000..f816fdd --- /dev/null +++ b/resources/fontawesome/svgs/brands/firefox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/first-order-alt.svg b/resources/fontawesome/svgs/brands/first-order-alt.svg new file mode 100644 index 0000000..6d6e00a --- /dev/null +++ b/resources/fontawesome/svgs/brands/first-order-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/first-order.svg b/resources/fontawesome/svgs/brands/first-order.svg new file mode 100644 index 0000000..5dbf41e --- /dev/null +++ b/resources/fontawesome/svgs/brands/first-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/firstdraft.svg b/resources/fontawesome/svgs/brands/firstdraft.svg new file mode 100644 index 0000000..a3ee8a0 --- /dev/null +++ b/resources/fontawesome/svgs/brands/firstdraft.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/flickr.svg b/resources/fontawesome/svgs/brands/flickr.svg new file mode 100644 index 0000000..f716d9e --- /dev/null +++ b/resources/fontawesome/svgs/brands/flickr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/flipboard.svg b/resources/fontawesome/svgs/brands/flipboard.svg new file mode 100644 index 0000000..6b95f3d --- /dev/null +++ b/resources/fontawesome/svgs/brands/flipboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/fly.svg b/resources/fontawesome/svgs/brands/fly.svg new file mode 100644 index 0000000..1064145 --- /dev/null +++ b/resources/fontawesome/svgs/brands/fly.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/font-awesome.svg b/resources/fontawesome/svgs/brands/font-awesome.svg new file mode 100644 index 0000000..13f10eb --- /dev/null +++ b/resources/fontawesome/svgs/brands/font-awesome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/fonticons-fi.svg b/resources/fontawesome/svgs/brands/fonticons-fi.svg new file mode 100644 index 0000000..2faeeef --- /dev/null +++ b/resources/fontawesome/svgs/brands/fonticons-fi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/fonticons.svg b/resources/fontawesome/svgs/brands/fonticons.svg new file mode 100644 index 0000000..b273cfd --- /dev/null +++ b/resources/fontawesome/svgs/brands/fonticons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/fort-awesome-alt.svg b/resources/fontawesome/svgs/brands/fort-awesome-alt.svg new file mode 100644 index 0000000..e3f412b --- /dev/null +++ b/resources/fontawesome/svgs/brands/fort-awesome-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/fort-awesome.svg b/resources/fontawesome/svgs/brands/fort-awesome.svg new file mode 100644 index 0000000..58261d6 --- /dev/null +++ b/resources/fontawesome/svgs/brands/fort-awesome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/forumbee.svg b/resources/fontawesome/svgs/brands/forumbee.svg new file mode 100644 index 0000000..09db08b --- /dev/null +++ b/resources/fontawesome/svgs/brands/forumbee.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/foursquare.svg b/resources/fontawesome/svgs/brands/foursquare.svg new file mode 100644 index 0000000..9eff37c --- /dev/null +++ b/resources/fontawesome/svgs/brands/foursquare.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/free-code-camp.svg b/resources/fontawesome/svgs/brands/free-code-camp.svg new file mode 100644 index 0000000..50cccbd --- /dev/null +++ b/resources/fontawesome/svgs/brands/free-code-camp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/freebsd.svg b/resources/fontawesome/svgs/brands/freebsd.svg new file mode 100644 index 0000000..aff4ae6 --- /dev/null +++ b/resources/fontawesome/svgs/brands/freebsd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/fulcrum.svg b/resources/fontawesome/svgs/brands/fulcrum.svg new file mode 100644 index 0000000..02a07ab --- /dev/null +++ b/resources/fontawesome/svgs/brands/fulcrum.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/galactic-republic.svg b/resources/fontawesome/svgs/brands/galactic-republic.svg new file mode 100644 index 0000000..7616551 --- /dev/null +++ b/resources/fontawesome/svgs/brands/galactic-republic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/galactic-senate.svg b/resources/fontawesome/svgs/brands/galactic-senate.svg new file mode 100644 index 0000000..7395fb3 --- /dev/null +++ b/resources/fontawesome/svgs/brands/galactic-senate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/get-pocket.svg b/resources/fontawesome/svgs/brands/get-pocket.svg new file mode 100644 index 0000000..ecf0398 --- /dev/null +++ b/resources/fontawesome/svgs/brands/get-pocket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/gg-circle.svg b/resources/fontawesome/svgs/brands/gg-circle.svg new file mode 100644 index 0000000..2e853b5 --- /dev/null +++ b/resources/fontawesome/svgs/brands/gg-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/gg.svg b/resources/fontawesome/svgs/brands/gg.svg new file mode 100644 index 0000000..3ecbea9 --- /dev/null +++ b/resources/fontawesome/svgs/brands/gg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/git-alt.svg b/resources/fontawesome/svgs/brands/git-alt.svg new file mode 100644 index 0000000..1775079 --- /dev/null +++ b/resources/fontawesome/svgs/brands/git-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/git.svg b/resources/fontawesome/svgs/brands/git.svg new file mode 100644 index 0000000..071485e --- /dev/null +++ b/resources/fontawesome/svgs/brands/git.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/github-alt.svg b/resources/fontawesome/svgs/brands/github-alt.svg new file mode 100644 index 0000000..75ab0dc --- /dev/null +++ b/resources/fontawesome/svgs/brands/github-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/github.svg b/resources/fontawesome/svgs/brands/github.svg new file mode 100644 index 0000000..b3da6fe --- /dev/null +++ b/resources/fontawesome/svgs/brands/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/gitkraken.svg b/resources/fontawesome/svgs/brands/gitkraken.svg new file mode 100644 index 0000000..4930871 --- /dev/null +++ b/resources/fontawesome/svgs/brands/gitkraken.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/gitlab.svg b/resources/fontawesome/svgs/brands/gitlab.svg new file mode 100644 index 0000000..feb6910 --- /dev/null +++ b/resources/fontawesome/svgs/brands/gitlab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/gitter.svg b/resources/fontawesome/svgs/brands/gitter.svg new file mode 100644 index 0000000..c467578 --- /dev/null +++ b/resources/fontawesome/svgs/brands/gitter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/glide-g.svg b/resources/fontawesome/svgs/brands/glide-g.svg new file mode 100644 index 0000000..21733cf --- /dev/null +++ b/resources/fontawesome/svgs/brands/glide-g.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/glide.svg b/resources/fontawesome/svgs/brands/glide.svg new file mode 100644 index 0000000..1500966 --- /dev/null +++ b/resources/fontawesome/svgs/brands/glide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/gofore.svg b/resources/fontawesome/svgs/brands/gofore.svg new file mode 100644 index 0000000..975983d --- /dev/null +++ b/resources/fontawesome/svgs/brands/gofore.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/golang.svg b/resources/fontawesome/svgs/brands/golang.svg new file mode 100644 index 0000000..ef17055 --- /dev/null +++ b/resources/fontawesome/svgs/brands/golang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/goodreads-g.svg b/resources/fontawesome/svgs/brands/goodreads-g.svg new file mode 100644 index 0000000..2203692 --- /dev/null +++ b/resources/fontawesome/svgs/brands/goodreads-g.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/goodreads.svg b/resources/fontawesome/svgs/brands/goodreads.svg new file mode 100644 index 0000000..e440af3 --- /dev/null +++ b/resources/fontawesome/svgs/brands/goodreads.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/google-drive.svg b/resources/fontawesome/svgs/brands/google-drive.svg new file mode 100644 index 0000000..ee672e4 --- /dev/null +++ b/resources/fontawesome/svgs/brands/google-drive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/google-pay.svg b/resources/fontawesome/svgs/brands/google-pay.svg new file mode 100644 index 0000000..e94e4b7 --- /dev/null +++ b/resources/fontawesome/svgs/brands/google-pay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/google-play.svg b/resources/fontawesome/svgs/brands/google-play.svg new file mode 100644 index 0000000..22f0f3a --- /dev/null +++ b/resources/fontawesome/svgs/brands/google-play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/google-plus-g.svg b/resources/fontawesome/svgs/brands/google-plus-g.svg new file mode 100644 index 0000000..e1298a5 --- /dev/null +++ b/resources/fontawesome/svgs/brands/google-plus-g.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/google-plus.svg b/resources/fontawesome/svgs/brands/google-plus.svg new file mode 100644 index 0000000..2febc73 --- /dev/null +++ b/resources/fontawesome/svgs/brands/google-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/google-scholar.svg b/resources/fontawesome/svgs/brands/google-scholar.svg new file mode 100644 index 0000000..2f92bce --- /dev/null +++ b/resources/fontawesome/svgs/brands/google-scholar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/google-wallet.svg b/resources/fontawesome/svgs/brands/google-wallet.svg new file mode 100644 index 0000000..669d5f4 --- /dev/null +++ b/resources/fontawesome/svgs/brands/google-wallet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/google.svg b/resources/fontawesome/svgs/brands/google.svg new file mode 100644 index 0000000..1109139 --- /dev/null +++ b/resources/fontawesome/svgs/brands/google.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/gratipay.svg b/resources/fontawesome/svgs/brands/gratipay.svg new file mode 100644 index 0000000..43d5320 --- /dev/null +++ b/resources/fontawesome/svgs/brands/gratipay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/grav.svg b/resources/fontawesome/svgs/brands/grav.svg new file mode 100644 index 0000000..bca5462 --- /dev/null +++ b/resources/fontawesome/svgs/brands/grav.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/gripfire.svg b/resources/fontawesome/svgs/brands/gripfire.svg new file mode 100644 index 0000000..a851266 --- /dev/null +++ b/resources/fontawesome/svgs/brands/gripfire.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/grunt.svg b/resources/fontawesome/svgs/brands/grunt.svg new file mode 100644 index 0000000..cfe601b --- /dev/null +++ b/resources/fontawesome/svgs/brands/grunt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/guilded.svg b/resources/fontawesome/svgs/brands/guilded.svg new file mode 100644 index 0000000..0e3bd5a --- /dev/null +++ b/resources/fontawesome/svgs/brands/guilded.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/gulp.svg b/resources/fontawesome/svgs/brands/gulp.svg new file mode 100644 index 0000000..ffff701 --- /dev/null +++ b/resources/fontawesome/svgs/brands/gulp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/hacker-news.svg b/resources/fontawesome/svgs/brands/hacker-news.svg new file mode 100644 index 0000000..6f34313 --- /dev/null +++ b/resources/fontawesome/svgs/brands/hacker-news.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/hackerrank.svg b/resources/fontawesome/svgs/brands/hackerrank.svg new file mode 100644 index 0000000..e059aa0 --- /dev/null +++ b/resources/fontawesome/svgs/brands/hackerrank.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/hashnode.svg b/resources/fontawesome/svgs/brands/hashnode.svg new file mode 100644 index 0000000..82751d9 --- /dev/null +++ b/resources/fontawesome/svgs/brands/hashnode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/hips.svg b/resources/fontawesome/svgs/brands/hips.svg new file mode 100644 index 0000000..0e050ab --- /dev/null +++ b/resources/fontawesome/svgs/brands/hips.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/hire-a-helper.svg b/resources/fontawesome/svgs/brands/hire-a-helper.svg new file mode 100644 index 0000000..9e99cea --- /dev/null +++ b/resources/fontawesome/svgs/brands/hire-a-helper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/hive.svg b/resources/fontawesome/svgs/brands/hive.svg new file mode 100644 index 0000000..55ffa87 --- /dev/null +++ b/resources/fontawesome/svgs/brands/hive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/hooli.svg b/resources/fontawesome/svgs/brands/hooli.svg new file mode 100644 index 0000000..1f92e73 --- /dev/null +++ b/resources/fontawesome/svgs/brands/hooli.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/hornbill.svg b/resources/fontawesome/svgs/brands/hornbill.svg new file mode 100644 index 0000000..262c2b8 --- /dev/null +++ b/resources/fontawesome/svgs/brands/hornbill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/hotjar.svg b/resources/fontawesome/svgs/brands/hotjar.svg new file mode 100644 index 0000000..43f2ab6 --- /dev/null +++ b/resources/fontawesome/svgs/brands/hotjar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/houzz.svg b/resources/fontawesome/svgs/brands/houzz.svg new file mode 100644 index 0000000..db6570b --- /dev/null +++ b/resources/fontawesome/svgs/brands/houzz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/html5.svg b/resources/fontawesome/svgs/brands/html5.svg new file mode 100644 index 0000000..c24f74b --- /dev/null +++ b/resources/fontawesome/svgs/brands/html5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/hubspot.svg b/resources/fontawesome/svgs/brands/hubspot.svg new file mode 100644 index 0000000..ec51746 --- /dev/null +++ b/resources/fontawesome/svgs/brands/hubspot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/ideal.svg b/resources/fontawesome/svgs/brands/ideal.svg new file mode 100644 index 0000000..36ce435 --- /dev/null +++ b/resources/fontawesome/svgs/brands/ideal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/imdb.svg b/resources/fontawesome/svgs/brands/imdb.svg new file mode 100644 index 0000000..92f3b78 --- /dev/null +++ b/resources/fontawesome/svgs/brands/imdb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/instagram.svg b/resources/fontawesome/svgs/brands/instagram.svg new file mode 100644 index 0000000..b20889e --- /dev/null +++ b/resources/fontawesome/svgs/brands/instagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/instalod.svg b/resources/fontawesome/svgs/brands/instalod.svg new file mode 100644 index 0000000..cc7427d --- /dev/null +++ b/resources/fontawesome/svgs/brands/instalod.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/intercom.svg b/resources/fontawesome/svgs/brands/intercom.svg new file mode 100644 index 0000000..0523bd6 --- /dev/null +++ b/resources/fontawesome/svgs/brands/intercom.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/internet-explorer.svg b/resources/fontawesome/svgs/brands/internet-explorer.svg new file mode 100644 index 0000000..d56d69a --- /dev/null +++ b/resources/fontawesome/svgs/brands/internet-explorer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/invision.svg b/resources/fontawesome/svgs/brands/invision.svg new file mode 100644 index 0000000..6da0abb --- /dev/null +++ b/resources/fontawesome/svgs/brands/invision.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/ioxhost.svg b/resources/fontawesome/svgs/brands/ioxhost.svg new file mode 100644 index 0000000..952e62e --- /dev/null +++ b/resources/fontawesome/svgs/brands/ioxhost.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/itch-io.svg b/resources/fontawesome/svgs/brands/itch-io.svg new file mode 100644 index 0000000..bc49ec1 --- /dev/null +++ b/resources/fontawesome/svgs/brands/itch-io.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/itunes-note.svg b/resources/fontawesome/svgs/brands/itunes-note.svg new file mode 100644 index 0000000..4eecc98 --- /dev/null +++ b/resources/fontawesome/svgs/brands/itunes-note.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/itunes.svg b/resources/fontawesome/svgs/brands/itunes.svg new file mode 100644 index 0000000..0242728 --- /dev/null +++ b/resources/fontawesome/svgs/brands/itunes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/java.svg b/resources/fontawesome/svgs/brands/java.svg new file mode 100644 index 0000000..8401466 --- /dev/null +++ b/resources/fontawesome/svgs/brands/java.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/jedi-order.svg b/resources/fontawesome/svgs/brands/jedi-order.svg new file mode 100644 index 0000000..0dffe58 --- /dev/null +++ b/resources/fontawesome/svgs/brands/jedi-order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/jenkins.svg b/resources/fontawesome/svgs/brands/jenkins.svg new file mode 100644 index 0000000..e2dc8f1 --- /dev/null +++ b/resources/fontawesome/svgs/brands/jenkins.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/jira.svg b/resources/fontawesome/svgs/brands/jira.svg new file mode 100644 index 0000000..c263775 --- /dev/null +++ b/resources/fontawesome/svgs/brands/jira.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/joget.svg b/resources/fontawesome/svgs/brands/joget.svg new file mode 100644 index 0000000..17f95b3 --- /dev/null +++ b/resources/fontawesome/svgs/brands/joget.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/joomla.svg b/resources/fontawesome/svgs/brands/joomla.svg new file mode 100644 index 0000000..f47e8f9 --- /dev/null +++ b/resources/fontawesome/svgs/brands/joomla.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/js.svg b/resources/fontawesome/svgs/brands/js.svg new file mode 100644 index 0000000..ffdc5fa --- /dev/null +++ b/resources/fontawesome/svgs/brands/js.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/jsfiddle.svg b/resources/fontawesome/svgs/brands/jsfiddle.svg new file mode 100644 index 0000000..b5d1623 --- /dev/null +++ b/resources/fontawesome/svgs/brands/jsfiddle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/jxl.svg b/resources/fontawesome/svgs/brands/jxl.svg new file mode 100644 index 0000000..93457cb --- /dev/null +++ b/resources/fontawesome/svgs/brands/jxl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/kaggle.svg b/resources/fontawesome/svgs/brands/kaggle.svg new file mode 100644 index 0000000..42be3e1 --- /dev/null +++ b/resources/fontawesome/svgs/brands/kaggle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/keybase.svg b/resources/fontawesome/svgs/brands/keybase.svg new file mode 100644 index 0000000..2862751 --- /dev/null +++ b/resources/fontawesome/svgs/brands/keybase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/keycdn.svg b/resources/fontawesome/svgs/brands/keycdn.svg new file mode 100644 index 0000000..14e8ca8 --- /dev/null +++ b/resources/fontawesome/svgs/brands/keycdn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/kickstarter-k.svg b/resources/fontawesome/svgs/brands/kickstarter-k.svg new file mode 100644 index 0000000..3f124cd --- /dev/null +++ b/resources/fontawesome/svgs/brands/kickstarter-k.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/kickstarter.svg b/resources/fontawesome/svgs/brands/kickstarter.svg new file mode 100644 index 0000000..6c85fe8 --- /dev/null +++ b/resources/fontawesome/svgs/brands/kickstarter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/korvue.svg b/resources/fontawesome/svgs/brands/korvue.svg new file mode 100644 index 0000000..c5f64b3 --- /dev/null +++ b/resources/fontawesome/svgs/brands/korvue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/laravel.svg b/resources/fontawesome/svgs/brands/laravel.svg new file mode 100644 index 0000000..4813f2f --- /dev/null +++ b/resources/fontawesome/svgs/brands/laravel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/lastfm.svg b/resources/fontawesome/svgs/brands/lastfm.svg new file mode 100644 index 0000000..a28d83c --- /dev/null +++ b/resources/fontawesome/svgs/brands/lastfm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/leanpub.svg b/resources/fontawesome/svgs/brands/leanpub.svg new file mode 100644 index 0000000..6cc0b27 --- /dev/null +++ b/resources/fontawesome/svgs/brands/leanpub.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/less.svg b/resources/fontawesome/svgs/brands/less.svg new file mode 100644 index 0000000..c20dab7 --- /dev/null +++ b/resources/fontawesome/svgs/brands/less.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/letterboxd.svg b/resources/fontawesome/svgs/brands/letterboxd.svg new file mode 100644 index 0000000..f9a5f60 --- /dev/null +++ b/resources/fontawesome/svgs/brands/letterboxd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/line.svg b/resources/fontawesome/svgs/brands/line.svg new file mode 100644 index 0000000..5444888 --- /dev/null +++ b/resources/fontawesome/svgs/brands/line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/linkedin-in.svg b/resources/fontawesome/svgs/brands/linkedin-in.svg new file mode 100644 index 0000000..e6455f6 --- /dev/null +++ b/resources/fontawesome/svgs/brands/linkedin-in.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/linkedin.svg b/resources/fontawesome/svgs/brands/linkedin.svg new file mode 100644 index 0000000..2c9f2ce --- /dev/null +++ b/resources/fontawesome/svgs/brands/linkedin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/linode.svg b/resources/fontawesome/svgs/brands/linode.svg new file mode 100644 index 0000000..a1103f1 --- /dev/null +++ b/resources/fontawesome/svgs/brands/linode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/linux.svg b/resources/fontawesome/svgs/brands/linux.svg new file mode 100644 index 0000000..eae7ce1 --- /dev/null +++ b/resources/fontawesome/svgs/brands/linux.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/lyft.svg b/resources/fontawesome/svgs/brands/lyft.svg new file mode 100644 index 0000000..9529ff8 --- /dev/null +++ b/resources/fontawesome/svgs/brands/lyft.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/magento.svg b/resources/fontawesome/svgs/brands/magento.svg new file mode 100644 index 0000000..2066bd0 --- /dev/null +++ b/resources/fontawesome/svgs/brands/magento.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/mailchimp.svg b/resources/fontawesome/svgs/brands/mailchimp.svg new file mode 100644 index 0000000..1aa48e9 --- /dev/null +++ b/resources/fontawesome/svgs/brands/mailchimp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/mandalorian.svg b/resources/fontawesome/svgs/brands/mandalorian.svg new file mode 100644 index 0000000..ba4473b --- /dev/null +++ b/resources/fontawesome/svgs/brands/mandalorian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/markdown.svg b/resources/fontawesome/svgs/brands/markdown.svg new file mode 100644 index 0000000..0a081fb --- /dev/null +++ b/resources/fontawesome/svgs/brands/markdown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/mastodon.svg b/resources/fontawesome/svgs/brands/mastodon.svg new file mode 100644 index 0000000..03567fc --- /dev/null +++ b/resources/fontawesome/svgs/brands/mastodon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/maxcdn.svg b/resources/fontawesome/svgs/brands/maxcdn.svg new file mode 100644 index 0000000..c8c58ad --- /dev/null +++ b/resources/fontawesome/svgs/brands/maxcdn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/mdb.svg b/resources/fontawesome/svgs/brands/mdb.svg new file mode 100644 index 0000000..ce02379 --- /dev/null +++ b/resources/fontawesome/svgs/brands/mdb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/medapps.svg b/resources/fontawesome/svgs/brands/medapps.svg new file mode 100644 index 0000000..3b5a499 --- /dev/null +++ b/resources/fontawesome/svgs/brands/medapps.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/medium.svg b/resources/fontawesome/svgs/brands/medium.svg new file mode 100644 index 0000000..e4de78d --- /dev/null +++ b/resources/fontawesome/svgs/brands/medium.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/medrt.svg b/resources/fontawesome/svgs/brands/medrt.svg new file mode 100644 index 0000000..93fcb29 --- /dev/null +++ b/resources/fontawesome/svgs/brands/medrt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/meetup.svg b/resources/fontawesome/svgs/brands/meetup.svg new file mode 100644 index 0000000..8ce7173 --- /dev/null +++ b/resources/fontawesome/svgs/brands/meetup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/megaport.svg b/resources/fontawesome/svgs/brands/megaport.svg new file mode 100644 index 0000000..e2a914c --- /dev/null +++ b/resources/fontawesome/svgs/brands/megaport.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/mendeley.svg b/resources/fontawesome/svgs/brands/mendeley.svg new file mode 100644 index 0000000..27b6da4 --- /dev/null +++ b/resources/fontawesome/svgs/brands/mendeley.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/meta.svg b/resources/fontawesome/svgs/brands/meta.svg new file mode 100644 index 0000000..fbd05f7 --- /dev/null +++ b/resources/fontawesome/svgs/brands/meta.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/microblog.svg b/resources/fontawesome/svgs/brands/microblog.svg new file mode 100644 index 0000000..e3e8819 --- /dev/null +++ b/resources/fontawesome/svgs/brands/microblog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/microsoft.svg b/resources/fontawesome/svgs/brands/microsoft.svg new file mode 100644 index 0000000..22edc45 --- /dev/null +++ b/resources/fontawesome/svgs/brands/microsoft.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/mintbit.svg b/resources/fontawesome/svgs/brands/mintbit.svg new file mode 100644 index 0000000..987c052 --- /dev/null +++ b/resources/fontawesome/svgs/brands/mintbit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/mix.svg b/resources/fontawesome/svgs/brands/mix.svg new file mode 100644 index 0000000..1b831e2 --- /dev/null +++ b/resources/fontawesome/svgs/brands/mix.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/mixcloud.svg b/resources/fontawesome/svgs/brands/mixcloud.svg new file mode 100644 index 0000000..a006056 --- /dev/null +++ b/resources/fontawesome/svgs/brands/mixcloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/mixer.svg b/resources/fontawesome/svgs/brands/mixer.svg new file mode 100644 index 0000000..eea171b --- /dev/null +++ b/resources/fontawesome/svgs/brands/mixer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/mizuni.svg b/resources/fontawesome/svgs/brands/mizuni.svg new file mode 100644 index 0000000..089f60a --- /dev/null +++ b/resources/fontawesome/svgs/brands/mizuni.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/modx.svg b/resources/fontawesome/svgs/brands/modx.svg new file mode 100644 index 0000000..1022453 --- /dev/null +++ b/resources/fontawesome/svgs/brands/modx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/monero.svg b/resources/fontawesome/svgs/brands/monero.svg new file mode 100644 index 0000000..1872c2f --- /dev/null +++ b/resources/fontawesome/svgs/brands/monero.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/napster.svg b/resources/fontawesome/svgs/brands/napster.svg new file mode 100644 index 0000000..003d703 --- /dev/null +++ b/resources/fontawesome/svgs/brands/napster.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/neos.svg b/resources/fontawesome/svgs/brands/neos.svg new file mode 100644 index 0000000..c216c11 --- /dev/null +++ b/resources/fontawesome/svgs/brands/neos.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/nfc-directional.svg b/resources/fontawesome/svgs/brands/nfc-directional.svg new file mode 100644 index 0000000..f848dfe --- /dev/null +++ b/resources/fontawesome/svgs/brands/nfc-directional.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/nfc-symbol.svg b/resources/fontawesome/svgs/brands/nfc-symbol.svg new file mode 100644 index 0000000..be3f1ff --- /dev/null +++ b/resources/fontawesome/svgs/brands/nfc-symbol.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/nimblr.svg b/resources/fontawesome/svgs/brands/nimblr.svg new file mode 100644 index 0000000..d4646ba --- /dev/null +++ b/resources/fontawesome/svgs/brands/nimblr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/node-js.svg b/resources/fontawesome/svgs/brands/node-js.svg new file mode 100644 index 0000000..f8e1be5 --- /dev/null +++ b/resources/fontawesome/svgs/brands/node-js.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/node.svg b/resources/fontawesome/svgs/brands/node.svg new file mode 100644 index 0000000..526f004 --- /dev/null +++ b/resources/fontawesome/svgs/brands/node.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/npm.svg b/resources/fontawesome/svgs/brands/npm.svg new file mode 100644 index 0000000..b176580 --- /dev/null +++ b/resources/fontawesome/svgs/brands/npm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/ns8.svg b/resources/fontawesome/svgs/brands/ns8.svg new file mode 100644 index 0000000..328c950 --- /dev/null +++ b/resources/fontawesome/svgs/brands/ns8.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/nutritionix.svg b/resources/fontawesome/svgs/brands/nutritionix.svg new file mode 100644 index 0000000..5e94b5d --- /dev/null +++ b/resources/fontawesome/svgs/brands/nutritionix.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/octopus-deploy.svg b/resources/fontawesome/svgs/brands/octopus-deploy.svg new file mode 100644 index 0000000..71273b9 --- /dev/null +++ b/resources/fontawesome/svgs/brands/octopus-deploy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/odnoklassniki.svg b/resources/fontawesome/svgs/brands/odnoklassniki.svg new file mode 100644 index 0000000..307f692 --- /dev/null +++ b/resources/fontawesome/svgs/brands/odnoklassniki.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/odysee.svg b/resources/fontawesome/svgs/brands/odysee.svg new file mode 100644 index 0000000..e3933c9 --- /dev/null +++ b/resources/fontawesome/svgs/brands/odysee.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/old-republic.svg b/resources/fontawesome/svgs/brands/old-republic.svg new file mode 100644 index 0000000..9ee8939 --- /dev/null +++ b/resources/fontawesome/svgs/brands/old-republic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/opencart.svg b/resources/fontawesome/svgs/brands/opencart.svg new file mode 100644 index 0000000..5313a33 --- /dev/null +++ b/resources/fontawesome/svgs/brands/opencart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/openid.svg b/resources/fontawesome/svgs/brands/openid.svg new file mode 100644 index 0000000..3757199 --- /dev/null +++ b/resources/fontawesome/svgs/brands/openid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/opensuse.svg b/resources/fontawesome/svgs/brands/opensuse.svg new file mode 100644 index 0000000..0a4025b --- /dev/null +++ b/resources/fontawesome/svgs/brands/opensuse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/opera.svg b/resources/fontawesome/svgs/brands/opera.svg new file mode 100644 index 0000000..a36f90c --- /dev/null +++ b/resources/fontawesome/svgs/brands/opera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/optin-monster.svg b/resources/fontawesome/svgs/brands/optin-monster.svg new file mode 100644 index 0000000..c210acf --- /dev/null +++ b/resources/fontawesome/svgs/brands/optin-monster.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/orcid.svg b/resources/fontawesome/svgs/brands/orcid.svg new file mode 100644 index 0000000..ee32bdd --- /dev/null +++ b/resources/fontawesome/svgs/brands/orcid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/osi.svg b/resources/fontawesome/svgs/brands/osi.svg new file mode 100644 index 0000000..6767a69 --- /dev/null +++ b/resources/fontawesome/svgs/brands/osi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/padlet.svg b/resources/fontawesome/svgs/brands/padlet.svg new file mode 100644 index 0000000..918f3c1 --- /dev/null +++ b/resources/fontawesome/svgs/brands/padlet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/page4.svg b/resources/fontawesome/svgs/brands/page4.svg new file mode 100644 index 0000000..82a2219 --- /dev/null +++ b/resources/fontawesome/svgs/brands/page4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/pagelines.svg b/resources/fontawesome/svgs/brands/pagelines.svg new file mode 100644 index 0000000..8d6e3ba --- /dev/null +++ b/resources/fontawesome/svgs/brands/pagelines.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/palfed.svg b/resources/fontawesome/svgs/brands/palfed.svg new file mode 100644 index 0000000..769757b --- /dev/null +++ b/resources/fontawesome/svgs/brands/palfed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/patreon.svg b/resources/fontawesome/svgs/brands/patreon.svg new file mode 100644 index 0000000..e57ff4c --- /dev/null +++ b/resources/fontawesome/svgs/brands/patreon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/paypal.svg b/resources/fontawesome/svgs/brands/paypal.svg new file mode 100644 index 0000000..045d933 --- /dev/null +++ b/resources/fontawesome/svgs/brands/paypal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/perbyte.svg b/resources/fontawesome/svgs/brands/perbyte.svg new file mode 100644 index 0000000..5f47f7e --- /dev/null +++ b/resources/fontawesome/svgs/brands/perbyte.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/periscope.svg b/resources/fontawesome/svgs/brands/periscope.svg new file mode 100644 index 0000000..10d32e0 --- /dev/null +++ b/resources/fontawesome/svgs/brands/periscope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/phabricator.svg b/resources/fontawesome/svgs/brands/phabricator.svg new file mode 100644 index 0000000..c3ca3b6 --- /dev/null +++ b/resources/fontawesome/svgs/brands/phabricator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/phoenix-framework.svg b/resources/fontawesome/svgs/brands/phoenix-framework.svg new file mode 100644 index 0000000..7fab2f9 --- /dev/null +++ b/resources/fontawesome/svgs/brands/phoenix-framework.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/phoenix-squadron.svg b/resources/fontawesome/svgs/brands/phoenix-squadron.svg new file mode 100644 index 0000000..2a11a0a --- /dev/null +++ b/resources/fontawesome/svgs/brands/phoenix-squadron.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/php.svg b/resources/fontawesome/svgs/brands/php.svg new file mode 100644 index 0000000..c8f0548 --- /dev/null +++ b/resources/fontawesome/svgs/brands/php.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/pied-piper-alt.svg b/resources/fontawesome/svgs/brands/pied-piper-alt.svg new file mode 100644 index 0000000..1ef84da --- /dev/null +++ b/resources/fontawesome/svgs/brands/pied-piper-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/pied-piper-hat.svg b/resources/fontawesome/svgs/brands/pied-piper-hat.svg new file mode 100644 index 0000000..d62c9ec --- /dev/null +++ b/resources/fontawesome/svgs/brands/pied-piper-hat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/pied-piper-pp.svg b/resources/fontawesome/svgs/brands/pied-piper-pp.svg new file mode 100644 index 0000000..4c8c4a4 --- /dev/null +++ b/resources/fontawesome/svgs/brands/pied-piper-pp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/pied-piper.svg b/resources/fontawesome/svgs/brands/pied-piper.svg new file mode 100644 index 0000000..930961f --- /dev/null +++ b/resources/fontawesome/svgs/brands/pied-piper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/pinterest-p.svg b/resources/fontawesome/svgs/brands/pinterest-p.svg new file mode 100644 index 0000000..beaf436 --- /dev/null +++ b/resources/fontawesome/svgs/brands/pinterest-p.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/pinterest.svg b/resources/fontawesome/svgs/brands/pinterest.svg new file mode 100644 index 0000000..98818f8 --- /dev/null +++ b/resources/fontawesome/svgs/brands/pinterest.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/pix.svg b/resources/fontawesome/svgs/brands/pix.svg new file mode 100644 index 0000000..d5112ce --- /dev/null +++ b/resources/fontawesome/svgs/brands/pix.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/pixiv.svg b/resources/fontawesome/svgs/brands/pixiv.svg new file mode 100644 index 0000000..0fa1479 --- /dev/null +++ b/resources/fontawesome/svgs/brands/pixiv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/playstation.svg b/resources/fontawesome/svgs/brands/playstation.svg new file mode 100644 index 0000000..30f0c5c --- /dev/null +++ b/resources/fontawesome/svgs/brands/playstation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/product-hunt.svg b/resources/fontawesome/svgs/brands/product-hunt.svg new file mode 100644 index 0000000..28d61b4 --- /dev/null +++ b/resources/fontawesome/svgs/brands/product-hunt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/pushed.svg b/resources/fontawesome/svgs/brands/pushed.svg new file mode 100644 index 0000000..d500f79 --- /dev/null +++ b/resources/fontawesome/svgs/brands/pushed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/python.svg b/resources/fontawesome/svgs/brands/python.svg new file mode 100644 index 0000000..76c24b2 --- /dev/null +++ b/resources/fontawesome/svgs/brands/python.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/qq.svg b/resources/fontawesome/svgs/brands/qq.svg new file mode 100644 index 0000000..5f280c0 --- /dev/null +++ b/resources/fontawesome/svgs/brands/qq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/quinscape.svg b/resources/fontawesome/svgs/brands/quinscape.svg new file mode 100644 index 0000000..1fc7ef3 --- /dev/null +++ b/resources/fontawesome/svgs/brands/quinscape.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/quora.svg b/resources/fontawesome/svgs/brands/quora.svg new file mode 100644 index 0000000..39a119f --- /dev/null +++ b/resources/fontawesome/svgs/brands/quora.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/r-project.svg b/resources/fontawesome/svgs/brands/r-project.svg new file mode 100644 index 0000000..cf03cc7 --- /dev/null +++ b/resources/fontawesome/svgs/brands/r-project.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/raspberry-pi.svg b/resources/fontawesome/svgs/brands/raspberry-pi.svg new file mode 100644 index 0000000..f089f2f --- /dev/null +++ b/resources/fontawesome/svgs/brands/raspberry-pi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/ravelry.svg b/resources/fontawesome/svgs/brands/ravelry.svg new file mode 100644 index 0000000..eafafa0 --- /dev/null +++ b/resources/fontawesome/svgs/brands/ravelry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/react.svg b/resources/fontawesome/svgs/brands/react.svg new file mode 100644 index 0000000..531c4c8 --- /dev/null +++ b/resources/fontawesome/svgs/brands/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/reacteurope.svg b/resources/fontawesome/svgs/brands/reacteurope.svg new file mode 100644 index 0000000..dd64014 --- /dev/null +++ b/resources/fontawesome/svgs/brands/reacteurope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/readme.svg b/resources/fontawesome/svgs/brands/readme.svg new file mode 100644 index 0000000..82c0b95 --- /dev/null +++ b/resources/fontawesome/svgs/brands/readme.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/rebel.svg b/resources/fontawesome/svgs/brands/rebel.svg new file mode 100644 index 0000000..9445c41 --- /dev/null +++ b/resources/fontawesome/svgs/brands/rebel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/red-river.svg b/resources/fontawesome/svgs/brands/red-river.svg new file mode 100644 index 0000000..f52dc84 --- /dev/null +++ b/resources/fontawesome/svgs/brands/red-river.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/reddit-alien.svg b/resources/fontawesome/svgs/brands/reddit-alien.svg new file mode 100644 index 0000000..7c7fbfa --- /dev/null +++ b/resources/fontawesome/svgs/brands/reddit-alien.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/reddit.svg b/resources/fontawesome/svgs/brands/reddit.svg new file mode 100644 index 0000000..c71ba9b --- /dev/null +++ b/resources/fontawesome/svgs/brands/reddit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/redhat.svg b/resources/fontawesome/svgs/brands/redhat.svg new file mode 100644 index 0000000..f51c38c --- /dev/null +++ b/resources/fontawesome/svgs/brands/redhat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/renren.svg b/resources/fontawesome/svgs/brands/renren.svg new file mode 100644 index 0000000..a815cf4 --- /dev/null +++ b/resources/fontawesome/svgs/brands/renren.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/replyd.svg b/resources/fontawesome/svgs/brands/replyd.svg new file mode 100644 index 0000000..4217096 --- /dev/null +++ b/resources/fontawesome/svgs/brands/replyd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/researchgate.svg b/resources/fontawesome/svgs/brands/researchgate.svg new file mode 100644 index 0000000..d08d1ef --- /dev/null +++ b/resources/fontawesome/svgs/brands/researchgate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/resolving.svg b/resources/fontawesome/svgs/brands/resolving.svg new file mode 100644 index 0000000..6effb08 --- /dev/null +++ b/resources/fontawesome/svgs/brands/resolving.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/rev.svg b/resources/fontawesome/svgs/brands/rev.svg new file mode 100644 index 0000000..7267079 --- /dev/null +++ b/resources/fontawesome/svgs/brands/rev.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/rocketchat.svg b/resources/fontawesome/svgs/brands/rocketchat.svg new file mode 100644 index 0000000..72956a2 --- /dev/null +++ b/resources/fontawesome/svgs/brands/rocketchat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/rockrms.svg b/resources/fontawesome/svgs/brands/rockrms.svg new file mode 100644 index 0000000..4625717 --- /dev/null +++ b/resources/fontawesome/svgs/brands/rockrms.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/rust.svg b/resources/fontawesome/svgs/brands/rust.svg new file mode 100644 index 0000000..c77fb29 --- /dev/null +++ b/resources/fontawesome/svgs/brands/rust.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/safari.svg b/resources/fontawesome/svgs/brands/safari.svg new file mode 100644 index 0000000..c79e564 --- /dev/null +++ b/resources/fontawesome/svgs/brands/safari.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/salesforce.svg b/resources/fontawesome/svgs/brands/salesforce.svg new file mode 100644 index 0000000..3874302 --- /dev/null +++ b/resources/fontawesome/svgs/brands/salesforce.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/sass.svg b/resources/fontawesome/svgs/brands/sass.svg new file mode 100644 index 0000000..ac50b96 --- /dev/null +++ b/resources/fontawesome/svgs/brands/sass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/schlix.svg b/resources/fontawesome/svgs/brands/schlix.svg new file mode 100644 index 0000000..cb71209 --- /dev/null +++ b/resources/fontawesome/svgs/brands/schlix.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/screenpal.svg b/resources/fontawesome/svgs/brands/screenpal.svg new file mode 100644 index 0000000..133d368 --- /dev/null +++ b/resources/fontawesome/svgs/brands/screenpal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/scribd.svg b/resources/fontawesome/svgs/brands/scribd.svg new file mode 100644 index 0000000..825d8f9 --- /dev/null +++ b/resources/fontawesome/svgs/brands/scribd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/searchengin.svg b/resources/fontawesome/svgs/brands/searchengin.svg new file mode 100644 index 0000000..1c23d5e --- /dev/null +++ b/resources/fontawesome/svgs/brands/searchengin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/sellcast.svg b/resources/fontawesome/svgs/brands/sellcast.svg new file mode 100644 index 0000000..afa9224 --- /dev/null +++ b/resources/fontawesome/svgs/brands/sellcast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/sellsy.svg b/resources/fontawesome/svgs/brands/sellsy.svg new file mode 100644 index 0000000..7d2c6a4 --- /dev/null +++ b/resources/fontawesome/svgs/brands/sellsy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/servicestack.svg b/resources/fontawesome/svgs/brands/servicestack.svg new file mode 100644 index 0000000..d052f93 --- /dev/null +++ b/resources/fontawesome/svgs/brands/servicestack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/shirtsinbulk.svg b/resources/fontawesome/svgs/brands/shirtsinbulk.svg new file mode 100644 index 0000000..30b9bf2 --- /dev/null +++ b/resources/fontawesome/svgs/brands/shirtsinbulk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/shoelace.svg b/resources/fontawesome/svgs/brands/shoelace.svg new file mode 100644 index 0000000..814da86 --- /dev/null +++ b/resources/fontawesome/svgs/brands/shoelace.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/shopify.svg b/resources/fontawesome/svgs/brands/shopify.svg new file mode 100644 index 0000000..b31e4e3 --- /dev/null +++ b/resources/fontawesome/svgs/brands/shopify.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/shopware.svg b/resources/fontawesome/svgs/brands/shopware.svg new file mode 100644 index 0000000..79757c9 --- /dev/null +++ b/resources/fontawesome/svgs/brands/shopware.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/signal-messenger.svg b/resources/fontawesome/svgs/brands/signal-messenger.svg new file mode 100644 index 0000000..84b7958 --- /dev/null +++ b/resources/fontawesome/svgs/brands/signal-messenger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/simplybuilt.svg b/resources/fontawesome/svgs/brands/simplybuilt.svg new file mode 100644 index 0000000..f58b262 --- /dev/null +++ b/resources/fontawesome/svgs/brands/simplybuilt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/sistrix.svg b/resources/fontawesome/svgs/brands/sistrix.svg new file mode 100644 index 0000000..f468e25 --- /dev/null +++ b/resources/fontawesome/svgs/brands/sistrix.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/sith.svg b/resources/fontawesome/svgs/brands/sith.svg new file mode 100644 index 0000000..ee966c9 --- /dev/null +++ b/resources/fontawesome/svgs/brands/sith.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/sitrox.svg b/resources/fontawesome/svgs/brands/sitrox.svg new file mode 100644 index 0000000..bf2e391 --- /dev/null +++ b/resources/fontawesome/svgs/brands/sitrox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/sketch.svg b/resources/fontawesome/svgs/brands/sketch.svg new file mode 100644 index 0000000..1e8d210 --- /dev/null +++ b/resources/fontawesome/svgs/brands/sketch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/skyatlas.svg b/resources/fontawesome/svgs/brands/skyatlas.svg new file mode 100644 index 0000000..1fe3170 --- /dev/null +++ b/resources/fontawesome/svgs/brands/skyatlas.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/skype.svg b/resources/fontawesome/svgs/brands/skype.svg new file mode 100644 index 0000000..8d7231e --- /dev/null +++ b/resources/fontawesome/svgs/brands/skype.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/slack.svg b/resources/fontawesome/svgs/brands/slack.svg new file mode 100644 index 0000000..0bacd72 --- /dev/null +++ b/resources/fontawesome/svgs/brands/slack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/slideshare.svg b/resources/fontawesome/svgs/brands/slideshare.svg new file mode 100644 index 0000000..464c4e9 --- /dev/null +++ b/resources/fontawesome/svgs/brands/slideshare.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/snapchat.svg b/resources/fontawesome/svgs/brands/snapchat.svg new file mode 100644 index 0000000..f0be06f --- /dev/null +++ b/resources/fontawesome/svgs/brands/snapchat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/soundcloud.svg b/resources/fontawesome/svgs/brands/soundcloud.svg new file mode 100644 index 0000000..0cd2d44 --- /dev/null +++ b/resources/fontawesome/svgs/brands/soundcloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/sourcetree.svg b/resources/fontawesome/svgs/brands/sourcetree.svg new file mode 100644 index 0000000..1f63c65 --- /dev/null +++ b/resources/fontawesome/svgs/brands/sourcetree.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/space-awesome.svg b/resources/fontawesome/svgs/brands/space-awesome.svg new file mode 100644 index 0000000..ab8f322 --- /dev/null +++ b/resources/fontawesome/svgs/brands/space-awesome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/speakap.svg b/resources/fontawesome/svgs/brands/speakap.svg new file mode 100644 index 0000000..bea4cb6 --- /dev/null +++ b/resources/fontawesome/svgs/brands/speakap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/speaker-deck.svg b/resources/fontawesome/svgs/brands/speaker-deck.svg new file mode 100644 index 0000000..873f3da --- /dev/null +++ b/resources/fontawesome/svgs/brands/speaker-deck.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/spotify.svg b/resources/fontawesome/svgs/brands/spotify.svg new file mode 100644 index 0000000..ae34c9e --- /dev/null +++ b/resources/fontawesome/svgs/brands/spotify.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-behance.svg b/resources/fontawesome/svgs/brands/square-behance.svg new file mode 100644 index 0000000..edfcf76 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-behance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-dribbble.svg b/resources/fontawesome/svgs/brands/square-dribbble.svg new file mode 100644 index 0000000..4cdc2fd --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-dribbble.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-facebook.svg b/resources/fontawesome/svgs/brands/square-facebook.svg new file mode 100644 index 0000000..8f0ede4 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-facebook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-font-awesome-stroke.svg b/resources/fontawesome/svgs/brands/square-font-awesome-stroke.svg new file mode 100644 index 0000000..88c8159 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-font-awesome-stroke.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-font-awesome.svg b/resources/fontawesome/svgs/brands/square-font-awesome.svg new file mode 100644 index 0000000..adb7e81 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-font-awesome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-git.svg b/resources/fontawesome/svgs/brands/square-git.svg new file mode 100644 index 0000000..af73f48 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-git.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-github.svg b/resources/fontawesome/svgs/brands/square-github.svg new file mode 100644 index 0000000..600e924 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-gitlab.svg b/resources/fontawesome/svgs/brands/square-gitlab.svg new file mode 100644 index 0000000..2cce4f5 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-gitlab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-google-plus.svg b/resources/fontawesome/svgs/brands/square-google-plus.svg new file mode 100644 index 0000000..dd7eb81 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-google-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-hacker-news.svg b/resources/fontawesome/svgs/brands/square-hacker-news.svg new file mode 100644 index 0000000..c29f122 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-hacker-news.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-instagram.svg b/resources/fontawesome/svgs/brands/square-instagram.svg new file mode 100644 index 0000000..443ede6 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-instagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-js.svg b/resources/fontawesome/svgs/brands/square-js.svg new file mode 100644 index 0000000..780a1c2 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-js.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-lastfm.svg b/resources/fontawesome/svgs/brands/square-lastfm.svg new file mode 100644 index 0000000..f96d1ac --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-lastfm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-letterboxd.svg b/resources/fontawesome/svgs/brands/square-letterboxd.svg new file mode 100644 index 0000000..6b2c35f --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-letterboxd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-odnoklassniki.svg b/resources/fontawesome/svgs/brands/square-odnoklassniki.svg new file mode 100644 index 0000000..3b96935 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-odnoklassniki.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-pied-piper.svg b/resources/fontawesome/svgs/brands/square-pied-piper.svg new file mode 100644 index 0000000..dddfd00 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-pied-piper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-pinterest.svg b/resources/fontawesome/svgs/brands/square-pinterest.svg new file mode 100644 index 0000000..ed81eb8 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-pinterest.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-reddit.svg b/resources/fontawesome/svgs/brands/square-reddit.svg new file mode 100644 index 0000000..c2c7363 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-reddit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-snapchat.svg b/resources/fontawesome/svgs/brands/square-snapchat.svg new file mode 100644 index 0000000..40ce49c --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-snapchat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-steam.svg b/resources/fontawesome/svgs/brands/square-steam.svg new file mode 100644 index 0000000..bbbbc82 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-steam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-threads.svg b/resources/fontawesome/svgs/brands/square-threads.svg new file mode 100644 index 0000000..75c431a --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-threads.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-tumblr.svg b/resources/fontawesome/svgs/brands/square-tumblr.svg new file mode 100644 index 0000000..532bb57 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-tumblr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-twitter.svg b/resources/fontawesome/svgs/brands/square-twitter.svg new file mode 100644 index 0000000..d1abe7c --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-twitter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-upwork.svg b/resources/fontawesome/svgs/brands/square-upwork.svg new file mode 100644 index 0000000..3bc808d --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-upwork.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-viadeo.svg b/resources/fontawesome/svgs/brands/square-viadeo.svg new file mode 100644 index 0000000..e39879f --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-viadeo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-vimeo.svg b/resources/fontawesome/svgs/brands/square-vimeo.svg new file mode 100644 index 0000000..f0ae7db --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-vimeo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-web-awesome-stroke.svg b/resources/fontawesome/svgs/brands/square-web-awesome-stroke.svg new file mode 100644 index 0000000..b9239b6 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-web-awesome-stroke.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-web-awesome.svg b/resources/fontawesome/svgs/brands/square-web-awesome.svg new file mode 100644 index 0000000..a13a837 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-web-awesome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-whatsapp.svg b/resources/fontawesome/svgs/brands/square-whatsapp.svg new file mode 100644 index 0000000..6832a5b --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-whatsapp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-x-twitter.svg b/resources/fontawesome/svgs/brands/square-x-twitter.svg new file mode 100644 index 0000000..46f8d9a --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-x-twitter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-xing.svg b/resources/fontawesome/svgs/brands/square-xing.svg new file mode 100644 index 0000000..cd36d7d --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-xing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/square-youtube.svg b/resources/fontawesome/svgs/brands/square-youtube.svg new file mode 100644 index 0000000..5f657a3 --- /dev/null +++ b/resources/fontawesome/svgs/brands/square-youtube.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/squarespace.svg b/resources/fontawesome/svgs/brands/squarespace.svg new file mode 100644 index 0000000..d6e4811 --- /dev/null +++ b/resources/fontawesome/svgs/brands/squarespace.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/stack-exchange.svg b/resources/fontawesome/svgs/brands/stack-exchange.svg new file mode 100644 index 0000000..efc8f9a --- /dev/null +++ b/resources/fontawesome/svgs/brands/stack-exchange.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/stack-overflow.svg b/resources/fontawesome/svgs/brands/stack-overflow.svg new file mode 100644 index 0000000..b664c33 --- /dev/null +++ b/resources/fontawesome/svgs/brands/stack-overflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/stackpath.svg b/resources/fontawesome/svgs/brands/stackpath.svg new file mode 100644 index 0000000..7992a42 --- /dev/null +++ b/resources/fontawesome/svgs/brands/stackpath.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/staylinked.svg b/resources/fontawesome/svgs/brands/staylinked.svg new file mode 100644 index 0000000..60949c7 --- /dev/null +++ b/resources/fontawesome/svgs/brands/staylinked.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/steam-symbol.svg b/resources/fontawesome/svgs/brands/steam-symbol.svg new file mode 100644 index 0000000..476b4fb --- /dev/null +++ b/resources/fontawesome/svgs/brands/steam-symbol.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/steam.svg b/resources/fontawesome/svgs/brands/steam.svg new file mode 100644 index 0000000..a46b942 --- /dev/null +++ b/resources/fontawesome/svgs/brands/steam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/sticker-mule.svg b/resources/fontawesome/svgs/brands/sticker-mule.svg new file mode 100644 index 0000000..e8eb5cb --- /dev/null +++ b/resources/fontawesome/svgs/brands/sticker-mule.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/strava.svg b/resources/fontawesome/svgs/brands/strava.svg new file mode 100644 index 0000000..0e21910 --- /dev/null +++ b/resources/fontawesome/svgs/brands/strava.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/stripe-s.svg b/resources/fontawesome/svgs/brands/stripe-s.svg new file mode 100644 index 0000000..76aa1a4 --- /dev/null +++ b/resources/fontawesome/svgs/brands/stripe-s.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/stripe.svg b/resources/fontawesome/svgs/brands/stripe.svg new file mode 100644 index 0000000..aaf0077 --- /dev/null +++ b/resources/fontawesome/svgs/brands/stripe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/stubber.svg b/resources/fontawesome/svgs/brands/stubber.svg new file mode 100644 index 0000000..2813ebd --- /dev/null +++ b/resources/fontawesome/svgs/brands/stubber.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/studiovinari.svg b/resources/fontawesome/svgs/brands/studiovinari.svg new file mode 100644 index 0000000..b8a3f93 --- /dev/null +++ b/resources/fontawesome/svgs/brands/studiovinari.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/stumbleupon-circle.svg b/resources/fontawesome/svgs/brands/stumbleupon-circle.svg new file mode 100644 index 0000000..0a31b68 --- /dev/null +++ b/resources/fontawesome/svgs/brands/stumbleupon-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/stumbleupon.svg b/resources/fontawesome/svgs/brands/stumbleupon.svg new file mode 100644 index 0000000..f0010c8 --- /dev/null +++ b/resources/fontawesome/svgs/brands/stumbleupon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/superpowers.svg b/resources/fontawesome/svgs/brands/superpowers.svg new file mode 100644 index 0000000..f3c3981 --- /dev/null +++ b/resources/fontawesome/svgs/brands/superpowers.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/supple.svg b/resources/fontawesome/svgs/brands/supple.svg new file mode 100644 index 0000000..e0353d6 --- /dev/null +++ b/resources/fontawesome/svgs/brands/supple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/suse.svg b/resources/fontawesome/svgs/brands/suse.svg new file mode 100644 index 0000000..98f8c5e --- /dev/null +++ b/resources/fontawesome/svgs/brands/suse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/swift.svg b/resources/fontawesome/svgs/brands/swift.svg new file mode 100644 index 0000000..c9de7af --- /dev/null +++ b/resources/fontawesome/svgs/brands/swift.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/symfony.svg b/resources/fontawesome/svgs/brands/symfony.svg new file mode 100644 index 0000000..1885e9b --- /dev/null +++ b/resources/fontawesome/svgs/brands/symfony.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/teamspeak.svg b/resources/fontawesome/svgs/brands/teamspeak.svg new file mode 100644 index 0000000..c73064a --- /dev/null +++ b/resources/fontawesome/svgs/brands/teamspeak.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/telegram.svg b/resources/fontawesome/svgs/brands/telegram.svg new file mode 100644 index 0000000..3f0065e --- /dev/null +++ b/resources/fontawesome/svgs/brands/telegram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/tencent-weibo.svg b/resources/fontawesome/svgs/brands/tencent-weibo.svg new file mode 100644 index 0000000..fa0c3fe --- /dev/null +++ b/resources/fontawesome/svgs/brands/tencent-weibo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/the-red-yeti.svg b/resources/fontawesome/svgs/brands/the-red-yeti.svg new file mode 100644 index 0000000..b2ff5ee --- /dev/null +++ b/resources/fontawesome/svgs/brands/the-red-yeti.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/themeco.svg b/resources/fontawesome/svgs/brands/themeco.svg new file mode 100644 index 0000000..4976c59 --- /dev/null +++ b/resources/fontawesome/svgs/brands/themeco.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/themeisle.svg b/resources/fontawesome/svgs/brands/themeisle.svg new file mode 100644 index 0000000..4b5313b --- /dev/null +++ b/resources/fontawesome/svgs/brands/themeisle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/think-peaks.svg b/resources/fontawesome/svgs/brands/think-peaks.svg new file mode 100644 index 0000000..be1e6ba --- /dev/null +++ b/resources/fontawesome/svgs/brands/think-peaks.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/threads.svg b/resources/fontawesome/svgs/brands/threads.svg new file mode 100644 index 0000000..f248154 --- /dev/null +++ b/resources/fontawesome/svgs/brands/threads.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/tiktok.svg b/resources/fontawesome/svgs/brands/tiktok.svg new file mode 100644 index 0000000..a604074 --- /dev/null +++ b/resources/fontawesome/svgs/brands/tiktok.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/trade-federation.svg b/resources/fontawesome/svgs/brands/trade-federation.svg new file mode 100644 index 0000000..8b86f06 --- /dev/null +++ b/resources/fontawesome/svgs/brands/trade-federation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/trello.svg b/resources/fontawesome/svgs/brands/trello.svg new file mode 100644 index 0000000..3f3b4be --- /dev/null +++ b/resources/fontawesome/svgs/brands/trello.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/tumblr.svg b/resources/fontawesome/svgs/brands/tumblr.svg new file mode 100644 index 0000000..e9ac8ac --- /dev/null +++ b/resources/fontawesome/svgs/brands/tumblr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/twitch.svg b/resources/fontawesome/svgs/brands/twitch.svg new file mode 100644 index 0000000..c5663b3 --- /dev/null +++ b/resources/fontawesome/svgs/brands/twitch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/twitter.svg b/resources/fontawesome/svgs/brands/twitter.svg new file mode 100644 index 0000000..9a2b4b8 --- /dev/null +++ b/resources/fontawesome/svgs/brands/twitter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/typo3.svg b/resources/fontawesome/svgs/brands/typo3.svg new file mode 100644 index 0000000..4e50336 --- /dev/null +++ b/resources/fontawesome/svgs/brands/typo3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/uber.svg b/resources/fontawesome/svgs/brands/uber.svg new file mode 100644 index 0000000..f9b25c2 --- /dev/null +++ b/resources/fontawesome/svgs/brands/uber.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/ubuntu.svg b/resources/fontawesome/svgs/brands/ubuntu.svg new file mode 100644 index 0000000..a3491d0 --- /dev/null +++ b/resources/fontawesome/svgs/brands/ubuntu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/uikit.svg b/resources/fontawesome/svgs/brands/uikit.svg new file mode 100644 index 0000000..983b91a --- /dev/null +++ b/resources/fontawesome/svgs/brands/uikit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/umbraco.svg b/resources/fontawesome/svgs/brands/umbraco.svg new file mode 100644 index 0000000..1e29b20 --- /dev/null +++ b/resources/fontawesome/svgs/brands/umbraco.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/uncharted.svg b/resources/fontawesome/svgs/brands/uncharted.svg new file mode 100644 index 0000000..70c723b --- /dev/null +++ b/resources/fontawesome/svgs/brands/uncharted.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/uniregistry.svg b/resources/fontawesome/svgs/brands/uniregistry.svg new file mode 100644 index 0000000..946d708 --- /dev/null +++ b/resources/fontawesome/svgs/brands/uniregistry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/unity.svg b/resources/fontawesome/svgs/brands/unity.svg new file mode 100644 index 0000000..c850d57 --- /dev/null +++ b/resources/fontawesome/svgs/brands/unity.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/unsplash.svg b/resources/fontawesome/svgs/brands/unsplash.svg new file mode 100644 index 0000000..dedf8ba --- /dev/null +++ b/resources/fontawesome/svgs/brands/unsplash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/untappd.svg b/resources/fontawesome/svgs/brands/untappd.svg new file mode 100644 index 0000000..e91d6e5 --- /dev/null +++ b/resources/fontawesome/svgs/brands/untappd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/ups.svg b/resources/fontawesome/svgs/brands/ups.svg new file mode 100644 index 0000000..2d5f286 --- /dev/null +++ b/resources/fontawesome/svgs/brands/ups.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/upwork.svg b/resources/fontawesome/svgs/brands/upwork.svg new file mode 100644 index 0000000..a1dae2f --- /dev/null +++ b/resources/fontawesome/svgs/brands/upwork.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/usb.svg b/resources/fontawesome/svgs/brands/usb.svg new file mode 100644 index 0000000..8d848cb --- /dev/null +++ b/resources/fontawesome/svgs/brands/usb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/usps.svg b/resources/fontawesome/svgs/brands/usps.svg new file mode 100644 index 0000000..a2eb919 --- /dev/null +++ b/resources/fontawesome/svgs/brands/usps.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/ussunnah.svg b/resources/fontawesome/svgs/brands/ussunnah.svg new file mode 100644 index 0000000..7ca11fc --- /dev/null +++ b/resources/fontawesome/svgs/brands/ussunnah.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/vaadin.svg b/resources/fontawesome/svgs/brands/vaadin.svg new file mode 100644 index 0000000..1efe027 --- /dev/null +++ b/resources/fontawesome/svgs/brands/vaadin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/viacoin.svg b/resources/fontawesome/svgs/brands/viacoin.svg new file mode 100644 index 0000000..589a801 --- /dev/null +++ b/resources/fontawesome/svgs/brands/viacoin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/viadeo.svg b/resources/fontawesome/svgs/brands/viadeo.svg new file mode 100644 index 0000000..b7cd8d6 --- /dev/null +++ b/resources/fontawesome/svgs/brands/viadeo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/viber.svg b/resources/fontawesome/svgs/brands/viber.svg new file mode 100644 index 0000000..d3279cf --- /dev/null +++ b/resources/fontawesome/svgs/brands/viber.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/vimeo-v.svg b/resources/fontawesome/svgs/brands/vimeo-v.svg new file mode 100644 index 0000000..2c9faa3 --- /dev/null +++ b/resources/fontawesome/svgs/brands/vimeo-v.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/vimeo.svg b/resources/fontawesome/svgs/brands/vimeo.svg new file mode 100644 index 0000000..a24d96b --- /dev/null +++ b/resources/fontawesome/svgs/brands/vimeo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/vine.svg b/resources/fontawesome/svgs/brands/vine.svg new file mode 100644 index 0000000..01861de --- /dev/null +++ b/resources/fontawesome/svgs/brands/vine.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/vk.svg b/resources/fontawesome/svgs/brands/vk.svg new file mode 100644 index 0000000..4e9a6d6 --- /dev/null +++ b/resources/fontawesome/svgs/brands/vk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/vnv.svg b/resources/fontawesome/svgs/brands/vnv.svg new file mode 100644 index 0000000..32c3be0 --- /dev/null +++ b/resources/fontawesome/svgs/brands/vnv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/vuejs.svg b/resources/fontawesome/svgs/brands/vuejs.svg new file mode 100644 index 0000000..17ca09a --- /dev/null +++ b/resources/fontawesome/svgs/brands/vuejs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/watchman-monitoring.svg b/resources/fontawesome/svgs/brands/watchman-monitoring.svg new file mode 100644 index 0000000..d511c43 --- /dev/null +++ b/resources/fontawesome/svgs/brands/watchman-monitoring.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/waze.svg b/resources/fontawesome/svgs/brands/waze.svg new file mode 100644 index 0000000..fc547f2 --- /dev/null +++ b/resources/fontawesome/svgs/brands/waze.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/web-awesome.svg b/resources/fontawesome/svgs/brands/web-awesome.svg new file mode 100644 index 0000000..1eea054 --- /dev/null +++ b/resources/fontawesome/svgs/brands/web-awesome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/webflow.svg b/resources/fontawesome/svgs/brands/webflow.svg new file mode 100644 index 0000000..ddede50 --- /dev/null +++ b/resources/fontawesome/svgs/brands/webflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/weebly.svg b/resources/fontawesome/svgs/brands/weebly.svg new file mode 100644 index 0000000..e621215 --- /dev/null +++ b/resources/fontawesome/svgs/brands/weebly.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/weibo.svg b/resources/fontawesome/svgs/brands/weibo.svg new file mode 100644 index 0000000..fb4cb58 --- /dev/null +++ b/resources/fontawesome/svgs/brands/weibo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/weixin.svg b/resources/fontawesome/svgs/brands/weixin.svg new file mode 100644 index 0000000..c89fbe7 --- /dev/null +++ b/resources/fontawesome/svgs/brands/weixin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/whatsapp.svg b/resources/fontawesome/svgs/brands/whatsapp.svg new file mode 100644 index 0000000..be86a03 --- /dev/null +++ b/resources/fontawesome/svgs/brands/whatsapp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/whmcs.svg b/resources/fontawesome/svgs/brands/whmcs.svg new file mode 100644 index 0000000..5341e9d --- /dev/null +++ b/resources/fontawesome/svgs/brands/whmcs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/wikipedia-w.svg b/resources/fontawesome/svgs/brands/wikipedia-w.svg new file mode 100644 index 0000000..a696142 --- /dev/null +++ b/resources/fontawesome/svgs/brands/wikipedia-w.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/windows.svg b/resources/fontawesome/svgs/brands/windows.svg new file mode 100644 index 0000000..e1b4886 --- /dev/null +++ b/resources/fontawesome/svgs/brands/windows.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/wirsindhandwerk.svg b/resources/fontawesome/svgs/brands/wirsindhandwerk.svg new file mode 100644 index 0000000..5ffb7fd --- /dev/null +++ b/resources/fontawesome/svgs/brands/wirsindhandwerk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/wix.svg b/resources/fontawesome/svgs/brands/wix.svg new file mode 100644 index 0000000..300fb6b --- /dev/null +++ b/resources/fontawesome/svgs/brands/wix.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/wizards-of-the-coast.svg b/resources/fontawesome/svgs/brands/wizards-of-the-coast.svg new file mode 100644 index 0000000..f04ecd9 --- /dev/null +++ b/resources/fontawesome/svgs/brands/wizards-of-the-coast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/wodu.svg b/resources/fontawesome/svgs/brands/wodu.svg new file mode 100644 index 0000000..5a79955 --- /dev/null +++ b/resources/fontawesome/svgs/brands/wodu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/wolf-pack-battalion.svg b/resources/fontawesome/svgs/brands/wolf-pack-battalion.svg new file mode 100644 index 0000000..301a1f6 --- /dev/null +++ b/resources/fontawesome/svgs/brands/wolf-pack-battalion.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/wordpress-simple.svg b/resources/fontawesome/svgs/brands/wordpress-simple.svg new file mode 100644 index 0000000..d861fda --- /dev/null +++ b/resources/fontawesome/svgs/brands/wordpress-simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/wordpress.svg b/resources/fontawesome/svgs/brands/wordpress.svg new file mode 100644 index 0000000..097727c --- /dev/null +++ b/resources/fontawesome/svgs/brands/wordpress.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/wpbeginner.svg b/resources/fontawesome/svgs/brands/wpbeginner.svg new file mode 100644 index 0000000..5f5d921 --- /dev/null +++ b/resources/fontawesome/svgs/brands/wpbeginner.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/wpexplorer.svg b/resources/fontawesome/svgs/brands/wpexplorer.svg new file mode 100644 index 0000000..cc5d177 --- /dev/null +++ b/resources/fontawesome/svgs/brands/wpexplorer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/wpforms.svg b/resources/fontawesome/svgs/brands/wpforms.svg new file mode 100644 index 0000000..34b3f7b --- /dev/null +++ b/resources/fontawesome/svgs/brands/wpforms.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/wpressr.svg b/resources/fontawesome/svgs/brands/wpressr.svg new file mode 100644 index 0000000..a6c864d --- /dev/null +++ b/resources/fontawesome/svgs/brands/wpressr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/x-twitter.svg b/resources/fontawesome/svgs/brands/x-twitter.svg new file mode 100644 index 0000000..e3bfafb --- /dev/null +++ b/resources/fontawesome/svgs/brands/x-twitter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/xbox.svg b/resources/fontawesome/svgs/brands/xbox.svg new file mode 100644 index 0000000..4c867aa --- /dev/null +++ b/resources/fontawesome/svgs/brands/xbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/xing.svg b/resources/fontawesome/svgs/brands/xing.svg new file mode 100644 index 0000000..d71ef8a --- /dev/null +++ b/resources/fontawesome/svgs/brands/xing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/y-combinator.svg b/resources/fontawesome/svgs/brands/y-combinator.svg new file mode 100644 index 0000000..d74dea0 --- /dev/null +++ b/resources/fontawesome/svgs/brands/y-combinator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/yahoo.svg b/resources/fontawesome/svgs/brands/yahoo.svg new file mode 100644 index 0000000..15a909c --- /dev/null +++ b/resources/fontawesome/svgs/brands/yahoo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/yammer.svg b/resources/fontawesome/svgs/brands/yammer.svg new file mode 100644 index 0000000..97e2640 --- /dev/null +++ b/resources/fontawesome/svgs/brands/yammer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/yandex-international.svg b/resources/fontawesome/svgs/brands/yandex-international.svg new file mode 100644 index 0000000..b175881 --- /dev/null +++ b/resources/fontawesome/svgs/brands/yandex-international.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/yandex.svg b/resources/fontawesome/svgs/brands/yandex.svg new file mode 100644 index 0000000..fd3c01f --- /dev/null +++ b/resources/fontawesome/svgs/brands/yandex.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/yarn.svg b/resources/fontawesome/svgs/brands/yarn.svg new file mode 100644 index 0000000..f553989 --- /dev/null +++ b/resources/fontawesome/svgs/brands/yarn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/yelp.svg b/resources/fontawesome/svgs/brands/yelp.svg new file mode 100644 index 0000000..22c9086 --- /dev/null +++ b/resources/fontawesome/svgs/brands/yelp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/yoast.svg b/resources/fontawesome/svgs/brands/yoast.svg new file mode 100644 index 0000000..a3c1c05 --- /dev/null +++ b/resources/fontawesome/svgs/brands/yoast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/youtube.svg b/resources/fontawesome/svgs/brands/youtube.svg new file mode 100644 index 0000000..753779e --- /dev/null +++ b/resources/fontawesome/svgs/brands/youtube.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/brands/zhihu.svg b/resources/fontawesome/svgs/brands/zhihu.svg new file mode 100644 index 0000000..2839d70 --- /dev/null +++ b/resources/fontawesome/svgs/brands/zhihu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/address-book.svg b/resources/fontawesome/svgs/regular/address-book.svg new file mode 100644 index 0000000..72c05dd --- /dev/null +++ b/resources/fontawesome/svgs/regular/address-book.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/address-card.svg b/resources/fontawesome/svgs/regular/address-card.svg new file mode 100644 index 0000000..c8179ac --- /dev/null +++ b/resources/fontawesome/svgs/regular/address-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/bell-slash.svg b/resources/fontawesome/svgs/regular/bell-slash.svg new file mode 100644 index 0000000..478d921 --- /dev/null +++ b/resources/fontawesome/svgs/regular/bell-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/bell.svg b/resources/fontawesome/svgs/regular/bell.svg new file mode 100644 index 0000000..88a515d --- /dev/null +++ b/resources/fontawesome/svgs/regular/bell.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/bookmark.svg b/resources/fontawesome/svgs/regular/bookmark.svg new file mode 100644 index 0000000..9da77fd --- /dev/null +++ b/resources/fontawesome/svgs/regular/bookmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/building.svg b/resources/fontawesome/svgs/regular/building.svg new file mode 100644 index 0000000..10e7888 --- /dev/null +++ b/resources/fontawesome/svgs/regular/building.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/calendar-check.svg b/resources/fontawesome/svgs/regular/calendar-check.svg new file mode 100644 index 0000000..1d90456 --- /dev/null +++ b/resources/fontawesome/svgs/regular/calendar-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/calendar-days.svg b/resources/fontawesome/svgs/regular/calendar-days.svg new file mode 100644 index 0000000..d6f2e24 --- /dev/null +++ b/resources/fontawesome/svgs/regular/calendar-days.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/calendar-minus.svg b/resources/fontawesome/svgs/regular/calendar-minus.svg new file mode 100644 index 0000000..4f4d530 --- /dev/null +++ b/resources/fontawesome/svgs/regular/calendar-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/calendar-plus.svg b/resources/fontawesome/svgs/regular/calendar-plus.svg new file mode 100644 index 0000000..e74c7f4 --- /dev/null +++ b/resources/fontawesome/svgs/regular/calendar-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/calendar-xmark.svg b/resources/fontawesome/svgs/regular/calendar-xmark.svg new file mode 100644 index 0000000..743dab4 --- /dev/null +++ b/resources/fontawesome/svgs/regular/calendar-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/calendar.svg b/resources/fontawesome/svgs/regular/calendar.svg new file mode 100644 index 0000000..cec0b6d --- /dev/null +++ b/resources/fontawesome/svgs/regular/calendar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/chart-bar.svg b/resources/fontawesome/svgs/regular/chart-bar.svg new file mode 100644 index 0000000..ab7ba81 --- /dev/null +++ b/resources/fontawesome/svgs/regular/chart-bar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/chess-bishop.svg b/resources/fontawesome/svgs/regular/chess-bishop.svg new file mode 100644 index 0000000..6a746f4 --- /dev/null +++ b/resources/fontawesome/svgs/regular/chess-bishop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/chess-king.svg b/resources/fontawesome/svgs/regular/chess-king.svg new file mode 100644 index 0000000..572372a --- /dev/null +++ b/resources/fontawesome/svgs/regular/chess-king.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/chess-knight.svg b/resources/fontawesome/svgs/regular/chess-knight.svg new file mode 100644 index 0000000..9860c2a --- /dev/null +++ b/resources/fontawesome/svgs/regular/chess-knight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/chess-pawn.svg b/resources/fontawesome/svgs/regular/chess-pawn.svg new file mode 100644 index 0000000..730c9b8 --- /dev/null +++ b/resources/fontawesome/svgs/regular/chess-pawn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/chess-queen.svg b/resources/fontawesome/svgs/regular/chess-queen.svg new file mode 100644 index 0000000..b29aad1 --- /dev/null +++ b/resources/fontawesome/svgs/regular/chess-queen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/chess-rook.svg b/resources/fontawesome/svgs/regular/chess-rook.svg new file mode 100644 index 0000000..591f38b --- /dev/null +++ b/resources/fontawesome/svgs/regular/chess-rook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/circle-check.svg b/resources/fontawesome/svgs/regular/circle-check.svg new file mode 100644 index 0000000..97e0b9c --- /dev/null +++ b/resources/fontawesome/svgs/regular/circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/circle-dot.svg b/resources/fontawesome/svgs/regular/circle-dot.svg new file mode 100644 index 0000000..1522792 --- /dev/null +++ b/resources/fontawesome/svgs/regular/circle-dot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/circle-down.svg b/resources/fontawesome/svgs/regular/circle-down.svg new file mode 100644 index 0000000..e6ef058 --- /dev/null +++ b/resources/fontawesome/svgs/regular/circle-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/circle-left.svg b/resources/fontawesome/svgs/regular/circle-left.svg new file mode 100644 index 0000000..d11b6a1 --- /dev/null +++ b/resources/fontawesome/svgs/regular/circle-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/circle-pause.svg b/resources/fontawesome/svgs/regular/circle-pause.svg new file mode 100644 index 0000000..e04c72c --- /dev/null +++ b/resources/fontawesome/svgs/regular/circle-pause.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/circle-play.svg b/resources/fontawesome/svgs/regular/circle-play.svg new file mode 100644 index 0000000..eb2f649 --- /dev/null +++ b/resources/fontawesome/svgs/regular/circle-play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/circle-question.svg b/resources/fontawesome/svgs/regular/circle-question.svg new file mode 100644 index 0000000..1df2b5d --- /dev/null +++ b/resources/fontawesome/svgs/regular/circle-question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/circle-right.svg b/resources/fontawesome/svgs/regular/circle-right.svg new file mode 100644 index 0000000..f2f19d9 --- /dev/null +++ b/resources/fontawesome/svgs/regular/circle-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/circle-stop.svg b/resources/fontawesome/svgs/regular/circle-stop.svg new file mode 100644 index 0000000..1ad6184 --- /dev/null +++ b/resources/fontawesome/svgs/regular/circle-stop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/circle-up.svg b/resources/fontawesome/svgs/regular/circle-up.svg new file mode 100644 index 0000000..77b6989 --- /dev/null +++ b/resources/fontawesome/svgs/regular/circle-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/circle-user.svg b/resources/fontawesome/svgs/regular/circle-user.svg new file mode 100644 index 0000000..65bda67 --- /dev/null +++ b/resources/fontawesome/svgs/regular/circle-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/circle-xmark.svg b/resources/fontawesome/svgs/regular/circle-xmark.svg new file mode 100644 index 0000000..e7a8ae2 --- /dev/null +++ b/resources/fontawesome/svgs/regular/circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/circle.svg b/resources/fontawesome/svgs/regular/circle.svg new file mode 100644 index 0000000..f264990 --- /dev/null +++ b/resources/fontawesome/svgs/regular/circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/clipboard.svg b/resources/fontawesome/svgs/regular/clipboard.svg new file mode 100644 index 0000000..1f9fc5d --- /dev/null +++ b/resources/fontawesome/svgs/regular/clipboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/clock.svg b/resources/fontawesome/svgs/regular/clock.svg new file mode 100644 index 0000000..830baab --- /dev/null +++ b/resources/fontawesome/svgs/regular/clock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/clone.svg b/resources/fontawesome/svgs/regular/clone.svg new file mode 100644 index 0000000..e61db2f --- /dev/null +++ b/resources/fontawesome/svgs/regular/clone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/closed-captioning.svg b/resources/fontawesome/svgs/regular/closed-captioning.svg new file mode 100644 index 0000000..c6bfc9f --- /dev/null +++ b/resources/fontawesome/svgs/regular/closed-captioning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/comment-dots.svg b/resources/fontawesome/svgs/regular/comment-dots.svg new file mode 100644 index 0000000..8840185 --- /dev/null +++ b/resources/fontawesome/svgs/regular/comment-dots.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/comment.svg b/resources/fontawesome/svgs/regular/comment.svg new file mode 100644 index 0000000..99e43ac --- /dev/null +++ b/resources/fontawesome/svgs/regular/comment.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/comments.svg b/resources/fontawesome/svgs/regular/comments.svg new file mode 100644 index 0000000..4987ab9 --- /dev/null +++ b/resources/fontawesome/svgs/regular/comments.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/compass.svg b/resources/fontawesome/svgs/regular/compass.svg new file mode 100644 index 0000000..bf8919a --- /dev/null +++ b/resources/fontawesome/svgs/regular/compass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/copy.svg b/resources/fontawesome/svgs/regular/copy.svg new file mode 100644 index 0000000..88bfb2b --- /dev/null +++ b/resources/fontawesome/svgs/regular/copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/copyright.svg b/resources/fontawesome/svgs/regular/copyright.svg new file mode 100644 index 0000000..ab373dc --- /dev/null +++ b/resources/fontawesome/svgs/regular/copyright.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/credit-card.svg b/resources/fontawesome/svgs/regular/credit-card.svg new file mode 100644 index 0000000..0999321 --- /dev/null +++ b/resources/fontawesome/svgs/regular/credit-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/envelope-open.svg b/resources/fontawesome/svgs/regular/envelope-open.svg new file mode 100644 index 0000000..7f8ea10 --- /dev/null +++ b/resources/fontawesome/svgs/regular/envelope-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/envelope.svg b/resources/fontawesome/svgs/regular/envelope.svg new file mode 100644 index 0000000..d9f578a --- /dev/null +++ b/resources/fontawesome/svgs/regular/envelope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/eye-slash.svg b/resources/fontawesome/svgs/regular/eye-slash.svg new file mode 100644 index 0000000..9c39ae9 --- /dev/null +++ b/resources/fontawesome/svgs/regular/eye-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/eye.svg b/resources/fontawesome/svgs/regular/eye.svg new file mode 100644 index 0000000..c0ad1d5 --- /dev/null +++ b/resources/fontawesome/svgs/regular/eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-angry.svg b/resources/fontawesome/svgs/regular/face-angry.svg new file mode 100644 index 0000000..92be0f5 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-angry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-dizzy.svg b/resources/fontawesome/svgs/regular/face-dizzy.svg new file mode 100644 index 0000000..c0795b2 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-dizzy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-flushed.svg b/resources/fontawesome/svgs/regular/face-flushed.svg new file mode 100644 index 0000000..f72aa13 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-flushed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-frown-open.svg b/resources/fontawesome/svgs/regular/face-frown-open.svg new file mode 100644 index 0000000..d7ac33a --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-frown-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-frown.svg b/resources/fontawesome/svgs/regular/face-frown.svg new file mode 100644 index 0000000..23d0005 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-frown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-grimace.svg b/resources/fontawesome/svgs/regular/face-grimace.svg new file mode 100644 index 0000000..2a1ea59 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-grimace.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-grin-beam-sweat.svg b/resources/fontawesome/svgs/regular/face-grin-beam-sweat.svg new file mode 100644 index 0000000..95976bb --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-grin-beam-sweat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-grin-beam.svg b/resources/fontawesome/svgs/regular/face-grin-beam.svg new file mode 100644 index 0000000..0ca50d6 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-grin-beam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-grin-hearts.svg b/resources/fontawesome/svgs/regular/face-grin-hearts.svg new file mode 100644 index 0000000..63371cb --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-grin-hearts.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-grin-squint-tears.svg b/resources/fontawesome/svgs/regular/face-grin-squint-tears.svg new file mode 100644 index 0000000..afbea7e --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-grin-squint-tears.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-grin-squint.svg b/resources/fontawesome/svgs/regular/face-grin-squint.svg new file mode 100644 index 0000000..f09cc7c --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-grin-squint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-grin-stars.svg b/resources/fontawesome/svgs/regular/face-grin-stars.svg new file mode 100644 index 0000000..e29696c --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-grin-stars.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-grin-tears.svg b/resources/fontawesome/svgs/regular/face-grin-tears.svg new file mode 100644 index 0000000..cab6c1a --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-grin-tears.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-grin-tongue-squint.svg b/resources/fontawesome/svgs/regular/face-grin-tongue-squint.svg new file mode 100644 index 0000000..dc25ee1 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-grin-tongue-squint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-grin-tongue-wink.svg b/resources/fontawesome/svgs/regular/face-grin-tongue-wink.svg new file mode 100644 index 0000000..84b7220 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-grin-tongue-wink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-grin-tongue.svg b/resources/fontawesome/svgs/regular/face-grin-tongue.svg new file mode 100644 index 0000000..c0da277 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-grin-tongue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-grin-wide.svg b/resources/fontawesome/svgs/regular/face-grin-wide.svg new file mode 100644 index 0000000..ca58374 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-grin-wide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-grin-wink.svg b/resources/fontawesome/svgs/regular/face-grin-wink.svg new file mode 100644 index 0000000..352df72 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-grin-wink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-grin.svg b/resources/fontawesome/svgs/regular/face-grin.svg new file mode 100644 index 0000000..c30ae4a --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-grin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-kiss-beam.svg b/resources/fontawesome/svgs/regular/face-kiss-beam.svg new file mode 100644 index 0000000..c0ec708 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-kiss-beam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-kiss-wink-heart.svg b/resources/fontawesome/svgs/regular/face-kiss-wink-heart.svg new file mode 100644 index 0000000..4242755 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-kiss-wink-heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-kiss.svg b/resources/fontawesome/svgs/regular/face-kiss.svg new file mode 100644 index 0000000..6cd5051 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-kiss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-laugh-beam.svg b/resources/fontawesome/svgs/regular/face-laugh-beam.svg new file mode 100644 index 0000000..0de4a5c --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-laugh-beam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-laugh-squint.svg b/resources/fontawesome/svgs/regular/face-laugh-squint.svg new file mode 100644 index 0000000..275e1c7 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-laugh-squint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-laugh-wink.svg b/resources/fontawesome/svgs/regular/face-laugh-wink.svg new file mode 100644 index 0000000..a73525b --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-laugh-wink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-laugh.svg b/resources/fontawesome/svgs/regular/face-laugh.svg new file mode 100644 index 0000000..73b1241 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-laugh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-meh-blank.svg b/resources/fontawesome/svgs/regular/face-meh-blank.svg new file mode 100644 index 0000000..fbddc09 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-meh-blank.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-meh.svg b/resources/fontawesome/svgs/regular/face-meh.svg new file mode 100644 index 0000000..2243f7d --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-meh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-rolling-eyes.svg b/resources/fontawesome/svgs/regular/face-rolling-eyes.svg new file mode 100644 index 0000000..d049fc1 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-rolling-eyes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-sad-cry.svg b/resources/fontawesome/svgs/regular/face-sad-cry.svg new file mode 100644 index 0000000..1ceff35 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-sad-cry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-sad-tear.svg b/resources/fontawesome/svgs/regular/face-sad-tear.svg new file mode 100644 index 0000000..86c5f91 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-sad-tear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-smile-beam.svg b/resources/fontawesome/svgs/regular/face-smile-beam.svg new file mode 100644 index 0000000..3881a7d --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-smile-beam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-smile-wink.svg b/resources/fontawesome/svgs/regular/face-smile-wink.svg new file mode 100644 index 0000000..e3fcf43 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-smile-wink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-smile.svg b/resources/fontawesome/svgs/regular/face-smile.svg new file mode 100644 index 0000000..eb6ec96 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-smile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-surprise.svg b/resources/fontawesome/svgs/regular/face-surprise.svg new file mode 100644 index 0000000..06e26cf --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-surprise.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/face-tired.svg b/resources/fontawesome/svgs/regular/face-tired.svg new file mode 100644 index 0000000..ac82416 --- /dev/null +++ b/resources/fontawesome/svgs/regular/face-tired.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/file-audio.svg b/resources/fontawesome/svgs/regular/file-audio.svg new file mode 100644 index 0000000..fc4329f --- /dev/null +++ b/resources/fontawesome/svgs/regular/file-audio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/file-code.svg b/resources/fontawesome/svgs/regular/file-code.svg new file mode 100644 index 0000000..419e344 --- /dev/null +++ b/resources/fontawesome/svgs/regular/file-code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/file-excel.svg b/resources/fontawesome/svgs/regular/file-excel.svg new file mode 100644 index 0000000..a233b1f --- /dev/null +++ b/resources/fontawesome/svgs/regular/file-excel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/file-image.svg b/resources/fontawesome/svgs/regular/file-image.svg new file mode 100644 index 0000000..b59c95e --- /dev/null +++ b/resources/fontawesome/svgs/regular/file-image.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/file-lines.svg b/resources/fontawesome/svgs/regular/file-lines.svg new file mode 100644 index 0000000..0b2fa7f --- /dev/null +++ b/resources/fontawesome/svgs/regular/file-lines.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/file-pdf.svg b/resources/fontawesome/svgs/regular/file-pdf.svg new file mode 100644 index 0000000..ccd8199 --- /dev/null +++ b/resources/fontawesome/svgs/regular/file-pdf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/file-powerpoint.svg b/resources/fontawesome/svgs/regular/file-powerpoint.svg new file mode 100644 index 0000000..ef13475 --- /dev/null +++ b/resources/fontawesome/svgs/regular/file-powerpoint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/file-video.svg b/resources/fontawesome/svgs/regular/file-video.svg new file mode 100644 index 0000000..7a4941f --- /dev/null +++ b/resources/fontawesome/svgs/regular/file-video.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/file-word.svg b/resources/fontawesome/svgs/regular/file-word.svg new file mode 100644 index 0000000..9b72e93 --- /dev/null +++ b/resources/fontawesome/svgs/regular/file-word.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/file-zipper.svg b/resources/fontawesome/svgs/regular/file-zipper.svg new file mode 100644 index 0000000..97670f1 --- /dev/null +++ b/resources/fontawesome/svgs/regular/file-zipper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/file.svg b/resources/fontawesome/svgs/regular/file.svg new file mode 100644 index 0000000..acd882f --- /dev/null +++ b/resources/fontawesome/svgs/regular/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/flag.svg b/resources/fontawesome/svgs/regular/flag.svg new file mode 100644 index 0000000..983b80f --- /dev/null +++ b/resources/fontawesome/svgs/regular/flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/floppy-disk.svg b/resources/fontawesome/svgs/regular/floppy-disk.svg new file mode 100644 index 0000000..94b4e48 --- /dev/null +++ b/resources/fontawesome/svgs/regular/floppy-disk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/folder-closed.svg b/resources/fontawesome/svgs/regular/folder-closed.svg new file mode 100644 index 0000000..35a0fc5 --- /dev/null +++ b/resources/fontawesome/svgs/regular/folder-closed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/folder-open.svg b/resources/fontawesome/svgs/regular/folder-open.svg new file mode 100644 index 0000000..c8aba2b --- /dev/null +++ b/resources/fontawesome/svgs/regular/folder-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/folder.svg b/resources/fontawesome/svgs/regular/folder.svg new file mode 100644 index 0000000..68033ec --- /dev/null +++ b/resources/fontawesome/svgs/regular/folder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/font-awesome.svg b/resources/fontawesome/svgs/regular/font-awesome.svg new file mode 100644 index 0000000..d573bde --- /dev/null +++ b/resources/fontawesome/svgs/regular/font-awesome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/futbol.svg b/resources/fontawesome/svgs/regular/futbol.svg new file mode 100644 index 0000000..e0a9f3a --- /dev/null +++ b/resources/fontawesome/svgs/regular/futbol.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/gem.svg b/resources/fontawesome/svgs/regular/gem.svg new file mode 100644 index 0000000..05096b0 --- /dev/null +++ b/resources/fontawesome/svgs/regular/gem.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/hand-back-fist.svg b/resources/fontawesome/svgs/regular/hand-back-fist.svg new file mode 100644 index 0000000..36b6acf --- /dev/null +++ b/resources/fontawesome/svgs/regular/hand-back-fist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/hand-lizard.svg b/resources/fontawesome/svgs/regular/hand-lizard.svg new file mode 100644 index 0000000..57c7008 --- /dev/null +++ b/resources/fontawesome/svgs/regular/hand-lizard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/hand-peace.svg b/resources/fontawesome/svgs/regular/hand-peace.svg new file mode 100644 index 0000000..f9df3ac --- /dev/null +++ b/resources/fontawesome/svgs/regular/hand-peace.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/hand-point-down.svg b/resources/fontawesome/svgs/regular/hand-point-down.svg new file mode 100644 index 0000000..02c0cb4 --- /dev/null +++ b/resources/fontawesome/svgs/regular/hand-point-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/hand-point-left.svg b/resources/fontawesome/svgs/regular/hand-point-left.svg new file mode 100644 index 0000000..5ac6edf --- /dev/null +++ b/resources/fontawesome/svgs/regular/hand-point-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/hand-point-right.svg b/resources/fontawesome/svgs/regular/hand-point-right.svg new file mode 100644 index 0000000..70d863d --- /dev/null +++ b/resources/fontawesome/svgs/regular/hand-point-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/hand-point-up.svg b/resources/fontawesome/svgs/regular/hand-point-up.svg new file mode 100644 index 0000000..cc70002 --- /dev/null +++ b/resources/fontawesome/svgs/regular/hand-point-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/hand-pointer.svg b/resources/fontawesome/svgs/regular/hand-pointer.svg new file mode 100644 index 0000000..0b1a720 --- /dev/null +++ b/resources/fontawesome/svgs/regular/hand-pointer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/hand-scissors.svg b/resources/fontawesome/svgs/regular/hand-scissors.svg new file mode 100644 index 0000000..d1f9202 --- /dev/null +++ b/resources/fontawesome/svgs/regular/hand-scissors.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/hand-spock.svg b/resources/fontawesome/svgs/regular/hand-spock.svg new file mode 100644 index 0000000..1519220 --- /dev/null +++ b/resources/fontawesome/svgs/regular/hand-spock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/hand.svg b/resources/fontawesome/svgs/regular/hand.svg new file mode 100644 index 0000000..5913870 --- /dev/null +++ b/resources/fontawesome/svgs/regular/hand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/handshake.svg b/resources/fontawesome/svgs/regular/handshake.svg new file mode 100644 index 0000000..fc00fe6 --- /dev/null +++ b/resources/fontawesome/svgs/regular/handshake.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/hard-drive.svg b/resources/fontawesome/svgs/regular/hard-drive.svg new file mode 100644 index 0000000..80ab018 --- /dev/null +++ b/resources/fontawesome/svgs/regular/hard-drive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/heart.svg b/resources/fontawesome/svgs/regular/heart.svg new file mode 100644 index 0000000..a4b8d8a --- /dev/null +++ b/resources/fontawesome/svgs/regular/heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/hospital.svg b/resources/fontawesome/svgs/regular/hospital.svg new file mode 100644 index 0000000..b3a6a9b --- /dev/null +++ b/resources/fontawesome/svgs/regular/hospital.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/hourglass-half.svg b/resources/fontawesome/svgs/regular/hourglass-half.svg new file mode 100644 index 0000000..ebf7e45 --- /dev/null +++ b/resources/fontawesome/svgs/regular/hourglass-half.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/hourglass.svg b/resources/fontawesome/svgs/regular/hourglass.svg new file mode 100644 index 0000000..6b7c1ac --- /dev/null +++ b/resources/fontawesome/svgs/regular/hourglass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/id-badge.svg b/resources/fontawesome/svgs/regular/id-badge.svg new file mode 100644 index 0000000..df839cb --- /dev/null +++ b/resources/fontawesome/svgs/regular/id-badge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/id-card.svg b/resources/fontawesome/svgs/regular/id-card.svg new file mode 100644 index 0000000..356db1f --- /dev/null +++ b/resources/fontawesome/svgs/regular/id-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/image.svg b/resources/fontawesome/svgs/regular/image.svg new file mode 100644 index 0000000..f793d0d --- /dev/null +++ b/resources/fontawesome/svgs/regular/image.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/images.svg b/resources/fontawesome/svgs/regular/images.svg new file mode 100644 index 0000000..2a48721 --- /dev/null +++ b/resources/fontawesome/svgs/regular/images.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/keyboard.svg b/resources/fontawesome/svgs/regular/keyboard.svg new file mode 100644 index 0000000..7509fe0 --- /dev/null +++ b/resources/fontawesome/svgs/regular/keyboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/lemon.svg b/resources/fontawesome/svgs/regular/lemon.svg new file mode 100644 index 0000000..0c10985 --- /dev/null +++ b/resources/fontawesome/svgs/regular/lemon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/life-ring.svg b/resources/fontawesome/svgs/regular/life-ring.svg new file mode 100644 index 0000000..6880eba --- /dev/null +++ b/resources/fontawesome/svgs/regular/life-ring.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/lightbulb.svg b/resources/fontawesome/svgs/regular/lightbulb.svg new file mode 100644 index 0000000..d1fc711 --- /dev/null +++ b/resources/fontawesome/svgs/regular/lightbulb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/map.svg b/resources/fontawesome/svgs/regular/map.svg new file mode 100644 index 0000000..3efa406 --- /dev/null +++ b/resources/fontawesome/svgs/regular/map.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/message.svg b/resources/fontawesome/svgs/regular/message.svg new file mode 100644 index 0000000..64f26fe --- /dev/null +++ b/resources/fontawesome/svgs/regular/message.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/money-bill-1.svg b/resources/fontawesome/svgs/regular/money-bill-1.svg new file mode 100644 index 0000000..84c400d --- /dev/null +++ b/resources/fontawesome/svgs/regular/money-bill-1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/moon.svg b/resources/fontawesome/svgs/regular/moon.svg new file mode 100644 index 0000000..8cd2968 --- /dev/null +++ b/resources/fontawesome/svgs/regular/moon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/newspaper.svg b/resources/fontawesome/svgs/regular/newspaper.svg new file mode 100644 index 0000000..d30b61e --- /dev/null +++ b/resources/fontawesome/svgs/regular/newspaper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/note-sticky.svg b/resources/fontawesome/svgs/regular/note-sticky.svg new file mode 100644 index 0000000..651cda0 --- /dev/null +++ b/resources/fontawesome/svgs/regular/note-sticky.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/object-group.svg b/resources/fontawesome/svgs/regular/object-group.svg new file mode 100644 index 0000000..91f89b6 --- /dev/null +++ b/resources/fontawesome/svgs/regular/object-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/object-ungroup.svg b/resources/fontawesome/svgs/regular/object-ungroup.svg new file mode 100644 index 0000000..a820eec --- /dev/null +++ b/resources/fontawesome/svgs/regular/object-ungroup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/paper-plane.svg b/resources/fontawesome/svgs/regular/paper-plane.svg new file mode 100644 index 0000000..c153a06 --- /dev/null +++ b/resources/fontawesome/svgs/regular/paper-plane.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/paste.svg b/resources/fontawesome/svgs/regular/paste.svg new file mode 100644 index 0000000..02b2069 --- /dev/null +++ b/resources/fontawesome/svgs/regular/paste.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/pen-to-square.svg b/resources/fontawesome/svgs/regular/pen-to-square.svg new file mode 100644 index 0000000..2e22757 --- /dev/null +++ b/resources/fontawesome/svgs/regular/pen-to-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/rectangle-list.svg b/resources/fontawesome/svgs/regular/rectangle-list.svg new file mode 100644 index 0000000..2ab7809 --- /dev/null +++ b/resources/fontawesome/svgs/regular/rectangle-list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/rectangle-xmark.svg b/resources/fontawesome/svgs/regular/rectangle-xmark.svg new file mode 100644 index 0000000..f1562a5 --- /dev/null +++ b/resources/fontawesome/svgs/regular/rectangle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/registered.svg b/resources/fontawesome/svgs/regular/registered.svg new file mode 100644 index 0000000..7279068 --- /dev/null +++ b/resources/fontawesome/svgs/regular/registered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/share-from-square.svg b/resources/fontawesome/svgs/regular/share-from-square.svg new file mode 100644 index 0000000..ec316ac --- /dev/null +++ b/resources/fontawesome/svgs/regular/share-from-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/snowflake.svg b/resources/fontawesome/svgs/regular/snowflake.svg new file mode 100644 index 0000000..8e2e92d --- /dev/null +++ b/resources/fontawesome/svgs/regular/snowflake.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/square-caret-down.svg b/resources/fontawesome/svgs/regular/square-caret-down.svg new file mode 100644 index 0000000..825887b --- /dev/null +++ b/resources/fontawesome/svgs/regular/square-caret-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/square-caret-left.svg b/resources/fontawesome/svgs/regular/square-caret-left.svg new file mode 100644 index 0000000..47c6359 --- /dev/null +++ b/resources/fontawesome/svgs/regular/square-caret-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/square-caret-right.svg b/resources/fontawesome/svgs/regular/square-caret-right.svg new file mode 100644 index 0000000..d4d484f --- /dev/null +++ b/resources/fontawesome/svgs/regular/square-caret-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/square-caret-up.svg b/resources/fontawesome/svgs/regular/square-caret-up.svg new file mode 100644 index 0000000..cfbea32 --- /dev/null +++ b/resources/fontawesome/svgs/regular/square-caret-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/square-check.svg b/resources/fontawesome/svgs/regular/square-check.svg new file mode 100644 index 0000000..bdf645d --- /dev/null +++ b/resources/fontawesome/svgs/regular/square-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/square-full.svg b/resources/fontawesome/svgs/regular/square-full.svg new file mode 100644 index 0000000..171621b --- /dev/null +++ b/resources/fontawesome/svgs/regular/square-full.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/square-minus.svg b/resources/fontawesome/svgs/regular/square-minus.svg new file mode 100644 index 0000000..aa1e81a --- /dev/null +++ b/resources/fontawesome/svgs/regular/square-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/square-plus.svg b/resources/fontawesome/svgs/regular/square-plus.svg new file mode 100644 index 0000000..b1a17fd --- /dev/null +++ b/resources/fontawesome/svgs/regular/square-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/square.svg b/resources/fontawesome/svgs/regular/square.svg new file mode 100644 index 0000000..9492e1a --- /dev/null +++ b/resources/fontawesome/svgs/regular/square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/star-half-stroke.svg b/resources/fontawesome/svgs/regular/star-half-stroke.svg new file mode 100644 index 0000000..36216a7 --- /dev/null +++ b/resources/fontawesome/svgs/regular/star-half-stroke.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/star-half.svg b/resources/fontawesome/svgs/regular/star-half.svg new file mode 100644 index 0000000..fa1220b --- /dev/null +++ b/resources/fontawesome/svgs/regular/star-half.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/star.svg b/resources/fontawesome/svgs/regular/star.svg new file mode 100644 index 0000000..6998d32 --- /dev/null +++ b/resources/fontawesome/svgs/regular/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/sun.svg b/resources/fontawesome/svgs/regular/sun.svg new file mode 100644 index 0000000..f59c33f --- /dev/null +++ b/resources/fontawesome/svgs/regular/sun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/thumbs-down.svg b/resources/fontawesome/svgs/regular/thumbs-down.svg new file mode 100644 index 0000000..eada076 --- /dev/null +++ b/resources/fontawesome/svgs/regular/thumbs-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/thumbs-up.svg b/resources/fontawesome/svgs/regular/thumbs-up.svg new file mode 100644 index 0000000..15130d9 --- /dev/null +++ b/resources/fontawesome/svgs/regular/thumbs-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/trash-can.svg b/resources/fontawesome/svgs/regular/trash-can.svg new file mode 100644 index 0000000..dc6fcb3 --- /dev/null +++ b/resources/fontawesome/svgs/regular/trash-can.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/user.svg b/resources/fontawesome/svgs/regular/user.svg new file mode 100644 index 0000000..03f9215 --- /dev/null +++ b/resources/fontawesome/svgs/regular/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/window-maximize.svg b/resources/fontawesome/svgs/regular/window-maximize.svg new file mode 100644 index 0000000..ed0d143 --- /dev/null +++ b/resources/fontawesome/svgs/regular/window-maximize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/window-minimize.svg b/resources/fontawesome/svgs/regular/window-minimize.svg new file mode 100644 index 0000000..00d4dba --- /dev/null +++ b/resources/fontawesome/svgs/regular/window-minimize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/regular/window-restore.svg b/resources/fontawesome/svgs/regular/window-restore.svg new file mode 100644 index 0000000..90ad737 --- /dev/null +++ b/resources/fontawesome/svgs/regular/window-restore.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/0.svg b/resources/fontawesome/svgs/solid/0.svg new file mode 100644 index 0000000..903d869 --- /dev/null +++ b/resources/fontawesome/svgs/solid/0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/1.svg b/resources/fontawesome/svgs/solid/1.svg new file mode 100644 index 0000000..1b77e62 --- /dev/null +++ b/resources/fontawesome/svgs/solid/1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/2.svg b/resources/fontawesome/svgs/solid/2.svg new file mode 100644 index 0000000..192c095 --- /dev/null +++ b/resources/fontawesome/svgs/solid/2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/3.svg b/resources/fontawesome/svgs/solid/3.svg new file mode 100644 index 0000000..51ca927 --- /dev/null +++ b/resources/fontawesome/svgs/solid/3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/4.svg b/resources/fontawesome/svgs/solid/4.svg new file mode 100644 index 0000000..fafa46d --- /dev/null +++ b/resources/fontawesome/svgs/solid/4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/5.svg b/resources/fontawesome/svgs/solid/5.svg new file mode 100644 index 0000000..35e6556 --- /dev/null +++ b/resources/fontawesome/svgs/solid/5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/6.svg b/resources/fontawesome/svgs/solid/6.svg new file mode 100644 index 0000000..e752747 --- /dev/null +++ b/resources/fontawesome/svgs/solid/6.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/7.svg b/resources/fontawesome/svgs/solid/7.svg new file mode 100644 index 0000000..cfa6fe0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/7.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/8.svg b/resources/fontawesome/svgs/solid/8.svg new file mode 100644 index 0000000..2328ce4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/8.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/9.svg b/resources/fontawesome/svgs/solid/9.svg new file mode 100644 index 0000000..14e2407 --- /dev/null +++ b/resources/fontawesome/svgs/solid/9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/a.svg b/resources/fontawesome/svgs/solid/a.svg new file mode 100644 index 0000000..92a3842 --- /dev/null +++ b/resources/fontawesome/svgs/solid/a.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/address-book.svg b/resources/fontawesome/svgs/solid/address-book.svg new file mode 100644 index 0000000..f940b61 --- /dev/null +++ b/resources/fontawesome/svgs/solid/address-book.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/address-card.svg b/resources/fontawesome/svgs/solid/address-card.svg new file mode 100644 index 0000000..9b12983 --- /dev/null +++ b/resources/fontawesome/svgs/solid/address-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/align-center.svg b/resources/fontawesome/svgs/solid/align-center.svg new file mode 100644 index 0000000..9a5c9be --- /dev/null +++ b/resources/fontawesome/svgs/solid/align-center.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/align-justify.svg b/resources/fontawesome/svgs/solid/align-justify.svg new file mode 100644 index 0000000..57aa3e4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/align-justify.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/align-left.svg b/resources/fontawesome/svgs/solid/align-left.svg new file mode 100644 index 0000000..a61f235 --- /dev/null +++ b/resources/fontawesome/svgs/solid/align-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/align-right.svg b/resources/fontawesome/svgs/solid/align-right.svg new file mode 100644 index 0000000..19a91bd --- /dev/null +++ b/resources/fontawesome/svgs/solid/align-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/anchor-circle-check.svg b/resources/fontawesome/svgs/solid/anchor-circle-check.svg new file mode 100644 index 0000000..4b055fa --- /dev/null +++ b/resources/fontawesome/svgs/solid/anchor-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/anchor-circle-exclamation.svg b/resources/fontawesome/svgs/solid/anchor-circle-exclamation.svg new file mode 100644 index 0000000..54b5874 --- /dev/null +++ b/resources/fontawesome/svgs/solid/anchor-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/anchor-circle-xmark.svg b/resources/fontawesome/svgs/solid/anchor-circle-xmark.svg new file mode 100644 index 0000000..41c4745 --- /dev/null +++ b/resources/fontawesome/svgs/solid/anchor-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/anchor-lock.svg b/resources/fontawesome/svgs/solid/anchor-lock.svg new file mode 100644 index 0000000..12940d5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/anchor-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/anchor.svg b/resources/fontawesome/svgs/solid/anchor.svg new file mode 100644 index 0000000..493706e --- /dev/null +++ b/resources/fontawesome/svgs/solid/anchor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/angle-down.svg b/resources/fontawesome/svgs/solid/angle-down.svg new file mode 100644 index 0000000..29b24b2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/angle-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/angle-left.svg b/resources/fontawesome/svgs/solid/angle-left.svg new file mode 100644 index 0000000..a98acf0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/angle-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/angle-right.svg b/resources/fontawesome/svgs/solid/angle-right.svg new file mode 100644 index 0000000..91f98cc --- /dev/null +++ b/resources/fontawesome/svgs/solid/angle-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/angle-up.svg b/resources/fontawesome/svgs/solid/angle-up.svg new file mode 100644 index 0000000..de73360 --- /dev/null +++ b/resources/fontawesome/svgs/solid/angle-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/angles-down.svg b/resources/fontawesome/svgs/solid/angles-down.svg new file mode 100644 index 0000000..94a016d --- /dev/null +++ b/resources/fontawesome/svgs/solid/angles-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/angles-left.svg b/resources/fontawesome/svgs/solid/angles-left.svg new file mode 100644 index 0000000..8ea33ed --- /dev/null +++ b/resources/fontawesome/svgs/solid/angles-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/angles-right.svg b/resources/fontawesome/svgs/solid/angles-right.svg new file mode 100644 index 0000000..a9811aa --- /dev/null +++ b/resources/fontawesome/svgs/solid/angles-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/angles-up.svg b/resources/fontawesome/svgs/solid/angles-up.svg new file mode 100644 index 0000000..5974c59 --- /dev/null +++ b/resources/fontawesome/svgs/solid/angles-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ankh.svg b/resources/fontawesome/svgs/solid/ankh.svg new file mode 100644 index 0000000..2682209 --- /dev/null +++ b/resources/fontawesome/svgs/solid/ankh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/apple-whole.svg b/resources/fontawesome/svgs/solid/apple-whole.svg new file mode 100644 index 0000000..1d49aee --- /dev/null +++ b/resources/fontawesome/svgs/solid/apple-whole.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/archway.svg b/resources/fontawesome/svgs/solid/archway.svg new file mode 100644 index 0000000..12357e5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/archway.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-down-1-9.svg b/resources/fontawesome/svgs/solid/arrow-down-1-9.svg new file mode 100644 index 0000000..2197df5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-down-1-9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-down-9-1.svg b/resources/fontawesome/svgs/solid/arrow-down-9-1.svg new file mode 100644 index 0000000..11264fe --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-down-9-1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-down-a-z.svg b/resources/fontawesome/svgs/solid/arrow-down-a-z.svg new file mode 100644 index 0000000..ba2ce42 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-down-a-z.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-down-long.svg b/resources/fontawesome/svgs/solid/arrow-down-long.svg new file mode 100644 index 0000000..b73cb54 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-down-long.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-down-short-wide.svg b/resources/fontawesome/svgs/solid/arrow-down-short-wide.svg new file mode 100644 index 0000000..debd35e --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-down-short-wide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-down-up-across-line.svg b/resources/fontawesome/svgs/solid/arrow-down-up-across-line.svg new file mode 100644 index 0000000..46e4260 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-down-up-across-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-down-up-lock.svg b/resources/fontawesome/svgs/solid/arrow-down-up-lock.svg new file mode 100644 index 0000000..00f460d --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-down-up-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-down-wide-short.svg b/resources/fontawesome/svgs/solid/arrow-down-wide-short.svg new file mode 100644 index 0000000..7875c4c --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-down-wide-short.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-down-z-a.svg b/resources/fontawesome/svgs/solid/arrow-down-z-a.svg new file mode 100644 index 0000000..83d7476 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-down-z-a.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-down.svg b/resources/fontawesome/svgs/solid/arrow-down.svg new file mode 100644 index 0000000..81fd6cc --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-left-long.svg b/resources/fontawesome/svgs/solid/arrow-left-long.svg new file mode 100644 index 0000000..31e1f01 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-left-long.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-left.svg b/resources/fontawesome/svgs/solid/arrow-left.svg new file mode 100644 index 0000000..9dddb48 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-pointer.svg b/resources/fontawesome/svgs/solid/arrow-pointer.svg new file mode 100644 index 0000000..fdd1e99 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-pointer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-right-arrow-left.svg b/resources/fontawesome/svgs/solid/arrow-right-arrow-left.svg new file mode 100644 index 0000000..2ba2c44 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-right-arrow-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-right-from-bracket.svg b/resources/fontawesome/svgs/solid/arrow-right-from-bracket.svg new file mode 100644 index 0000000..23f9327 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-right-from-bracket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-right-long.svg b/resources/fontawesome/svgs/solid/arrow-right-long.svg new file mode 100644 index 0000000..8a05671 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-right-long.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-right-to-bracket.svg b/resources/fontawesome/svgs/solid/arrow-right-to-bracket.svg new file mode 100644 index 0000000..c0fd565 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-right-to-bracket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-right-to-city.svg b/resources/fontawesome/svgs/solid/arrow-right-to-city.svg new file mode 100644 index 0000000..f3e7b84 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-right-to-city.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-right.svg b/resources/fontawesome/svgs/solid/arrow-right.svg new file mode 100644 index 0000000..d6e0975 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-rotate-left.svg b/resources/fontawesome/svgs/solid/arrow-rotate-left.svg new file mode 100644 index 0000000..97b5331 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-rotate-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-rotate-right.svg b/resources/fontawesome/svgs/solid/arrow-rotate-right.svg new file mode 100644 index 0000000..f5bc7f8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-rotate-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-trend-down.svg b/resources/fontawesome/svgs/solid/arrow-trend-down.svg new file mode 100644 index 0000000..3c7e6d9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-trend-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-trend-up.svg b/resources/fontawesome/svgs/solid/arrow-trend-up.svg new file mode 100644 index 0000000..3c643f5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-trend-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-turn-down.svg b/resources/fontawesome/svgs/solid/arrow-turn-down.svg new file mode 100644 index 0000000..c9fedbe --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-turn-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-turn-up.svg b/resources/fontawesome/svgs/solid/arrow-turn-up.svg new file mode 100644 index 0000000..544352f --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-turn-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-up-1-9.svg b/resources/fontawesome/svgs/solid/arrow-up-1-9.svg new file mode 100644 index 0000000..20501a6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-up-1-9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-up-9-1.svg b/resources/fontawesome/svgs/solid/arrow-up-9-1.svg new file mode 100644 index 0000000..2f02ec2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-up-9-1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-up-a-z.svg b/resources/fontawesome/svgs/solid/arrow-up-a-z.svg new file mode 100644 index 0000000..47dfcbb --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-up-a-z.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-up-from-bracket.svg b/resources/fontawesome/svgs/solid/arrow-up-from-bracket.svg new file mode 100644 index 0000000..ee5ff20 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-up-from-bracket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-up-from-ground-water.svg b/resources/fontawesome/svgs/solid/arrow-up-from-ground-water.svg new file mode 100644 index 0000000..7cc3ed5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-up-from-ground-water.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-up-from-water-pump.svg b/resources/fontawesome/svgs/solid/arrow-up-from-water-pump.svg new file mode 100644 index 0000000..ce4adfc --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-up-from-water-pump.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-up-long.svg b/resources/fontawesome/svgs/solid/arrow-up-long.svg new file mode 100644 index 0000000..54c6f5c --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-up-long.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-up-right-dots.svg b/resources/fontawesome/svgs/solid/arrow-up-right-dots.svg new file mode 100644 index 0000000..9c9f1ed --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-up-right-dots.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-up-right-from-square.svg b/resources/fontawesome/svgs/solid/arrow-up-right-from-square.svg new file mode 100644 index 0000000..4a49f42 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-up-right-from-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-up-short-wide.svg b/resources/fontawesome/svgs/solid/arrow-up-short-wide.svg new file mode 100644 index 0000000..574159f --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-up-short-wide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-up-wide-short.svg b/resources/fontawesome/svgs/solid/arrow-up-wide-short.svg new file mode 100644 index 0000000..72b40fa --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-up-wide-short.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-up-z-a.svg b/resources/fontawesome/svgs/solid/arrow-up-z-a.svg new file mode 100644 index 0000000..0b3e71c --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-up-z-a.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrow-up.svg b/resources/fontawesome/svgs/solid/arrow-up.svg new file mode 100644 index 0000000..4125fea --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrows-down-to-line.svg b/resources/fontawesome/svgs/solid/arrows-down-to-line.svg new file mode 100644 index 0000000..6c69dba --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrows-down-to-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrows-down-to-people.svg b/resources/fontawesome/svgs/solid/arrows-down-to-people.svg new file mode 100644 index 0000000..21efa70 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrows-down-to-people.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrows-left-right-to-line.svg b/resources/fontawesome/svgs/solid/arrows-left-right-to-line.svg new file mode 100644 index 0000000..a53e6d6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrows-left-right-to-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrows-left-right.svg b/resources/fontawesome/svgs/solid/arrows-left-right.svg new file mode 100644 index 0000000..dbf717b --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrows-left-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrows-rotate.svg b/resources/fontawesome/svgs/solid/arrows-rotate.svg new file mode 100644 index 0000000..dcd0fc8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrows-rotate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrows-spin.svg b/resources/fontawesome/svgs/solid/arrows-spin.svg new file mode 100644 index 0000000..8d9aadb --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrows-spin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrows-split-up-and-left.svg b/resources/fontawesome/svgs/solid/arrows-split-up-and-left.svg new file mode 100644 index 0000000..3cabc8f --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrows-split-up-and-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrows-to-circle.svg b/resources/fontawesome/svgs/solid/arrows-to-circle.svg new file mode 100644 index 0000000..a554f7a --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrows-to-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrows-to-dot.svg b/resources/fontawesome/svgs/solid/arrows-to-dot.svg new file mode 100644 index 0000000..efd4b88 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrows-to-dot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrows-to-eye.svg b/resources/fontawesome/svgs/solid/arrows-to-eye.svg new file mode 100644 index 0000000..da22673 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrows-to-eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrows-turn-right.svg b/resources/fontawesome/svgs/solid/arrows-turn-right.svg new file mode 100644 index 0000000..d9a5994 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrows-turn-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrows-turn-to-dots.svg b/resources/fontawesome/svgs/solid/arrows-turn-to-dots.svg new file mode 100644 index 0000000..7abc24c --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrows-turn-to-dots.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrows-up-down-left-right.svg b/resources/fontawesome/svgs/solid/arrows-up-down-left-right.svg new file mode 100644 index 0000000..a530463 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrows-up-down-left-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrows-up-down.svg b/resources/fontawesome/svgs/solid/arrows-up-down.svg new file mode 100644 index 0000000..514ca71 --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrows-up-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/arrows-up-to-line.svg b/resources/fontawesome/svgs/solid/arrows-up-to-line.svg new file mode 100644 index 0000000..d71ec8d --- /dev/null +++ b/resources/fontawesome/svgs/solid/arrows-up-to-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/asterisk.svg b/resources/fontawesome/svgs/solid/asterisk.svg new file mode 100644 index 0000000..267b302 --- /dev/null +++ b/resources/fontawesome/svgs/solid/asterisk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/at.svg b/resources/fontawesome/svgs/solid/at.svg new file mode 100644 index 0000000..4cf64f7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/at.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/atom.svg b/resources/fontawesome/svgs/solid/atom.svg new file mode 100644 index 0000000..e9b2c24 --- /dev/null +++ b/resources/fontawesome/svgs/solid/atom.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/audio-description.svg b/resources/fontawesome/svgs/solid/audio-description.svg new file mode 100644 index 0000000..9eaf5ac --- /dev/null +++ b/resources/fontawesome/svgs/solid/audio-description.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/austral-sign.svg b/resources/fontawesome/svgs/solid/austral-sign.svg new file mode 100644 index 0000000..a9e232f --- /dev/null +++ b/resources/fontawesome/svgs/solid/austral-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/award.svg b/resources/fontawesome/svgs/solid/award.svg new file mode 100644 index 0000000..c1df65b --- /dev/null +++ b/resources/fontawesome/svgs/solid/award.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/b.svg b/resources/fontawesome/svgs/solid/b.svg new file mode 100644 index 0000000..518aae9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/b.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/baby-carriage.svg b/resources/fontawesome/svgs/solid/baby-carriage.svg new file mode 100644 index 0000000..4594502 --- /dev/null +++ b/resources/fontawesome/svgs/solid/baby-carriage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/baby.svg b/resources/fontawesome/svgs/solid/baby.svg new file mode 100644 index 0000000..a935f81 --- /dev/null +++ b/resources/fontawesome/svgs/solid/baby.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/backward-fast.svg b/resources/fontawesome/svgs/solid/backward-fast.svg new file mode 100644 index 0000000..f3bcca6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/backward-fast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/backward-step.svg b/resources/fontawesome/svgs/solid/backward-step.svg new file mode 100644 index 0000000..81c4a2e --- /dev/null +++ b/resources/fontawesome/svgs/solid/backward-step.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/backward.svg b/resources/fontawesome/svgs/solid/backward.svg new file mode 100644 index 0000000..66456c6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/backward.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bacon.svg b/resources/fontawesome/svgs/solid/bacon.svg new file mode 100644 index 0000000..4679af9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bacon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bacteria.svg b/resources/fontawesome/svgs/solid/bacteria.svg new file mode 100644 index 0000000..56dc80a --- /dev/null +++ b/resources/fontawesome/svgs/solid/bacteria.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bacterium.svg b/resources/fontawesome/svgs/solid/bacterium.svg new file mode 100644 index 0000000..1b455c1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bacterium.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bag-shopping.svg b/resources/fontawesome/svgs/solid/bag-shopping.svg new file mode 100644 index 0000000..118405b --- /dev/null +++ b/resources/fontawesome/svgs/solid/bag-shopping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bahai.svg b/resources/fontawesome/svgs/solid/bahai.svg new file mode 100644 index 0000000..2b46e03 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bahai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/baht-sign.svg b/resources/fontawesome/svgs/solid/baht-sign.svg new file mode 100644 index 0000000..85acade --- /dev/null +++ b/resources/fontawesome/svgs/solid/baht-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ban-smoking.svg b/resources/fontawesome/svgs/solid/ban-smoking.svg new file mode 100644 index 0000000..c6547bc --- /dev/null +++ b/resources/fontawesome/svgs/solid/ban-smoking.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ban.svg b/resources/fontawesome/svgs/solid/ban.svg new file mode 100644 index 0000000..fd6d141 --- /dev/null +++ b/resources/fontawesome/svgs/solid/ban.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bandage.svg b/resources/fontawesome/svgs/solid/bandage.svg new file mode 100644 index 0000000..5d05a7c --- /dev/null +++ b/resources/fontawesome/svgs/solid/bandage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bangladeshi-taka-sign.svg b/resources/fontawesome/svgs/solid/bangladeshi-taka-sign.svg new file mode 100644 index 0000000..dd2154c --- /dev/null +++ b/resources/fontawesome/svgs/solid/bangladeshi-taka-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/barcode.svg b/resources/fontawesome/svgs/solid/barcode.svg new file mode 100644 index 0000000..440887d --- /dev/null +++ b/resources/fontawesome/svgs/solid/barcode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bars-progress.svg b/resources/fontawesome/svgs/solid/bars-progress.svg new file mode 100644 index 0000000..85c8caf --- /dev/null +++ b/resources/fontawesome/svgs/solid/bars-progress.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bars-staggered.svg b/resources/fontawesome/svgs/solid/bars-staggered.svg new file mode 100644 index 0000000..799fd02 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bars-staggered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bars.svg b/resources/fontawesome/svgs/solid/bars.svg new file mode 100644 index 0000000..ccf9e4a --- /dev/null +++ b/resources/fontawesome/svgs/solid/bars.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/baseball-bat-ball.svg b/resources/fontawesome/svgs/solid/baseball-bat-ball.svg new file mode 100644 index 0000000..f5b9bf6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/baseball-bat-ball.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/baseball.svg b/resources/fontawesome/svgs/solid/baseball.svg new file mode 100644 index 0000000..a5fec87 --- /dev/null +++ b/resources/fontawesome/svgs/solid/baseball.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/basket-shopping.svg b/resources/fontawesome/svgs/solid/basket-shopping.svg new file mode 100644 index 0000000..454fd89 --- /dev/null +++ b/resources/fontawesome/svgs/solid/basket-shopping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/basketball.svg b/resources/fontawesome/svgs/solid/basketball.svg new file mode 100644 index 0000000..fa9d07f --- /dev/null +++ b/resources/fontawesome/svgs/solid/basketball.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bath.svg b/resources/fontawesome/svgs/solid/bath.svg new file mode 100644 index 0000000..d78a3ce --- /dev/null +++ b/resources/fontawesome/svgs/solid/bath.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/battery-empty.svg b/resources/fontawesome/svgs/solid/battery-empty.svg new file mode 100644 index 0000000..7df37e7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/battery-empty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/battery-full.svg b/resources/fontawesome/svgs/solid/battery-full.svg new file mode 100644 index 0000000..df66a50 --- /dev/null +++ b/resources/fontawesome/svgs/solid/battery-full.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/battery-half.svg b/resources/fontawesome/svgs/solid/battery-half.svg new file mode 100644 index 0000000..2f77458 --- /dev/null +++ b/resources/fontawesome/svgs/solid/battery-half.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/battery-quarter.svg b/resources/fontawesome/svgs/solid/battery-quarter.svg new file mode 100644 index 0000000..2bcbba1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/battery-quarter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/battery-three-quarters.svg b/resources/fontawesome/svgs/solid/battery-three-quarters.svg new file mode 100644 index 0000000..a9d9b23 --- /dev/null +++ b/resources/fontawesome/svgs/solid/battery-three-quarters.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bed-pulse.svg b/resources/fontawesome/svgs/solid/bed-pulse.svg new file mode 100644 index 0000000..2b64393 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bed-pulse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bed.svg b/resources/fontawesome/svgs/solid/bed.svg new file mode 100644 index 0000000..645a2f0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/beer-mug-empty.svg b/resources/fontawesome/svgs/solid/beer-mug-empty.svg new file mode 100644 index 0000000..a24c5b1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/beer-mug-empty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bell-concierge.svg b/resources/fontawesome/svgs/solid/bell-concierge.svg new file mode 100644 index 0000000..162d177 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bell-concierge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bell-slash.svg b/resources/fontawesome/svgs/solid/bell-slash.svg new file mode 100644 index 0000000..5476192 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bell-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bell.svg b/resources/fontawesome/svgs/solid/bell.svg new file mode 100644 index 0000000..7828807 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bell.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bezier-curve.svg b/resources/fontawesome/svgs/solid/bezier-curve.svg new file mode 100644 index 0000000..7da206c --- /dev/null +++ b/resources/fontawesome/svgs/solid/bezier-curve.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bicycle.svg b/resources/fontawesome/svgs/solid/bicycle.svg new file mode 100644 index 0000000..51cad16 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bicycle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/binoculars.svg b/resources/fontawesome/svgs/solid/binoculars.svg new file mode 100644 index 0000000..f9c201c --- /dev/null +++ b/resources/fontawesome/svgs/solid/binoculars.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/biohazard.svg b/resources/fontawesome/svgs/solid/biohazard.svg new file mode 100644 index 0000000..6d4ec68 --- /dev/null +++ b/resources/fontawesome/svgs/solid/biohazard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bitcoin-sign.svg b/resources/fontawesome/svgs/solid/bitcoin-sign.svg new file mode 100644 index 0000000..204fdc8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bitcoin-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/blender-phone.svg b/resources/fontawesome/svgs/solid/blender-phone.svg new file mode 100644 index 0000000..46cba63 --- /dev/null +++ b/resources/fontawesome/svgs/solid/blender-phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/blender.svg b/resources/fontawesome/svgs/solid/blender.svg new file mode 100644 index 0000000..f3e3d53 --- /dev/null +++ b/resources/fontawesome/svgs/solid/blender.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/blog.svg b/resources/fontawesome/svgs/solid/blog.svg new file mode 100644 index 0000000..fe3911b --- /dev/null +++ b/resources/fontawesome/svgs/solid/blog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bold.svg b/resources/fontawesome/svgs/solid/bold.svg new file mode 100644 index 0000000..9fd4864 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bolt-lightning.svg b/resources/fontawesome/svgs/solid/bolt-lightning.svg new file mode 100644 index 0000000..1885f4b --- /dev/null +++ b/resources/fontawesome/svgs/solid/bolt-lightning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bolt.svg b/resources/fontawesome/svgs/solid/bolt.svg new file mode 100644 index 0000000..a181689 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bolt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bomb.svg b/resources/fontawesome/svgs/solid/bomb.svg new file mode 100644 index 0000000..267d085 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bomb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bone.svg b/resources/fontawesome/svgs/solid/bone.svg new file mode 100644 index 0000000..0255e62 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bong.svg b/resources/fontawesome/svgs/solid/bong.svg new file mode 100644 index 0000000..3eb880f --- /dev/null +++ b/resources/fontawesome/svgs/solid/bong.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/book-atlas.svg b/resources/fontawesome/svgs/solid/book-atlas.svg new file mode 100644 index 0000000..3f1bf07 --- /dev/null +++ b/resources/fontawesome/svgs/solid/book-atlas.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/book-bible.svg b/resources/fontawesome/svgs/solid/book-bible.svg new file mode 100644 index 0000000..403b91a --- /dev/null +++ b/resources/fontawesome/svgs/solid/book-bible.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/book-bookmark.svg b/resources/fontawesome/svgs/solid/book-bookmark.svg new file mode 100644 index 0000000..fe45a98 --- /dev/null +++ b/resources/fontawesome/svgs/solid/book-bookmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/book-journal-whills.svg b/resources/fontawesome/svgs/solid/book-journal-whills.svg new file mode 100644 index 0000000..006fbfa --- /dev/null +++ b/resources/fontawesome/svgs/solid/book-journal-whills.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/book-medical.svg b/resources/fontawesome/svgs/solid/book-medical.svg new file mode 100644 index 0000000..add8303 --- /dev/null +++ b/resources/fontawesome/svgs/solid/book-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/book-open-reader.svg b/resources/fontawesome/svgs/solid/book-open-reader.svg new file mode 100644 index 0000000..2825788 --- /dev/null +++ b/resources/fontawesome/svgs/solid/book-open-reader.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/book-open.svg b/resources/fontawesome/svgs/solid/book-open.svg new file mode 100644 index 0000000..55aadbd --- /dev/null +++ b/resources/fontawesome/svgs/solid/book-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/book-quran.svg b/resources/fontawesome/svgs/solid/book-quran.svg new file mode 100644 index 0000000..2cf43c2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/book-quran.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/book-skull.svg b/resources/fontawesome/svgs/solid/book-skull.svg new file mode 100644 index 0000000..5572684 --- /dev/null +++ b/resources/fontawesome/svgs/solid/book-skull.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/book-tanakh.svg b/resources/fontawesome/svgs/solid/book-tanakh.svg new file mode 100644 index 0000000..47d17d2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/book-tanakh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/book.svg b/resources/fontawesome/svgs/solid/book.svg new file mode 100644 index 0000000..a5a222e --- /dev/null +++ b/resources/fontawesome/svgs/solid/book.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bookmark.svg b/resources/fontawesome/svgs/solid/bookmark.svg new file mode 100644 index 0000000..f106d8d --- /dev/null +++ b/resources/fontawesome/svgs/solid/bookmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/border-all.svg b/resources/fontawesome/svgs/solid/border-all.svg new file mode 100644 index 0000000..7a71edb --- /dev/null +++ b/resources/fontawesome/svgs/solid/border-all.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/border-none.svg b/resources/fontawesome/svgs/solid/border-none.svg new file mode 100644 index 0000000..4319049 --- /dev/null +++ b/resources/fontawesome/svgs/solid/border-none.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/border-top-left.svg b/resources/fontawesome/svgs/solid/border-top-left.svg new file mode 100644 index 0000000..2eab0be --- /dev/null +++ b/resources/fontawesome/svgs/solid/border-top-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bore-hole.svg b/resources/fontawesome/svgs/solid/bore-hole.svg new file mode 100644 index 0000000..4ebf2d8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bore-hole.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bottle-droplet.svg b/resources/fontawesome/svgs/solid/bottle-droplet.svg new file mode 100644 index 0000000..a467115 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bottle-droplet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bottle-water.svg b/resources/fontawesome/svgs/solid/bottle-water.svg new file mode 100644 index 0000000..580a9cc --- /dev/null +++ b/resources/fontawesome/svgs/solid/bottle-water.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bowl-food.svg b/resources/fontawesome/svgs/solid/bowl-food.svg new file mode 100644 index 0000000..efcf290 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bowl-food.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bowl-rice.svg b/resources/fontawesome/svgs/solid/bowl-rice.svg new file mode 100644 index 0000000..6095625 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bowl-rice.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bowling-ball.svg b/resources/fontawesome/svgs/solid/bowling-ball.svg new file mode 100644 index 0000000..2015425 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bowling-ball.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/box-archive.svg b/resources/fontawesome/svgs/solid/box-archive.svg new file mode 100644 index 0000000..e2493e3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/box-archive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/box-open.svg b/resources/fontawesome/svgs/solid/box-open.svg new file mode 100644 index 0000000..bc6b187 --- /dev/null +++ b/resources/fontawesome/svgs/solid/box-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/box-tissue.svg b/resources/fontawesome/svgs/solid/box-tissue.svg new file mode 100644 index 0000000..0e3c11f --- /dev/null +++ b/resources/fontawesome/svgs/solid/box-tissue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/box.svg b/resources/fontawesome/svgs/solid/box.svg new file mode 100644 index 0000000..ca0bdf4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/box.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/boxes-packing.svg b/resources/fontawesome/svgs/solid/boxes-packing.svg new file mode 100644 index 0000000..d4fdd1c --- /dev/null +++ b/resources/fontawesome/svgs/solid/boxes-packing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/boxes-stacked.svg b/resources/fontawesome/svgs/solid/boxes-stacked.svg new file mode 100644 index 0000000..cfb9aa1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/boxes-stacked.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/braille.svg b/resources/fontawesome/svgs/solid/braille.svg new file mode 100644 index 0000000..d0f76bd --- /dev/null +++ b/resources/fontawesome/svgs/solid/braille.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/brain.svg b/resources/fontawesome/svgs/solid/brain.svg new file mode 100644 index 0000000..2524c9b --- /dev/null +++ b/resources/fontawesome/svgs/solid/brain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/brazilian-real-sign.svg b/resources/fontawesome/svgs/solid/brazilian-real-sign.svg new file mode 100644 index 0000000..c877430 --- /dev/null +++ b/resources/fontawesome/svgs/solid/brazilian-real-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bread-slice.svg b/resources/fontawesome/svgs/solid/bread-slice.svg new file mode 100644 index 0000000..895139e --- /dev/null +++ b/resources/fontawesome/svgs/solid/bread-slice.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bridge-circle-check.svg b/resources/fontawesome/svgs/solid/bridge-circle-check.svg new file mode 100644 index 0000000..da710ae --- /dev/null +++ b/resources/fontawesome/svgs/solid/bridge-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bridge-circle-exclamation.svg b/resources/fontawesome/svgs/solid/bridge-circle-exclamation.svg new file mode 100644 index 0000000..5a0cd11 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bridge-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bridge-circle-xmark.svg b/resources/fontawesome/svgs/solid/bridge-circle-xmark.svg new file mode 100644 index 0000000..314ef19 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bridge-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bridge-lock.svg b/resources/fontawesome/svgs/solid/bridge-lock.svg new file mode 100644 index 0000000..422f2ac --- /dev/null +++ b/resources/fontawesome/svgs/solid/bridge-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bridge-water.svg b/resources/fontawesome/svgs/solid/bridge-water.svg new file mode 100644 index 0000000..8e5b628 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bridge-water.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bridge.svg b/resources/fontawesome/svgs/solid/bridge.svg new file mode 100644 index 0000000..bfff369 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bridge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/briefcase-medical.svg b/resources/fontawesome/svgs/solid/briefcase-medical.svg new file mode 100644 index 0000000..65c0b93 --- /dev/null +++ b/resources/fontawesome/svgs/solid/briefcase-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/briefcase.svg b/resources/fontawesome/svgs/solid/briefcase.svg new file mode 100644 index 0000000..3b263cf --- /dev/null +++ b/resources/fontawesome/svgs/solid/briefcase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/broom-ball.svg b/resources/fontawesome/svgs/solid/broom-ball.svg new file mode 100644 index 0000000..dee3238 --- /dev/null +++ b/resources/fontawesome/svgs/solid/broom-ball.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/broom.svg b/resources/fontawesome/svgs/solid/broom.svg new file mode 100644 index 0000000..b096fad --- /dev/null +++ b/resources/fontawesome/svgs/solid/broom.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/brush.svg b/resources/fontawesome/svgs/solid/brush.svg new file mode 100644 index 0000000..12b8a37 --- /dev/null +++ b/resources/fontawesome/svgs/solid/brush.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bucket.svg b/resources/fontawesome/svgs/solid/bucket.svg new file mode 100644 index 0000000..72376a6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bucket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bug-slash.svg b/resources/fontawesome/svgs/solid/bug-slash.svg new file mode 100644 index 0000000..187e294 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bug-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bug.svg b/resources/fontawesome/svgs/solid/bug.svg new file mode 100644 index 0000000..b6c043a --- /dev/null +++ b/resources/fontawesome/svgs/solid/bug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bugs.svg b/resources/fontawesome/svgs/solid/bugs.svg new file mode 100644 index 0000000..eca8a63 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bugs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/building-circle-arrow-right.svg b/resources/fontawesome/svgs/solid/building-circle-arrow-right.svg new file mode 100644 index 0000000..bc1c7c6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/building-circle-arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/building-circle-check.svg b/resources/fontawesome/svgs/solid/building-circle-check.svg new file mode 100644 index 0000000..08f8a39 --- /dev/null +++ b/resources/fontawesome/svgs/solid/building-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/building-circle-exclamation.svg b/resources/fontawesome/svgs/solid/building-circle-exclamation.svg new file mode 100644 index 0000000..60c725c --- /dev/null +++ b/resources/fontawesome/svgs/solid/building-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/building-circle-xmark.svg b/resources/fontawesome/svgs/solid/building-circle-xmark.svg new file mode 100644 index 0000000..8405a19 --- /dev/null +++ b/resources/fontawesome/svgs/solid/building-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/building-columns.svg b/resources/fontawesome/svgs/solid/building-columns.svg new file mode 100644 index 0000000..4067b79 --- /dev/null +++ b/resources/fontawesome/svgs/solid/building-columns.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/building-flag.svg b/resources/fontawesome/svgs/solid/building-flag.svg new file mode 100644 index 0000000..ec49eb1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/building-flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/building-lock.svg b/resources/fontawesome/svgs/solid/building-lock.svg new file mode 100644 index 0000000..ee050f7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/building-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/building-ngo.svg b/resources/fontawesome/svgs/solid/building-ngo.svg new file mode 100644 index 0000000..26cd012 --- /dev/null +++ b/resources/fontawesome/svgs/solid/building-ngo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/building-shield.svg b/resources/fontawesome/svgs/solid/building-shield.svg new file mode 100644 index 0000000..64e79d5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/building-shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/building-un.svg b/resources/fontawesome/svgs/solid/building-un.svg new file mode 100644 index 0000000..c83001a --- /dev/null +++ b/resources/fontawesome/svgs/solid/building-un.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/building-user.svg b/resources/fontawesome/svgs/solid/building-user.svg new file mode 100644 index 0000000..873a345 --- /dev/null +++ b/resources/fontawesome/svgs/solid/building-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/building-wheat.svg b/resources/fontawesome/svgs/solid/building-wheat.svg new file mode 100644 index 0000000..e8e15d4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/building-wheat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/building.svg b/resources/fontawesome/svgs/solid/building.svg new file mode 100644 index 0000000..10bf3b4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/building.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bullhorn.svg b/resources/fontawesome/svgs/solid/bullhorn.svg new file mode 100644 index 0000000..6cee626 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bullhorn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bullseye.svg b/resources/fontawesome/svgs/solid/bullseye.svg new file mode 100644 index 0000000..784b5af --- /dev/null +++ b/resources/fontawesome/svgs/solid/bullseye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/burger.svg b/resources/fontawesome/svgs/solid/burger.svg new file mode 100644 index 0000000..2f4d46e --- /dev/null +++ b/resources/fontawesome/svgs/solid/burger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/burst.svg b/resources/fontawesome/svgs/solid/burst.svg new file mode 100644 index 0000000..5b792fc --- /dev/null +++ b/resources/fontawesome/svgs/solid/burst.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bus-simple.svg b/resources/fontawesome/svgs/solid/bus-simple.svg new file mode 100644 index 0000000..99de78e --- /dev/null +++ b/resources/fontawesome/svgs/solid/bus-simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/bus.svg b/resources/fontawesome/svgs/solid/bus.svg new file mode 100644 index 0000000..f049d66 --- /dev/null +++ b/resources/fontawesome/svgs/solid/bus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/business-time.svg b/resources/fontawesome/svgs/solid/business-time.svg new file mode 100644 index 0000000..a7e8e85 --- /dev/null +++ b/resources/fontawesome/svgs/solid/business-time.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/c.svg b/resources/fontawesome/svgs/solid/c.svg new file mode 100644 index 0000000..cb496c4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/c.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cable-car.svg b/resources/fontawesome/svgs/solid/cable-car.svg new file mode 100644 index 0000000..6e475a3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cable-car.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cake-candles.svg b/resources/fontawesome/svgs/solid/cake-candles.svg new file mode 100644 index 0000000..2767bba --- /dev/null +++ b/resources/fontawesome/svgs/solid/cake-candles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/calculator.svg b/resources/fontawesome/svgs/solid/calculator.svg new file mode 100644 index 0000000..31a094c --- /dev/null +++ b/resources/fontawesome/svgs/solid/calculator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/calendar-check.svg b/resources/fontawesome/svgs/solid/calendar-check.svg new file mode 100644 index 0000000..149309f --- /dev/null +++ b/resources/fontawesome/svgs/solid/calendar-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/calendar-day.svg b/resources/fontawesome/svgs/solid/calendar-day.svg new file mode 100644 index 0000000..f97219e --- /dev/null +++ b/resources/fontawesome/svgs/solid/calendar-day.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/calendar-days.svg b/resources/fontawesome/svgs/solid/calendar-days.svg new file mode 100644 index 0000000..f70b0d7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/calendar-days.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/calendar-minus.svg b/resources/fontawesome/svgs/solid/calendar-minus.svg new file mode 100644 index 0000000..d18b470 --- /dev/null +++ b/resources/fontawesome/svgs/solid/calendar-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/calendar-plus.svg b/resources/fontawesome/svgs/solid/calendar-plus.svg new file mode 100644 index 0000000..56dfbdf --- /dev/null +++ b/resources/fontawesome/svgs/solid/calendar-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/calendar-week.svg b/resources/fontawesome/svgs/solid/calendar-week.svg new file mode 100644 index 0000000..eadf6fa --- /dev/null +++ b/resources/fontawesome/svgs/solid/calendar-week.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/calendar-xmark.svg b/resources/fontawesome/svgs/solid/calendar-xmark.svg new file mode 100644 index 0000000..e455920 --- /dev/null +++ b/resources/fontawesome/svgs/solid/calendar-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/calendar.svg b/resources/fontawesome/svgs/solid/calendar.svg new file mode 100644 index 0000000..a8ee9e6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/calendar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/camera-retro.svg b/resources/fontawesome/svgs/solid/camera-retro.svg new file mode 100644 index 0000000..4d90dba --- /dev/null +++ b/resources/fontawesome/svgs/solid/camera-retro.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/camera-rotate.svg b/resources/fontawesome/svgs/solid/camera-rotate.svg new file mode 100644 index 0000000..0e768f0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/camera-rotate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/camera.svg b/resources/fontawesome/svgs/solid/camera.svg new file mode 100644 index 0000000..00bb6d8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/camera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/campground.svg b/resources/fontawesome/svgs/solid/campground.svg new file mode 100644 index 0000000..6446817 --- /dev/null +++ b/resources/fontawesome/svgs/solid/campground.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/candy-cane.svg b/resources/fontawesome/svgs/solid/candy-cane.svg new file mode 100644 index 0000000..a188e8b --- /dev/null +++ b/resources/fontawesome/svgs/solid/candy-cane.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cannabis.svg b/resources/fontawesome/svgs/solid/cannabis.svg new file mode 100644 index 0000000..782eeca --- /dev/null +++ b/resources/fontawesome/svgs/solid/cannabis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/capsules.svg b/resources/fontawesome/svgs/solid/capsules.svg new file mode 100644 index 0000000..05c539f --- /dev/null +++ b/resources/fontawesome/svgs/solid/capsules.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/car-battery.svg b/resources/fontawesome/svgs/solid/car-battery.svg new file mode 100644 index 0000000..ecffa9b --- /dev/null +++ b/resources/fontawesome/svgs/solid/car-battery.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/car-burst.svg b/resources/fontawesome/svgs/solid/car-burst.svg new file mode 100644 index 0000000..f2fae69 --- /dev/null +++ b/resources/fontawesome/svgs/solid/car-burst.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/car-on.svg b/resources/fontawesome/svgs/solid/car-on.svg new file mode 100644 index 0000000..c9765d4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/car-on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/car-rear.svg b/resources/fontawesome/svgs/solid/car-rear.svg new file mode 100644 index 0000000..10dd630 --- /dev/null +++ b/resources/fontawesome/svgs/solid/car-rear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/car-side.svg b/resources/fontawesome/svgs/solid/car-side.svg new file mode 100644 index 0000000..4ffee86 --- /dev/null +++ b/resources/fontawesome/svgs/solid/car-side.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/car-tunnel.svg b/resources/fontawesome/svgs/solid/car-tunnel.svg new file mode 100644 index 0000000..9ff4d8b --- /dev/null +++ b/resources/fontawesome/svgs/solid/car-tunnel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/car.svg b/resources/fontawesome/svgs/solid/car.svg new file mode 100644 index 0000000..5483275 --- /dev/null +++ b/resources/fontawesome/svgs/solid/car.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/caravan.svg b/resources/fontawesome/svgs/solid/caravan.svg new file mode 100644 index 0000000..528680c --- /dev/null +++ b/resources/fontawesome/svgs/solid/caravan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/caret-down.svg b/resources/fontawesome/svgs/solid/caret-down.svg new file mode 100644 index 0000000..f2afcc9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/caret-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/caret-left.svg b/resources/fontawesome/svgs/solid/caret-left.svg new file mode 100644 index 0000000..b556ef8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/caret-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/caret-right.svg b/resources/fontawesome/svgs/solid/caret-right.svg new file mode 100644 index 0000000..433eb23 --- /dev/null +++ b/resources/fontawesome/svgs/solid/caret-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/caret-up.svg b/resources/fontawesome/svgs/solid/caret-up.svg new file mode 100644 index 0000000..0f6f844 --- /dev/null +++ b/resources/fontawesome/svgs/solid/caret-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/carrot.svg b/resources/fontawesome/svgs/solid/carrot.svg new file mode 100644 index 0000000..3c8c35a --- /dev/null +++ b/resources/fontawesome/svgs/solid/carrot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cart-arrow-down.svg b/resources/fontawesome/svgs/solid/cart-arrow-down.svg new file mode 100644 index 0000000..ee7b5f3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cart-arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cart-flatbed-suitcase.svg b/resources/fontawesome/svgs/solid/cart-flatbed-suitcase.svg new file mode 100644 index 0000000..158f6f6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cart-flatbed-suitcase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cart-flatbed.svg b/resources/fontawesome/svgs/solid/cart-flatbed.svg new file mode 100644 index 0000000..53e363a --- /dev/null +++ b/resources/fontawesome/svgs/solid/cart-flatbed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cart-plus.svg b/resources/fontawesome/svgs/solid/cart-plus.svg new file mode 100644 index 0000000..a94a446 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cart-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cart-shopping.svg b/resources/fontawesome/svgs/solid/cart-shopping.svg new file mode 100644 index 0000000..b4ba1c6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cart-shopping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cash-register.svg b/resources/fontawesome/svgs/solid/cash-register.svg new file mode 100644 index 0000000..919f0d3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cash-register.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cat.svg b/resources/fontawesome/svgs/solid/cat.svg new file mode 100644 index 0000000..4f3fac9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cedi-sign.svg b/resources/fontawesome/svgs/solid/cedi-sign.svg new file mode 100644 index 0000000..73edfa3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cedi-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cent-sign.svg b/resources/fontawesome/svgs/solid/cent-sign.svg new file mode 100644 index 0000000..23b8f6a --- /dev/null +++ b/resources/fontawesome/svgs/solid/cent-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/certificate.svg b/resources/fontawesome/svgs/solid/certificate.svg new file mode 100644 index 0000000..ac17bcf --- /dev/null +++ b/resources/fontawesome/svgs/solid/certificate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chair.svg b/resources/fontawesome/svgs/solid/chair.svg new file mode 100644 index 0000000..e75c898 --- /dev/null +++ b/resources/fontawesome/svgs/solid/chair.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chalkboard-user.svg b/resources/fontawesome/svgs/solid/chalkboard-user.svg new file mode 100644 index 0000000..9117fc9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/chalkboard-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chalkboard.svg b/resources/fontawesome/svgs/solid/chalkboard.svg new file mode 100644 index 0000000..d1d3c31 --- /dev/null +++ b/resources/fontawesome/svgs/solid/chalkboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/champagne-glasses.svg b/resources/fontawesome/svgs/solid/champagne-glasses.svg new file mode 100644 index 0000000..9b34487 --- /dev/null +++ b/resources/fontawesome/svgs/solid/champagne-glasses.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/charging-station.svg b/resources/fontawesome/svgs/solid/charging-station.svg new file mode 100644 index 0000000..e2ce31d --- /dev/null +++ b/resources/fontawesome/svgs/solid/charging-station.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chart-area.svg b/resources/fontawesome/svgs/solid/chart-area.svg new file mode 100644 index 0000000..fc47baa --- /dev/null +++ b/resources/fontawesome/svgs/solid/chart-area.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chart-bar.svg b/resources/fontawesome/svgs/solid/chart-bar.svg new file mode 100644 index 0000000..3cd163b --- /dev/null +++ b/resources/fontawesome/svgs/solid/chart-bar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chart-column.svg b/resources/fontawesome/svgs/solid/chart-column.svg new file mode 100644 index 0000000..b181362 --- /dev/null +++ b/resources/fontawesome/svgs/solid/chart-column.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chart-gantt.svg b/resources/fontawesome/svgs/solid/chart-gantt.svg new file mode 100644 index 0000000..d372373 --- /dev/null +++ b/resources/fontawesome/svgs/solid/chart-gantt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chart-line.svg b/resources/fontawesome/svgs/solid/chart-line.svg new file mode 100644 index 0000000..5b2f126 --- /dev/null +++ b/resources/fontawesome/svgs/solid/chart-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chart-pie.svg b/resources/fontawesome/svgs/solid/chart-pie.svg new file mode 100644 index 0000000..f76d9f4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/chart-pie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chart-simple.svg b/resources/fontawesome/svgs/solid/chart-simple.svg new file mode 100644 index 0000000..8c12309 --- /dev/null +++ b/resources/fontawesome/svgs/solid/chart-simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/check-double.svg b/resources/fontawesome/svgs/solid/check-double.svg new file mode 100644 index 0000000..ac4a6ba --- /dev/null +++ b/resources/fontawesome/svgs/solid/check-double.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/check-to-slot.svg b/resources/fontawesome/svgs/solid/check-to-slot.svg new file mode 100644 index 0000000..3cda607 --- /dev/null +++ b/resources/fontawesome/svgs/solid/check-to-slot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/check.svg b/resources/fontawesome/svgs/solid/check.svg new file mode 100644 index 0000000..9c7b794 --- /dev/null +++ b/resources/fontawesome/svgs/solid/check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cheese.svg b/resources/fontawesome/svgs/solid/cheese.svg new file mode 100644 index 0000000..8d48a49 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cheese.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chess-bishop.svg b/resources/fontawesome/svgs/solid/chess-bishop.svg new file mode 100644 index 0000000..e4d022f --- /dev/null +++ b/resources/fontawesome/svgs/solid/chess-bishop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chess-board.svg b/resources/fontawesome/svgs/solid/chess-board.svg new file mode 100644 index 0000000..bd628c8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/chess-board.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chess-king.svg b/resources/fontawesome/svgs/solid/chess-king.svg new file mode 100644 index 0000000..c0d7bbe --- /dev/null +++ b/resources/fontawesome/svgs/solid/chess-king.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chess-knight.svg b/resources/fontawesome/svgs/solid/chess-knight.svg new file mode 100644 index 0000000..c1ac5c7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/chess-knight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chess-pawn.svg b/resources/fontawesome/svgs/solid/chess-pawn.svg new file mode 100644 index 0000000..c4e5883 --- /dev/null +++ b/resources/fontawesome/svgs/solid/chess-pawn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chess-queen.svg b/resources/fontawesome/svgs/solid/chess-queen.svg new file mode 100644 index 0000000..fc28657 --- /dev/null +++ b/resources/fontawesome/svgs/solid/chess-queen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chess-rook.svg b/resources/fontawesome/svgs/solid/chess-rook.svg new file mode 100644 index 0000000..04e8b1f --- /dev/null +++ b/resources/fontawesome/svgs/solid/chess-rook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chess.svg b/resources/fontawesome/svgs/solid/chess.svg new file mode 100644 index 0000000..4136b33 --- /dev/null +++ b/resources/fontawesome/svgs/solid/chess.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chevron-down.svg b/resources/fontawesome/svgs/solid/chevron-down.svg new file mode 100644 index 0000000..546aeb2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/chevron-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chevron-left.svg b/resources/fontawesome/svgs/solid/chevron-left.svg new file mode 100644 index 0000000..4ebc739 --- /dev/null +++ b/resources/fontawesome/svgs/solid/chevron-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chevron-right.svg b/resources/fontawesome/svgs/solid/chevron-right.svg new file mode 100644 index 0000000..c4e38bc --- /dev/null +++ b/resources/fontawesome/svgs/solid/chevron-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/chevron-up.svg b/resources/fontawesome/svgs/solid/chevron-up.svg new file mode 100644 index 0000000..c947135 --- /dev/null +++ b/resources/fontawesome/svgs/solid/chevron-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/child-combatant.svg b/resources/fontawesome/svgs/solid/child-combatant.svg new file mode 100644 index 0000000..5fb86a8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/child-combatant.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/child-dress.svg b/resources/fontawesome/svgs/solid/child-dress.svg new file mode 100644 index 0000000..c3af7bc --- /dev/null +++ b/resources/fontawesome/svgs/solid/child-dress.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/child-reaching.svg b/resources/fontawesome/svgs/solid/child-reaching.svg new file mode 100644 index 0000000..c7e2561 --- /dev/null +++ b/resources/fontawesome/svgs/solid/child-reaching.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/child.svg b/resources/fontawesome/svgs/solid/child.svg new file mode 100644 index 0000000..fcc266a --- /dev/null +++ b/resources/fontawesome/svgs/solid/child.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/children.svg b/resources/fontawesome/svgs/solid/children.svg new file mode 100644 index 0000000..56234b1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/children.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/church.svg b/resources/fontawesome/svgs/solid/church.svg new file mode 100644 index 0000000..11381be --- /dev/null +++ b/resources/fontawesome/svgs/solid/church.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-arrow-down.svg b/resources/fontawesome/svgs/solid/circle-arrow-down.svg new file mode 100644 index 0000000..e7a1d8c --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-arrow-left.svg b/resources/fontawesome/svgs/solid/circle-arrow-left.svg new file mode 100644 index 0000000..00e3504 --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-arrow-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-arrow-right.svg b/resources/fontawesome/svgs/solid/circle-arrow-right.svg new file mode 100644 index 0000000..9bc7453 --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-arrow-up.svg b/resources/fontawesome/svgs/solid/circle-arrow-up.svg new file mode 100644 index 0000000..01d561d --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-check.svg b/resources/fontawesome/svgs/solid/circle-check.svg new file mode 100644 index 0000000..9bba998 --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-chevron-down.svg b/resources/fontawesome/svgs/solid/circle-chevron-down.svg new file mode 100644 index 0000000..0739c74 --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-chevron-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-chevron-left.svg b/resources/fontawesome/svgs/solid/circle-chevron-left.svg new file mode 100644 index 0000000..665cc19 --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-chevron-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-chevron-right.svg b/resources/fontawesome/svgs/solid/circle-chevron-right.svg new file mode 100644 index 0000000..75a5b3f --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-chevron-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-chevron-up.svg b/resources/fontawesome/svgs/solid/circle-chevron-up.svg new file mode 100644 index 0000000..dbbd53a --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-chevron-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-dollar-to-slot.svg b/resources/fontawesome/svgs/solid/circle-dollar-to-slot.svg new file mode 100644 index 0000000..540bd01 --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-dollar-to-slot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-dot.svg b/resources/fontawesome/svgs/solid/circle-dot.svg new file mode 100644 index 0000000..d0aab69 --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-dot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-down.svg b/resources/fontawesome/svgs/solid/circle-down.svg new file mode 100644 index 0000000..84e25ad --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-exclamation.svg b/resources/fontawesome/svgs/solid/circle-exclamation.svg new file mode 100644 index 0000000..30dab4f --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-h.svg b/resources/fontawesome/svgs/solid/circle-h.svg new file mode 100644 index 0000000..e3900b0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-h.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-half-stroke.svg b/resources/fontawesome/svgs/solid/circle-half-stroke.svg new file mode 100644 index 0000000..42d5fc4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-half-stroke.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-info.svg b/resources/fontawesome/svgs/solid/circle-info.svg new file mode 100644 index 0000000..c4803e7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-left.svg b/resources/fontawesome/svgs/solid/circle-left.svg new file mode 100644 index 0000000..1db1957 --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-minus.svg b/resources/fontawesome/svgs/solid/circle-minus.svg new file mode 100644 index 0000000..dcdbc67 --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-nodes.svg b/resources/fontawesome/svgs/solid/circle-nodes.svg new file mode 100644 index 0000000..ede1099 --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-nodes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-notch.svg b/resources/fontawesome/svgs/solid/circle-notch.svg new file mode 100644 index 0000000..c47194a --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-notch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-pause.svg b/resources/fontawesome/svgs/solid/circle-pause.svg new file mode 100644 index 0000000..9e6d49c --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-pause.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-play.svg b/resources/fontawesome/svgs/solid/circle-play.svg new file mode 100644 index 0000000..1db5c8f --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-plus.svg b/resources/fontawesome/svgs/solid/circle-plus.svg new file mode 100644 index 0000000..50af343 --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-question.svg b/resources/fontawesome/svgs/solid/circle-question.svg new file mode 100644 index 0000000..c890709 --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-radiation.svg b/resources/fontawesome/svgs/solid/circle-radiation.svg new file mode 100644 index 0000000..e4d0dee --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-radiation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-right.svg b/resources/fontawesome/svgs/solid/circle-right.svg new file mode 100644 index 0000000..794985e --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-stop.svg b/resources/fontawesome/svgs/solid/circle-stop.svg new file mode 100644 index 0000000..a7fc66c --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-stop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-up.svg b/resources/fontawesome/svgs/solid/circle-up.svg new file mode 100644 index 0000000..201d815 --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-user.svg b/resources/fontawesome/svgs/solid/circle-user.svg new file mode 100644 index 0000000..c0a343a --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle-xmark.svg b/resources/fontawesome/svgs/solid/circle-xmark.svg new file mode 100644 index 0000000..50abf8b --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/circle.svg b/resources/fontawesome/svgs/solid/circle.svg new file mode 100644 index 0000000..45ea4c1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/city.svg b/resources/fontawesome/svgs/solid/city.svg new file mode 100644 index 0000000..f341ab3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/city.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/clapperboard.svg b/resources/fontawesome/svgs/solid/clapperboard.svg new file mode 100644 index 0000000..8472810 --- /dev/null +++ b/resources/fontawesome/svgs/solid/clapperboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/clipboard-check.svg b/resources/fontawesome/svgs/solid/clipboard-check.svg new file mode 100644 index 0000000..59efa7a --- /dev/null +++ b/resources/fontawesome/svgs/solid/clipboard-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/clipboard-list.svg b/resources/fontawesome/svgs/solid/clipboard-list.svg new file mode 100644 index 0000000..c4fcd10 --- /dev/null +++ b/resources/fontawesome/svgs/solid/clipboard-list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/clipboard-question.svg b/resources/fontawesome/svgs/solid/clipboard-question.svg new file mode 100644 index 0000000..1ca5670 --- /dev/null +++ b/resources/fontawesome/svgs/solid/clipboard-question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/clipboard-user.svg b/resources/fontawesome/svgs/solid/clipboard-user.svg new file mode 100644 index 0000000..4b36149 --- /dev/null +++ b/resources/fontawesome/svgs/solid/clipboard-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/clipboard.svg b/resources/fontawesome/svgs/solid/clipboard.svg new file mode 100644 index 0000000..6157ac2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/clipboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/clock-rotate-left.svg b/resources/fontawesome/svgs/solid/clock-rotate-left.svg new file mode 100644 index 0000000..48e59f3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/clock-rotate-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/clock.svg b/resources/fontawesome/svgs/solid/clock.svg new file mode 100644 index 0000000..f1a39d3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/clock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/clone.svg b/resources/fontawesome/svgs/solid/clone.svg new file mode 100644 index 0000000..ee03b34 --- /dev/null +++ b/resources/fontawesome/svgs/solid/clone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/closed-captioning.svg b/resources/fontawesome/svgs/solid/closed-captioning.svg new file mode 100644 index 0000000..3be6b3f --- /dev/null +++ b/resources/fontawesome/svgs/solid/closed-captioning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cloud-arrow-down.svg b/resources/fontawesome/svgs/solid/cloud-arrow-down.svg new file mode 100644 index 0000000..a25413f --- /dev/null +++ b/resources/fontawesome/svgs/solid/cloud-arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cloud-arrow-up.svg b/resources/fontawesome/svgs/solid/cloud-arrow-up.svg new file mode 100644 index 0000000..61dfc37 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cloud-arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cloud-bolt.svg b/resources/fontawesome/svgs/solid/cloud-bolt.svg new file mode 100644 index 0000000..97df3fe --- /dev/null +++ b/resources/fontawesome/svgs/solid/cloud-bolt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cloud-meatball.svg b/resources/fontawesome/svgs/solid/cloud-meatball.svg new file mode 100644 index 0000000..64a6b91 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cloud-meatball.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cloud-moon-rain.svg b/resources/fontawesome/svgs/solid/cloud-moon-rain.svg new file mode 100644 index 0000000..71cb717 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cloud-moon-rain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cloud-moon.svg b/resources/fontawesome/svgs/solid/cloud-moon.svg new file mode 100644 index 0000000..09a7799 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cloud-moon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cloud-rain.svg b/resources/fontawesome/svgs/solid/cloud-rain.svg new file mode 100644 index 0000000..149ce05 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cloud-rain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cloud-showers-heavy.svg b/resources/fontawesome/svgs/solid/cloud-showers-heavy.svg new file mode 100644 index 0000000..2afc753 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cloud-showers-heavy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cloud-showers-water.svg b/resources/fontawesome/svgs/solid/cloud-showers-water.svg new file mode 100644 index 0000000..dc53f26 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cloud-showers-water.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cloud-sun-rain.svg b/resources/fontawesome/svgs/solid/cloud-sun-rain.svg new file mode 100644 index 0000000..35ae3b0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cloud-sun-rain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cloud-sun.svg b/resources/fontawesome/svgs/solid/cloud-sun.svg new file mode 100644 index 0000000..673ebcd --- /dev/null +++ b/resources/fontawesome/svgs/solid/cloud-sun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cloud.svg b/resources/fontawesome/svgs/solid/cloud.svg new file mode 100644 index 0000000..4150c79 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/clover.svg b/resources/fontawesome/svgs/solid/clover.svg new file mode 100644 index 0000000..968452f --- /dev/null +++ b/resources/fontawesome/svgs/solid/clover.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/code-branch.svg b/resources/fontawesome/svgs/solid/code-branch.svg new file mode 100644 index 0000000..076faed --- /dev/null +++ b/resources/fontawesome/svgs/solid/code-branch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/code-commit.svg b/resources/fontawesome/svgs/solid/code-commit.svg new file mode 100644 index 0000000..57c22bc --- /dev/null +++ b/resources/fontawesome/svgs/solid/code-commit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/code-compare.svg b/resources/fontawesome/svgs/solid/code-compare.svg new file mode 100644 index 0000000..dff132f --- /dev/null +++ b/resources/fontawesome/svgs/solid/code-compare.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/code-fork.svg b/resources/fontawesome/svgs/solid/code-fork.svg new file mode 100644 index 0000000..52c6075 --- /dev/null +++ b/resources/fontawesome/svgs/solid/code-fork.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/code-merge.svg b/resources/fontawesome/svgs/solid/code-merge.svg new file mode 100644 index 0000000..92f09c3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/code-merge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/code-pull-request.svg b/resources/fontawesome/svgs/solid/code-pull-request.svg new file mode 100644 index 0000000..7ec53a0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/code-pull-request.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/code.svg b/resources/fontawesome/svgs/solid/code.svg new file mode 100644 index 0000000..3e701b6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/coins.svg b/resources/fontawesome/svgs/solid/coins.svg new file mode 100644 index 0000000..fe8911a --- /dev/null +++ b/resources/fontawesome/svgs/solid/coins.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/colon-sign.svg b/resources/fontawesome/svgs/solid/colon-sign.svg new file mode 100644 index 0000000..8835582 --- /dev/null +++ b/resources/fontawesome/svgs/solid/colon-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/comment-dollar.svg b/resources/fontawesome/svgs/solid/comment-dollar.svg new file mode 100644 index 0000000..aecd1f9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/comment-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/comment-dots.svg b/resources/fontawesome/svgs/solid/comment-dots.svg new file mode 100644 index 0000000..4cf621b --- /dev/null +++ b/resources/fontawesome/svgs/solid/comment-dots.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/comment-medical.svg b/resources/fontawesome/svgs/solid/comment-medical.svg new file mode 100644 index 0000000..7f62cd4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/comment-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/comment-slash.svg b/resources/fontawesome/svgs/solid/comment-slash.svg new file mode 100644 index 0000000..966e05b --- /dev/null +++ b/resources/fontawesome/svgs/solid/comment-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/comment-sms.svg b/resources/fontawesome/svgs/solid/comment-sms.svg new file mode 100644 index 0000000..9a7e0eb --- /dev/null +++ b/resources/fontawesome/svgs/solid/comment-sms.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/comment.svg b/resources/fontawesome/svgs/solid/comment.svg new file mode 100644 index 0000000..5edc983 --- /dev/null +++ b/resources/fontawesome/svgs/solid/comment.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/comments-dollar.svg b/resources/fontawesome/svgs/solid/comments-dollar.svg new file mode 100644 index 0000000..027fa07 --- /dev/null +++ b/resources/fontawesome/svgs/solid/comments-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/comments.svg b/resources/fontawesome/svgs/solid/comments.svg new file mode 100644 index 0000000..d4f20fc --- /dev/null +++ b/resources/fontawesome/svgs/solid/comments.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/compact-disc.svg b/resources/fontawesome/svgs/solid/compact-disc.svg new file mode 100644 index 0000000..7cf4991 --- /dev/null +++ b/resources/fontawesome/svgs/solid/compact-disc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/compass-drafting.svg b/resources/fontawesome/svgs/solid/compass-drafting.svg new file mode 100644 index 0000000..f2371e6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/compass-drafting.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/compass.svg b/resources/fontawesome/svgs/solid/compass.svg new file mode 100644 index 0000000..ca50325 --- /dev/null +++ b/resources/fontawesome/svgs/solid/compass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/compress.svg b/resources/fontawesome/svgs/solid/compress.svg new file mode 100644 index 0000000..ab649a5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/compress.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/computer-mouse.svg b/resources/fontawesome/svgs/solid/computer-mouse.svg new file mode 100644 index 0000000..f65f928 --- /dev/null +++ b/resources/fontawesome/svgs/solid/computer-mouse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/computer.svg b/resources/fontawesome/svgs/solid/computer.svg new file mode 100644 index 0000000..975f8c1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/computer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cookie-bite.svg b/resources/fontawesome/svgs/solid/cookie-bite.svg new file mode 100644 index 0000000..9dd8532 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cookie-bite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cookie.svg b/resources/fontawesome/svgs/solid/cookie.svg new file mode 100644 index 0000000..ab3e063 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cookie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/copy.svg b/resources/fontawesome/svgs/solid/copy.svg new file mode 100644 index 0000000..b49d016 --- /dev/null +++ b/resources/fontawesome/svgs/solid/copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/copyright.svg b/resources/fontawesome/svgs/solid/copyright.svg new file mode 100644 index 0000000..6b0d0f7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/copyright.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/couch.svg b/resources/fontawesome/svgs/solid/couch.svg new file mode 100644 index 0000000..0d2a85e --- /dev/null +++ b/resources/fontawesome/svgs/solid/couch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cow.svg b/resources/fontawesome/svgs/solid/cow.svg new file mode 100644 index 0000000..0c6cc59 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/credit-card.svg b/resources/fontawesome/svgs/solid/credit-card.svg new file mode 100644 index 0000000..7285ee7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/credit-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/crop-simple.svg b/resources/fontawesome/svgs/solid/crop-simple.svg new file mode 100644 index 0000000..90fe0c8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/crop-simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/crop.svg b/resources/fontawesome/svgs/solid/crop.svg new file mode 100644 index 0000000..239ab74 --- /dev/null +++ b/resources/fontawesome/svgs/solid/crop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cross.svg b/resources/fontawesome/svgs/solid/cross.svg new file mode 100644 index 0000000..fb43376 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cross.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/crosshairs.svg b/resources/fontawesome/svgs/solid/crosshairs.svg new file mode 100644 index 0000000..9597b28 --- /dev/null +++ b/resources/fontawesome/svgs/solid/crosshairs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/crow.svg b/resources/fontawesome/svgs/solid/crow.svg new file mode 100644 index 0000000..24a269b --- /dev/null +++ b/resources/fontawesome/svgs/solid/crow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/crown.svg b/resources/fontawesome/svgs/solid/crown.svg new file mode 100644 index 0000000..c80289e --- /dev/null +++ b/resources/fontawesome/svgs/solid/crown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/crutch.svg b/resources/fontawesome/svgs/solid/crutch.svg new file mode 100644 index 0000000..f9cc9b8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/crutch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cruzeiro-sign.svg b/resources/fontawesome/svgs/solid/cruzeiro-sign.svg new file mode 100644 index 0000000..4e0ac9c --- /dev/null +++ b/resources/fontawesome/svgs/solid/cruzeiro-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cube.svg b/resources/fontawesome/svgs/solid/cube.svg new file mode 100644 index 0000000..429bfa3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cube.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cubes-stacked.svg b/resources/fontawesome/svgs/solid/cubes-stacked.svg new file mode 100644 index 0000000..d525ec0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cubes-stacked.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/cubes.svg b/resources/fontawesome/svgs/solid/cubes.svg new file mode 100644 index 0000000..dd709f9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/cubes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/d.svg b/resources/fontawesome/svgs/solid/d.svg new file mode 100644 index 0000000..017aace --- /dev/null +++ b/resources/fontawesome/svgs/solid/d.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/database.svg b/resources/fontawesome/svgs/solid/database.svg new file mode 100644 index 0000000..3a925fa --- /dev/null +++ b/resources/fontawesome/svgs/solid/database.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/delete-left.svg b/resources/fontawesome/svgs/solid/delete-left.svg new file mode 100644 index 0000000..3558ba0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/delete-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/democrat.svg b/resources/fontawesome/svgs/solid/democrat.svg new file mode 100644 index 0000000..6bb22c0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/democrat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/desktop.svg b/resources/fontawesome/svgs/solid/desktop.svg new file mode 100644 index 0000000..239dea4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/desktop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dharmachakra.svg b/resources/fontawesome/svgs/solid/dharmachakra.svg new file mode 100644 index 0000000..289cd05 --- /dev/null +++ b/resources/fontawesome/svgs/solid/dharmachakra.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/diagram-next.svg b/resources/fontawesome/svgs/solid/diagram-next.svg new file mode 100644 index 0000000..92701c3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/diagram-next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/diagram-predecessor.svg b/resources/fontawesome/svgs/solid/diagram-predecessor.svg new file mode 100644 index 0000000..bb78775 --- /dev/null +++ b/resources/fontawesome/svgs/solid/diagram-predecessor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/diagram-project.svg b/resources/fontawesome/svgs/solid/diagram-project.svg new file mode 100644 index 0000000..31b008c --- /dev/null +++ b/resources/fontawesome/svgs/solid/diagram-project.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/diagram-successor.svg b/resources/fontawesome/svgs/solid/diagram-successor.svg new file mode 100644 index 0000000..e5ba752 --- /dev/null +++ b/resources/fontawesome/svgs/solid/diagram-successor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/diamond-turn-right.svg b/resources/fontawesome/svgs/solid/diamond-turn-right.svg new file mode 100644 index 0000000..7bd8064 --- /dev/null +++ b/resources/fontawesome/svgs/solid/diamond-turn-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/diamond.svg b/resources/fontawesome/svgs/solid/diamond.svg new file mode 100644 index 0000000..1f7bab8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/diamond.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dice-d20.svg b/resources/fontawesome/svgs/solid/dice-d20.svg new file mode 100644 index 0000000..d441921 --- /dev/null +++ b/resources/fontawesome/svgs/solid/dice-d20.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dice-d6.svg b/resources/fontawesome/svgs/solid/dice-d6.svg new file mode 100644 index 0000000..7c9fe05 --- /dev/null +++ b/resources/fontawesome/svgs/solid/dice-d6.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dice-five.svg b/resources/fontawesome/svgs/solid/dice-five.svg new file mode 100644 index 0000000..b11a49d --- /dev/null +++ b/resources/fontawesome/svgs/solid/dice-five.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dice-four.svg b/resources/fontawesome/svgs/solid/dice-four.svg new file mode 100644 index 0000000..3617e08 --- /dev/null +++ b/resources/fontawesome/svgs/solid/dice-four.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dice-one.svg b/resources/fontawesome/svgs/solid/dice-one.svg new file mode 100644 index 0000000..efc9a5a --- /dev/null +++ b/resources/fontawesome/svgs/solid/dice-one.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dice-six.svg b/resources/fontawesome/svgs/solid/dice-six.svg new file mode 100644 index 0000000..fc9d8aa --- /dev/null +++ b/resources/fontawesome/svgs/solid/dice-six.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dice-three.svg b/resources/fontawesome/svgs/solid/dice-three.svg new file mode 100644 index 0000000..5216d8f --- /dev/null +++ b/resources/fontawesome/svgs/solid/dice-three.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dice-two.svg b/resources/fontawesome/svgs/solid/dice-two.svg new file mode 100644 index 0000000..e11b47d --- /dev/null +++ b/resources/fontawesome/svgs/solid/dice-two.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dice.svg b/resources/fontawesome/svgs/solid/dice.svg new file mode 100644 index 0000000..4863493 --- /dev/null +++ b/resources/fontawesome/svgs/solid/dice.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/disease.svg b/resources/fontawesome/svgs/solid/disease.svg new file mode 100644 index 0000000..b5bc7d9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/disease.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/display.svg b/resources/fontawesome/svgs/solid/display.svg new file mode 100644 index 0000000..04912a6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/display.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/divide.svg b/resources/fontawesome/svgs/solid/divide.svg new file mode 100644 index 0000000..d8e6c63 --- /dev/null +++ b/resources/fontawesome/svgs/solid/divide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dna.svg b/resources/fontawesome/svgs/solid/dna.svg new file mode 100644 index 0000000..dc86a90 --- /dev/null +++ b/resources/fontawesome/svgs/solid/dna.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dog.svg b/resources/fontawesome/svgs/solid/dog.svg new file mode 100644 index 0000000..20bce80 --- /dev/null +++ b/resources/fontawesome/svgs/solid/dog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dollar-sign.svg b/resources/fontawesome/svgs/solid/dollar-sign.svg new file mode 100644 index 0000000..2efab77 --- /dev/null +++ b/resources/fontawesome/svgs/solid/dollar-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dolly.svg b/resources/fontawesome/svgs/solid/dolly.svg new file mode 100644 index 0000000..c50e8dd --- /dev/null +++ b/resources/fontawesome/svgs/solid/dolly.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dong-sign.svg b/resources/fontawesome/svgs/solid/dong-sign.svg new file mode 100644 index 0000000..4b37bbe --- /dev/null +++ b/resources/fontawesome/svgs/solid/dong-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/door-closed.svg b/resources/fontawesome/svgs/solid/door-closed.svg new file mode 100644 index 0000000..4dd4541 --- /dev/null +++ b/resources/fontawesome/svgs/solid/door-closed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/door-open.svg b/resources/fontawesome/svgs/solid/door-open.svg new file mode 100644 index 0000000..7f3ef35 --- /dev/null +++ b/resources/fontawesome/svgs/solid/door-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dove.svg b/resources/fontawesome/svgs/solid/dove.svg new file mode 100644 index 0000000..03b590a --- /dev/null +++ b/resources/fontawesome/svgs/solid/dove.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/down-left-and-up-right-to-center.svg b/resources/fontawesome/svgs/solid/down-left-and-up-right-to-center.svg new file mode 100644 index 0000000..f81a6d3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/down-left-and-up-right-to-center.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/down-long.svg b/resources/fontawesome/svgs/solid/down-long.svg new file mode 100644 index 0000000..58d8672 --- /dev/null +++ b/resources/fontawesome/svgs/solid/down-long.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/download.svg b/resources/fontawesome/svgs/solid/download.svg new file mode 100644 index 0000000..0375764 --- /dev/null +++ b/resources/fontawesome/svgs/solid/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dragon.svg b/resources/fontawesome/svgs/solid/dragon.svg new file mode 100644 index 0000000..61f665f --- /dev/null +++ b/resources/fontawesome/svgs/solid/dragon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/draw-polygon.svg b/resources/fontawesome/svgs/solid/draw-polygon.svg new file mode 100644 index 0000000..b413bc1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/draw-polygon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/droplet-slash.svg b/resources/fontawesome/svgs/solid/droplet-slash.svg new file mode 100644 index 0000000..2200a45 --- /dev/null +++ b/resources/fontawesome/svgs/solid/droplet-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/droplet.svg b/resources/fontawesome/svgs/solid/droplet.svg new file mode 100644 index 0000000..281825e --- /dev/null +++ b/resources/fontawesome/svgs/solid/droplet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/drum-steelpan.svg b/resources/fontawesome/svgs/solid/drum-steelpan.svg new file mode 100644 index 0000000..a5ca6a4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/drum-steelpan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/drum.svg b/resources/fontawesome/svgs/solid/drum.svg new file mode 100644 index 0000000..aeb3bba --- /dev/null +++ b/resources/fontawesome/svgs/solid/drum.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/drumstick-bite.svg b/resources/fontawesome/svgs/solid/drumstick-bite.svg new file mode 100644 index 0000000..7a66c85 --- /dev/null +++ b/resources/fontawesome/svgs/solid/drumstick-bite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dumbbell.svg b/resources/fontawesome/svgs/solid/dumbbell.svg new file mode 100644 index 0000000..b79e24d --- /dev/null +++ b/resources/fontawesome/svgs/solid/dumbbell.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dumpster-fire.svg b/resources/fontawesome/svgs/solid/dumpster-fire.svg new file mode 100644 index 0000000..9161131 --- /dev/null +++ b/resources/fontawesome/svgs/solid/dumpster-fire.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dumpster.svg b/resources/fontawesome/svgs/solid/dumpster.svg new file mode 100644 index 0000000..f5d3024 --- /dev/null +++ b/resources/fontawesome/svgs/solid/dumpster.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/dungeon.svg b/resources/fontawesome/svgs/solid/dungeon.svg new file mode 100644 index 0000000..0c7a41c --- /dev/null +++ b/resources/fontawesome/svgs/solid/dungeon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/e.svg b/resources/fontawesome/svgs/solid/e.svg new file mode 100644 index 0000000..8ee973e --- /dev/null +++ b/resources/fontawesome/svgs/solid/e.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ear-deaf.svg b/resources/fontawesome/svgs/solid/ear-deaf.svg new file mode 100644 index 0000000..1e8a18d --- /dev/null +++ b/resources/fontawesome/svgs/solid/ear-deaf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ear-listen.svg b/resources/fontawesome/svgs/solid/ear-listen.svg new file mode 100644 index 0000000..c291c73 --- /dev/null +++ b/resources/fontawesome/svgs/solid/ear-listen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/earth-africa.svg b/resources/fontawesome/svgs/solid/earth-africa.svg new file mode 100644 index 0000000..8499bf9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/earth-africa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/earth-americas.svg b/resources/fontawesome/svgs/solid/earth-americas.svg new file mode 100644 index 0000000..cc85139 --- /dev/null +++ b/resources/fontawesome/svgs/solid/earth-americas.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/earth-asia.svg b/resources/fontawesome/svgs/solid/earth-asia.svg new file mode 100644 index 0000000..37a3ab9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/earth-asia.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/earth-europe.svg b/resources/fontawesome/svgs/solid/earth-europe.svg new file mode 100644 index 0000000..eb096da --- /dev/null +++ b/resources/fontawesome/svgs/solid/earth-europe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/earth-oceania.svg b/resources/fontawesome/svgs/solid/earth-oceania.svg new file mode 100644 index 0000000..0720b59 --- /dev/null +++ b/resources/fontawesome/svgs/solid/earth-oceania.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/egg.svg b/resources/fontawesome/svgs/solid/egg.svg new file mode 100644 index 0000000..288e4d4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/egg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/eject.svg b/resources/fontawesome/svgs/solid/eject.svg new file mode 100644 index 0000000..ad28847 --- /dev/null +++ b/resources/fontawesome/svgs/solid/eject.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/elevator.svg b/resources/fontawesome/svgs/solid/elevator.svg new file mode 100644 index 0000000..1ce8232 --- /dev/null +++ b/resources/fontawesome/svgs/solid/elevator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ellipsis-vertical.svg b/resources/fontawesome/svgs/solid/ellipsis-vertical.svg new file mode 100644 index 0000000..5107e72 --- /dev/null +++ b/resources/fontawesome/svgs/solid/ellipsis-vertical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ellipsis.svg b/resources/fontawesome/svgs/solid/ellipsis.svg new file mode 100644 index 0000000..d910004 --- /dev/null +++ b/resources/fontawesome/svgs/solid/ellipsis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/envelope-circle-check.svg b/resources/fontawesome/svgs/solid/envelope-circle-check.svg new file mode 100644 index 0000000..bad4ef1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/envelope-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/envelope-open-text.svg b/resources/fontawesome/svgs/solid/envelope-open-text.svg new file mode 100644 index 0000000..146403f --- /dev/null +++ b/resources/fontawesome/svgs/solid/envelope-open-text.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/envelope-open.svg b/resources/fontawesome/svgs/solid/envelope-open.svg new file mode 100644 index 0000000..e915611 --- /dev/null +++ b/resources/fontawesome/svgs/solid/envelope-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/envelope.svg b/resources/fontawesome/svgs/solid/envelope.svg new file mode 100644 index 0000000..8cfe321 --- /dev/null +++ b/resources/fontawesome/svgs/solid/envelope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/envelopes-bulk.svg b/resources/fontawesome/svgs/solid/envelopes-bulk.svg new file mode 100644 index 0000000..a7ed864 --- /dev/null +++ b/resources/fontawesome/svgs/solid/envelopes-bulk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/equals.svg b/resources/fontawesome/svgs/solid/equals.svg new file mode 100644 index 0000000..40617b3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/equals.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/eraser.svg b/resources/fontawesome/svgs/solid/eraser.svg new file mode 100644 index 0000000..4c45953 --- /dev/null +++ b/resources/fontawesome/svgs/solid/eraser.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ethernet.svg b/resources/fontawesome/svgs/solid/ethernet.svg new file mode 100644 index 0000000..7d17336 --- /dev/null +++ b/resources/fontawesome/svgs/solid/ethernet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/euro-sign.svg b/resources/fontawesome/svgs/solid/euro-sign.svg new file mode 100644 index 0000000..c1792e3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/euro-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/exclamation.svg b/resources/fontawesome/svgs/solid/exclamation.svg new file mode 100644 index 0000000..5d2b83c --- /dev/null +++ b/resources/fontawesome/svgs/solid/exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/expand.svg b/resources/fontawesome/svgs/solid/expand.svg new file mode 100644 index 0000000..b0d6a41 --- /dev/null +++ b/resources/fontawesome/svgs/solid/expand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/explosion.svg b/resources/fontawesome/svgs/solid/explosion.svg new file mode 100644 index 0000000..1ae07c1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/explosion.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/eye-dropper.svg b/resources/fontawesome/svgs/solid/eye-dropper.svg new file mode 100644 index 0000000..960f90c --- /dev/null +++ b/resources/fontawesome/svgs/solid/eye-dropper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/eye-low-vision.svg b/resources/fontawesome/svgs/solid/eye-low-vision.svg new file mode 100644 index 0000000..fd0d9e1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/eye-low-vision.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/eye-slash.svg b/resources/fontawesome/svgs/solid/eye-slash.svg new file mode 100644 index 0000000..332b3b1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/eye-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/eye.svg b/resources/fontawesome/svgs/solid/eye.svg new file mode 100644 index 0000000..fabe442 --- /dev/null +++ b/resources/fontawesome/svgs/solid/eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/f.svg b/resources/fontawesome/svgs/solid/f.svg new file mode 100644 index 0000000..a8cba1e --- /dev/null +++ b/resources/fontawesome/svgs/solid/f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-angry.svg b/resources/fontawesome/svgs/solid/face-angry.svg new file mode 100644 index 0000000..4e01d65 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-angry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-dizzy.svg b/resources/fontawesome/svgs/solid/face-dizzy.svg new file mode 100644 index 0000000..aab1b3e --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-dizzy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-flushed.svg b/resources/fontawesome/svgs/solid/face-flushed.svg new file mode 100644 index 0000000..f03bfcc --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-flushed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-frown-open.svg b/resources/fontawesome/svgs/solid/face-frown-open.svg new file mode 100644 index 0000000..569cc1c --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-frown-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-frown.svg b/resources/fontawesome/svgs/solid/face-frown.svg new file mode 100644 index 0000000..bc9880c --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-frown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-grimace.svg b/resources/fontawesome/svgs/solid/face-grimace.svg new file mode 100644 index 0000000..7824657 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-grimace.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-grin-beam-sweat.svg b/resources/fontawesome/svgs/solid/face-grin-beam-sweat.svg new file mode 100644 index 0000000..d432b72 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-grin-beam-sweat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-grin-beam.svg b/resources/fontawesome/svgs/solid/face-grin-beam.svg new file mode 100644 index 0000000..93d07f3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-grin-beam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-grin-hearts.svg b/resources/fontawesome/svgs/solid/face-grin-hearts.svg new file mode 100644 index 0000000..701966a --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-grin-hearts.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-grin-squint-tears.svg b/resources/fontawesome/svgs/solid/face-grin-squint-tears.svg new file mode 100644 index 0000000..b50a68e --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-grin-squint-tears.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-grin-squint.svg b/resources/fontawesome/svgs/solid/face-grin-squint.svg new file mode 100644 index 0000000..4e659e3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-grin-squint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-grin-stars.svg b/resources/fontawesome/svgs/solid/face-grin-stars.svg new file mode 100644 index 0000000..7fc8072 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-grin-stars.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-grin-tears.svg b/resources/fontawesome/svgs/solid/face-grin-tears.svg new file mode 100644 index 0000000..3257593 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-grin-tears.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-grin-tongue-squint.svg b/resources/fontawesome/svgs/solid/face-grin-tongue-squint.svg new file mode 100644 index 0000000..6b88a31 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-grin-tongue-squint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-grin-tongue-wink.svg b/resources/fontawesome/svgs/solid/face-grin-tongue-wink.svg new file mode 100644 index 0000000..1f8b1fd --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-grin-tongue-wink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-grin-tongue.svg b/resources/fontawesome/svgs/solid/face-grin-tongue.svg new file mode 100644 index 0000000..0f852d2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-grin-tongue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-grin-wide.svg b/resources/fontawesome/svgs/solid/face-grin-wide.svg new file mode 100644 index 0000000..cfb7667 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-grin-wide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-grin-wink.svg b/resources/fontawesome/svgs/solid/face-grin-wink.svg new file mode 100644 index 0000000..d8a3b12 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-grin-wink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-grin.svg b/resources/fontawesome/svgs/solid/face-grin.svg new file mode 100644 index 0000000..60325de --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-grin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-kiss-beam.svg b/resources/fontawesome/svgs/solid/face-kiss-beam.svg new file mode 100644 index 0000000..adc6f59 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-kiss-beam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-kiss-wink-heart.svg b/resources/fontawesome/svgs/solid/face-kiss-wink-heart.svg new file mode 100644 index 0000000..7adbc8e --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-kiss-wink-heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-kiss.svg b/resources/fontawesome/svgs/solid/face-kiss.svg new file mode 100644 index 0000000..c51b9f9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-kiss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-laugh-beam.svg b/resources/fontawesome/svgs/solid/face-laugh-beam.svg new file mode 100644 index 0000000..664f39f --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-laugh-beam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-laugh-squint.svg b/resources/fontawesome/svgs/solid/face-laugh-squint.svg new file mode 100644 index 0000000..19d5c4d --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-laugh-squint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-laugh-wink.svg b/resources/fontawesome/svgs/solid/face-laugh-wink.svg new file mode 100644 index 0000000..90c38c3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-laugh-wink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-laugh.svg b/resources/fontawesome/svgs/solid/face-laugh.svg new file mode 100644 index 0000000..8669ecc --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-laugh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-meh-blank.svg b/resources/fontawesome/svgs/solid/face-meh-blank.svg new file mode 100644 index 0000000..e60f00d --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-meh-blank.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-meh.svg b/resources/fontawesome/svgs/solid/face-meh.svg new file mode 100644 index 0000000..271d448 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-meh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-rolling-eyes.svg b/resources/fontawesome/svgs/solid/face-rolling-eyes.svg new file mode 100644 index 0000000..0ac7908 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-rolling-eyes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-sad-cry.svg b/resources/fontawesome/svgs/solid/face-sad-cry.svg new file mode 100644 index 0000000..63a764c --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-sad-cry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-sad-tear.svg b/resources/fontawesome/svgs/solid/face-sad-tear.svg new file mode 100644 index 0000000..1bed800 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-sad-tear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-smile-beam.svg b/resources/fontawesome/svgs/solid/face-smile-beam.svg new file mode 100644 index 0000000..ccf2e60 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-smile-beam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-smile-wink.svg b/resources/fontawesome/svgs/solid/face-smile-wink.svg new file mode 100644 index 0000000..16be2f2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-smile-wink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-smile.svg b/resources/fontawesome/svgs/solid/face-smile.svg new file mode 100644 index 0000000..654a95a --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-smile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-surprise.svg b/resources/fontawesome/svgs/solid/face-surprise.svg new file mode 100644 index 0000000..60a5a72 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-surprise.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/face-tired.svg b/resources/fontawesome/svgs/solid/face-tired.svg new file mode 100644 index 0000000..25b1ab4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/face-tired.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/fan.svg b/resources/fontawesome/svgs/solid/fan.svg new file mode 100644 index 0000000..ffdb958 --- /dev/null +++ b/resources/fontawesome/svgs/solid/fan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/faucet-drip.svg b/resources/fontawesome/svgs/solid/faucet-drip.svg new file mode 100644 index 0000000..df61d42 --- /dev/null +++ b/resources/fontawesome/svgs/solid/faucet-drip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/faucet.svg b/resources/fontawesome/svgs/solid/faucet.svg new file mode 100644 index 0000000..b902fbc --- /dev/null +++ b/resources/fontawesome/svgs/solid/faucet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/fax.svg b/resources/fontawesome/svgs/solid/fax.svg new file mode 100644 index 0000000..b6f05e3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/fax.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/feather-pointed.svg b/resources/fontawesome/svgs/solid/feather-pointed.svg new file mode 100644 index 0000000..d8fce4f --- /dev/null +++ b/resources/fontawesome/svgs/solid/feather-pointed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/feather.svg b/resources/fontawesome/svgs/solid/feather.svg new file mode 100644 index 0000000..2d5727d --- /dev/null +++ b/resources/fontawesome/svgs/solid/feather.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ferry.svg b/resources/fontawesome/svgs/solid/ferry.svg new file mode 100644 index 0000000..fb43669 --- /dev/null +++ b/resources/fontawesome/svgs/solid/ferry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-arrow-down.svg b/resources/fontawesome/svgs/solid/file-arrow-down.svg new file mode 100644 index 0000000..a73227b --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-arrow-up.svg b/resources/fontawesome/svgs/solid/file-arrow-up.svg new file mode 100644 index 0000000..b3df565 --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-audio.svg b/resources/fontawesome/svgs/solid/file-audio.svg new file mode 100644 index 0000000..cf7c8ea --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-audio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-circle-check.svg b/resources/fontawesome/svgs/solid/file-circle-check.svg new file mode 100644 index 0000000..69e7c42 --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-circle-exclamation.svg b/resources/fontawesome/svgs/solid/file-circle-exclamation.svg new file mode 100644 index 0000000..7a75c0e --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-circle-minus.svg b/resources/fontawesome/svgs/solid/file-circle-minus.svg new file mode 100644 index 0000000..e84f120 --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-circle-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-circle-plus.svg b/resources/fontawesome/svgs/solid/file-circle-plus.svg new file mode 100644 index 0000000..ecda482 --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-circle-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-circle-question.svg b/resources/fontawesome/svgs/solid/file-circle-question.svg new file mode 100644 index 0000000..1634abd --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-circle-question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-circle-xmark.svg b/resources/fontawesome/svgs/solid/file-circle-xmark.svg new file mode 100644 index 0000000..aad2dc8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-code.svg b/resources/fontawesome/svgs/solid/file-code.svg new file mode 100644 index 0000000..2a0f53a --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-contract.svg b/resources/fontawesome/svgs/solid/file-contract.svg new file mode 100644 index 0000000..b9d9eb7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-contract.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-csv.svg b/resources/fontawesome/svgs/solid/file-csv.svg new file mode 100644 index 0000000..5cf435f --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-csv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-excel.svg b/resources/fontawesome/svgs/solid/file-excel.svg new file mode 100644 index 0000000..30919ce --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-excel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-export.svg b/resources/fontawesome/svgs/solid/file-export.svg new file mode 100644 index 0000000..50cd8d7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-export.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-image.svg b/resources/fontawesome/svgs/solid/file-image.svg new file mode 100644 index 0000000..7859a4f --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-image.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-import.svg b/resources/fontawesome/svgs/solid/file-import.svg new file mode 100644 index 0000000..a04558a --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-import.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-invoice-dollar.svg b/resources/fontawesome/svgs/solid/file-invoice-dollar.svg new file mode 100644 index 0000000..ac73d58 --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-invoice-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-invoice.svg b/resources/fontawesome/svgs/solid/file-invoice.svg new file mode 100644 index 0000000..ea7c173 --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-invoice.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-lines.svg b/resources/fontawesome/svgs/solid/file-lines.svg new file mode 100644 index 0000000..e0b23ba --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-lines.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-medical.svg b/resources/fontawesome/svgs/solid/file-medical.svg new file mode 100644 index 0000000..b50229e --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-pdf.svg b/resources/fontawesome/svgs/solid/file-pdf.svg new file mode 100644 index 0000000..32439fb --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-pdf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-pen.svg b/resources/fontawesome/svgs/solid/file-pen.svg new file mode 100644 index 0000000..723aa1a --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-pen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-powerpoint.svg b/resources/fontawesome/svgs/solid/file-powerpoint.svg new file mode 100644 index 0000000..173bd3c --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-powerpoint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-prescription.svg b/resources/fontawesome/svgs/solid/file-prescription.svg new file mode 100644 index 0000000..8f23a28 --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-prescription.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-shield.svg b/resources/fontawesome/svgs/solid/file-shield.svg new file mode 100644 index 0000000..a47c508 --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-signature.svg b/resources/fontawesome/svgs/solid/file-signature.svg new file mode 100644 index 0000000..9ae933b --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-signature.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-video.svg b/resources/fontawesome/svgs/solid/file-video.svg new file mode 100644 index 0000000..d23da62 --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-video.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-waveform.svg b/resources/fontawesome/svgs/solid/file-waveform.svg new file mode 100644 index 0000000..2138d89 --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-waveform.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-word.svg b/resources/fontawesome/svgs/solid/file-word.svg new file mode 100644 index 0000000..5af05f2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-word.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file-zipper.svg b/resources/fontawesome/svgs/solid/file-zipper.svg new file mode 100644 index 0000000..aed3f46 --- /dev/null +++ b/resources/fontawesome/svgs/solid/file-zipper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/file.svg b/resources/fontawesome/svgs/solid/file.svg new file mode 100644 index 0000000..40745de --- /dev/null +++ b/resources/fontawesome/svgs/solid/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/fill-drip.svg b/resources/fontawesome/svgs/solid/fill-drip.svg new file mode 100644 index 0000000..8fff64c --- /dev/null +++ b/resources/fontawesome/svgs/solid/fill-drip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/fill.svg b/resources/fontawesome/svgs/solid/fill.svg new file mode 100644 index 0000000..f1f4212 --- /dev/null +++ b/resources/fontawesome/svgs/solid/fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/film.svg b/resources/fontawesome/svgs/solid/film.svg new file mode 100644 index 0000000..4fd12f9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/film.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/filter-circle-dollar.svg b/resources/fontawesome/svgs/solid/filter-circle-dollar.svg new file mode 100644 index 0000000..752d566 --- /dev/null +++ b/resources/fontawesome/svgs/solid/filter-circle-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/filter-circle-xmark.svg b/resources/fontawesome/svgs/solid/filter-circle-xmark.svg new file mode 100644 index 0000000..109acdb --- /dev/null +++ b/resources/fontawesome/svgs/solid/filter-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/filter.svg b/resources/fontawesome/svgs/solid/filter.svg new file mode 100644 index 0000000..a3ad17e --- /dev/null +++ b/resources/fontawesome/svgs/solid/filter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/fingerprint.svg b/resources/fontawesome/svgs/solid/fingerprint.svg new file mode 100644 index 0000000..2933997 --- /dev/null +++ b/resources/fontawesome/svgs/solid/fingerprint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/fire-burner.svg b/resources/fontawesome/svgs/solid/fire-burner.svg new file mode 100644 index 0000000..1d7202b --- /dev/null +++ b/resources/fontawesome/svgs/solid/fire-burner.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/fire-extinguisher.svg b/resources/fontawesome/svgs/solid/fire-extinguisher.svg new file mode 100644 index 0000000..3926d73 --- /dev/null +++ b/resources/fontawesome/svgs/solid/fire-extinguisher.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/fire-flame-curved.svg b/resources/fontawesome/svgs/solid/fire-flame-curved.svg new file mode 100644 index 0000000..549119c --- /dev/null +++ b/resources/fontawesome/svgs/solid/fire-flame-curved.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/fire-flame-simple.svg b/resources/fontawesome/svgs/solid/fire-flame-simple.svg new file mode 100644 index 0000000..bcf53cf --- /dev/null +++ b/resources/fontawesome/svgs/solid/fire-flame-simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/fire.svg b/resources/fontawesome/svgs/solid/fire.svg new file mode 100644 index 0000000..348c549 --- /dev/null +++ b/resources/fontawesome/svgs/solid/fire.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/fish-fins.svg b/resources/fontawesome/svgs/solid/fish-fins.svg new file mode 100644 index 0000000..beedce2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/fish-fins.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/fish.svg b/resources/fontawesome/svgs/solid/fish.svg new file mode 100644 index 0000000..f836864 --- /dev/null +++ b/resources/fontawesome/svgs/solid/fish.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/flag-checkered.svg b/resources/fontawesome/svgs/solid/flag-checkered.svg new file mode 100644 index 0000000..d424a92 --- /dev/null +++ b/resources/fontawesome/svgs/solid/flag-checkered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/flag-usa.svg b/resources/fontawesome/svgs/solid/flag-usa.svg new file mode 100644 index 0000000..7a9138b --- /dev/null +++ b/resources/fontawesome/svgs/solid/flag-usa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/flag.svg b/resources/fontawesome/svgs/solid/flag.svg new file mode 100644 index 0000000..cf64819 --- /dev/null +++ b/resources/fontawesome/svgs/solid/flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/flask-vial.svg b/resources/fontawesome/svgs/solid/flask-vial.svg new file mode 100644 index 0000000..59caf12 --- /dev/null +++ b/resources/fontawesome/svgs/solid/flask-vial.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/flask.svg b/resources/fontawesome/svgs/solid/flask.svg new file mode 100644 index 0000000..56ee4f5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/flask.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/floppy-disk.svg b/resources/fontawesome/svgs/solid/floppy-disk.svg new file mode 100644 index 0000000..1180269 --- /dev/null +++ b/resources/fontawesome/svgs/solid/floppy-disk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/florin-sign.svg b/resources/fontawesome/svgs/solid/florin-sign.svg new file mode 100644 index 0000000..0dafa6c --- /dev/null +++ b/resources/fontawesome/svgs/solid/florin-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/folder-closed.svg b/resources/fontawesome/svgs/solid/folder-closed.svg new file mode 100644 index 0000000..80334e5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/folder-closed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/folder-minus.svg b/resources/fontawesome/svgs/solid/folder-minus.svg new file mode 100644 index 0000000..473d68b --- /dev/null +++ b/resources/fontawesome/svgs/solid/folder-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/folder-open.svg b/resources/fontawesome/svgs/solid/folder-open.svg new file mode 100644 index 0000000..9378edf --- /dev/null +++ b/resources/fontawesome/svgs/solid/folder-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/folder-plus.svg b/resources/fontawesome/svgs/solid/folder-plus.svg new file mode 100644 index 0000000..a0fd601 --- /dev/null +++ b/resources/fontawesome/svgs/solid/folder-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/folder-tree.svg b/resources/fontawesome/svgs/solid/folder-tree.svg new file mode 100644 index 0000000..9d0ee42 --- /dev/null +++ b/resources/fontawesome/svgs/solid/folder-tree.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/folder.svg b/resources/fontawesome/svgs/solid/folder.svg new file mode 100644 index 0000000..64cb6fb --- /dev/null +++ b/resources/fontawesome/svgs/solid/folder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/font-awesome.svg b/resources/fontawesome/svgs/solid/font-awesome.svg new file mode 100644 index 0000000..13f10eb --- /dev/null +++ b/resources/fontawesome/svgs/solid/font-awesome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/font.svg b/resources/fontawesome/svgs/solid/font.svg new file mode 100644 index 0000000..a2197d2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/font.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/football.svg b/resources/fontawesome/svgs/solid/football.svg new file mode 100644 index 0000000..769425a --- /dev/null +++ b/resources/fontawesome/svgs/solid/football.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/forward-fast.svg b/resources/fontawesome/svgs/solid/forward-fast.svg new file mode 100644 index 0000000..65289a5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/forward-fast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/forward-step.svg b/resources/fontawesome/svgs/solid/forward-step.svg new file mode 100644 index 0000000..e19c950 --- /dev/null +++ b/resources/fontawesome/svgs/solid/forward-step.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/forward.svg b/resources/fontawesome/svgs/solid/forward.svg new file mode 100644 index 0000000..53d1a67 --- /dev/null +++ b/resources/fontawesome/svgs/solid/forward.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/franc-sign.svg b/resources/fontawesome/svgs/solid/franc-sign.svg new file mode 100644 index 0000000..d9f6c79 --- /dev/null +++ b/resources/fontawesome/svgs/solid/franc-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/frog.svg b/resources/fontawesome/svgs/solid/frog.svg new file mode 100644 index 0000000..bde49c6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/frog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/futbol.svg b/resources/fontawesome/svgs/solid/futbol.svg new file mode 100644 index 0000000..0273ec6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/futbol.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/g.svg b/resources/fontawesome/svgs/solid/g.svg new file mode 100644 index 0000000..9b35a04 --- /dev/null +++ b/resources/fontawesome/svgs/solid/g.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/gamepad.svg b/resources/fontawesome/svgs/solid/gamepad.svg new file mode 100644 index 0000000..5b0f53c --- /dev/null +++ b/resources/fontawesome/svgs/solid/gamepad.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/gas-pump.svg b/resources/fontawesome/svgs/solid/gas-pump.svg new file mode 100644 index 0000000..8845133 --- /dev/null +++ b/resources/fontawesome/svgs/solid/gas-pump.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/gauge-high.svg b/resources/fontawesome/svgs/solid/gauge-high.svg new file mode 100644 index 0000000..a571987 --- /dev/null +++ b/resources/fontawesome/svgs/solid/gauge-high.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/gauge-simple-high.svg b/resources/fontawesome/svgs/solid/gauge-simple-high.svg new file mode 100644 index 0000000..81a1a44 --- /dev/null +++ b/resources/fontawesome/svgs/solid/gauge-simple-high.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/gauge-simple.svg b/resources/fontawesome/svgs/solid/gauge-simple.svg new file mode 100644 index 0000000..0f916ad --- /dev/null +++ b/resources/fontawesome/svgs/solid/gauge-simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/gauge.svg b/resources/fontawesome/svgs/solid/gauge.svg new file mode 100644 index 0000000..ca51375 --- /dev/null +++ b/resources/fontawesome/svgs/solid/gauge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/gavel.svg b/resources/fontawesome/svgs/solid/gavel.svg new file mode 100644 index 0000000..81bd5fa --- /dev/null +++ b/resources/fontawesome/svgs/solid/gavel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/gear.svg b/resources/fontawesome/svgs/solid/gear.svg new file mode 100644 index 0000000..dbdef76 --- /dev/null +++ b/resources/fontawesome/svgs/solid/gear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/gears.svg b/resources/fontawesome/svgs/solid/gears.svg new file mode 100644 index 0000000..fd2a070 --- /dev/null +++ b/resources/fontawesome/svgs/solid/gears.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/gem.svg b/resources/fontawesome/svgs/solid/gem.svg new file mode 100644 index 0000000..097cdf2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/gem.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/genderless.svg b/resources/fontawesome/svgs/solid/genderless.svg new file mode 100644 index 0000000..4a333bb --- /dev/null +++ b/resources/fontawesome/svgs/solid/genderless.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ghost.svg b/resources/fontawesome/svgs/solid/ghost.svg new file mode 100644 index 0000000..3709683 --- /dev/null +++ b/resources/fontawesome/svgs/solid/ghost.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/gift.svg b/resources/fontawesome/svgs/solid/gift.svg new file mode 100644 index 0000000..bcecb88 --- /dev/null +++ b/resources/fontawesome/svgs/solid/gift.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/gifts.svg b/resources/fontawesome/svgs/solid/gifts.svg new file mode 100644 index 0000000..f6a8ba2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/gifts.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/glass-water-droplet.svg b/resources/fontawesome/svgs/solid/glass-water-droplet.svg new file mode 100644 index 0000000..f323b59 --- /dev/null +++ b/resources/fontawesome/svgs/solid/glass-water-droplet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/glass-water.svg b/resources/fontawesome/svgs/solid/glass-water.svg new file mode 100644 index 0000000..1e95603 --- /dev/null +++ b/resources/fontawesome/svgs/solid/glass-water.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/glasses.svg b/resources/fontawesome/svgs/solid/glasses.svg new file mode 100644 index 0000000..9c98fb0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/glasses.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/globe.svg b/resources/fontawesome/svgs/solid/globe.svg new file mode 100644 index 0000000..a1a6863 --- /dev/null +++ b/resources/fontawesome/svgs/solid/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/golf-ball-tee.svg b/resources/fontawesome/svgs/solid/golf-ball-tee.svg new file mode 100644 index 0000000..f4825ab --- /dev/null +++ b/resources/fontawesome/svgs/solid/golf-ball-tee.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/gopuram.svg b/resources/fontawesome/svgs/solid/gopuram.svg new file mode 100644 index 0000000..5ef07ed --- /dev/null +++ b/resources/fontawesome/svgs/solid/gopuram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/graduation-cap.svg b/resources/fontawesome/svgs/solid/graduation-cap.svg new file mode 100644 index 0000000..ff4b22a --- /dev/null +++ b/resources/fontawesome/svgs/solid/graduation-cap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/greater-than-equal.svg b/resources/fontawesome/svgs/solid/greater-than-equal.svg new file mode 100644 index 0000000..e34ac1c --- /dev/null +++ b/resources/fontawesome/svgs/solid/greater-than-equal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/greater-than.svg b/resources/fontawesome/svgs/solid/greater-than.svg new file mode 100644 index 0000000..432ca4a --- /dev/null +++ b/resources/fontawesome/svgs/solid/greater-than.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/grip-lines-vertical.svg b/resources/fontawesome/svgs/solid/grip-lines-vertical.svg new file mode 100644 index 0000000..8144d00 --- /dev/null +++ b/resources/fontawesome/svgs/solid/grip-lines-vertical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/grip-lines.svg b/resources/fontawesome/svgs/solid/grip-lines.svg new file mode 100644 index 0000000..3c08390 --- /dev/null +++ b/resources/fontawesome/svgs/solid/grip-lines.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/grip-vertical.svg b/resources/fontawesome/svgs/solid/grip-vertical.svg new file mode 100644 index 0000000..e3c9ebd --- /dev/null +++ b/resources/fontawesome/svgs/solid/grip-vertical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/grip.svg b/resources/fontawesome/svgs/solid/grip.svg new file mode 100644 index 0000000..5abd104 --- /dev/null +++ b/resources/fontawesome/svgs/solid/grip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/group-arrows-rotate.svg b/resources/fontawesome/svgs/solid/group-arrows-rotate.svg new file mode 100644 index 0000000..776abfa --- /dev/null +++ b/resources/fontawesome/svgs/solid/group-arrows-rotate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/guarani-sign.svg b/resources/fontawesome/svgs/solid/guarani-sign.svg new file mode 100644 index 0000000..2558820 --- /dev/null +++ b/resources/fontawesome/svgs/solid/guarani-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/guitar.svg b/resources/fontawesome/svgs/solid/guitar.svg new file mode 100644 index 0000000..9a278b3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/guitar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/gun.svg b/resources/fontawesome/svgs/solid/gun.svg new file mode 100644 index 0000000..6f3bc42 --- /dev/null +++ b/resources/fontawesome/svgs/solid/gun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/h.svg b/resources/fontawesome/svgs/solid/h.svg new file mode 100644 index 0000000..76bef18 --- /dev/null +++ b/resources/fontawesome/svgs/solid/h.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hammer.svg b/resources/fontawesome/svgs/solid/hammer.svg new file mode 100644 index 0000000..3149bb0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hammer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hamsa.svg b/resources/fontawesome/svgs/solid/hamsa.svg new file mode 100644 index 0000000..e88193b --- /dev/null +++ b/resources/fontawesome/svgs/solid/hamsa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-back-fist.svg b/resources/fontawesome/svgs/solid/hand-back-fist.svg new file mode 100644 index 0000000..d1633e5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-back-fist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-dots.svg b/resources/fontawesome/svgs/solid/hand-dots.svg new file mode 100644 index 0000000..e30ed34 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-dots.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-fist.svg b/resources/fontawesome/svgs/solid/hand-fist.svg new file mode 100644 index 0000000..d6ae22f --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-fist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-holding-dollar.svg b/resources/fontawesome/svgs/solid/hand-holding-dollar.svg new file mode 100644 index 0000000..74c14c4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-holding-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-holding-droplet.svg b/resources/fontawesome/svgs/solid/hand-holding-droplet.svg new file mode 100644 index 0000000..c3a2fef --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-holding-droplet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-holding-hand.svg b/resources/fontawesome/svgs/solid/hand-holding-hand.svg new file mode 100644 index 0000000..da81b0d --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-holding-hand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-holding-heart.svg b/resources/fontawesome/svgs/solid/hand-holding-heart.svg new file mode 100644 index 0000000..60edcd1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-holding-heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-holding-medical.svg b/resources/fontawesome/svgs/solid/hand-holding-medical.svg new file mode 100644 index 0000000..b475837 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-holding-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-holding.svg b/resources/fontawesome/svgs/solid/hand-holding.svg new file mode 100644 index 0000000..343d6bc --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-holding.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-lizard.svg b/resources/fontawesome/svgs/solid/hand-lizard.svg new file mode 100644 index 0000000..1609e96 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-lizard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-middle-finger.svg b/resources/fontawesome/svgs/solid/hand-middle-finger.svg new file mode 100644 index 0000000..105cd49 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-middle-finger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-peace.svg b/resources/fontawesome/svgs/solid/hand-peace.svg new file mode 100644 index 0000000..2a45da1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-peace.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-point-down.svg b/resources/fontawesome/svgs/solid/hand-point-down.svg new file mode 100644 index 0000000..b5941bf --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-point-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-point-left.svg b/resources/fontawesome/svgs/solid/hand-point-left.svg new file mode 100644 index 0000000..7988522 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-point-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-point-right.svg b/resources/fontawesome/svgs/solid/hand-point-right.svg new file mode 100644 index 0000000..cc9236f --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-point-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-point-up.svg b/resources/fontawesome/svgs/solid/hand-point-up.svg new file mode 100644 index 0000000..69054b5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-point-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-pointer.svg b/resources/fontawesome/svgs/solid/hand-pointer.svg new file mode 100644 index 0000000..110f20e --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-pointer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-scissors.svg b/resources/fontawesome/svgs/solid/hand-scissors.svg new file mode 100644 index 0000000..cc52c31 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-scissors.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-sparkles.svg b/resources/fontawesome/svgs/solid/hand-sparkles.svg new file mode 100644 index 0000000..52a4f7c --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-sparkles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand-spock.svg b/resources/fontawesome/svgs/solid/hand-spock.svg new file mode 100644 index 0000000..35678f1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand-spock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hand.svg b/resources/fontawesome/svgs/solid/hand.svg new file mode 100644 index 0000000..94fd6e4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/handcuffs.svg b/resources/fontawesome/svgs/solid/handcuffs.svg new file mode 100644 index 0000000..ad5e311 --- /dev/null +++ b/resources/fontawesome/svgs/solid/handcuffs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hands-asl-interpreting.svg b/resources/fontawesome/svgs/solid/hands-asl-interpreting.svg new file mode 100644 index 0000000..88f6a6f --- /dev/null +++ b/resources/fontawesome/svgs/solid/hands-asl-interpreting.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hands-bound.svg b/resources/fontawesome/svgs/solid/hands-bound.svg new file mode 100644 index 0000000..50cab79 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hands-bound.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hands-bubbles.svg b/resources/fontawesome/svgs/solid/hands-bubbles.svg new file mode 100644 index 0000000..793049e --- /dev/null +++ b/resources/fontawesome/svgs/solid/hands-bubbles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hands-clapping.svg b/resources/fontawesome/svgs/solid/hands-clapping.svg new file mode 100644 index 0000000..c695c41 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hands-clapping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hands-holding-child.svg b/resources/fontawesome/svgs/solid/hands-holding-child.svg new file mode 100644 index 0000000..276151e --- /dev/null +++ b/resources/fontawesome/svgs/solid/hands-holding-child.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hands-holding-circle.svg b/resources/fontawesome/svgs/solid/hands-holding-circle.svg new file mode 100644 index 0000000..c33c65b --- /dev/null +++ b/resources/fontawesome/svgs/solid/hands-holding-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hands-holding.svg b/resources/fontawesome/svgs/solid/hands-holding.svg new file mode 100644 index 0000000..e12be5d --- /dev/null +++ b/resources/fontawesome/svgs/solid/hands-holding.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hands-praying.svg b/resources/fontawesome/svgs/solid/hands-praying.svg new file mode 100644 index 0000000..3936261 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hands-praying.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hands.svg b/resources/fontawesome/svgs/solid/hands.svg new file mode 100644 index 0000000..682b6cd --- /dev/null +++ b/resources/fontawesome/svgs/solid/hands.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/handshake-angle.svg b/resources/fontawesome/svgs/solid/handshake-angle.svg new file mode 100644 index 0000000..d8b202d --- /dev/null +++ b/resources/fontawesome/svgs/solid/handshake-angle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/handshake-simple-slash.svg b/resources/fontawesome/svgs/solid/handshake-simple-slash.svg new file mode 100644 index 0000000..1989191 --- /dev/null +++ b/resources/fontawesome/svgs/solid/handshake-simple-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/handshake-simple.svg b/resources/fontawesome/svgs/solid/handshake-simple.svg new file mode 100644 index 0000000..dd945a0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/handshake-simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/handshake-slash.svg b/resources/fontawesome/svgs/solid/handshake-slash.svg new file mode 100644 index 0000000..e10d2af --- /dev/null +++ b/resources/fontawesome/svgs/solid/handshake-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/handshake.svg b/resources/fontawesome/svgs/solid/handshake.svg new file mode 100644 index 0000000..82f5b8b --- /dev/null +++ b/resources/fontawesome/svgs/solid/handshake.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hanukiah.svg b/resources/fontawesome/svgs/solid/hanukiah.svg new file mode 100644 index 0000000..798e463 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hanukiah.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hard-drive.svg b/resources/fontawesome/svgs/solid/hard-drive.svg new file mode 100644 index 0000000..67a2200 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hard-drive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hashtag.svg b/resources/fontawesome/svgs/solid/hashtag.svg new file mode 100644 index 0000000..9a04eda --- /dev/null +++ b/resources/fontawesome/svgs/solid/hashtag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hat-cowboy-side.svg b/resources/fontawesome/svgs/solid/hat-cowboy-side.svg new file mode 100644 index 0000000..8c6cb6a --- /dev/null +++ b/resources/fontawesome/svgs/solid/hat-cowboy-side.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hat-cowboy.svg b/resources/fontawesome/svgs/solid/hat-cowboy.svg new file mode 100644 index 0000000..24b10c8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hat-cowboy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hat-wizard.svg b/resources/fontawesome/svgs/solid/hat-wizard.svg new file mode 100644 index 0000000..adb3437 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hat-wizard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/head-side-cough-slash.svg b/resources/fontawesome/svgs/solid/head-side-cough-slash.svg new file mode 100644 index 0000000..e38c0bc --- /dev/null +++ b/resources/fontawesome/svgs/solid/head-side-cough-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/head-side-cough.svg b/resources/fontawesome/svgs/solid/head-side-cough.svg new file mode 100644 index 0000000..24b50d3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/head-side-cough.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/head-side-mask.svg b/resources/fontawesome/svgs/solid/head-side-mask.svg new file mode 100644 index 0000000..b049e1a --- /dev/null +++ b/resources/fontawesome/svgs/solid/head-side-mask.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/head-side-virus.svg b/resources/fontawesome/svgs/solid/head-side-virus.svg new file mode 100644 index 0000000..2d0f89c --- /dev/null +++ b/resources/fontawesome/svgs/solid/head-side-virus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/heading.svg b/resources/fontawesome/svgs/solid/heading.svg new file mode 100644 index 0000000..f684766 --- /dev/null +++ b/resources/fontawesome/svgs/solid/heading.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/headphones-simple.svg b/resources/fontawesome/svgs/solid/headphones-simple.svg new file mode 100644 index 0000000..0a2f9b8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/headphones-simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/headphones.svg b/resources/fontawesome/svgs/solid/headphones.svg new file mode 100644 index 0000000..34c94ed --- /dev/null +++ b/resources/fontawesome/svgs/solid/headphones.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/headset.svg b/resources/fontawesome/svgs/solid/headset.svg new file mode 100644 index 0000000..4174aab --- /dev/null +++ b/resources/fontawesome/svgs/solid/headset.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/heart-circle-bolt.svg b/resources/fontawesome/svgs/solid/heart-circle-bolt.svg new file mode 100644 index 0000000..2d484e7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/heart-circle-bolt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/heart-circle-check.svg b/resources/fontawesome/svgs/solid/heart-circle-check.svg new file mode 100644 index 0000000..b98cceb --- /dev/null +++ b/resources/fontawesome/svgs/solid/heart-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/heart-circle-exclamation.svg b/resources/fontawesome/svgs/solid/heart-circle-exclamation.svg new file mode 100644 index 0000000..defbd4f --- /dev/null +++ b/resources/fontawesome/svgs/solid/heart-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/heart-circle-minus.svg b/resources/fontawesome/svgs/solid/heart-circle-minus.svg new file mode 100644 index 0000000..f3855f3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/heart-circle-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/heart-circle-plus.svg b/resources/fontawesome/svgs/solid/heart-circle-plus.svg new file mode 100644 index 0000000..d2f0a1b --- /dev/null +++ b/resources/fontawesome/svgs/solid/heart-circle-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/heart-circle-xmark.svg b/resources/fontawesome/svgs/solid/heart-circle-xmark.svg new file mode 100644 index 0000000..6d540f1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/heart-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/heart-crack.svg b/resources/fontawesome/svgs/solid/heart-crack.svg new file mode 100644 index 0000000..faa6ae6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/heart-crack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/heart-pulse.svg b/resources/fontawesome/svgs/solid/heart-pulse.svg new file mode 100644 index 0000000..d26b6e9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/heart-pulse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/heart.svg b/resources/fontawesome/svgs/solid/heart.svg new file mode 100644 index 0000000..66be76d --- /dev/null +++ b/resources/fontawesome/svgs/solid/heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/helicopter-symbol.svg b/resources/fontawesome/svgs/solid/helicopter-symbol.svg new file mode 100644 index 0000000..b3f9d07 --- /dev/null +++ b/resources/fontawesome/svgs/solid/helicopter-symbol.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/helicopter.svg b/resources/fontawesome/svgs/solid/helicopter.svg new file mode 100644 index 0000000..e2caf3e --- /dev/null +++ b/resources/fontawesome/svgs/solid/helicopter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/helmet-safety.svg b/resources/fontawesome/svgs/solid/helmet-safety.svg new file mode 100644 index 0000000..741d3c1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/helmet-safety.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/helmet-un.svg b/resources/fontawesome/svgs/solid/helmet-un.svg new file mode 100644 index 0000000..2a71998 --- /dev/null +++ b/resources/fontawesome/svgs/solid/helmet-un.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/highlighter.svg b/resources/fontawesome/svgs/solid/highlighter.svg new file mode 100644 index 0000000..37a7f7e --- /dev/null +++ b/resources/fontawesome/svgs/solid/highlighter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hill-avalanche.svg b/resources/fontawesome/svgs/solid/hill-avalanche.svg new file mode 100644 index 0000000..583691c --- /dev/null +++ b/resources/fontawesome/svgs/solid/hill-avalanche.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hill-rockslide.svg b/resources/fontawesome/svgs/solid/hill-rockslide.svg new file mode 100644 index 0000000..06862a8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hill-rockslide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hippo.svg b/resources/fontawesome/svgs/solid/hippo.svg new file mode 100644 index 0000000..bb0e7b7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hippo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hockey-puck.svg b/resources/fontawesome/svgs/solid/hockey-puck.svg new file mode 100644 index 0000000..3b5fe29 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hockey-puck.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/holly-berry.svg b/resources/fontawesome/svgs/solid/holly-berry.svg new file mode 100644 index 0000000..3bc6ca3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/holly-berry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/horse-head.svg b/resources/fontawesome/svgs/solid/horse-head.svg new file mode 100644 index 0000000..9d97bdf --- /dev/null +++ b/resources/fontawesome/svgs/solid/horse-head.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/horse.svg b/resources/fontawesome/svgs/solid/horse.svg new file mode 100644 index 0000000..065b9e5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/horse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hospital-user.svg b/resources/fontawesome/svgs/solid/hospital-user.svg new file mode 100644 index 0000000..e9e29f9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hospital-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hospital.svg b/resources/fontawesome/svgs/solid/hospital.svg new file mode 100644 index 0000000..d1cb794 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hospital.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hot-tub-person.svg b/resources/fontawesome/svgs/solid/hot-tub-person.svg new file mode 100644 index 0000000..aa14308 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hot-tub-person.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hotdog.svg b/resources/fontawesome/svgs/solid/hotdog.svg new file mode 100644 index 0000000..e483ba9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hotdog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hotel.svg b/resources/fontawesome/svgs/solid/hotel.svg new file mode 100644 index 0000000..235c2de --- /dev/null +++ b/resources/fontawesome/svgs/solid/hotel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hourglass-end.svg b/resources/fontawesome/svgs/solid/hourglass-end.svg new file mode 100644 index 0000000..1712d62 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hourglass-end.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hourglass-half.svg b/resources/fontawesome/svgs/solid/hourglass-half.svg new file mode 100644 index 0000000..a0f8fb0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hourglass-half.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hourglass-start.svg b/resources/fontawesome/svgs/solid/hourglass-start.svg new file mode 100644 index 0000000..28fa24f --- /dev/null +++ b/resources/fontawesome/svgs/solid/hourglass-start.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hourglass.svg b/resources/fontawesome/svgs/solid/hourglass.svg new file mode 100644 index 0000000..ab09f44 --- /dev/null +++ b/resources/fontawesome/svgs/solid/hourglass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-chimney-crack.svg b/resources/fontawesome/svgs/solid/house-chimney-crack.svg new file mode 100644 index 0000000..03ef78f --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-chimney-crack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-chimney-medical.svg b/resources/fontawesome/svgs/solid/house-chimney-medical.svg new file mode 100644 index 0000000..ea35869 --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-chimney-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-chimney-user.svg b/resources/fontawesome/svgs/solid/house-chimney-user.svg new file mode 100644 index 0000000..3c7ac4a --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-chimney-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-chimney-window.svg b/resources/fontawesome/svgs/solid/house-chimney-window.svg new file mode 100644 index 0000000..3d98cc5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-chimney-window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-chimney.svg b/resources/fontawesome/svgs/solid/house-chimney.svg new file mode 100644 index 0000000..283705c --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-chimney.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-circle-check.svg b/resources/fontawesome/svgs/solid/house-circle-check.svg new file mode 100644 index 0000000..d7f24e2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-circle-exclamation.svg b/resources/fontawesome/svgs/solid/house-circle-exclamation.svg new file mode 100644 index 0000000..48d82a7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-circle-xmark.svg b/resources/fontawesome/svgs/solid/house-circle-xmark.svg new file mode 100644 index 0000000..4064862 --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-crack.svg b/resources/fontawesome/svgs/solid/house-crack.svg new file mode 100644 index 0000000..12cc3b3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-crack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-fire.svg b/resources/fontawesome/svgs/solid/house-fire.svg new file mode 100644 index 0000000..c787945 --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-fire.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-flag.svg b/resources/fontawesome/svgs/solid/house-flag.svg new file mode 100644 index 0000000..8940f11 --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-flood-water-circle-arrow-right.svg b/resources/fontawesome/svgs/solid/house-flood-water-circle-arrow-right.svg new file mode 100644 index 0000000..00b658a --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-flood-water-circle-arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-flood-water.svg b/resources/fontawesome/svgs/solid/house-flood-water.svg new file mode 100644 index 0000000..5f9ee00 --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-flood-water.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-laptop.svg b/resources/fontawesome/svgs/solid/house-laptop.svg new file mode 100644 index 0000000..1a6c859 --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-laptop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-lock.svg b/resources/fontawesome/svgs/solid/house-lock.svg new file mode 100644 index 0000000..25f758a --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-medical-circle-check.svg b/resources/fontawesome/svgs/solid/house-medical-circle-check.svg new file mode 100644 index 0000000..1379c9e --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-medical-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-medical-circle-exclamation.svg b/resources/fontawesome/svgs/solid/house-medical-circle-exclamation.svg new file mode 100644 index 0000000..4b6d7eb --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-medical-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-medical-circle-xmark.svg b/resources/fontawesome/svgs/solid/house-medical-circle-xmark.svg new file mode 100644 index 0000000..e56d1db --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-medical-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-medical-flag.svg b/resources/fontawesome/svgs/solid/house-medical-flag.svg new file mode 100644 index 0000000..6ab0a54 --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-medical-flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-medical.svg b/resources/fontawesome/svgs/solid/house-medical.svg new file mode 100644 index 0000000..bb39f74 --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-signal.svg b/resources/fontawesome/svgs/solid/house-signal.svg new file mode 100644 index 0000000..ea20512 --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-signal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-tsunami.svg b/resources/fontawesome/svgs/solid/house-tsunami.svg new file mode 100644 index 0000000..46d4666 --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-tsunami.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house-user.svg b/resources/fontawesome/svgs/solid/house-user.svg new file mode 100644 index 0000000..3661257 --- /dev/null +++ b/resources/fontawesome/svgs/solid/house-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/house.svg b/resources/fontawesome/svgs/solid/house.svg new file mode 100644 index 0000000..a180cb4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/house.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hryvnia-sign.svg b/resources/fontawesome/svgs/solid/hryvnia-sign.svg new file mode 100644 index 0000000..4f6175b --- /dev/null +++ b/resources/fontawesome/svgs/solid/hryvnia-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/hurricane.svg b/resources/fontawesome/svgs/solid/hurricane.svg new file mode 100644 index 0000000..daa0e7d --- /dev/null +++ b/resources/fontawesome/svgs/solid/hurricane.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/i-cursor.svg b/resources/fontawesome/svgs/solid/i-cursor.svg new file mode 100644 index 0000000..b03b8bd --- /dev/null +++ b/resources/fontawesome/svgs/solid/i-cursor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/i.svg b/resources/fontawesome/svgs/solid/i.svg new file mode 100644 index 0000000..821239c --- /dev/null +++ b/resources/fontawesome/svgs/solid/i.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ice-cream.svg b/resources/fontawesome/svgs/solid/ice-cream.svg new file mode 100644 index 0000000..ead8fbb --- /dev/null +++ b/resources/fontawesome/svgs/solid/ice-cream.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/icicles.svg b/resources/fontawesome/svgs/solid/icicles.svg new file mode 100644 index 0000000..7e4eda2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/icicles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/icons.svg b/resources/fontawesome/svgs/solid/icons.svg new file mode 100644 index 0000000..2a333b4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/icons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/id-badge.svg b/resources/fontawesome/svgs/solid/id-badge.svg new file mode 100644 index 0000000..198e06e --- /dev/null +++ b/resources/fontawesome/svgs/solid/id-badge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/id-card-clip.svg b/resources/fontawesome/svgs/solid/id-card-clip.svg new file mode 100644 index 0000000..b7dabb3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/id-card-clip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/id-card.svg b/resources/fontawesome/svgs/solid/id-card.svg new file mode 100644 index 0000000..1df5174 --- /dev/null +++ b/resources/fontawesome/svgs/solid/id-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/igloo.svg b/resources/fontawesome/svgs/solid/igloo.svg new file mode 100644 index 0000000..d207851 --- /dev/null +++ b/resources/fontawesome/svgs/solid/igloo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/image-portrait.svg b/resources/fontawesome/svgs/solid/image-portrait.svg new file mode 100644 index 0000000..995a400 --- /dev/null +++ b/resources/fontawesome/svgs/solid/image-portrait.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/image.svg b/resources/fontawesome/svgs/solid/image.svg new file mode 100644 index 0000000..6c84f25 --- /dev/null +++ b/resources/fontawesome/svgs/solid/image.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/images.svg b/resources/fontawesome/svgs/solid/images.svg new file mode 100644 index 0000000..34d4117 --- /dev/null +++ b/resources/fontawesome/svgs/solid/images.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/inbox.svg b/resources/fontawesome/svgs/solid/inbox.svg new file mode 100644 index 0000000..b713ab6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/inbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/indent.svg b/resources/fontawesome/svgs/solid/indent.svg new file mode 100644 index 0000000..57a0cb3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/indent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/indian-rupee-sign.svg b/resources/fontawesome/svgs/solid/indian-rupee-sign.svg new file mode 100644 index 0000000..d9795f3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/indian-rupee-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/industry.svg b/resources/fontawesome/svgs/solid/industry.svg new file mode 100644 index 0000000..aa3465a --- /dev/null +++ b/resources/fontawesome/svgs/solid/industry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/infinity.svg b/resources/fontawesome/svgs/solid/infinity.svg new file mode 100644 index 0000000..bd408e6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/infinity.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/info.svg b/resources/fontawesome/svgs/solid/info.svg new file mode 100644 index 0000000..1c9b64b --- /dev/null +++ b/resources/fontawesome/svgs/solid/info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/italic.svg b/resources/fontawesome/svgs/solid/italic.svg new file mode 100644 index 0000000..62b6522 --- /dev/null +++ b/resources/fontawesome/svgs/solid/italic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/j.svg b/resources/fontawesome/svgs/solid/j.svg new file mode 100644 index 0000000..22d2a8c --- /dev/null +++ b/resources/fontawesome/svgs/solid/j.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/jar-wheat.svg b/resources/fontawesome/svgs/solid/jar-wheat.svg new file mode 100644 index 0000000..ddf0ca0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/jar-wheat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/jar.svg b/resources/fontawesome/svgs/solid/jar.svg new file mode 100644 index 0000000..b9c9414 --- /dev/null +++ b/resources/fontawesome/svgs/solid/jar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/jedi.svg b/resources/fontawesome/svgs/solid/jedi.svg new file mode 100644 index 0000000..303ea0f --- /dev/null +++ b/resources/fontawesome/svgs/solid/jedi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/jet-fighter-up.svg b/resources/fontawesome/svgs/solid/jet-fighter-up.svg new file mode 100644 index 0000000..d33de13 --- /dev/null +++ b/resources/fontawesome/svgs/solid/jet-fighter-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/jet-fighter.svg b/resources/fontawesome/svgs/solid/jet-fighter.svg new file mode 100644 index 0000000..caa3ce8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/jet-fighter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/joint.svg b/resources/fontawesome/svgs/solid/joint.svg new file mode 100644 index 0000000..191e510 --- /dev/null +++ b/resources/fontawesome/svgs/solid/joint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/jug-detergent.svg b/resources/fontawesome/svgs/solid/jug-detergent.svg new file mode 100644 index 0000000..06b5826 --- /dev/null +++ b/resources/fontawesome/svgs/solid/jug-detergent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/k.svg b/resources/fontawesome/svgs/solid/k.svg new file mode 100644 index 0000000..bacc71b --- /dev/null +++ b/resources/fontawesome/svgs/solid/k.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/kaaba.svg b/resources/fontawesome/svgs/solid/kaaba.svg new file mode 100644 index 0000000..aed6628 --- /dev/null +++ b/resources/fontawesome/svgs/solid/kaaba.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/key.svg b/resources/fontawesome/svgs/solid/key.svg new file mode 100644 index 0000000..62fd10a --- /dev/null +++ b/resources/fontawesome/svgs/solid/key.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/keyboard.svg b/resources/fontawesome/svgs/solid/keyboard.svg new file mode 100644 index 0000000..0747d3c --- /dev/null +++ b/resources/fontawesome/svgs/solid/keyboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/khanda.svg b/resources/fontawesome/svgs/solid/khanda.svg new file mode 100644 index 0000000..f51e751 --- /dev/null +++ b/resources/fontawesome/svgs/solid/khanda.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/kip-sign.svg b/resources/fontawesome/svgs/solid/kip-sign.svg new file mode 100644 index 0000000..a52b01d --- /dev/null +++ b/resources/fontawesome/svgs/solid/kip-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/kit-medical.svg b/resources/fontawesome/svgs/solid/kit-medical.svg new file mode 100644 index 0000000..db14ec5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/kit-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/kitchen-set.svg b/resources/fontawesome/svgs/solid/kitchen-set.svg new file mode 100644 index 0000000..3de26ee --- /dev/null +++ b/resources/fontawesome/svgs/solid/kitchen-set.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/kiwi-bird.svg b/resources/fontawesome/svgs/solid/kiwi-bird.svg new file mode 100644 index 0000000..1311e32 --- /dev/null +++ b/resources/fontawesome/svgs/solid/kiwi-bird.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/l.svg b/resources/fontawesome/svgs/solid/l.svg new file mode 100644 index 0000000..f93a506 --- /dev/null +++ b/resources/fontawesome/svgs/solid/l.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/land-mine-on.svg b/resources/fontawesome/svgs/solid/land-mine-on.svg new file mode 100644 index 0000000..8278ed8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/land-mine-on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/landmark-dome.svg b/resources/fontawesome/svgs/solid/landmark-dome.svg new file mode 100644 index 0000000..6b7e407 --- /dev/null +++ b/resources/fontawesome/svgs/solid/landmark-dome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/landmark-flag.svg b/resources/fontawesome/svgs/solid/landmark-flag.svg new file mode 100644 index 0000000..10497a4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/landmark-flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/landmark.svg b/resources/fontawesome/svgs/solid/landmark.svg new file mode 100644 index 0000000..2099be4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/landmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/language.svg b/resources/fontawesome/svgs/solid/language.svg new file mode 100644 index 0000000..cf9af4d --- /dev/null +++ b/resources/fontawesome/svgs/solid/language.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/laptop-code.svg b/resources/fontawesome/svgs/solid/laptop-code.svg new file mode 100644 index 0000000..862ad7e --- /dev/null +++ b/resources/fontawesome/svgs/solid/laptop-code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/laptop-file.svg b/resources/fontawesome/svgs/solid/laptop-file.svg new file mode 100644 index 0000000..9bad1d8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/laptop-file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/laptop-medical.svg b/resources/fontawesome/svgs/solid/laptop-medical.svg new file mode 100644 index 0000000..67d63ec --- /dev/null +++ b/resources/fontawesome/svgs/solid/laptop-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/laptop.svg b/resources/fontawesome/svgs/solid/laptop.svg new file mode 100644 index 0000000..42aac45 --- /dev/null +++ b/resources/fontawesome/svgs/solid/laptop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/lari-sign.svg b/resources/fontawesome/svgs/solid/lari-sign.svg new file mode 100644 index 0000000..3277e32 --- /dev/null +++ b/resources/fontawesome/svgs/solid/lari-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/layer-group.svg b/resources/fontawesome/svgs/solid/layer-group.svg new file mode 100644 index 0000000..3c7138b --- /dev/null +++ b/resources/fontawesome/svgs/solid/layer-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/leaf.svg b/resources/fontawesome/svgs/solid/leaf.svg new file mode 100644 index 0000000..80f9dd9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/leaf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/left-long.svg b/resources/fontawesome/svgs/solid/left-long.svg new file mode 100644 index 0000000..a6c5043 --- /dev/null +++ b/resources/fontawesome/svgs/solid/left-long.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/left-right.svg b/resources/fontawesome/svgs/solid/left-right.svg new file mode 100644 index 0000000..638b484 --- /dev/null +++ b/resources/fontawesome/svgs/solid/left-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/lemon.svg b/resources/fontawesome/svgs/solid/lemon.svg new file mode 100644 index 0000000..d7708ed --- /dev/null +++ b/resources/fontawesome/svgs/solid/lemon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/less-than-equal.svg b/resources/fontawesome/svgs/solid/less-than-equal.svg new file mode 100644 index 0000000..f4c5148 --- /dev/null +++ b/resources/fontawesome/svgs/solid/less-than-equal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/less-than.svg b/resources/fontawesome/svgs/solid/less-than.svg new file mode 100644 index 0000000..767bebd --- /dev/null +++ b/resources/fontawesome/svgs/solid/less-than.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/life-ring.svg b/resources/fontawesome/svgs/solid/life-ring.svg new file mode 100644 index 0000000..a5132b3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/life-ring.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/lightbulb.svg b/resources/fontawesome/svgs/solid/lightbulb.svg new file mode 100644 index 0000000..0aef257 --- /dev/null +++ b/resources/fontawesome/svgs/solid/lightbulb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/lines-leaning.svg b/resources/fontawesome/svgs/solid/lines-leaning.svg new file mode 100644 index 0000000..d1912d1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/lines-leaning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/link-slash.svg b/resources/fontawesome/svgs/solid/link-slash.svg new file mode 100644 index 0000000..61c1c3e --- /dev/null +++ b/resources/fontawesome/svgs/solid/link-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/link.svg b/resources/fontawesome/svgs/solid/link.svg new file mode 100644 index 0000000..a25ba92 --- /dev/null +++ b/resources/fontawesome/svgs/solid/link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/lira-sign.svg b/resources/fontawesome/svgs/solid/lira-sign.svg new file mode 100644 index 0000000..aceea7c --- /dev/null +++ b/resources/fontawesome/svgs/solid/lira-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/list-check.svg b/resources/fontawesome/svgs/solid/list-check.svg new file mode 100644 index 0000000..afad4b4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/list-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/list-ol.svg b/resources/fontawesome/svgs/solid/list-ol.svg new file mode 100644 index 0000000..93616e6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/list-ol.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/list-ul.svg b/resources/fontawesome/svgs/solid/list-ul.svg new file mode 100644 index 0000000..6119e2b --- /dev/null +++ b/resources/fontawesome/svgs/solid/list-ul.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/list.svg b/resources/fontawesome/svgs/solid/list.svg new file mode 100644 index 0000000..cb92026 --- /dev/null +++ b/resources/fontawesome/svgs/solid/list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/litecoin-sign.svg b/resources/fontawesome/svgs/solid/litecoin-sign.svg new file mode 100644 index 0000000..220b312 --- /dev/null +++ b/resources/fontawesome/svgs/solid/litecoin-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/location-arrow.svg b/resources/fontawesome/svgs/solid/location-arrow.svg new file mode 100644 index 0000000..2126f4d --- /dev/null +++ b/resources/fontawesome/svgs/solid/location-arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/location-crosshairs.svg b/resources/fontawesome/svgs/solid/location-crosshairs.svg new file mode 100644 index 0000000..b130ea4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/location-crosshairs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/location-dot.svg b/resources/fontawesome/svgs/solid/location-dot.svg new file mode 100644 index 0000000..bf49c06 --- /dev/null +++ b/resources/fontawesome/svgs/solid/location-dot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/location-pin-lock.svg b/resources/fontawesome/svgs/solid/location-pin-lock.svg new file mode 100644 index 0000000..0a68114 --- /dev/null +++ b/resources/fontawesome/svgs/solid/location-pin-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/location-pin.svg b/resources/fontawesome/svgs/solid/location-pin.svg new file mode 100644 index 0000000..43a1cab --- /dev/null +++ b/resources/fontawesome/svgs/solid/location-pin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/lock-open.svg b/resources/fontawesome/svgs/solid/lock-open.svg new file mode 100644 index 0000000..82f6b1a --- /dev/null +++ b/resources/fontawesome/svgs/solid/lock-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/lock.svg b/resources/fontawesome/svgs/solid/lock.svg new file mode 100644 index 0000000..a094fad --- /dev/null +++ b/resources/fontawesome/svgs/solid/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/locust.svg b/resources/fontawesome/svgs/solid/locust.svg new file mode 100644 index 0000000..5039cac --- /dev/null +++ b/resources/fontawesome/svgs/solid/locust.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/lungs-virus.svg b/resources/fontawesome/svgs/solid/lungs-virus.svg new file mode 100644 index 0000000..4c76401 --- /dev/null +++ b/resources/fontawesome/svgs/solid/lungs-virus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/lungs.svg b/resources/fontawesome/svgs/solid/lungs.svg new file mode 100644 index 0000000..308aa9a --- /dev/null +++ b/resources/fontawesome/svgs/solid/lungs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/m.svg b/resources/fontawesome/svgs/solid/m.svg new file mode 100644 index 0000000..c1e5d11 --- /dev/null +++ b/resources/fontawesome/svgs/solid/m.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/magnet.svg b/resources/fontawesome/svgs/solid/magnet.svg new file mode 100644 index 0000000..fbc81cc --- /dev/null +++ b/resources/fontawesome/svgs/solid/magnet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/magnifying-glass-arrow-right.svg b/resources/fontawesome/svgs/solid/magnifying-glass-arrow-right.svg new file mode 100644 index 0000000..da7dcdd --- /dev/null +++ b/resources/fontawesome/svgs/solid/magnifying-glass-arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/magnifying-glass-chart.svg b/resources/fontawesome/svgs/solid/magnifying-glass-chart.svg new file mode 100644 index 0000000..3624471 --- /dev/null +++ b/resources/fontawesome/svgs/solid/magnifying-glass-chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/magnifying-glass-dollar.svg b/resources/fontawesome/svgs/solid/magnifying-glass-dollar.svg new file mode 100644 index 0000000..0d7c473 --- /dev/null +++ b/resources/fontawesome/svgs/solid/magnifying-glass-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/magnifying-glass-location.svg b/resources/fontawesome/svgs/solid/magnifying-glass-location.svg new file mode 100644 index 0000000..9e61bb1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/magnifying-glass-location.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/magnifying-glass-minus.svg b/resources/fontawesome/svgs/solid/magnifying-glass-minus.svg new file mode 100644 index 0000000..d526287 --- /dev/null +++ b/resources/fontawesome/svgs/solid/magnifying-glass-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/magnifying-glass-plus.svg b/resources/fontawesome/svgs/solid/magnifying-glass-plus.svg new file mode 100644 index 0000000..dc04510 --- /dev/null +++ b/resources/fontawesome/svgs/solid/magnifying-glass-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/magnifying-glass.svg b/resources/fontawesome/svgs/solid/magnifying-glass.svg new file mode 100644 index 0000000..36f6ad1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/magnifying-glass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/manat-sign.svg b/resources/fontawesome/svgs/solid/manat-sign.svg new file mode 100644 index 0000000..821ba63 --- /dev/null +++ b/resources/fontawesome/svgs/solid/manat-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/map-location-dot.svg b/resources/fontawesome/svgs/solid/map-location-dot.svg new file mode 100644 index 0000000..85982da --- /dev/null +++ b/resources/fontawesome/svgs/solid/map-location-dot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/map-location.svg b/resources/fontawesome/svgs/solid/map-location.svg new file mode 100644 index 0000000..856a1ea --- /dev/null +++ b/resources/fontawesome/svgs/solid/map-location.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/map-pin.svg b/resources/fontawesome/svgs/solid/map-pin.svg new file mode 100644 index 0000000..4308db0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/map-pin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/map.svg b/resources/fontawesome/svgs/solid/map.svg new file mode 100644 index 0000000..b49f5cd --- /dev/null +++ b/resources/fontawesome/svgs/solid/map.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/marker.svg b/resources/fontawesome/svgs/solid/marker.svg new file mode 100644 index 0000000..0e8293e --- /dev/null +++ b/resources/fontawesome/svgs/solid/marker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mars-and-venus-burst.svg b/resources/fontawesome/svgs/solid/mars-and-venus-burst.svg new file mode 100644 index 0000000..b5b386d --- /dev/null +++ b/resources/fontawesome/svgs/solid/mars-and-venus-burst.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mars-and-venus.svg b/resources/fontawesome/svgs/solid/mars-and-venus.svg new file mode 100644 index 0000000..c8ecc22 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mars-and-venus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mars-double.svg b/resources/fontawesome/svgs/solid/mars-double.svg new file mode 100644 index 0000000..a1b3875 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mars-double.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mars-stroke-right.svg b/resources/fontawesome/svgs/solid/mars-stroke-right.svg new file mode 100644 index 0000000..2274fe5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mars-stroke-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mars-stroke-up.svg b/resources/fontawesome/svgs/solid/mars-stroke-up.svg new file mode 100644 index 0000000..676dfbe --- /dev/null +++ b/resources/fontawesome/svgs/solid/mars-stroke-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mars-stroke.svg b/resources/fontawesome/svgs/solid/mars-stroke.svg new file mode 100644 index 0000000..8913783 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mars-stroke.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mars.svg b/resources/fontawesome/svgs/solid/mars.svg new file mode 100644 index 0000000..22f05a3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mars.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/martini-glass-citrus.svg b/resources/fontawesome/svgs/solid/martini-glass-citrus.svg new file mode 100644 index 0000000..80a4a2b --- /dev/null +++ b/resources/fontawesome/svgs/solid/martini-glass-citrus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/martini-glass-empty.svg b/resources/fontawesome/svgs/solid/martini-glass-empty.svg new file mode 100644 index 0000000..1bc5c21 --- /dev/null +++ b/resources/fontawesome/svgs/solid/martini-glass-empty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/martini-glass.svg b/resources/fontawesome/svgs/solid/martini-glass.svg new file mode 100644 index 0000000..1cd3f17 --- /dev/null +++ b/resources/fontawesome/svgs/solid/martini-glass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mask-face.svg b/resources/fontawesome/svgs/solid/mask-face.svg new file mode 100644 index 0000000..214294a --- /dev/null +++ b/resources/fontawesome/svgs/solid/mask-face.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mask-ventilator.svg b/resources/fontawesome/svgs/solid/mask-ventilator.svg new file mode 100644 index 0000000..5060429 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mask-ventilator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mask.svg b/resources/fontawesome/svgs/solid/mask.svg new file mode 100644 index 0000000..98f0bdd --- /dev/null +++ b/resources/fontawesome/svgs/solid/mask.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/masks-theater.svg b/resources/fontawesome/svgs/solid/masks-theater.svg new file mode 100644 index 0000000..69ce99d --- /dev/null +++ b/resources/fontawesome/svgs/solid/masks-theater.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mattress-pillow.svg b/resources/fontawesome/svgs/solid/mattress-pillow.svg new file mode 100644 index 0000000..1eb549d --- /dev/null +++ b/resources/fontawesome/svgs/solid/mattress-pillow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/maximize.svg b/resources/fontawesome/svgs/solid/maximize.svg new file mode 100644 index 0000000..584d56b --- /dev/null +++ b/resources/fontawesome/svgs/solid/maximize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/medal.svg b/resources/fontawesome/svgs/solid/medal.svg new file mode 100644 index 0000000..eda5421 --- /dev/null +++ b/resources/fontawesome/svgs/solid/medal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/memory.svg b/resources/fontawesome/svgs/solid/memory.svg new file mode 100644 index 0000000..1ae4c01 --- /dev/null +++ b/resources/fontawesome/svgs/solid/memory.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/menorah.svg b/resources/fontawesome/svgs/solid/menorah.svg new file mode 100644 index 0000000..f2a1a65 --- /dev/null +++ b/resources/fontawesome/svgs/solid/menorah.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mercury.svg b/resources/fontawesome/svgs/solid/mercury.svg new file mode 100644 index 0000000..4221438 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mercury.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/message.svg b/resources/fontawesome/svgs/solid/message.svg new file mode 100644 index 0000000..3d8aee6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/message.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/meteor.svg b/resources/fontawesome/svgs/solid/meteor.svg new file mode 100644 index 0000000..0f08a24 --- /dev/null +++ b/resources/fontawesome/svgs/solid/meteor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/microchip.svg b/resources/fontawesome/svgs/solid/microchip.svg new file mode 100644 index 0000000..11c4d62 --- /dev/null +++ b/resources/fontawesome/svgs/solid/microchip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/microphone-lines-slash.svg b/resources/fontawesome/svgs/solid/microphone-lines-slash.svg new file mode 100644 index 0000000..ba101b9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/microphone-lines-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/microphone-lines.svg b/resources/fontawesome/svgs/solid/microphone-lines.svg new file mode 100644 index 0000000..56a3f83 --- /dev/null +++ b/resources/fontawesome/svgs/solid/microphone-lines.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/microphone-slash.svg b/resources/fontawesome/svgs/solid/microphone-slash.svg new file mode 100644 index 0000000..5d91a15 --- /dev/null +++ b/resources/fontawesome/svgs/solid/microphone-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/microphone.svg b/resources/fontawesome/svgs/solid/microphone.svg new file mode 100644 index 0000000..c99dbad --- /dev/null +++ b/resources/fontawesome/svgs/solid/microphone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/microscope.svg b/resources/fontawesome/svgs/solid/microscope.svg new file mode 100644 index 0000000..690bed5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/microscope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mill-sign.svg b/resources/fontawesome/svgs/solid/mill-sign.svg new file mode 100644 index 0000000..2c52842 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mill-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/minimize.svg b/resources/fontawesome/svgs/solid/minimize.svg new file mode 100644 index 0000000..7dea413 --- /dev/null +++ b/resources/fontawesome/svgs/solid/minimize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/minus.svg b/resources/fontawesome/svgs/solid/minus.svg new file mode 100644 index 0000000..c46b820 --- /dev/null +++ b/resources/fontawesome/svgs/solid/minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mitten.svg b/resources/fontawesome/svgs/solid/mitten.svg new file mode 100644 index 0000000..831d86e --- /dev/null +++ b/resources/fontawesome/svgs/solid/mitten.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mobile-button.svg b/resources/fontawesome/svgs/solid/mobile-button.svg new file mode 100644 index 0000000..43bd566 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mobile-button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mobile-retro.svg b/resources/fontawesome/svgs/solid/mobile-retro.svg new file mode 100644 index 0000000..2219937 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mobile-retro.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mobile-screen-button.svg b/resources/fontawesome/svgs/solid/mobile-screen-button.svg new file mode 100644 index 0000000..638f121 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mobile-screen-button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mobile-screen.svg b/resources/fontawesome/svgs/solid/mobile-screen.svg new file mode 100644 index 0000000..527dd33 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mobile-screen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mobile.svg b/resources/fontawesome/svgs/solid/mobile.svg new file mode 100644 index 0000000..0422763 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mobile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/money-bill-1-wave.svg b/resources/fontawesome/svgs/solid/money-bill-1-wave.svg new file mode 100644 index 0000000..009e8ba --- /dev/null +++ b/resources/fontawesome/svgs/solid/money-bill-1-wave.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/money-bill-1.svg b/resources/fontawesome/svgs/solid/money-bill-1.svg new file mode 100644 index 0000000..ddda082 --- /dev/null +++ b/resources/fontawesome/svgs/solid/money-bill-1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/money-bill-transfer.svg b/resources/fontawesome/svgs/solid/money-bill-transfer.svg new file mode 100644 index 0000000..ba9cd8d --- /dev/null +++ b/resources/fontawesome/svgs/solid/money-bill-transfer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/money-bill-trend-up.svg b/resources/fontawesome/svgs/solid/money-bill-trend-up.svg new file mode 100644 index 0000000..15691af --- /dev/null +++ b/resources/fontawesome/svgs/solid/money-bill-trend-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/money-bill-wave.svg b/resources/fontawesome/svgs/solid/money-bill-wave.svg new file mode 100644 index 0000000..573a387 --- /dev/null +++ b/resources/fontawesome/svgs/solid/money-bill-wave.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/money-bill-wheat.svg b/resources/fontawesome/svgs/solid/money-bill-wheat.svg new file mode 100644 index 0000000..d1837d1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/money-bill-wheat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/money-bill.svg b/resources/fontawesome/svgs/solid/money-bill.svg new file mode 100644 index 0000000..6ac0412 --- /dev/null +++ b/resources/fontawesome/svgs/solid/money-bill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/money-bills.svg b/resources/fontawesome/svgs/solid/money-bills.svg new file mode 100644 index 0000000..fdeab04 --- /dev/null +++ b/resources/fontawesome/svgs/solid/money-bills.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/money-check-dollar.svg b/resources/fontawesome/svgs/solid/money-check-dollar.svg new file mode 100644 index 0000000..1c52929 --- /dev/null +++ b/resources/fontawesome/svgs/solid/money-check-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/money-check.svg b/resources/fontawesome/svgs/solid/money-check.svg new file mode 100644 index 0000000..62edb6a --- /dev/null +++ b/resources/fontawesome/svgs/solid/money-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/monument.svg b/resources/fontawesome/svgs/solid/monument.svg new file mode 100644 index 0000000..bb67a46 --- /dev/null +++ b/resources/fontawesome/svgs/solid/monument.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/moon.svg b/resources/fontawesome/svgs/solid/moon.svg new file mode 100644 index 0000000..0de7b24 --- /dev/null +++ b/resources/fontawesome/svgs/solid/moon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mortar-pestle.svg b/resources/fontawesome/svgs/solid/mortar-pestle.svg new file mode 100644 index 0000000..7763e73 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mortar-pestle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mosque.svg b/resources/fontawesome/svgs/solid/mosque.svg new file mode 100644 index 0000000..e114275 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mosque.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mosquito-net.svg b/resources/fontawesome/svgs/solid/mosquito-net.svg new file mode 100644 index 0000000..e2b2d76 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mosquito-net.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mosquito.svg b/resources/fontawesome/svgs/solid/mosquito.svg new file mode 100644 index 0000000..f5e5e55 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mosquito.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/motorcycle.svg b/resources/fontawesome/svgs/solid/motorcycle.svg new file mode 100644 index 0000000..f653537 --- /dev/null +++ b/resources/fontawesome/svgs/solid/motorcycle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mound.svg b/resources/fontawesome/svgs/solid/mound.svg new file mode 100644 index 0000000..3362a93 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mound.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mountain-city.svg b/resources/fontawesome/svgs/solid/mountain-city.svg new file mode 100644 index 0000000..e3f160e --- /dev/null +++ b/resources/fontawesome/svgs/solid/mountain-city.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mountain-sun.svg b/resources/fontawesome/svgs/solid/mountain-sun.svg new file mode 100644 index 0000000..d6be8e3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mountain-sun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mountain.svg b/resources/fontawesome/svgs/solid/mountain.svg new file mode 100644 index 0000000..41d24b7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mountain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mug-hot.svg b/resources/fontawesome/svgs/solid/mug-hot.svg new file mode 100644 index 0000000..572e58e --- /dev/null +++ b/resources/fontawesome/svgs/solid/mug-hot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/mug-saucer.svg b/resources/fontawesome/svgs/solid/mug-saucer.svg new file mode 100644 index 0000000..287ae58 --- /dev/null +++ b/resources/fontawesome/svgs/solid/mug-saucer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/music.svg b/resources/fontawesome/svgs/solid/music.svg new file mode 100644 index 0000000..a195b69 --- /dev/null +++ b/resources/fontawesome/svgs/solid/music.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/n.svg b/resources/fontawesome/svgs/solid/n.svg new file mode 100644 index 0000000..fb48a82 --- /dev/null +++ b/resources/fontawesome/svgs/solid/n.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/naira-sign.svg b/resources/fontawesome/svgs/solid/naira-sign.svg new file mode 100644 index 0000000..2c0b035 --- /dev/null +++ b/resources/fontawesome/svgs/solid/naira-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/network-wired.svg b/resources/fontawesome/svgs/solid/network-wired.svg new file mode 100644 index 0000000..b92bcf9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/network-wired.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/neuter.svg b/resources/fontawesome/svgs/solid/neuter.svg new file mode 100644 index 0000000..086ca7b --- /dev/null +++ b/resources/fontawesome/svgs/solid/neuter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/newspaper.svg b/resources/fontawesome/svgs/solid/newspaper.svg new file mode 100644 index 0000000..c748291 --- /dev/null +++ b/resources/fontawesome/svgs/solid/newspaper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/not-equal.svg b/resources/fontawesome/svgs/solid/not-equal.svg new file mode 100644 index 0000000..f37849a --- /dev/null +++ b/resources/fontawesome/svgs/solid/not-equal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/notdef.svg b/resources/fontawesome/svgs/solid/notdef.svg new file mode 100644 index 0000000..5010639 --- /dev/null +++ b/resources/fontawesome/svgs/solid/notdef.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/note-sticky.svg b/resources/fontawesome/svgs/solid/note-sticky.svg new file mode 100644 index 0000000..de3cd35 --- /dev/null +++ b/resources/fontawesome/svgs/solid/note-sticky.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/notes-medical.svg b/resources/fontawesome/svgs/solid/notes-medical.svg new file mode 100644 index 0000000..ab51477 --- /dev/null +++ b/resources/fontawesome/svgs/solid/notes-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/o.svg b/resources/fontawesome/svgs/solid/o.svg new file mode 100644 index 0000000..7d84d4c --- /dev/null +++ b/resources/fontawesome/svgs/solid/o.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/object-group.svg b/resources/fontawesome/svgs/solid/object-group.svg new file mode 100644 index 0000000..9a61dbd --- /dev/null +++ b/resources/fontawesome/svgs/solid/object-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/object-ungroup.svg b/resources/fontawesome/svgs/solid/object-ungroup.svg new file mode 100644 index 0000000..fe90753 --- /dev/null +++ b/resources/fontawesome/svgs/solid/object-ungroup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/oil-can.svg b/resources/fontawesome/svgs/solid/oil-can.svg new file mode 100644 index 0000000..6289e38 --- /dev/null +++ b/resources/fontawesome/svgs/solid/oil-can.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/oil-well.svg b/resources/fontawesome/svgs/solid/oil-well.svg new file mode 100644 index 0000000..d3ccb72 --- /dev/null +++ b/resources/fontawesome/svgs/solid/oil-well.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/om.svg b/resources/fontawesome/svgs/solid/om.svg new file mode 100644 index 0000000..ee28726 --- /dev/null +++ b/resources/fontawesome/svgs/solid/om.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/otter.svg b/resources/fontawesome/svgs/solid/otter.svg new file mode 100644 index 0000000..1621697 --- /dev/null +++ b/resources/fontawesome/svgs/solid/otter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/outdent.svg b/resources/fontawesome/svgs/solid/outdent.svg new file mode 100644 index 0000000..5121dc6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/outdent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/p.svg b/resources/fontawesome/svgs/solid/p.svg new file mode 100644 index 0000000..1ff291a --- /dev/null +++ b/resources/fontawesome/svgs/solid/p.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/pager.svg b/resources/fontawesome/svgs/solid/pager.svg new file mode 100644 index 0000000..071ef79 --- /dev/null +++ b/resources/fontawesome/svgs/solid/pager.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/paint-roller.svg b/resources/fontawesome/svgs/solid/paint-roller.svg new file mode 100644 index 0000000..f4e451e --- /dev/null +++ b/resources/fontawesome/svgs/solid/paint-roller.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/paintbrush.svg b/resources/fontawesome/svgs/solid/paintbrush.svg new file mode 100644 index 0000000..8c9a00d --- /dev/null +++ b/resources/fontawesome/svgs/solid/paintbrush.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/palette.svg b/resources/fontawesome/svgs/solid/palette.svg new file mode 100644 index 0000000..122e162 --- /dev/null +++ b/resources/fontawesome/svgs/solid/palette.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/pallet.svg b/resources/fontawesome/svgs/solid/pallet.svg new file mode 100644 index 0000000..9e3b639 --- /dev/null +++ b/resources/fontawesome/svgs/solid/pallet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/panorama.svg b/resources/fontawesome/svgs/solid/panorama.svg new file mode 100644 index 0000000..6a5cb8b --- /dev/null +++ b/resources/fontawesome/svgs/solid/panorama.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/paper-plane.svg b/resources/fontawesome/svgs/solid/paper-plane.svg new file mode 100644 index 0000000..de86f47 --- /dev/null +++ b/resources/fontawesome/svgs/solid/paper-plane.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/paperclip.svg b/resources/fontawesome/svgs/solid/paperclip.svg new file mode 100644 index 0000000..0bfef5a --- /dev/null +++ b/resources/fontawesome/svgs/solid/paperclip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/parachute-box.svg b/resources/fontawesome/svgs/solid/parachute-box.svg new file mode 100644 index 0000000..70f21f8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/parachute-box.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/paragraph.svg b/resources/fontawesome/svgs/solid/paragraph.svg new file mode 100644 index 0000000..e811afc --- /dev/null +++ b/resources/fontawesome/svgs/solid/paragraph.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/passport.svg b/resources/fontawesome/svgs/solid/passport.svg new file mode 100644 index 0000000..ce2811f --- /dev/null +++ b/resources/fontawesome/svgs/solid/passport.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/paste.svg b/resources/fontawesome/svgs/solid/paste.svg new file mode 100644 index 0000000..707af72 --- /dev/null +++ b/resources/fontawesome/svgs/solid/paste.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/pause.svg b/resources/fontawesome/svgs/solid/pause.svg new file mode 100644 index 0000000..cc9a15c --- /dev/null +++ b/resources/fontawesome/svgs/solid/pause.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/paw.svg b/resources/fontawesome/svgs/solid/paw.svg new file mode 100644 index 0000000..5a91302 --- /dev/null +++ b/resources/fontawesome/svgs/solid/paw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/peace.svg b/resources/fontawesome/svgs/solid/peace.svg new file mode 100644 index 0000000..91044a5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/peace.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/pen-clip.svg b/resources/fontawesome/svgs/solid/pen-clip.svg new file mode 100644 index 0000000..a4726ee --- /dev/null +++ b/resources/fontawesome/svgs/solid/pen-clip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/pen-fancy.svg b/resources/fontawesome/svgs/solid/pen-fancy.svg new file mode 100644 index 0000000..b9e0127 --- /dev/null +++ b/resources/fontawesome/svgs/solid/pen-fancy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/pen-nib.svg b/resources/fontawesome/svgs/solid/pen-nib.svg new file mode 100644 index 0000000..578037d --- /dev/null +++ b/resources/fontawesome/svgs/solid/pen-nib.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/pen-ruler.svg b/resources/fontawesome/svgs/solid/pen-ruler.svg new file mode 100644 index 0000000..29bfd0b --- /dev/null +++ b/resources/fontawesome/svgs/solid/pen-ruler.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/pen-to-square.svg b/resources/fontawesome/svgs/solid/pen-to-square.svg new file mode 100644 index 0000000..2b8eab8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/pen-to-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/pen.svg b/resources/fontawesome/svgs/solid/pen.svg new file mode 100644 index 0000000..973c511 --- /dev/null +++ b/resources/fontawesome/svgs/solid/pen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/pencil.svg b/resources/fontawesome/svgs/solid/pencil.svg new file mode 100644 index 0000000..0cbedc3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/pencil.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/people-arrows.svg b/resources/fontawesome/svgs/solid/people-arrows.svg new file mode 100644 index 0000000..70dbcb0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/people-arrows.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/people-carry-box.svg b/resources/fontawesome/svgs/solid/people-carry-box.svg new file mode 100644 index 0000000..c027edf --- /dev/null +++ b/resources/fontawesome/svgs/solid/people-carry-box.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/people-group.svg b/resources/fontawesome/svgs/solid/people-group.svg new file mode 100644 index 0000000..b901288 --- /dev/null +++ b/resources/fontawesome/svgs/solid/people-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/people-line.svg b/resources/fontawesome/svgs/solid/people-line.svg new file mode 100644 index 0000000..8a651c0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/people-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/people-pulling.svg b/resources/fontawesome/svgs/solid/people-pulling.svg new file mode 100644 index 0000000..959f7cd --- /dev/null +++ b/resources/fontawesome/svgs/solid/people-pulling.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/people-robbery.svg b/resources/fontawesome/svgs/solid/people-robbery.svg new file mode 100644 index 0000000..fbb3fcf --- /dev/null +++ b/resources/fontawesome/svgs/solid/people-robbery.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/people-roof.svg b/resources/fontawesome/svgs/solid/people-roof.svg new file mode 100644 index 0000000..9cde503 --- /dev/null +++ b/resources/fontawesome/svgs/solid/people-roof.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/pepper-hot.svg b/resources/fontawesome/svgs/solid/pepper-hot.svg new file mode 100644 index 0000000..b122488 --- /dev/null +++ b/resources/fontawesome/svgs/solid/pepper-hot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/percent.svg b/resources/fontawesome/svgs/solid/percent.svg new file mode 100644 index 0000000..242e060 --- /dev/null +++ b/resources/fontawesome/svgs/solid/percent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-arrow-down-to-line.svg b/resources/fontawesome/svgs/solid/person-arrow-down-to-line.svg new file mode 100644 index 0000000..54b8f0b --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-arrow-down-to-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-arrow-up-from-line.svg b/resources/fontawesome/svgs/solid/person-arrow-up-from-line.svg new file mode 100644 index 0000000..d9e6451 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-arrow-up-from-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-biking.svg b/resources/fontawesome/svgs/solid/person-biking.svg new file mode 100644 index 0000000..c4ceb9f --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-biking.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-booth.svg b/resources/fontawesome/svgs/solid/person-booth.svg new file mode 100644 index 0000000..9955f09 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-booth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-breastfeeding.svg b/resources/fontawesome/svgs/solid/person-breastfeeding.svg new file mode 100644 index 0000000..6bd1b36 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-breastfeeding.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-burst.svg b/resources/fontawesome/svgs/solid/person-burst.svg new file mode 100644 index 0000000..63eb342 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-burst.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-cane.svg b/resources/fontawesome/svgs/solid/person-cane.svg new file mode 100644 index 0000000..09344c4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-cane.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-chalkboard.svg b/resources/fontawesome/svgs/solid/person-chalkboard.svg new file mode 100644 index 0000000..793e6fc --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-chalkboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-circle-check.svg b/resources/fontawesome/svgs/solid/person-circle-check.svg new file mode 100644 index 0000000..29f54fe --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-circle-exclamation.svg b/resources/fontawesome/svgs/solid/person-circle-exclamation.svg new file mode 100644 index 0000000..a4dc41d --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-circle-minus.svg b/resources/fontawesome/svgs/solid/person-circle-minus.svg new file mode 100644 index 0000000..bc99611 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-circle-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-circle-plus.svg b/resources/fontawesome/svgs/solid/person-circle-plus.svg new file mode 100644 index 0000000..c4462be --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-circle-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-circle-question.svg b/resources/fontawesome/svgs/solid/person-circle-question.svg new file mode 100644 index 0000000..6d48945 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-circle-question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-circle-xmark.svg b/resources/fontawesome/svgs/solid/person-circle-xmark.svg new file mode 100644 index 0000000..8581dad --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-digging.svg b/resources/fontawesome/svgs/solid/person-digging.svg new file mode 100644 index 0000000..26cf4b3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-digging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-dots-from-line.svg b/resources/fontawesome/svgs/solid/person-dots-from-line.svg new file mode 100644 index 0000000..b08b0ec --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-dots-from-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-dress-burst.svg b/resources/fontawesome/svgs/solid/person-dress-burst.svg new file mode 100644 index 0000000..8d50c8a --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-dress-burst.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-dress.svg b/resources/fontawesome/svgs/solid/person-dress.svg new file mode 100644 index 0000000..2db5695 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-dress.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-drowning.svg b/resources/fontawesome/svgs/solid/person-drowning.svg new file mode 100644 index 0000000..2bc7448 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-drowning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-falling-burst.svg b/resources/fontawesome/svgs/solid/person-falling-burst.svg new file mode 100644 index 0000000..efb289a --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-falling-burst.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-falling.svg b/resources/fontawesome/svgs/solid/person-falling.svg new file mode 100644 index 0000000..fb971ab --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-falling.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-half-dress.svg b/resources/fontawesome/svgs/solid/person-half-dress.svg new file mode 100644 index 0000000..c98591b --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-half-dress.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-harassing.svg b/resources/fontawesome/svgs/solid/person-harassing.svg new file mode 100644 index 0000000..eee20fe --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-harassing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-hiking.svg b/resources/fontawesome/svgs/solid/person-hiking.svg new file mode 100644 index 0000000..0883cdf --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-hiking.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-military-pointing.svg b/resources/fontawesome/svgs/solid/person-military-pointing.svg new file mode 100644 index 0000000..6f71aec --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-military-pointing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-military-rifle.svg b/resources/fontawesome/svgs/solid/person-military-rifle.svg new file mode 100644 index 0000000..ce4d0f7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-military-rifle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-military-to-person.svg b/resources/fontawesome/svgs/solid/person-military-to-person.svg new file mode 100644 index 0000000..288b28d --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-military-to-person.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-praying.svg b/resources/fontawesome/svgs/solid/person-praying.svg new file mode 100644 index 0000000..ea6734b --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-praying.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-pregnant.svg b/resources/fontawesome/svgs/solid/person-pregnant.svg new file mode 100644 index 0000000..5a4a498 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-pregnant.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-rays.svg b/resources/fontawesome/svgs/solid/person-rays.svg new file mode 100644 index 0000000..e55a5d9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-rays.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-rifle.svg b/resources/fontawesome/svgs/solid/person-rifle.svg new file mode 100644 index 0000000..8ffd67b --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-rifle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-running.svg b/resources/fontawesome/svgs/solid/person-running.svg new file mode 100644 index 0000000..9a14174 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-running.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-shelter.svg b/resources/fontawesome/svgs/solid/person-shelter.svg new file mode 100644 index 0000000..96ec9a4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-shelter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-skating.svg b/resources/fontawesome/svgs/solid/person-skating.svg new file mode 100644 index 0000000..e7f303c --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-skating.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-skiing-nordic.svg b/resources/fontawesome/svgs/solid/person-skiing-nordic.svg new file mode 100644 index 0000000..e38a01e --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-skiing-nordic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-skiing.svg b/resources/fontawesome/svgs/solid/person-skiing.svg new file mode 100644 index 0000000..8a6801d --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-skiing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-snowboarding.svg b/resources/fontawesome/svgs/solid/person-snowboarding.svg new file mode 100644 index 0000000..1cee06b --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-snowboarding.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-swimming.svg b/resources/fontawesome/svgs/solid/person-swimming.svg new file mode 100644 index 0000000..151d20c --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-swimming.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-through-window.svg b/resources/fontawesome/svgs/solid/person-through-window.svg new file mode 100644 index 0000000..7c17cb1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-through-window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-walking-arrow-loop-left.svg b/resources/fontawesome/svgs/solid/person-walking-arrow-loop-left.svg new file mode 100644 index 0000000..4d34f73 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-walking-arrow-loop-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-walking-arrow-right.svg b/resources/fontawesome/svgs/solid/person-walking-arrow-right.svg new file mode 100644 index 0000000..62eac72 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-walking-arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-walking-dashed-line-arrow-right.svg b/resources/fontawesome/svgs/solid/person-walking-dashed-line-arrow-right.svg new file mode 100644 index 0000000..4ff5af1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-walking-dashed-line-arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-walking-luggage.svg b/resources/fontawesome/svgs/solid/person-walking-luggage.svg new file mode 100644 index 0000000..f729a8f --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-walking-luggage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-walking-with-cane.svg b/resources/fontawesome/svgs/solid/person-walking-with-cane.svg new file mode 100644 index 0000000..f480212 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-walking-with-cane.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person-walking.svg b/resources/fontawesome/svgs/solid/person-walking.svg new file mode 100644 index 0000000..0c854c9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person-walking.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/person.svg b/resources/fontawesome/svgs/solid/person.svg new file mode 100644 index 0000000..1355260 --- /dev/null +++ b/resources/fontawesome/svgs/solid/person.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/peseta-sign.svg b/resources/fontawesome/svgs/solid/peseta-sign.svg new file mode 100644 index 0000000..ec3e9a1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/peseta-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/peso-sign.svg b/resources/fontawesome/svgs/solid/peso-sign.svg new file mode 100644 index 0000000..0b29a45 --- /dev/null +++ b/resources/fontawesome/svgs/solid/peso-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/phone-flip.svg b/resources/fontawesome/svgs/solid/phone-flip.svg new file mode 100644 index 0000000..0f108fe --- /dev/null +++ b/resources/fontawesome/svgs/solid/phone-flip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/phone-slash.svg b/resources/fontawesome/svgs/solid/phone-slash.svg new file mode 100644 index 0000000..1f283ee --- /dev/null +++ b/resources/fontawesome/svgs/solid/phone-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/phone-volume.svg b/resources/fontawesome/svgs/solid/phone-volume.svg new file mode 100644 index 0000000..eb3d314 --- /dev/null +++ b/resources/fontawesome/svgs/solid/phone-volume.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/phone.svg b/resources/fontawesome/svgs/solid/phone.svg new file mode 100644 index 0000000..f248e0b --- /dev/null +++ b/resources/fontawesome/svgs/solid/phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/photo-film.svg b/resources/fontawesome/svgs/solid/photo-film.svg new file mode 100644 index 0000000..a3a6a05 --- /dev/null +++ b/resources/fontawesome/svgs/solid/photo-film.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/piggy-bank.svg b/resources/fontawesome/svgs/solid/piggy-bank.svg new file mode 100644 index 0000000..590f68a --- /dev/null +++ b/resources/fontawesome/svgs/solid/piggy-bank.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/pills.svg b/resources/fontawesome/svgs/solid/pills.svg new file mode 100644 index 0000000..c1d48b5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/pills.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/pizza-slice.svg b/resources/fontawesome/svgs/solid/pizza-slice.svg new file mode 100644 index 0000000..7b4efb0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/pizza-slice.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/place-of-worship.svg b/resources/fontawesome/svgs/solid/place-of-worship.svg new file mode 100644 index 0000000..157cbf7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/place-of-worship.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plane-arrival.svg b/resources/fontawesome/svgs/solid/plane-arrival.svg new file mode 100644 index 0000000..3db7b96 --- /dev/null +++ b/resources/fontawesome/svgs/solid/plane-arrival.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plane-circle-check.svg b/resources/fontawesome/svgs/solid/plane-circle-check.svg new file mode 100644 index 0000000..c2ed901 --- /dev/null +++ b/resources/fontawesome/svgs/solid/plane-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plane-circle-exclamation.svg b/resources/fontawesome/svgs/solid/plane-circle-exclamation.svg new file mode 100644 index 0000000..a7bdcb2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/plane-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plane-circle-xmark.svg b/resources/fontawesome/svgs/solid/plane-circle-xmark.svg new file mode 100644 index 0000000..f20d73c --- /dev/null +++ b/resources/fontawesome/svgs/solid/plane-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plane-departure.svg b/resources/fontawesome/svgs/solid/plane-departure.svg new file mode 100644 index 0000000..db57814 --- /dev/null +++ b/resources/fontawesome/svgs/solid/plane-departure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plane-lock.svg b/resources/fontawesome/svgs/solid/plane-lock.svg new file mode 100644 index 0000000..f032f34 --- /dev/null +++ b/resources/fontawesome/svgs/solid/plane-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plane-slash.svg b/resources/fontawesome/svgs/solid/plane-slash.svg new file mode 100644 index 0000000..f29d864 --- /dev/null +++ b/resources/fontawesome/svgs/solid/plane-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plane-up.svg b/resources/fontawesome/svgs/solid/plane-up.svg new file mode 100644 index 0000000..9650205 --- /dev/null +++ b/resources/fontawesome/svgs/solid/plane-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plane.svg b/resources/fontawesome/svgs/solid/plane.svg new file mode 100644 index 0000000..7161588 --- /dev/null +++ b/resources/fontawesome/svgs/solid/plane.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plant-wilt.svg b/resources/fontawesome/svgs/solid/plant-wilt.svg new file mode 100644 index 0000000..b1509e8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/plant-wilt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plate-wheat.svg b/resources/fontawesome/svgs/solid/plate-wheat.svg new file mode 100644 index 0000000..60f6d8a --- /dev/null +++ b/resources/fontawesome/svgs/solid/plate-wheat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/play.svg b/resources/fontawesome/svgs/solid/play.svg new file mode 100644 index 0000000..c3376a0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plug-circle-bolt.svg b/resources/fontawesome/svgs/solid/plug-circle-bolt.svg new file mode 100644 index 0000000..856eba4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/plug-circle-bolt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plug-circle-check.svg b/resources/fontawesome/svgs/solid/plug-circle-check.svg new file mode 100644 index 0000000..c1db6be --- /dev/null +++ b/resources/fontawesome/svgs/solid/plug-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plug-circle-exclamation.svg b/resources/fontawesome/svgs/solid/plug-circle-exclamation.svg new file mode 100644 index 0000000..15843d9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/plug-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plug-circle-minus.svg b/resources/fontawesome/svgs/solid/plug-circle-minus.svg new file mode 100644 index 0000000..e37c335 --- /dev/null +++ b/resources/fontawesome/svgs/solid/plug-circle-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plug-circle-plus.svg b/resources/fontawesome/svgs/solid/plug-circle-plus.svg new file mode 100644 index 0000000..aeb7350 --- /dev/null +++ b/resources/fontawesome/svgs/solid/plug-circle-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plug-circle-xmark.svg b/resources/fontawesome/svgs/solid/plug-circle-xmark.svg new file mode 100644 index 0000000..a5de870 --- /dev/null +++ b/resources/fontawesome/svgs/solid/plug-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plug.svg b/resources/fontawesome/svgs/solid/plug.svg new file mode 100644 index 0000000..6afcd76 --- /dev/null +++ b/resources/fontawesome/svgs/solid/plug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plus-minus.svg b/resources/fontawesome/svgs/solid/plus-minus.svg new file mode 100644 index 0000000..0d2a5c5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/plus-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/plus.svg b/resources/fontawesome/svgs/solid/plus.svg new file mode 100644 index 0000000..95b98d3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/podcast.svg b/resources/fontawesome/svgs/solid/podcast.svg new file mode 100644 index 0000000..1ff6e7d --- /dev/null +++ b/resources/fontawesome/svgs/solid/podcast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/poo-storm.svg b/resources/fontawesome/svgs/solid/poo-storm.svg new file mode 100644 index 0000000..7c51164 --- /dev/null +++ b/resources/fontawesome/svgs/solid/poo-storm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/poo.svg b/resources/fontawesome/svgs/solid/poo.svg new file mode 100644 index 0000000..14ceb5c --- /dev/null +++ b/resources/fontawesome/svgs/solid/poo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/poop.svg b/resources/fontawesome/svgs/solid/poop.svg new file mode 100644 index 0000000..3d9ee96 --- /dev/null +++ b/resources/fontawesome/svgs/solid/poop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/power-off.svg b/resources/fontawesome/svgs/solid/power-off.svg new file mode 100644 index 0000000..e7947ad --- /dev/null +++ b/resources/fontawesome/svgs/solid/power-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/prescription-bottle-medical.svg b/resources/fontawesome/svgs/solid/prescription-bottle-medical.svg new file mode 100644 index 0000000..f34495b --- /dev/null +++ b/resources/fontawesome/svgs/solid/prescription-bottle-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/prescription-bottle.svg b/resources/fontawesome/svgs/solid/prescription-bottle.svg new file mode 100644 index 0000000..eb156e5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/prescription-bottle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/prescription.svg b/resources/fontawesome/svgs/solid/prescription.svg new file mode 100644 index 0000000..6939c21 --- /dev/null +++ b/resources/fontawesome/svgs/solid/prescription.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/print.svg b/resources/fontawesome/svgs/solid/print.svg new file mode 100644 index 0000000..cc6a757 --- /dev/null +++ b/resources/fontawesome/svgs/solid/print.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/pump-medical.svg b/resources/fontawesome/svgs/solid/pump-medical.svg new file mode 100644 index 0000000..6a01b88 --- /dev/null +++ b/resources/fontawesome/svgs/solid/pump-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/pump-soap.svg b/resources/fontawesome/svgs/solid/pump-soap.svg new file mode 100644 index 0000000..eb3c11b --- /dev/null +++ b/resources/fontawesome/svgs/solid/pump-soap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/puzzle-piece.svg b/resources/fontawesome/svgs/solid/puzzle-piece.svg new file mode 100644 index 0000000..3b3d09b --- /dev/null +++ b/resources/fontawesome/svgs/solid/puzzle-piece.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/q.svg b/resources/fontawesome/svgs/solid/q.svg new file mode 100644 index 0000000..72b7fa4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/q.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/qrcode.svg b/resources/fontawesome/svgs/solid/qrcode.svg new file mode 100644 index 0000000..b18c9de --- /dev/null +++ b/resources/fontawesome/svgs/solid/qrcode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/question.svg b/resources/fontawesome/svgs/solid/question.svg new file mode 100644 index 0000000..e4f9889 --- /dev/null +++ b/resources/fontawesome/svgs/solid/question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/quote-left.svg b/resources/fontawesome/svgs/solid/quote-left.svg new file mode 100644 index 0000000..a07ef22 --- /dev/null +++ b/resources/fontawesome/svgs/solid/quote-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/quote-right.svg b/resources/fontawesome/svgs/solid/quote-right.svg new file mode 100644 index 0000000..7308a13 --- /dev/null +++ b/resources/fontawesome/svgs/solid/quote-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/r.svg b/resources/fontawesome/svgs/solid/r.svg new file mode 100644 index 0000000..56b279e --- /dev/null +++ b/resources/fontawesome/svgs/solid/r.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/radiation.svg b/resources/fontawesome/svgs/solid/radiation.svg new file mode 100644 index 0000000..e77a68b --- /dev/null +++ b/resources/fontawesome/svgs/solid/radiation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/radio.svg b/resources/fontawesome/svgs/solid/radio.svg new file mode 100644 index 0000000..7eb1038 --- /dev/null +++ b/resources/fontawesome/svgs/solid/radio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/rainbow.svg b/resources/fontawesome/svgs/solid/rainbow.svg new file mode 100644 index 0000000..9e5ac19 --- /dev/null +++ b/resources/fontawesome/svgs/solid/rainbow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ranking-star.svg b/resources/fontawesome/svgs/solid/ranking-star.svg new file mode 100644 index 0000000..a87eb89 --- /dev/null +++ b/resources/fontawesome/svgs/solid/ranking-star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/receipt.svg b/resources/fontawesome/svgs/solid/receipt.svg new file mode 100644 index 0000000..74ec154 --- /dev/null +++ b/resources/fontawesome/svgs/solid/receipt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/record-vinyl.svg b/resources/fontawesome/svgs/solid/record-vinyl.svg new file mode 100644 index 0000000..b56ac01 --- /dev/null +++ b/resources/fontawesome/svgs/solid/record-vinyl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/rectangle-ad.svg b/resources/fontawesome/svgs/solid/rectangle-ad.svg new file mode 100644 index 0000000..f827dcb --- /dev/null +++ b/resources/fontawesome/svgs/solid/rectangle-ad.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/rectangle-list.svg b/resources/fontawesome/svgs/solid/rectangle-list.svg new file mode 100644 index 0000000..92ae185 --- /dev/null +++ b/resources/fontawesome/svgs/solid/rectangle-list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/rectangle-xmark.svg b/resources/fontawesome/svgs/solid/rectangle-xmark.svg new file mode 100644 index 0000000..791225c --- /dev/null +++ b/resources/fontawesome/svgs/solid/rectangle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/recycle.svg b/resources/fontawesome/svgs/solid/recycle.svg new file mode 100644 index 0000000..5e2837e --- /dev/null +++ b/resources/fontawesome/svgs/solid/recycle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/registered.svg b/resources/fontawesome/svgs/solid/registered.svg new file mode 100644 index 0000000..a68c8d1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/registered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/repeat.svg b/resources/fontawesome/svgs/solid/repeat.svg new file mode 100644 index 0000000..74b83c5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/repeat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/reply-all.svg b/resources/fontawesome/svgs/solid/reply-all.svg new file mode 100644 index 0000000..795f93e --- /dev/null +++ b/resources/fontawesome/svgs/solid/reply-all.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/reply.svg b/resources/fontawesome/svgs/solid/reply.svg new file mode 100644 index 0000000..19cccdf --- /dev/null +++ b/resources/fontawesome/svgs/solid/reply.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/republican.svg b/resources/fontawesome/svgs/solid/republican.svg new file mode 100644 index 0000000..5077e9c --- /dev/null +++ b/resources/fontawesome/svgs/solid/republican.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/restroom.svg b/resources/fontawesome/svgs/solid/restroom.svg new file mode 100644 index 0000000..5634ed4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/restroom.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/retweet.svg b/resources/fontawesome/svgs/solid/retweet.svg new file mode 100644 index 0000000..e57fdb4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/retweet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ribbon.svg b/resources/fontawesome/svgs/solid/ribbon.svg new file mode 100644 index 0000000..0932765 --- /dev/null +++ b/resources/fontawesome/svgs/solid/ribbon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/right-from-bracket.svg b/resources/fontawesome/svgs/solid/right-from-bracket.svg new file mode 100644 index 0000000..1c4d485 --- /dev/null +++ b/resources/fontawesome/svgs/solid/right-from-bracket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/right-left.svg b/resources/fontawesome/svgs/solid/right-left.svg new file mode 100644 index 0000000..a39811b --- /dev/null +++ b/resources/fontawesome/svgs/solid/right-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/right-long.svg b/resources/fontawesome/svgs/solid/right-long.svg new file mode 100644 index 0000000..11853ce --- /dev/null +++ b/resources/fontawesome/svgs/solid/right-long.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/right-to-bracket.svg b/resources/fontawesome/svgs/solid/right-to-bracket.svg new file mode 100644 index 0000000..33b7e18 --- /dev/null +++ b/resources/fontawesome/svgs/solid/right-to-bracket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ring.svg b/resources/fontawesome/svgs/solid/ring.svg new file mode 100644 index 0000000..c029064 --- /dev/null +++ b/resources/fontawesome/svgs/solid/ring.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/road-barrier.svg b/resources/fontawesome/svgs/solid/road-barrier.svg new file mode 100644 index 0000000..6c00b46 --- /dev/null +++ b/resources/fontawesome/svgs/solid/road-barrier.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/road-bridge.svg b/resources/fontawesome/svgs/solid/road-bridge.svg new file mode 100644 index 0000000..15a7972 --- /dev/null +++ b/resources/fontawesome/svgs/solid/road-bridge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/road-circle-check.svg b/resources/fontawesome/svgs/solid/road-circle-check.svg new file mode 100644 index 0000000..1c9a7aa --- /dev/null +++ b/resources/fontawesome/svgs/solid/road-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/road-circle-exclamation.svg b/resources/fontawesome/svgs/solid/road-circle-exclamation.svg new file mode 100644 index 0000000..18561e7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/road-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/road-circle-xmark.svg b/resources/fontawesome/svgs/solid/road-circle-xmark.svg new file mode 100644 index 0000000..78542d8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/road-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/road-lock.svg b/resources/fontawesome/svgs/solid/road-lock.svg new file mode 100644 index 0000000..1ddd46b --- /dev/null +++ b/resources/fontawesome/svgs/solid/road-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/road-spikes.svg b/resources/fontawesome/svgs/solid/road-spikes.svg new file mode 100644 index 0000000..065a42a --- /dev/null +++ b/resources/fontawesome/svgs/solid/road-spikes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/road.svg b/resources/fontawesome/svgs/solid/road.svg new file mode 100644 index 0000000..4e43bd4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/road.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/robot.svg b/resources/fontawesome/svgs/solid/robot.svg new file mode 100644 index 0000000..3312089 --- /dev/null +++ b/resources/fontawesome/svgs/solid/robot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/rocket.svg b/resources/fontawesome/svgs/solid/rocket.svg new file mode 100644 index 0000000..44e0746 --- /dev/null +++ b/resources/fontawesome/svgs/solid/rocket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/rotate-left.svg b/resources/fontawesome/svgs/solid/rotate-left.svg new file mode 100644 index 0000000..280287b --- /dev/null +++ b/resources/fontawesome/svgs/solid/rotate-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/rotate-right.svg b/resources/fontawesome/svgs/solid/rotate-right.svg new file mode 100644 index 0000000..39ad71e --- /dev/null +++ b/resources/fontawesome/svgs/solid/rotate-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/rotate.svg b/resources/fontawesome/svgs/solid/rotate.svg new file mode 100644 index 0000000..449fc6b --- /dev/null +++ b/resources/fontawesome/svgs/solid/rotate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/route.svg b/resources/fontawesome/svgs/solid/route.svg new file mode 100644 index 0000000..0088584 --- /dev/null +++ b/resources/fontawesome/svgs/solid/route.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/rss.svg b/resources/fontawesome/svgs/solid/rss.svg new file mode 100644 index 0000000..7473df3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ruble-sign.svg b/resources/fontawesome/svgs/solid/ruble-sign.svg new file mode 100644 index 0000000..2605229 --- /dev/null +++ b/resources/fontawesome/svgs/solid/ruble-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/rug.svg b/resources/fontawesome/svgs/solid/rug.svg new file mode 100644 index 0000000..8c25634 --- /dev/null +++ b/resources/fontawesome/svgs/solid/rug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ruler-combined.svg b/resources/fontawesome/svgs/solid/ruler-combined.svg new file mode 100644 index 0000000..e86ccb2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/ruler-combined.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ruler-horizontal.svg b/resources/fontawesome/svgs/solid/ruler-horizontal.svg new file mode 100644 index 0000000..96c71bf --- /dev/null +++ b/resources/fontawesome/svgs/solid/ruler-horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ruler-vertical.svg b/resources/fontawesome/svgs/solid/ruler-vertical.svg new file mode 100644 index 0000000..f34cd57 --- /dev/null +++ b/resources/fontawesome/svgs/solid/ruler-vertical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ruler.svg b/resources/fontawesome/svgs/solid/ruler.svg new file mode 100644 index 0000000..2402f03 --- /dev/null +++ b/resources/fontawesome/svgs/solid/ruler.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/rupee-sign.svg b/resources/fontawesome/svgs/solid/rupee-sign.svg new file mode 100644 index 0000000..b2187b9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/rupee-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/rupiah-sign.svg b/resources/fontawesome/svgs/solid/rupiah-sign.svg new file mode 100644 index 0000000..8290184 --- /dev/null +++ b/resources/fontawesome/svgs/solid/rupiah-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/s.svg b/resources/fontawesome/svgs/solid/s.svg new file mode 100644 index 0000000..08ac4aa --- /dev/null +++ b/resources/fontawesome/svgs/solid/s.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/sack-dollar.svg b/resources/fontawesome/svgs/solid/sack-dollar.svg new file mode 100644 index 0000000..ae32d68 --- /dev/null +++ b/resources/fontawesome/svgs/solid/sack-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/sack-xmark.svg b/resources/fontawesome/svgs/solid/sack-xmark.svg new file mode 100644 index 0000000..c8a8449 --- /dev/null +++ b/resources/fontawesome/svgs/solid/sack-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/sailboat.svg b/resources/fontawesome/svgs/solid/sailboat.svg new file mode 100644 index 0000000..9861da5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/sailboat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/satellite-dish.svg b/resources/fontawesome/svgs/solid/satellite-dish.svg new file mode 100644 index 0000000..70f28dd --- /dev/null +++ b/resources/fontawesome/svgs/solid/satellite-dish.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/satellite.svg b/resources/fontawesome/svgs/solid/satellite.svg new file mode 100644 index 0000000..49c6de5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/satellite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/scale-balanced.svg b/resources/fontawesome/svgs/solid/scale-balanced.svg new file mode 100644 index 0000000..1b17106 --- /dev/null +++ b/resources/fontawesome/svgs/solid/scale-balanced.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/scale-unbalanced-flip.svg b/resources/fontawesome/svgs/solid/scale-unbalanced-flip.svg new file mode 100644 index 0000000..40b85f8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/scale-unbalanced-flip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/scale-unbalanced.svg b/resources/fontawesome/svgs/solid/scale-unbalanced.svg new file mode 100644 index 0000000..67dba9b --- /dev/null +++ b/resources/fontawesome/svgs/solid/scale-unbalanced.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/school-circle-check.svg b/resources/fontawesome/svgs/solid/school-circle-check.svg new file mode 100644 index 0000000..4356220 --- /dev/null +++ b/resources/fontawesome/svgs/solid/school-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/school-circle-exclamation.svg b/resources/fontawesome/svgs/solid/school-circle-exclamation.svg new file mode 100644 index 0000000..567a327 --- /dev/null +++ b/resources/fontawesome/svgs/solid/school-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/school-circle-xmark.svg b/resources/fontawesome/svgs/solid/school-circle-xmark.svg new file mode 100644 index 0000000..c25303b --- /dev/null +++ b/resources/fontawesome/svgs/solid/school-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/school-flag.svg b/resources/fontawesome/svgs/solid/school-flag.svg new file mode 100644 index 0000000..62b4375 --- /dev/null +++ b/resources/fontawesome/svgs/solid/school-flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/school-lock.svg b/resources/fontawesome/svgs/solid/school-lock.svg new file mode 100644 index 0000000..71d4790 --- /dev/null +++ b/resources/fontawesome/svgs/solid/school-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/school.svg b/resources/fontawesome/svgs/solid/school.svg new file mode 100644 index 0000000..9a5eda8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/school.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/scissors.svg b/resources/fontawesome/svgs/solid/scissors.svg new file mode 100644 index 0000000..727b2a8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/scissors.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/screwdriver-wrench.svg b/resources/fontawesome/svgs/solid/screwdriver-wrench.svg new file mode 100644 index 0000000..e5a848c --- /dev/null +++ b/resources/fontawesome/svgs/solid/screwdriver-wrench.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/screwdriver.svg b/resources/fontawesome/svgs/solid/screwdriver.svg new file mode 100644 index 0000000..4674aac --- /dev/null +++ b/resources/fontawesome/svgs/solid/screwdriver.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/scroll-torah.svg b/resources/fontawesome/svgs/solid/scroll-torah.svg new file mode 100644 index 0000000..0c3fe2f --- /dev/null +++ b/resources/fontawesome/svgs/solid/scroll-torah.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/scroll.svg b/resources/fontawesome/svgs/solid/scroll.svg new file mode 100644 index 0000000..615bad9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/scroll.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/sd-card.svg b/resources/fontawesome/svgs/solid/sd-card.svg new file mode 100644 index 0000000..1d7e79b --- /dev/null +++ b/resources/fontawesome/svgs/solid/sd-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/section.svg b/resources/fontawesome/svgs/solid/section.svg new file mode 100644 index 0000000..047cd5e --- /dev/null +++ b/resources/fontawesome/svgs/solid/section.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/seedling.svg b/resources/fontawesome/svgs/solid/seedling.svg new file mode 100644 index 0000000..4da904d --- /dev/null +++ b/resources/fontawesome/svgs/solid/seedling.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/server.svg b/resources/fontawesome/svgs/solid/server.svg new file mode 100644 index 0000000..cf226ce --- /dev/null +++ b/resources/fontawesome/svgs/solid/server.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/shapes.svg b/resources/fontawesome/svgs/solid/shapes.svg new file mode 100644 index 0000000..0cd9abb --- /dev/null +++ b/resources/fontawesome/svgs/solid/shapes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/share-from-square.svg b/resources/fontawesome/svgs/solid/share-from-square.svg new file mode 100644 index 0000000..6c5886d --- /dev/null +++ b/resources/fontawesome/svgs/solid/share-from-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/share-nodes.svg b/resources/fontawesome/svgs/solid/share-nodes.svg new file mode 100644 index 0000000..d0429bb --- /dev/null +++ b/resources/fontawesome/svgs/solid/share-nodes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/share.svg b/resources/fontawesome/svgs/solid/share.svg new file mode 100644 index 0000000..c996ffa --- /dev/null +++ b/resources/fontawesome/svgs/solid/share.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/sheet-plastic.svg b/resources/fontawesome/svgs/solid/sheet-plastic.svg new file mode 100644 index 0000000..374b57c --- /dev/null +++ b/resources/fontawesome/svgs/solid/sheet-plastic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/shekel-sign.svg b/resources/fontawesome/svgs/solid/shekel-sign.svg new file mode 100644 index 0000000..92c9cb2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/shekel-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/shield-cat.svg b/resources/fontawesome/svgs/solid/shield-cat.svg new file mode 100644 index 0000000..6cf8c2c --- /dev/null +++ b/resources/fontawesome/svgs/solid/shield-cat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/shield-dog.svg b/resources/fontawesome/svgs/solid/shield-dog.svg new file mode 100644 index 0000000..e28a5ad --- /dev/null +++ b/resources/fontawesome/svgs/solid/shield-dog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/shield-halved.svg b/resources/fontawesome/svgs/solid/shield-halved.svg new file mode 100644 index 0000000..fbdb321 --- /dev/null +++ b/resources/fontawesome/svgs/solid/shield-halved.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/shield-heart.svg b/resources/fontawesome/svgs/solid/shield-heart.svg new file mode 100644 index 0000000..495900a --- /dev/null +++ b/resources/fontawesome/svgs/solid/shield-heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/shield-virus.svg b/resources/fontawesome/svgs/solid/shield-virus.svg new file mode 100644 index 0000000..57a21fd --- /dev/null +++ b/resources/fontawesome/svgs/solid/shield-virus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/shield.svg b/resources/fontawesome/svgs/solid/shield.svg new file mode 100644 index 0000000..b44e882 --- /dev/null +++ b/resources/fontawesome/svgs/solid/shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ship.svg b/resources/fontawesome/svgs/solid/ship.svg new file mode 100644 index 0000000..44c85df --- /dev/null +++ b/resources/fontawesome/svgs/solid/ship.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/shirt.svg b/resources/fontawesome/svgs/solid/shirt.svg new file mode 100644 index 0000000..2c2302f --- /dev/null +++ b/resources/fontawesome/svgs/solid/shirt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/shoe-prints.svg b/resources/fontawesome/svgs/solid/shoe-prints.svg new file mode 100644 index 0000000..65105fe --- /dev/null +++ b/resources/fontawesome/svgs/solid/shoe-prints.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/shop-lock.svg b/resources/fontawesome/svgs/solid/shop-lock.svg new file mode 100644 index 0000000..970d8ee --- /dev/null +++ b/resources/fontawesome/svgs/solid/shop-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/shop-slash.svg b/resources/fontawesome/svgs/solid/shop-slash.svg new file mode 100644 index 0000000..660d7c0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/shop-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/shop.svg b/resources/fontawesome/svgs/solid/shop.svg new file mode 100644 index 0000000..8b13f11 --- /dev/null +++ b/resources/fontawesome/svgs/solid/shop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/shower.svg b/resources/fontawesome/svgs/solid/shower.svg new file mode 100644 index 0000000..db5ac36 --- /dev/null +++ b/resources/fontawesome/svgs/solid/shower.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/shrimp.svg b/resources/fontawesome/svgs/solid/shrimp.svg new file mode 100644 index 0000000..389a634 --- /dev/null +++ b/resources/fontawesome/svgs/solid/shrimp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/shuffle.svg b/resources/fontawesome/svgs/solid/shuffle.svg new file mode 100644 index 0000000..dd0df32 --- /dev/null +++ b/resources/fontawesome/svgs/solid/shuffle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/shuttle-space.svg b/resources/fontawesome/svgs/solid/shuttle-space.svg new file mode 100644 index 0000000..c1067b1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/shuttle-space.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/sign-hanging.svg b/resources/fontawesome/svgs/solid/sign-hanging.svg new file mode 100644 index 0000000..4775643 --- /dev/null +++ b/resources/fontawesome/svgs/solid/sign-hanging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/signal.svg b/resources/fontawesome/svgs/solid/signal.svg new file mode 100644 index 0000000..771becb --- /dev/null +++ b/resources/fontawesome/svgs/solid/signal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/signature.svg b/resources/fontawesome/svgs/solid/signature.svg new file mode 100644 index 0000000..43f0660 --- /dev/null +++ b/resources/fontawesome/svgs/solid/signature.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/signs-post.svg b/resources/fontawesome/svgs/solid/signs-post.svg new file mode 100644 index 0000000..c384307 --- /dev/null +++ b/resources/fontawesome/svgs/solid/signs-post.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/sim-card.svg b/resources/fontawesome/svgs/solid/sim-card.svg new file mode 100644 index 0000000..33dad9d --- /dev/null +++ b/resources/fontawesome/svgs/solid/sim-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/sink.svg b/resources/fontawesome/svgs/solid/sink.svg new file mode 100644 index 0000000..8ea1d91 --- /dev/null +++ b/resources/fontawesome/svgs/solid/sink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/sitemap.svg b/resources/fontawesome/svgs/solid/sitemap.svg new file mode 100644 index 0000000..13582bd --- /dev/null +++ b/resources/fontawesome/svgs/solid/sitemap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/skull-crossbones.svg b/resources/fontawesome/svgs/solid/skull-crossbones.svg new file mode 100644 index 0000000..1a4c953 --- /dev/null +++ b/resources/fontawesome/svgs/solid/skull-crossbones.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/skull.svg b/resources/fontawesome/svgs/solid/skull.svg new file mode 100644 index 0000000..0a224a6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/skull.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/slash.svg b/resources/fontawesome/svgs/solid/slash.svg new file mode 100644 index 0000000..7262c83 --- /dev/null +++ b/resources/fontawesome/svgs/solid/slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/sleigh.svg b/resources/fontawesome/svgs/solid/sleigh.svg new file mode 100644 index 0000000..ee1ea83 --- /dev/null +++ b/resources/fontawesome/svgs/solid/sleigh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/sliders.svg b/resources/fontawesome/svgs/solid/sliders.svg new file mode 100644 index 0000000..25b6839 --- /dev/null +++ b/resources/fontawesome/svgs/solid/sliders.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/smog.svg b/resources/fontawesome/svgs/solid/smog.svg new file mode 100644 index 0000000..21f4cdd --- /dev/null +++ b/resources/fontawesome/svgs/solid/smog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/smoking.svg b/resources/fontawesome/svgs/solid/smoking.svg new file mode 100644 index 0000000..a1ad4f0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/smoking.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/snowflake.svg b/resources/fontawesome/svgs/solid/snowflake.svg new file mode 100644 index 0000000..b4b8a44 --- /dev/null +++ b/resources/fontawesome/svgs/solid/snowflake.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/snowman.svg b/resources/fontawesome/svgs/solid/snowman.svg new file mode 100644 index 0000000..44113d1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/snowman.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/snowplow.svg b/resources/fontawesome/svgs/solid/snowplow.svg new file mode 100644 index 0000000..6871b1f --- /dev/null +++ b/resources/fontawesome/svgs/solid/snowplow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/soap.svg b/resources/fontawesome/svgs/solid/soap.svg new file mode 100644 index 0000000..9c228ba --- /dev/null +++ b/resources/fontawesome/svgs/solid/soap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/socks.svg b/resources/fontawesome/svgs/solid/socks.svg new file mode 100644 index 0000000..8aafe9a --- /dev/null +++ b/resources/fontawesome/svgs/solid/socks.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/solar-panel.svg b/resources/fontawesome/svgs/solid/solar-panel.svg new file mode 100644 index 0000000..80ae3cd --- /dev/null +++ b/resources/fontawesome/svgs/solid/solar-panel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/sort-down.svg b/resources/fontawesome/svgs/solid/sort-down.svg new file mode 100644 index 0000000..dd2d592 --- /dev/null +++ b/resources/fontawesome/svgs/solid/sort-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/sort-up.svg b/resources/fontawesome/svgs/solid/sort-up.svg new file mode 100644 index 0000000..610cd9b --- /dev/null +++ b/resources/fontawesome/svgs/solid/sort-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/sort.svg b/resources/fontawesome/svgs/solid/sort.svg new file mode 100644 index 0000000..d4a891c --- /dev/null +++ b/resources/fontawesome/svgs/solid/sort.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/spa.svg b/resources/fontawesome/svgs/solid/spa.svg new file mode 100644 index 0000000..80ba2a7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/spa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/spaghetti-monster-flying.svg b/resources/fontawesome/svgs/solid/spaghetti-monster-flying.svg new file mode 100644 index 0000000..7639b9a --- /dev/null +++ b/resources/fontawesome/svgs/solid/spaghetti-monster-flying.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/spell-check.svg b/resources/fontawesome/svgs/solid/spell-check.svg new file mode 100644 index 0000000..9ceeb8a --- /dev/null +++ b/resources/fontawesome/svgs/solid/spell-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/spider.svg b/resources/fontawesome/svgs/solid/spider.svg new file mode 100644 index 0000000..7d100c1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/spider.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/spinner.svg b/resources/fontawesome/svgs/solid/spinner.svg new file mode 100644 index 0000000..58c0fe0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/spinner.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/splotch.svg b/resources/fontawesome/svgs/solid/splotch.svg new file mode 100644 index 0000000..d7b4b60 --- /dev/null +++ b/resources/fontawesome/svgs/solid/splotch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/spoon.svg b/resources/fontawesome/svgs/solid/spoon.svg new file mode 100644 index 0000000..f06d9ef --- /dev/null +++ b/resources/fontawesome/svgs/solid/spoon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/spray-can-sparkles.svg b/resources/fontawesome/svgs/solid/spray-can-sparkles.svg new file mode 100644 index 0000000..2748293 --- /dev/null +++ b/resources/fontawesome/svgs/solid/spray-can-sparkles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/spray-can.svg b/resources/fontawesome/svgs/solid/spray-can.svg new file mode 100644 index 0000000..5bbe214 --- /dev/null +++ b/resources/fontawesome/svgs/solid/spray-can.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-arrow-up-right.svg b/resources/fontawesome/svgs/solid/square-arrow-up-right.svg new file mode 100644 index 0000000..4720e87 --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-arrow-up-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-caret-down.svg b/resources/fontawesome/svgs/solid/square-caret-down.svg new file mode 100644 index 0000000..e28244f --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-caret-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-caret-left.svg b/resources/fontawesome/svgs/solid/square-caret-left.svg new file mode 100644 index 0000000..735bc96 --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-caret-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-caret-right.svg b/resources/fontawesome/svgs/solid/square-caret-right.svg new file mode 100644 index 0000000..d733ded --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-caret-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-caret-up.svg b/resources/fontawesome/svgs/solid/square-caret-up.svg new file mode 100644 index 0000000..ace78d2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-caret-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-check.svg b/resources/fontawesome/svgs/solid/square-check.svg new file mode 100644 index 0000000..9a74616 --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-envelope.svg b/resources/fontawesome/svgs/solid/square-envelope.svg new file mode 100644 index 0000000..e5a0070 --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-envelope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-full.svg b/resources/fontawesome/svgs/solid/square-full.svg new file mode 100644 index 0000000..7539948 --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-full.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-h.svg b/resources/fontawesome/svgs/solid/square-h.svg new file mode 100644 index 0000000..496d5b4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-h.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-minus.svg b/resources/fontawesome/svgs/solid/square-minus.svg new file mode 100644 index 0000000..44b0f8d --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-nfi.svg b/resources/fontawesome/svgs/solid/square-nfi.svg new file mode 100644 index 0000000..be087d7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-nfi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-parking.svg b/resources/fontawesome/svgs/solid/square-parking.svg new file mode 100644 index 0000000..b5d298a --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-parking.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-pen.svg b/resources/fontawesome/svgs/solid/square-pen.svg new file mode 100644 index 0000000..b414f05 --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-pen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-person-confined.svg b/resources/fontawesome/svgs/solid/square-person-confined.svg new file mode 100644 index 0000000..423d10a --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-person-confined.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-phone-flip.svg b/resources/fontawesome/svgs/solid/square-phone-flip.svg new file mode 100644 index 0000000..298b701 --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-phone-flip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-phone.svg b/resources/fontawesome/svgs/solid/square-phone.svg new file mode 100644 index 0000000..999d19c --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-plus.svg b/resources/fontawesome/svgs/solid/square-plus.svg new file mode 100644 index 0000000..026ca84 --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-poll-horizontal.svg b/resources/fontawesome/svgs/solid/square-poll-horizontal.svg new file mode 100644 index 0000000..45fbac5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-poll-horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-poll-vertical.svg b/resources/fontawesome/svgs/solid/square-poll-vertical.svg new file mode 100644 index 0000000..b19fb14 --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-poll-vertical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-root-variable.svg b/resources/fontawesome/svgs/solid/square-root-variable.svg new file mode 100644 index 0000000..1400aac --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-root-variable.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-rss.svg b/resources/fontawesome/svgs/solid/square-rss.svg new file mode 100644 index 0000000..21d048f --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-share-nodes.svg b/resources/fontawesome/svgs/solid/square-share-nodes.svg new file mode 100644 index 0000000..da2ea54 --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-share-nodes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-up-right.svg b/resources/fontawesome/svgs/solid/square-up-right.svg new file mode 100644 index 0000000..511faeb --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-up-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-virus.svg b/resources/fontawesome/svgs/solid/square-virus.svg new file mode 100644 index 0000000..8a9ff11 --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-virus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square-xmark.svg b/resources/fontawesome/svgs/solid/square-xmark.svg new file mode 100644 index 0000000..6125674 --- /dev/null +++ b/resources/fontawesome/svgs/solid/square-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/square.svg b/resources/fontawesome/svgs/solid/square.svg new file mode 100644 index 0000000..004bc11 --- /dev/null +++ b/resources/fontawesome/svgs/solid/square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/staff-snake.svg b/resources/fontawesome/svgs/solid/staff-snake.svg new file mode 100644 index 0000000..3d29c12 --- /dev/null +++ b/resources/fontawesome/svgs/solid/staff-snake.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/stairs.svg b/resources/fontawesome/svgs/solid/stairs.svg new file mode 100644 index 0000000..e3138e1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/stairs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/stamp.svg b/resources/fontawesome/svgs/solid/stamp.svg new file mode 100644 index 0000000..c67f3dd --- /dev/null +++ b/resources/fontawesome/svgs/solid/stamp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/stapler.svg b/resources/fontawesome/svgs/solid/stapler.svg new file mode 100644 index 0000000..e71a1d5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/stapler.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/star-and-crescent.svg b/resources/fontawesome/svgs/solid/star-and-crescent.svg new file mode 100644 index 0000000..12ad577 --- /dev/null +++ b/resources/fontawesome/svgs/solid/star-and-crescent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/star-half-stroke.svg b/resources/fontawesome/svgs/solid/star-half-stroke.svg new file mode 100644 index 0000000..d9cd6e7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/star-half-stroke.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/star-half.svg b/resources/fontawesome/svgs/solid/star-half.svg new file mode 100644 index 0000000..d4501ad --- /dev/null +++ b/resources/fontawesome/svgs/solid/star-half.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/star-of-david.svg b/resources/fontawesome/svgs/solid/star-of-david.svg new file mode 100644 index 0000000..752d0aa --- /dev/null +++ b/resources/fontawesome/svgs/solid/star-of-david.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/star-of-life.svg b/resources/fontawesome/svgs/solid/star-of-life.svg new file mode 100644 index 0000000..1b00b5e --- /dev/null +++ b/resources/fontawesome/svgs/solid/star-of-life.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/star.svg b/resources/fontawesome/svgs/solid/star.svg new file mode 100644 index 0000000..7f6d6c6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/sterling-sign.svg b/resources/fontawesome/svgs/solid/sterling-sign.svg new file mode 100644 index 0000000..d9fb0b0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/sterling-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/stethoscope.svg b/resources/fontawesome/svgs/solid/stethoscope.svg new file mode 100644 index 0000000..c66547b --- /dev/null +++ b/resources/fontawesome/svgs/solid/stethoscope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/stop.svg b/resources/fontawesome/svgs/solid/stop.svg new file mode 100644 index 0000000..3d4b429 --- /dev/null +++ b/resources/fontawesome/svgs/solid/stop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/stopwatch-20.svg b/resources/fontawesome/svgs/solid/stopwatch-20.svg new file mode 100644 index 0000000..4613208 --- /dev/null +++ b/resources/fontawesome/svgs/solid/stopwatch-20.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/stopwatch.svg b/resources/fontawesome/svgs/solid/stopwatch.svg new file mode 100644 index 0000000..c5b5cef --- /dev/null +++ b/resources/fontawesome/svgs/solid/stopwatch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/store-slash.svg b/resources/fontawesome/svgs/solid/store-slash.svg new file mode 100644 index 0000000..27ef7b6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/store-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/store.svg b/resources/fontawesome/svgs/solid/store.svg new file mode 100644 index 0000000..44a2ffa --- /dev/null +++ b/resources/fontawesome/svgs/solid/store.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/street-view.svg b/resources/fontawesome/svgs/solid/street-view.svg new file mode 100644 index 0000000..16781cc --- /dev/null +++ b/resources/fontawesome/svgs/solid/street-view.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/strikethrough.svg b/resources/fontawesome/svgs/solid/strikethrough.svg new file mode 100644 index 0000000..387a464 --- /dev/null +++ b/resources/fontawesome/svgs/solid/strikethrough.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/stroopwafel.svg b/resources/fontawesome/svgs/solid/stroopwafel.svg new file mode 100644 index 0000000..18d970c --- /dev/null +++ b/resources/fontawesome/svgs/solid/stroopwafel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/subscript.svg b/resources/fontawesome/svgs/solid/subscript.svg new file mode 100644 index 0000000..b69c9ba --- /dev/null +++ b/resources/fontawesome/svgs/solid/subscript.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/suitcase-medical.svg b/resources/fontawesome/svgs/solid/suitcase-medical.svg new file mode 100644 index 0000000..be64391 --- /dev/null +++ b/resources/fontawesome/svgs/solid/suitcase-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/suitcase-rolling.svg b/resources/fontawesome/svgs/solid/suitcase-rolling.svg new file mode 100644 index 0000000..b38ce7f --- /dev/null +++ b/resources/fontawesome/svgs/solid/suitcase-rolling.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/suitcase.svg b/resources/fontawesome/svgs/solid/suitcase.svg new file mode 100644 index 0000000..90a4670 --- /dev/null +++ b/resources/fontawesome/svgs/solid/suitcase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/sun-plant-wilt.svg b/resources/fontawesome/svgs/solid/sun-plant-wilt.svg new file mode 100644 index 0000000..cd0e506 --- /dev/null +++ b/resources/fontawesome/svgs/solid/sun-plant-wilt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/sun.svg b/resources/fontawesome/svgs/solid/sun.svg new file mode 100644 index 0000000..da53fbd --- /dev/null +++ b/resources/fontawesome/svgs/solid/sun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/superscript.svg b/resources/fontawesome/svgs/solid/superscript.svg new file mode 100644 index 0000000..d27495b --- /dev/null +++ b/resources/fontawesome/svgs/solid/superscript.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/swatchbook.svg b/resources/fontawesome/svgs/solid/swatchbook.svg new file mode 100644 index 0000000..f206cca --- /dev/null +++ b/resources/fontawesome/svgs/solid/swatchbook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/synagogue.svg b/resources/fontawesome/svgs/solid/synagogue.svg new file mode 100644 index 0000000..be61956 --- /dev/null +++ b/resources/fontawesome/svgs/solid/synagogue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/syringe.svg b/resources/fontawesome/svgs/solid/syringe.svg new file mode 100644 index 0000000..6712ffd --- /dev/null +++ b/resources/fontawesome/svgs/solid/syringe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/t.svg b/resources/fontawesome/svgs/solid/t.svg new file mode 100644 index 0000000..cca044a --- /dev/null +++ b/resources/fontawesome/svgs/solid/t.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/table-cells-column-lock.svg b/resources/fontawesome/svgs/solid/table-cells-column-lock.svg new file mode 100644 index 0000000..861898c --- /dev/null +++ b/resources/fontawesome/svgs/solid/table-cells-column-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/table-cells-large.svg b/resources/fontawesome/svgs/solid/table-cells-large.svg new file mode 100644 index 0000000..c028875 --- /dev/null +++ b/resources/fontawesome/svgs/solid/table-cells-large.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/table-cells-row-lock.svg b/resources/fontawesome/svgs/solid/table-cells-row-lock.svg new file mode 100644 index 0000000..876f5e1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/table-cells-row-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/table-cells.svg b/resources/fontawesome/svgs/solid/table-cells.svg new file mode 100644 index 0000000..a301bfc --- /dev/null +++ b/resources/fontawesome/svgs/solid/table-cells.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/table-columns.svg b/resources/fontawesome/svgs/solid/table-columns.svg new file mode 100644 index 0000000..4ab62e5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/table-columns.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/table-list.svg b/resources/fontawesome/svgs/solid/table-list.svg new file mode 100644 index 0000000..90d13fc --- /dev/null +++ b/resources/fontawesome/svgs/solid/table-list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/table-tennis-paddle-ball.svg b/resources/fontawesome/svgs/solid/table-tennis-paddle-ball.svg new file mode 100644 index 0000000..9d69f92 --- /dev/null +++ b/resources/fontawesome/svgs/solid/table-tennis-paddle-ball.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/table.svg b/resources/fontawesome/svgs/solid/table.svg new file mode 100644 index 0000000..d1a5447 --- /dev/null +++ b/resources/fontawesome/svgs/solid/table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tablet-button.svg b/resources/fontawesome/svgs/solid/tablet-button.svg new file mode 100644 index 0000000..8c8e264 --- /dev/null +++ b/resources/fontawesome/svgs/solid/tablet-button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tablet-screen-button.svg b/resources/fontawesome/svgs/solid/tablet-screen-button.svg new file mode 100644 index 0000000..a8ae349 --- /dev/null +++ b/resources/fontawesome/svgs/solid/tablet-screen-button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tablet.svg b/resources/fontawesome/svgs/solid/tablet.svg new file mode 100644 index 0000000..cdb419a --- /dev/null +++ b/resources/fontawesome/svgs/solid/tablet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tablets.svg b/resources/fontawesome/svgs/solid/tablets.svg new file mode 100644 index 0000000..7ea433e --- /dev/null +++ b/resources/fontawesome/svgs/solid/tablets.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tachograph-digital.svg b/resources/fontawesome/svgs/solid/tachograph-digital.svg new file mode 100644 index 0000000..00a8608 --- /dev/null +++ b/resources/fontawesome/svgs/solid/tachograph-digital.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tag.svg b/resources/fontawesome/svgs/solid/tag.svg new file mode 100644 index 0000000..5a2e8e0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/tag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tags.svg b/resources/fontawesome/svgs/solid/tags.svg new file mode 100644 index 0000000..1d0c556 --- /dev/null +++ b/resources/fontawesome/svgs/solid/tags.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tape.svg b/resources/fontawesome/svgs/solid/tape.svg new file mode 100644 index 0000000..e254718 --- /dev/null +++ b/resources/fontawesome/svgs/solid/tape.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tarp-droplet.svg b/resources/fontawesome/svgs/solid/tarp-droplet.svg new file mode 100644 index 0000000..8834a35 --- /dev/null +++ b/resources/fontawesome/svgs/solid/tarp-droplet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tarp.svg b/resources/fontawesome/svgs/solid/tarp.svg new file mode 100644 index 0000000..2a6701f --- /dev/null +++ b/resources/fontawesome/svgs/solid/tarp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/taxi.svg b/resources/fontawesome/svgs/solid/taxi.svg new file mode 100644 index 0000000..b5f4eee --- /dev/null +++ b/resources/fontawesome/svgs/solid/taxi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/teeth-open.svg b/resources/fontawesome/svgs/solid/teeth-open.svg new file mode 100644 index 0000000..ac8706f --- /dev/null +++ b/resources/fontawesome/svgs/solid/teeth-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/teeth.svg b/resources/fontawesome/svgs/solid/teeth.svg new file mode 100644 index 0000000..a7e8743 --- /dev/null +++ b/resources/fontawesome/svgs/solid/teeth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/temperature-arrow-down.svg b/resources/fontawesome/svgs/solid/temperature-arrow-down.svg new file mode 100644 index 0000000..e963485 --- /dev/null +++ b/resources/fontawesome/svgs/solid/temperature-arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/temperature-arrow-up.svg b/resources/fontawesome/svgs/solid/temperature-arrow-up.svg new file mode 100644 index 0000000..c7a3e10 --- /dev/null +++ b/resources/fontawesome/svgs/solid/temperature-arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/temperature-empty.svg b/resources/fontawesome/svgs/solid/temperature-empty.svg new file mode 100644 index 0000000..855639a --- /dev/null +++ b/resources/fontawesome/svgs/solid/temperature-empty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/temperature-full.svg b/resources/fontawesome/svgs/solid/temperature-full.svg new file mode 100644 index 0000000..29eff0b --- /dev/null +++ b/resources/fontawesome/svgs/solid/temperature-full.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/temperature-half.svg b/resources/fontawesome/svgs/solid/temperature-half.svg new file mode 100644 index 0000000..7fc0fb2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/temperature-half.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/temperature-high.svg b/resources/fontawesome/svgs/solid/temperature-high.svg new file mode 100644 index 0000000..57103c0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/temperature-high.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/temperature-low.svg b/resources/fontawesome/svgs/solid/temperature-low.svg new file mode 100644 index 0000000..a821fb2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/temperature-low.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/temperature-quarter.svg b/resources/fontawesome/svgs/solid/temperature-quarter.svg new file mode 100644 index 0000000..2fb1c38 --- /dev/null +++ b/resources/fontawesome/svgs/solid/temperature-quarter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/temperature-three-quarters.svg b/resources/fontawesome/svgs/solid/temperature-three-quarters.svg new file mode 100644 index 0000000..c336816 --- /dev/null +++ b/resources/fontawesome/svgs/solid/temperature-three-quarters.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tenge-sign.svg b/resources/fontawesome/svgs/solid/tenge-sign.svg new file mode 100644 index 0000000..5191b9e --- /dev/null +++ b/resources/fontawesome/svgs/solid/tenge-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tent-arrow-down-to-line.svg b/resources/fontawesome/svgs/solid/tent-arrow-down-to-line.svg new file mode 100644 index 0000000..6e117c2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/tent-arrow-down-to-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tent-arrow-left-right.svg b/resources/fontawesome/svgs/solid/tent-arrow-left-right.svg new file mode 100644 index 0000000..1dee5c8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/tent-arrow-left-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tent-arrow-turn-left.svg b/resources/fontawesome/svgs/solid/tent-arrow-turn-left.svg new file mode 100644 index 0000000..ec974be --- /dev/null +++ b/resources/fontawesome/svgs/solid/tent-arrow-turn-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tent-arrows-down.svg b/resources/fontawesome/svgs/solid/tent-arrows-down.svg new file mode 100644 index 0000000..08f30ff --- /dev/null +++ b/resources/fontawesome/svgs/solid/tent-arrows-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tent.svg b/resources/fontawesome/svgs/solid/tent.svg new file mode 100644 index 0000000..7d32006 --- /dev/null +++ b/resources/fontawesome/svgs/solid/tent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tents.svg b/resources/fontawesome/svgs/solid/tents.svg new file mode 100644 index 0000000..8f6292f --- /dev/null +++ b/resources/fontawesome/svgs/solid/tents.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/terminal.svg b/resources/fontawesome/svgs/solid/terminal.svg new file mode 100644 index 0000000..e158952 --- /dev/null +++ b/resources/fontawesome/svgs/solid/terminal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/text-height.svg b/resources/fontawesome/svgs/solid/text-height.svg new file mode 100644 index 0000000..aec4791 --- /dev/null +++ b/resources/fontawesome/svgs/solid/text-height.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/text-slash.svg b/resources/fontawesome/svgs/solid/text-slash.svg new file mode 100644 index 0000000..2cb0524 --- /dev/null +++ b/resources/fontawesome/svgs/solid/text-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/text-width.svg b/resources/fontawesome/svgs/solid/text-width.svg new file mode 100644 index 0000000..8f6d7fd --- /dev/null +++ b/resources/fontawesome/svgs/solid/text-width.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/thermometer.svg b/resources/fontawesome/svgs/solid/thermometer.svg new file mode 100644 index 0000000..9ff009d --- /dev/null +++ b/resources/fontawesome/svgs/solid/thermometer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/thumbs-down.svg b/resources/fontawesome/svgs/solid/thumbs-down.svg new file mode 100644 index 0000000..b3964f7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/thumbs-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/thumbs-up.svg b/resources/fontawesome/svgs/solid/thumbs-up.svg new file mode 100644 index 0000000..74f68eb --- /dev/null +++ b/resources/fontawesome/svgs/solid/thumbs-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/thumbtack.svg b/resources/fontawesome/svgs/solid/thumbtack.svg new file mode 100644 index 0000000..72e7565 --- /dev/null +++ b/resources/fontawesome/svgs/solid/thumbtack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ticket-simple.svg b/resources/fontawesome/svgs/solid/ticket-simple.svg new file mode 100644 index 0000000..7b3be64 --- /dev/null +++ b/resources/fontawesome/svgs/solid/ticket-simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/ticket.svg b/resources/fontawesome/svgs/solid/ticket.svg new file mode 100644 index 0000000..fea290f --- /dev/null +++ b/resources/fontawesome/svgs/solid/ticket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/timeline.svg b/resources/fontawesome/svgs/solid/timeline.svg new file mode 100644 index 0000000..2452d50 --- /dev/null +++ b/resources/fontawesome/svgs/solid/timeline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/toggle-off.svg b/resources/fontawesome/svgs/solid/toggle-off.svg new file mode 100644 index 0000000..f83dd9e --- /dev/null +++ b/resources/fontawesome/svgs/solid/toggle-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/toggle-on.svg b/resources/fontawesome/svgs/solid/toggle-on.svg new file mode 100644 index 0000000..188c242 --- /dev/null +++ b/resources/fontawesome/svgs/solid/toggle-on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/toilet-paper-slash.svg b/resources/fontawesome/svgs/solid/toilet-paper-slash.svg new file mode 100644 index 0000000..49e8926 --- /dev/null +++ b/resources/fontawesome/svgs/solid/toilet-paper-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/toilet-paper.svg b/resources/fontawesome/svgs/solid/toilet-paper.svg new file mode 100644 index 0000000..76ab992 --- /dev/null +++ b/resources/fontawesome/svgs/solid/toilet-paper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/toilet-portable.svg b/resources/fontawesome/svgs/solid/toilet-portable.svg new file mode 100644 index 0000000..139e6b2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/toilet-portable.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/toilet.svg b/resources/fontawesome/svgs/solid/toilet.svg new file mode 100644 index 0000000..e54345d --- /dev/null +++ b/resources/fontawesome/svgs/solid/toilet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/toilets-portable.svg b/resources/fontawesome/svgs/solid/toilets-portable.svg new file mode 100644 index 0000000..48404f7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/toilets-portable.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/toolbox.svg b/resources/fontawesome/svgs/solid/toolbox.svg new file mode 100644 index 0000000..de5b327 --- /dev/null +++ b/resources/fontawesome/svgs/solid/toolbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tooth.svg b/resources/fontawesome/svgs/solid/tooth.svg new file mode 100644 index 0000000..11c5ddd --- /dev/null +++ b/resources/fontawesome/svgs/solid/tooth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/torii-gate.svg b/resources/fontawesome/svgs/solid/torii-gate.svg new file mode 100644 index 0000000..4fac1a8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/torii-gate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tornado.svg b/resources/fontawesome/svgs/solid/tornado.svg new file mode 100644 index 0000000..fbae365 --- /dev/null +++ b/resources/fontawesome/svgs/solid/tornado.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tower-broadcast.svg b/resources/fontawesome/svgs/solid/tower-broadcast.svg new file mode 100644 index 0000000..4b9729f --- /dev/null +++ b/resources/fontawesome/svgs/solid/tower-broadcast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tower-cell.svg b/resources/fontawesome/svgs/solid/tower-cell.svg new file mode 100644 index 0000000..1a010dd --- /dev/null +++ b/resources/fontawesome/svgs/solid/tower-cell.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tower-observation.svg b/resources/fontawesome/svgs/solid/tower-observation.svg new file mode 100644 index 0000000..315d244 --- /dev/null +++ b/resources/fontawesome/svgs/solid/tower-observation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tractor.svg b/resources/fontawesome/svgs/solid/tractor.svg new file mode 100644 index 0000000..bdaa54b --- /dev/null +++ b/resources/fontawesome/svgs/solid/tractor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/trademark.svg b/resources/fontawesome/svgs/solid/trademark.svg new file mode 100644 index 0000000..a8b2618 --- /dev/null +++ b/resources/fontawesome/svgs/solid/trademark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/traffic-light.svg b/resources/fontawesome/svgs/solid/traffic-light.svg new file mode 100644 index 0000000..ddcff17 --- /dev/null +++ b/resources/fontawesome/svgs/solid/traffic-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/trailer.svg b/resources/fontawesome/svgs/solid/trailer.svg new file mode 100644 index 0000000..6ff45ef --- /dev/null +++ b/resources/fontawesome/svgs/solid/trailer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/train-subway.svg b/resources/fontawesome/svgs/solid/train-subway.svg new file mode 100644 index 0000000..34ad246 --- /dev/null +++ b/resources/fontawesome/svgs/solid/train-subway.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/train-tram.svg b/resources/fontawesome/svgs/solid/train-tram.svg new file mode 100644 index 0000000..f3c113e --- /dev/null +++ b/resources/fontawesome/svgs/solid/train-tram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/train.svg b/resources/fontawesome/svgs/solid/train.svg new file mode 100644 index 0000000..7465ad2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/train.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/transgender.svg b/resources/fontawesome/svgs/solid/transgender.svg new file mode 100644 index 0000000..c139c98 --- /dev/null +++ b/resources/fontawesome/svgs/solid/transgender.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/trash-arrow-up.svg b/resources/fontawesome/svgs/solid/trash-arrow-up.svg new file mode 100644 index 0000000..d9e4da0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/trash-arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/trash-can-arrow-up.svg b/resources/fontawesome/svgs/solid/trash-can-arrow-up.svg new file mode 100644 index 0000000..a7612cf --- /dev/null +++ b/resources/fontawesome/svgs/solid/trash-can-arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/trash-can.svg b/resources/fontawesome/svgs/solid/trash-can.svg new file mode 100644 index 0000000..47d0ea1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/trash-can.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/trash.svg b/resources/fontawesome/svgs/solid/trash.svg new file mode 100644 index 0000000..ed5cf94 --- /dev/null +++ b/resources/fontawesome/svgs/solid/trash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tree-city.svg b/resources/fontawesome/svgs/solid/tree-city.svg new file mode 100644 index 0000000..d0c8d26 --- /dev/null +++ b/resources/fontawesome/svgs/solid/tree-city.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tree.svg b/resources/fontawesome/svgs/solid/tree.svg new file mode 100644 index 0000000..fafaad0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/tree.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/triangle-exclamation.svg b/resources/fontawesome/svgs/solid/triangle-exclamation.svg new file mode 100644 index 0000000..014ef5e --- /dev/null +++ b/resources/fontawesome/svgs/solid/triangle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/trophy.svg b/resources/fontawesome/svgs/solid/trophy.svg new file mode 100644 index 0000000..94bfe49 --- /dev/null +++ b/resources/fontawesome/svgs/solid/trophy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/trowel-bricks.svg b/resources/fontawesome/svgs/solid/trowel-bricks.svg new file mode 100644 index 0000000..31d95e2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/trowel-bricks.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/trowel.svg b/resources/fontawesome/svgs/solid/trowel.svg new file mode 100644 index 0000000..ff7a46f --- /dev/null +++ b/resources/fontawesome/svgs/solid/trowel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/truck-arrow-right.svg b/resources/fontawesome/svgs/solid/truck-arrow-right.svg new file mode 100644 index 0000000..efef2c3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/truck-arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/truck-droplet.svg b/resources/fontawesome/svgs/solid/truck-droplet.svg new file mode 100644 index 0000000..261a3fe --- /dev/null +++ b/resources/fontawesome/svgs/solid/truck-droplet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/truck-fast.svg b/resources/fontawesome/svgs/solid/truck-fast.svg new file mode 100644 index 0000000..77b400b --- /dev/null +++ b/resources/fontawesome/svgs/solid/truck-fast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/truck-field-un.svg b/resources/fontawesome/svgs/solid/truck-field-un.svg new file mode 100644 index 0000000..8715aef --- /dev/null +++ b/resources/fontawesome/svgs/solid/truck-field-un.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/truck-field.svg b/resources/fontawesome/svgs/solid/truck-field.svg new file mode 100644 index 0000000..7f4fb7b --- /dev/null +++ b/resources/fontawesome/svgs/solid/truck-field.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/truck-front.svg b/resources/fontawesome/svgs/solid/truck-front.svg new file mode 100644 index 0000000..855f8e5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/truck-front.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/truck-medical.svg b/resources/fontawesome/svgs/solid/truck-medical.svg new file mode 100644 index 0000000..1716161 --- /dev/null +++ b/resources/fontawesome/svgs/solid/truck-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/truck-monster.svg b/resources/fontawesome/svgs/solid/truck-monster.svg new file mode 100644 index 0000000..265758e --- /dev/null +++ b/resources/fontawesome/svgs/solid/truck-monster.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/truck-moving.svg b/resources/fontawesome/svgs/solid/truck-moving.svg new file mode 100644 index 0000000..16d627a --- /dev/null +++ b/resources/fontawesome/svgs/solid/truck-moving.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/truck-pickup.svg b/resources/fontawesome/svgs/solid/truck-pickup.svg new file mode 100644 index 0000000..58f39b6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/truck-pickup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/truck-plane.svg b/resources/fontawesome/svgs/solid/truck-plane.svg new file mode 100644 index 0000000..6e22edc --- /dev/null +++ b/resources/fontawesome/svgs/solid/truck-plane.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/truck-ramp-box.svg b/resources/fontawesome/svgs/solid/truck-ramp-box.svg new file mode 100644 index 0000000..f3602ce --- /dev/null +++ b/resources/fontawesome/svgs/solid/truck-ramp-box.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/truck.svg b/resources/fontawesome/svgs/solid/truck.svg new file mode 100644 index 0000000..5453b04 --- /dev/null +++ b/resources/fontawesome/svgs/solid/truck.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tty.svg b/resources/fontawesome/svgs/solid/tty.svg new file mode 100644 index 0000000..aa80493 --- /dev/null +++ b/resources/fontawesome/svgs/solid/tty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/turkish-lira-sign.svg b/resources/fontawesome/svgs/solid/turkish-lira-sign.svg new file mode 100644 index 0000000..45adbf8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/turkish-lira-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/turn-down.svg b/resources/fontawesome/svgs/solid/turn-down.svg new file mode 100644 index 0000000..8eb1ec3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/turn-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/turn-up.svg b/resources/fontawesome/svgs/solid/turn-up.svg new file mode 100644 index 0000000..3c14580 --- /dev/null +++ b/resources/fontawesome/svgs/solid/turn-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/tv.svg b/resources/fontawesome/svgs/solid/tv.svg new file mode 100644 index 0000000..eb2e445 --- /dev/null +++ b/resources/fontawesome/svgs/solid/tv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/u.svg b/resources/fontawesome/svgs/solid/u.svg new file mode 100644 index 0000000..0e64deb --- /dev/null +++ b/resources/fontawesome/svgs/solid/u.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/umbrella-beach.svg b/resources/fontawesome/svgs/solid/umbrella-beach.svg new file mode 100644 index 0000000..630e3e9 --- /dev/null +++ b/resources/fontawesome/svgs/solid/umbrella-beach.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/umbrella.svg b/resources/fontawesome/svgs/solid/umbrella.svg new file mode 100644 index 0000000..d89b595 --- /dev/null +++ b/resources/fontawesome/svgs/solid/umbrella.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/underline.svg b/resources/fontawesome/svgs/solid/underline.svg new file mode 100644 index 0000000..c1864b0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/underline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/universal-access.svg b/resources/fontawesome/svgs/solid/universal-access.svg new file mode 100644 index 0000000..893120f --- /dev/null +++ b/resources/fontawesome/svgs/solid/universal-access.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/unlock-keyhole.svg b/resources/fontawesome/svgs/solid/unlock-keyhole.svg new file mode 100644 index 0000000..a5b76f7 --- /dev/null +++ b/resources/fontawesome/svgs/solid/unlock-keyhole.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/unlock.svg b/resources/fontawesome/svgs/solid/unlock.svg new file mode 100644 index 0000000..ed1fea5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/unlock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/up-down-left-right.svg b/resources/fontawesome/svgs/solid/up-down-left-right.svg new file mode 100644 index 0000000..1363a20 --- /dev/null +++ b/resources/fontawesome/svgs/solid/up-down-left-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/up-down.svg b/resources/fontawesome/svgs/solid/up-down.svg new file mode 100644 index 0000000..c886f1d --- /dev/null +++ b/resources/fontawesome/svgs/solid/up-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/up-long.svg b/resources/fontawesome/svgs/solid/up-long.svg new file mode 100644 index 0000000..2a18576 --- /dev/null +++ b/resources/fontawesome/svgs/solid/up-long.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/up-right-and-down-left-from-center.svg b/resources/fontawesome/svgs/solid/up-right-and-down-left-from-center.svg new file mode 100644 index 0000000..6ee8064 --- /dev/null +++ b/resources/fontawesome/svgs/solid/up-right-and-down-left-from-center.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/up-right-from-square.svg b/resources/fontawesome/svgs/solid/up-right-from-square.svg new file mode 100644 index 0000000..b749492 --- /dev/null +++ b/resources/fontawesome/svgs/solid/up-right-from-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/upload.svg b/resources/fontawesome/svgs/solid/upload.svg new file mode 100644 index 0000000..b54b6a2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/upload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-astronaut.svg b/resources/fontawesome/svgs/solid/user-astronaut.svg new file mode 100644 index 0000000..a6bd6b4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-astronaut.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-check.svg b/resources/fontawesome/svgs/solid/user-check.svg new file mode 100644 index 0000000..99e1292 --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-clock.svg b/resources/fontawesome/svgs/solid/user-clock.svg new file mode 100644 index 0000000..4666e20 --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-clock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-doctor.svg b/resources/fontawesome/svgs/solid/user-doctor.svg new file mode 100644 index 0000000..d942803 --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-doctor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-gear.svg b/resources/fontawesome/svgs/solid/user-gear.svg new file mode 100644 index 0000000..51ee199 --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-gear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-graduate.svg b/resources/fontawesome/svgs/solid/user-graduate.svg new file mode 100644 index 0000000..ecf46ac --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-graduate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-group.svg b/resources/fontawesome/svgs/solid/user-group.svg new file mode 100644 index 0000000..7c28bff --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-injured.svg b/resources/fontawesome/svgs/solid/user-injured.svg new file mode 100644 index 0000000..d019c44 --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-injured.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-large-slash.svg b/resources/fontawesome/svgs/solid/user-large-slash.svg new file mode 100644 index 0000000..6b86548 --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-large-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-large.svg b/resources/fontawesome/svgs/solid/user-large.svg new file mode 100644 index 0000000..1dde314 --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-large.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-lock.svg b/resources/fontawesome/svgs/solid/user-lock.svg new file mode 100644 index 0000000..ace0185 --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-minus.svg b/resources/fontawesome/svgs/solid/user-minus.svg new file mode 100644 index 0000000..1b61d89 --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-ninja.svg b/resources/fontawesome/svgs/solid/user-ninja.svg new file mode 100644 index 0000000..5d91a49 --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-ninja.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-nurse.svg b/resources/fontawesome/svgs/solid/user-nurse.svg new file mode 100644 index 0000000..a0f6823 --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-nurse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-pen.svg b/resources/fontawesome/svgs/solid/user-pen.svg new file mode 100644 index 0000000..d0cd463 --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-pen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-plus.svg b/resources/fontawesome/svgs/solid/user-plus.svg new file mode 100644 index 0000000..aad9c27 --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-secret.svg b/resources/fontawesome/svgs/solid/user-secret.svg new file mode 100644 index 0000000..5100bb5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-secret.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-shield.svg b/resources/fontawesome/svgs/solid/user-shield.svg new file mode 100644 index 0000000..892335a --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-slash.svg b/resources/fontawesome/svgs/solid/user-slash.svg new file mode 100644 index 0000000..e2b1dd4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-tag.svg b/resources/fontawesome/svgs/solid/user-tag.svg new file mode 100644 index 0000000..a60f22f --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-tag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-tie.svg b/resources/fontawesome/svgs/solid/user-tie.svg new file mode 100644 index 0000000..870aad0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-tie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user-xmark.svg b/resources/fontawesome/svgs/solid/user-xmark.svg new file mode 100644 index 0000000..1ac4d67 --- /dev/null +++ b/resources/fontawesome/svgs/solid/user-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/user.svg b/resources/fontawesome/svgs/solid/user.svg new file mode 100644 index 0000000..ae4d9cc --- /dev/null +++ b/resources/fontawesome/svgs/solid/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/users-between-lines.svg b/resources/fontawesome/svgs/solid/users-between-lines.svg new file mode 100644 index 0000000..f113ed2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/users-between-lines.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/users-gear.svg b/resources/fontawesome/svgs/solid/users-gear.svg new file mode 100644 index 0000000..2d011c8 --- /dev/null +++ b/resources/fontawesome/svgs/solid/users-gear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/users-line.svg b/resources/fontawesome/svgs/solid/users-line.svg new file mode 100644 index 0000000..84ecd95 --- /dev/null +++ b/resources/fontawesome/svgs/solid/users-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/users-rays.svg b/resources/fontawesome/svgs/solid/users-rays.svg new file mode 100644 index 0000000..45f6b02 --- /dev/null +++ b/resources/fontawesome/svgs/solid/users-rays.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/users-rectangle.svg b/resources/fontawesome/svgs/solid/users-rectangle.svg new file mode 100644 index 0000000..5198d18 --- /dev/null +++ b/resources/fontawesome/svgs/solid/users-rectangle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/users-slash.svg b/resources/fontawesome/svgs/solid/users-slash.svg new file mode 100644 index 0000000..28c01d4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/users-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/users-viewfinder.svg b/resources/fontawesome/svgs/solid/users-viewfinder.svg new file mode 100644 index 0000000..b2b8b7a --- /dev/null +++ b/resources/fontawesome/svgs/solid/users-viewfinder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/users.svg b/resources/fontawesome/svgs/solid/users.svg new file mode 100644 index 0000000..3af4cc4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/users.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/utensils.svg b/resources/fontawesome/svgs/solid/utensils.svg new file mode 100644 index 0000000..760c677 --- /dev/null +++ b/resources/fontawesome/svgs/solid/utensils.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/v.svg b/resources/fontawesome/svgs/solid/v.svg new file mode 100644 index 0000000..4cda538 --- /dev/null +++ b/resources/fontawesome/svgs/solid/v.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/van-shuttle.svg b/resources/fontawesome/svgs/solid/van-shuttle.svg new file mode 100644 index 0000000..d5b7234 --- /dev/null +++ b/resources/fontawesome/svgs/solid/van-shuttle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/vault.svg b/resources/fontawesome/svgs/solid/vault.svg new file mode 100644 index 0000000..31ccc3b --- /dev/null +++ b/resources/fontawesome/svgs/solid/vault.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/vector-square.svg b/resources/fontawesome/svgs/solid/vector-square.svg new file mode 100644 index 0000000..a16c648 --- /dev/null +++ b/resources/fontawesome/svgs/solid/vector-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/venus-double.svg b/resources/fontawesome/svgs/solid/venus-double.svg new file mode 100644 index 0000000..ce7323f --- /dev/null +++ b/resources/fontawesome/svgs/solid/venus-double.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/venus-mars.svg b/resources/fontawesome/svgs/solid/venus-mars.svg new file mode 100644 index 0000000..e440c81 --- /dev/null +++ b/resources/fontawesome/svgs/solid/venus-mars.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/venus.svg b/resources/fontawesome/svgs/solid/venus.svg new file mode 100644 index 0000000..d47abed --- /dev/null +++ b/resources/fontawesome/svgs/solid/venus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/vest-patches.svg b/resources/fontawesome/svgs/solid/vest-patches.svg new file mode 100644 index 0000000..fdd3181 --- /dev/null +++ b/resources/fontawesome/svgs/solid/vest-patches.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/vest.svg b/resources/fontawesome/svgs/solid/vest.svg new file mode 100644 index 0000000..e0c702e --- /dev/null +++ b/resources/fontawesome/svgs/solid/vest.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/vial-circle-check.svg b/resources/fontawesome/svgs/solid/vial-circle-check.svg new file mode 100644 index 0000000..caa4ee6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/vial-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/vial-virus.svg b/resources/fontawesome/svgs/solid/vial-virus.svg new file mode 100644 index 0000000..a5b6da6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/vial-virus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/vial.svg b/resources/fontawesome/svgs/solid/vial.svg new file mode 100644 index 0000000..c760c41 --- /dev/null +++ b/resources/fontawesome/svgs/solid/vial.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/vials.svg b/resources/fontawesome/svgs/solid/vials.svg new file mode 100644 index 0000000..5f38b40 --- /dev/null +++ b/resources/fontawesome/svgs/solid/vials.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/video-slash.svg b/resources/fontawesome/svgs/solid/video-slash.svg new file mode 100644 index 0000000..d9c396c --- /dev/null +++ b/resources/fontawesome/svgs/solid/video-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/video.svg b/resources/fontawesome/svgs/solid/video.svg new file mode 100644 index 0000000..7d4e1f3 --- /dev/null +++ b/resources/fontawesome/svgs/solid/video.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/vihara.svg b/resources/fontawesome/svgs/solid/vihara.svg new file mode 100644 index 0000000..6d7233c --- /dev/null +++ b/resources/fontawesome/svgs/solid/vihara.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/virus-covid-slash.svg b/resources/fontawesome/svgs/solid/virus-covid-slash.svg new file mode 100644 index 0000000..a9bf263 --- /dev/null +++ b/resources/fontawesome/svgs/solid/virus-covid-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/virus-covid.svg b/resources/fontawesome/svgs/solid/virus-covid.svg new file mode 100644 index 0000000..b111f66 --- /dev/null +++ b/resources/fontawesome/svgs/solid/virus-covid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/virus-slash.svg b/resources/fontawesome/svgs/solid/virus-slash.svg new file mode 100644 index 0000000..b327ed0 --- /dev/null +++ b/resources/fontawesome/svgs/solid/virus-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/virus.svg b/resources/fontawesome/svgs/solid/virus.svg new file mode 100644 index 0000000..a7fbe27 --- /dev/null +++ b/resources/fontawesome/svgs/solid/virus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/viruses.svg b/resources/fontawesome/svgs/solid/viruses.svg new file mode 100644 index 0000000..59c262e --- /dev/null +++ b/resources/fontawesome/svgs/solid/viruses.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/voicemail.svg b/resources/fontawesome/svgs/solid/voicemail.svg new file mode 100644 index 0000000..3c39d87 --- /dev/null +++ b/resources/fontawesome/svgs/solid/voicemail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/volcano.svg b/resources/fontawesome/svgs/solid/volcano.svg new file mode 100644 index 0000000..3157700 --- /dev/null +++ b/resources/fontawesome/svgs/solid/volcano.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/volleyball.svg b/resources/fontawesome/svgs/solid/volleyball.svg new file mode 100644 index 0000000..a0ffe5f --- /dev/null +++ b/resources/fontawesome/svgs/solid/volleyball.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/volume-high.svg b/resources/fontawesome/svgs/solid/volume-high.svg new file mode 100644 index 0000000..71855b2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/volume-high.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/volume-low.svg b/resources/fontawesome/svgs/solid/volume-low.svg new file mode 100644 index 0000000..531e98d --- /dev/null +++ b/resources/fontawesome/svgs/solid/volume-low.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/volume-off.svg b/resources/fontawesome/svgs/solid/volume-off.svg new file mode 100644 index 0000000..4d06eec --- /dev/null +++ b/resources/fontawesome/svgs/solid/volume-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/volume-xmark.svg b/resources/fontawesome/svgs/solid/volume-xmark.svg new file mode 100644 index 0000000..82bb581 --- /dev/null +++ b/resources/fontawesome/svgs/solid/volume-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/vr-cardboard.svg b/resources/fontawesome/svgs/solid/vr-cardboard.svg new file mode 100644 index 0000000..4d0ca14 --- /dev/null +++ b/resources/fontawesome/svgs/solid/vr-cardboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/w.svg b/resources/fontawesome/svgs/solid/w.svg new file mode 100644 index 0000000..1f3f57b --- /dev/null +++ b/resources/fontawesome/svgs/solid/w.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/walkie-talkie.svg b/resources/fontawesome/svgs/solid/walkie-talkie.svg new file mode 100644 index 0000000..02bd516 --- /dev/null +++ b/resources/fontawesome/svgs/solid/walkie-talkie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/wallet.svg b/resources/fontawesome/svgs/solid/wallet.svg new file mode 100644 index 0000000..a256dd6 --- /dev/null +++ b/resources/fontawesome/svgs/solid/wallet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/wand-magic-sparkles.svg b/resources/fontawesome/svgs/solid/wand-magic-sparkles.svg new file mode 100644 index 0000000..0c4b481 --- /dev/null +++ b/resources/fontawesome/svgs/solid/wand-magic-sparkles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/wand-magic.svg b/resources/fontawesome/svgs/solid/wand-magic.svg new file mode 100644 index 0000000..cd8fec5 --- /dev/null +++ b/resources/fontawesome/svgs/solid/wand-magic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/wand-sparkles.svg b/resources/fontawesome/svgs/solid/wand-sparkles.svg new file mode 100644 index 0000000..02b192f --- /dev/null +++ b/resources/fontawesome/svgs/solid/wand-sparkles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/warehouse.svg b/resources/fontawesome/svgs/solid/warehouse.svg new file mode 100644 index 0000000..db90588 --- /dev/null +++ b/resources/fontawesome/svgs/solid/warehouse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/water-ladder.svg b/resources/fontawesome/svgs/solid/water-ladder.svg new file mode 100644 index 0000000..27efa49 --- /dev/null +++ b/resources/fontawesome/svgs/solid/water-ladder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/water.svg b/resources/fontawesome/svgs/solid/water.svg new file mode 100644 index 0000000..ea29f51 --- /dev/null +++ b/resources/fontawesome/svgs/solid/water.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/wave-square.svg b/resources/fontawesome/svgs/solid/wave-square.svg new file mode 100644 index 0000000..a905551 --- /dev/null +++ b/resources/fontawesome/svgs/solid/wave-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/weight-hanging.svg b/resources/fontawesome/svgs/solid/weight-hanging.svg new file mode 100644 index 0000000..d6d09eb --- /dev/null +++ b/resources/fontawesome/svgs/solid/weight-hanging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/weight-scale.svg b/resources/fontawesome/svgs/solid/weight-scale.svg new file mode 100644 index 0000000..1dd09d2 --- /dev/null +++ b/resources/fontawesome/svgs/solid/weight-scale.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/wheat-awn-circle-exclamation.svg b/resources/fontawesome/svgs/solid/wheat-awn-circle-exclamation.svg new file mode 100644 index 0000000..ded0c62 --- /dev/null +++ b/resources/fontawesome/svgs/solid/wheat-awn-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/wheat-awn.svg b/resources/fontawesome/svgs/solid/wheat-awn.svg new file mode 100644 index 0000000..244d741 --- /dev/null +++ b/resources/fontawesome/svgs/solid/wheat-awn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/wheelchair-move.svg b/resources/fontawesome/svgs/solid/wheelchair-move.svg new file mode 100644 index 0000000..cdcb66b --- /dev/null +++ b/resources/fontawesome/svgs/solid/wheelchair-move.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/wheelchair.svg b/resources/fontawesome/svgs/solid/wheelchair.svg new file mode 100644 index 0000000..8f3ba9a --- /dev/null +++ b/resources/fontawesome/svgs/solid/wheelchair.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/whiskey-glass.svg b/resources/fontawesome/svgs/solid/whiskey-glass.svg new file mode 100644 index 0000000..3641130 --- /dev/null +++ b/resources/fontawesome/svgs/solid/whiskey-glass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/wifi.svg b/resources/fontawesome/svgs/solid/wifi.svg new file mode 100644 index 0000000..533946b --- /dev/null +++ b/resources/fontawesome/svgs/solid/wifi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/wind.svg b/resources/fontawesome/svgs/solid/wind.svg new file mode 100644 index 0000000..0c40216 --- /dev/null +++ b/resources/fontawesome/svgs/solid/wind.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/window-maximize.svg b/resources/fontawesome/svgs/solid/window-maximize.svg new file mode 100644 index 0000000..2d558ff --- /dev/null +++ b/resources/fontawesome/svgs/solid/window-maximize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/window-minimize.svg b/resources/fontawesome/svgs/solid/window-minimize.svg new file mode 100644 index 0000000..001d11d --- /dev/null +++ b/resources/fontawesome/svgs/solid/window-minimize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/window-restore.svg b/resources/fontawesome/svgs/solid/window-restore.svg new file mode 100644 index 0000000..07731e1 --- /dev/null +++ b/resources/fontawesome/svgs/solid/window-restore.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/wine-bottle.svg b/resources/fontawesome/svgs/solid/wine-bottle.svg new file mode 100644 index 0000000..541d119 --- /dev/null +++ b/resources/fontawesome/svgs/solid/wine-bottle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/wine-glass-empty.svg b/resources/fontawesome/svgs/solid/wine-glass-empty.svg new file mode 100644 index 0000000..3150b47 --- /dev/null +++ b/resources/fontawesome/svgs/solid/wine-glass-empty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/wine-glass.svg b/resources/fontawesome/svgs/solid/wine-glass.svg new file mode 100644 index 0000000..e560f7b --- /dev/null +++ b/resources/fontawesome/svgs/solid/wine-glass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/won-sign.svg b/resources/fontawesome/svgs/solid/won-sign.svg new file mode 100644 index 0000000..aa6b23c --- /dev/null +++ b/resources/fontawesome/svgs/solid/won-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/worm.svg b/resources/fontawesome/svgs/solid/worm.svg new file mode 100644 index 0000000..2b0ef9f --- /dev/null +++ b/resources/fontawesome/svgs/solid/worm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/wrench.svg b/resources/fontawesome/svgs/solid/wrench.svg new file mode 100644 index 0000000..a0db05c --- /dev/null +++ b/resources/fontawesome/svgs/solid/wrench.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/x-ray.svg b/resources/fontawesome/svgs/solid/x-ray.svg new file mode 100644 index 0000000..a3b995f --- /dev/null +++ b/resources/fontawesome/svgs/solid/x-ray.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/x.svg b/resources/fontawesome/svgs/solid/x.svg new file mode 100644 index 0000000..18b441b --- /dev/null +++ b/resources/fontawesome/svgs/solid/x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/xmark.svg b/resources/fontawesome/svgs/solid/xmark.svg new file mode 100644 index 0000000..331cd75 --- /dev/null +++ b/resources/fontawesome/svgs/solid/xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/xmarks-lines.svg b/resources/fontawesome/svgs/solid/xmarks-lines.svg new file mode 100644 index 0000000..7af2144 --- /dev/null +++ b/resources/fontawesome/svgs/solid/xmarks-lines.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/y.svg b/resources/fontawesome/svgs/solid/y.svg new file mode 100644 index 0000000..c533b52 --- /dev/null +++ b/resources/fontawesome/svgs/solid/y.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/yen-sign.svg b/resources/fontawesome/svgs/solid/yen-sign.svg new file mode 100644 index 0000000..73eb394 --- /dev/null +++ b/resources/fontawesome/svgs/solid/yen-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/yin-yang.svg b/resources/fontawesome/svgs/solid/yin-yang.svg new file mode 100644 index 0000000..72899e4 --- /dev/null +++ b/resources/fontawesome/svgs/solid/yin-yang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/svgs/solid/z.svg b/resources/fontawesome/svgs/solid/z.svg new file mode 100644 index 0000000..97b59ae --- /dev/null +++ b/resources/fontawesome/svgs/solid/z.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/fontawesome/webfonts/fa-brands-400.ttf b/resources/fontawesome/webfonts/fa-brands-400.ttf new file mode 100644 index 0000000..1fbb1f7 Binary files /dev/null and b/resources/fontawesome/webfonts/fa-brands-400.ttf differ diff --git a/resources/fontawesome/webfonts/fa-brands-400.woff2 b/resources/fontawesome/webfonts/fa-brands-400.woff2 new file mode 100644 index 0000000..5d28021 Binary files /dev/null and b/resources/fontawesome/webfonts/fa-brands-400.woff2 differ diff --git a/resources/fontawesome/webfonts/fa-regular-400.ttf b/resources/fontawesome/webfonts/fa-regular-400.ttf new file mode 100644 index 0000000..549d68d Binary files /dev/null and b/resources/fontawesome/webfonts/fa-regular-400.ttf differ diff --git a/resources/fontawesome/webfonts/fa-regular-400.woff2 b/resources/fontawesome/webfonts/fa-regular-400.woff2 new file mode 100644 index 0000000..18400d7 Binary files /dev/null and b/resources/fontawesome/webfonts/fa-regular-400.woff2 differ diff --git a/resources/fontawesome/webfonts/fa-solid-900.ttf b/resources/fontawesome/webfonts/fa-solid-900.ttf new file mode 100644 index 0000000..bb2a869 Binary files /dev/null and b/resources/fontawesome/webfonts/fa-solid-900.ttf differ diff --git a/resources/fontawesome/webfonts/fa-solid-900.woff2 b/resources/fontawesome/webfonts/fa-solid-900.woff2 new file mode 100644 index 0000000..758dd4f Binary files /dev/null and b/resources/fontawesome/webfonts/fa-solid-900.woff2 differ diff --git a/resources/fontawesome/webfonts/fa-v4compatibility.ttf b/resources/fontawesome/webfonts/fa-v4compatibility.ttf new file mode 100644 index 0000000..8c5864c Binary files /dev/null and b/resources/fontawesome/webfonts/fa-v4compatibility.ttf differ diff --git a/resources/fontawesome/webfonts/fa-v4compatibility.woff2 b/resources/fontawesome/webfonts/fa-v4compatibility.woff2 new file mode 100644 index 0000000..f94bec2 Binary files /dev/null and b/resources/fontawesome/webfonts/fa-v4compatibility.woff2 differ diff --git a/resources/icons/icon.svg b/resources/icons/icon.svg new file mode 100644 index 0000000..f16e119 --- /dev/null +++ b/resources/icons/icon.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/logo.svg b/resources/icons/logo.svg new file mode 100644 index 0000000..6df0467 --- /dev/null +++ b/resources/icons/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/icons/logo1.png b/resources/icons/logo1.png deleted file mode 100644 index b7f38f0..0000000 Binary files a/resources/icons/logo1.png and /dev/null differ diff --git a/resources/icons/old/android-chrome-144x144.png b/resources/icons/old/android-chrome-144x144.png deleted file mode 100644 index 6a5f355..0000000 Binary files a/resources/icons/old/android-chrome-144x144.png and /dev/null differ diff --git a/resources/icons/old/android-chrome-192x192.png b/resources/icons/old/android-chrome-192x192.png deleted file mode 100644 index 86ba0f1..0000000 Binary files a/resources/icons/old/android-chrome-192x192.png and /dev/null differ diff --git a/resources/icons/old/android-chrome-36x36.png b/resources/icons/old/android-chrome-36x36.png deleted file mode 100644 index 1afb5d0..0000000 Binary files a/resources/icons/old/android-chrome-36x36.png and /dev/null differ diff --git a/resources/icons/old/android-chrome-48x48.png b/resources/icons/old/android-chrome-48x48.png deleted file mode 100644 index 373c603..0000000 Binary files a/resources/icons/old/android-chrome-48x48.png and /dev/null differ diff --git a/resources/icons/old/android-chrome-72x72.png b/resources/icons/old/android-chrome-72x72.png deleted file mode 100644 index 47ea2ce..0000000 Binary files a/resources/icons/old/android-chrome-72x72.png and /dev/null differ diff --git a/resources/icons/old/android-chrome-96x96.png b/resources/icons/old/android-chrome-96x96.png deleted file mode 100644 index 5d553bf..0000000 Binary files a/resources/icons/old/android-chrome-96x96.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-114x114-precomposed.png b/resources/icons/old/apple-touch-icon-114x114-precomposed.png deleted file mode 100644 index 5764db5..0000000 Binary files a/resources/icons/old/apple-touch-icon-114x114-precomposed.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-114x114.png b/resources/icons/old/apple-touch-icon-114x114.png deleted file mode 100644 index 4bb4160..0000000 Binary files a/resources/icons/old/apple-touch-icon-114x114.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-120x120-precomposed.png b/resources/icons/old/apple-touch-icon-120x120-precomposed.png deleted file mode 100644 index 2ee5716..0000000 Binary files a/resources/icons/old/apple-touch-icon-120x120-precomposed.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-120x120.png b/resources/icons/old/apple-touch-icon-120x120.png deleted file mode 100644 index 63a1fdd..0000000 Binary files a/resources/icons/old/apple-touch-icon-120x120.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-144x144-precomposed.png b/resources/icons/old/apple-touch-icon-144x144-precomposed.png deleted file mode 100644 index 2fd4d8e..0000000 Binary files a/resources/icons/old/apple-touch-icon-144x144-precomposed.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-144x144.png b/resources/icons/old/apple-touch-icon-144x144.png deleted file mode 100644 index cc16c9f..0000000 Binary files a/resources/icons/old/apple-touch-icon-144x144.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-152x152-precomposed.png b/resources/icons/old/apple-touch-icon-152x152-precomposed.png deleted file mode 100644 index 1f6ea27..0000000 Binary files a/resources/icons/old/apple-touch-icon-152x152-precomposed.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-152x152.png b/resources/icons/old/apple-touch-icon-152x152.png deleted file mode 100644 index 300b82f..0000000 Binary files a/resources/icons/old/apple-touch-icon-152x152.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-180x180-precomposed.png b/resources/icons/old/apple-touch-icon-180x180-precomposed.png deleted file mode 100644 index 8553085..0000000 Binary files a/resources/icons/old/apple-touch-icon-180x180-precomposed.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-180x180.png b/resources/icons/old/apple-touch-icon-180x180.png deleted file mode 100644 index d737f87..0000000 Binary files a/resources/icons/old/apple-touch-icon-180x180.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-57x57-precomposed.png b/resources/icons/old/apple-touch-icon-57x57-precomposed.png deleted file mode 100644 index deb2048..0000000 Binary files a/resources/icons/old/apple-touch-icon-57x57-precomposed.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-57x57.png b/resources/icons/old/apple-touch-icon-57x57.png deleted file mode 100644 index 2b2533d..0000000 Binary files a/resources/icons/old/apple-touch-icon-57x57.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-60x60-precomposed.png b/resources/icons/old/apple-touch-icon-60x60-precomposed.png deleted file mode 100644 index 6b16cb1..0000000 Binary files a/resources/icons/old/apple-touch-icon-60x60-precomposed.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-60x60.png b/resources/icons/old/apple-touch-icon-60x60.png deleted file mode 100644 index 7c86aba..0000000 Binary files a/resources/icons/old/apple-touch-icon-60x60.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-72x72-precomposed.png b/resources/icons/old/apple-touch-icon-72x72-precomposed.png deleted file mode 100644 index 85fa920..0000000 Binary files a/resources/icons/old/apple-touch-icon-72x72-precomposed.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-72x72.png b/resources/icons/old/apple-touch-icon-72x72.png deleted file mode 100644 index 3aa3aff..0000000 Binary files a/resources/icons/old/apple-touch-icon-72x72.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-76x76-precomposed.png b/resources/icons/old/apple-touch-icon-76x76-precomposed.png deleted file mode 100644 index abaf04a..0000000 Binary files a/resources/icons/old/apple-touch-icon-76x76-precomposed.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-76x76.png b/resources/icons/old/apple-touch-icon-76x76.png deleted file mode 100644 index a2d3734..0000000 Binary files a/resources/icons/old/apple-touch-icon-76x76.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon-precomposed.png b/resources/icons/old/apple-touch-icon-precomposed.png deleted file mode 100644 index 8553085..0000000 Binary files a/resources/icons/old/apple-touch-icon-precomposed.png and /dev/null differ diff --git a/resources/icons/old/apple-touch-icon.png b/resources/icons/old/apple-touch-icon.png deleted file mode 100644 index e537d48..0000000 Binary files a/resources/icons/old/apple-touch-icon.png and /dev/null differ diff --git a/resources/icons/old/browserconfig.xml b/resources/icons/old/browserconfig.xml deleted file mode 100644 index df8a72d..0000000 --- a/resources/icons/old/browserconfig.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - #da532c - - - diff --git a/resources/icons/old/favicon-16x16.png b/resources/icons/old/favicon-16x16.png deleted file mode 100644 index aa2cc02..0000000 Binary files a/resources/icons/old/favicon-16x16.png and /dev/null differ diff --git a/resources/icons/old/favicon-32x32.png b/resources/icons/old/favicon-32x32.png deleted file mode 100644 index 6358f95..0000000 Binary files a/resources/icons/old/favicon-32x32.png and /dev/null differ diff --git a/resources/icons/old/favicon.ico b/resources/icons/old/favicon.ico deleted file mode 100644 index 06d5fd9..0000000 Binary files a/resources/icons/old/favicon.ico and /dev/null differ diff --git a/resources/icons/old/logo_old.png b/resources/icons/old/logo_old.png deleted file mode 100644 index 9eb296a..0000000 Binary files a/resources/icons/old/logo_old.png and /dev/null differ diff --git a/resources/icons/old/mstile-144x144.png b/resources/icons/old/mstile-144x144.png deleted file mode 100644 index c005af3..0000000 Binary files a/resources/icons/old/mstile-144x144.png and /dev/null differ diff --git a/resources/icons/old/mstile-150x150.png b/resources/icons/old/mstile-150x150.png deleted file mode 100644 index 800d2b7..0000000 Binary files a/resources/icons/old/mstile-150x150.png and /dev/null differ diff --git a/resources/icons/old/mstile-310x150.png b/resources/icons/old/mstile-310x150.png deleted file mode 100644 index ffd4452..0000000 Binary files a/resources/icons/old/mstile-310x150.png and /dev/null differ diff --git a/resources/icons/old/mstile-310x310.png b/resources/icons/old/mstile-310x310.png deleted file mode 100644 index cbf683a..0000000 Binary files a/resources/icons/old/mstile-310x310.png and /dev/null differ diff --git a/resources/icons/old/mstile-70x70.png b/resources/icons/old/mstile-70x70.png deleted file mode 100644 index 86a935d..0000000 Binary files a/resources/icons/old/mstile-70x70.png and /dev/null differ diff --git a/resources/icons/old/safari-pinned-tab.svg b/resources/icons/old/safari-pinned-tab.svg deleted file mode 100644 index 3b41b63..0000000 --- a/resources/icons/old/safari-pinned-tab.svg +++ /dev/null @@ -1,58 +0,0 @@ - - - - -Created by potrace 1.11, written by Peter Selinger 2001-2013 - - - - - diff --git a/resources/katex_config.js b/resources/katex_config.js new file mode 100644 index 0000000..d42039e --- /dev/null +++ b/resources/katex_config.js @@ -0,0 +1,20 @@ +window.renderKatex = (elem=document.body) => { + var maths = document.querySelectorAll('.arithmatex'), + tex; + for (var i = 0; i < maths.length; i++) { + tex = maths[i].textContent || maths[i].innerText; + if (tex.startsWith('\\(') && tex.endsWith('\\)')) { + katex.render(tex.slice(2, -2), maths[i], { + 'displayMode': false, + 'throwOnError': false, + 'strict': false, + }); + } else if (tex.startsWith('\\[') && tex.endsWith('\\]')) { + katex.render(tex.slice(2, -2), maths[i], { + 'displayMode': true, + 'throwOnError': false, + 'strict': false, + }); + } + } +} \ No newline at end of file diff --git a/resources/libs/fontawesome/font-awesome.css b/resources/libs/fontawesome/font-awesome.css deleted file mode 100644 index 2eaa173..0000000 --- a/resources/libs/fontawesome/font-awesome.css +++ /dev/null @@ -1,1801 +0,0 @@ -/** - * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ -/* FONT PATH - * -------------------------- */ -@font-face { - font-family: 'FontAwesome'; - src: url('fontawesome-webfont.eot'); - src: url('fontawesome-webfont.eot?#iefix') format('embedded-opentype'), url('fontawesome-webfont.woff2') format('woff2'), url('fontawesome-webfont.woff') format('woff'), url('fontawesome-webfont.ttf') format('truetype'), url('fontawesome-webfont.svg#fontawesomeregular') format('svg'); - font-weight: normal; - font-style: normal; -} -.fa { - display: inline-block; - font: normal normal normal 14px/1 FontAwesome; - font-size: inherit; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - transform: translate(0, 0); -} -/* makes the font 33% larger relative to the icon container */ -.fa-lg { - font-size: 1.33333333em; - line-height: 0.75em; - vertical-align: -15%; -} -.fa-2x { - font-size: 2em; -} -.fa-3x { - font-size: 3em; -} -.fa-4x { - font-size: 4em; -} -.fa-5x { - font-size: 5em; -} -.fa-fw { - width: 1.28571429em; - text-align: center; -} -.fa-ul { - padding-left: 0; - margin-left: 2.14285714em; - list-style-type: none; -} -.fa-ul > li { - position: relative; -} -.fa-li { - position: absolute; - left: -2.14285714em; - width: 2.14285714em; - top: 0.14285714em; - text-align: center; -} -.fa-li.fa-lg { - left: -1.85714286em; -} -.fa-border { - padding: .2em .25em .15em; - border: solid 0.08em #eeeeee; - border-radius: .1em; -} -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.fa.pull-left { - margin-right: .3em; -} -.fa.pull-right { - margin-left: .3em; -} -.fa-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} -.fa-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -.fa-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} -.fa-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); -} -.fa-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); -} -.fa-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); - -webkit-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - transform: scale(-1, 1); -} -.fa-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); -} -:root .fa-rotate-90, -:root .fa-rotate-180, -:root .fa-rotate-270, -:root .fa-flip-horizontal, -:root .fa-flip-vertical { - filter: none; -} -.fa-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.fa-stack-1x, -.fa-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.fa-stack-1x { - line-height: inherit; -} -.fa-stack-2x { - font-size: 2em; -} -.fa-inverse { - color: #ffffff; -} -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ -.fa-glass:before { - content: "\f000"; -} -.fa-music:before { - content: "\f001"; -} -.fa-search:before { - content: "\f002"; -} -.fa-envelope-o:before { - content: "\f003"; -} -.fa-heart:before { - content: "\f004"; -} -.fa-star:before { - content: "\f005"; -} -.fa-star-o:before { - content: "\f006"; -} -.fa-user:before { - content: "\f007"; -} -.fa-film:before { - content: "\f008"; -} -.fa-th-large:before { - content: "\f009"; -} -.fa-th:before { - content: "\f00a"; -} -.fa-th-list:before { - content: "\f00b"; -} -.fa-check:before { - content: "\f00c"; -} -.fa-remove:before, -.fa-close:before, -.fa-times:before { - content: "\f00d"; -} -.fa-search-plus:before { - content: "\f00e"; -} -.fa-search-minus:before { - content: "\f010"; -} -.fa-power-off:before { - content: "\f011"; -} -.fa-signal:before { - content: "\f012"; -} -.fa-gear:before, -.fa-cog:before { - content: "\f013"; -} -.fa-trash-o:before { - content: "\f014"; -} -.fa-home:before { - content: "\f015"; -} -.fa-file-o:before { - content: "\f016"; -} -.fa-clock-o:before { - content: "\f017"; -} -.fa-road:before { - content: "\f018"; -} -.fa-download:before { - content: "\f019"; -} -.fa-arrow-circle-o-down:before { - content: "\f01a"; -} -.fa-arrow-circle-o-up:before { - content: "\f01b"; -} -.fa-inbox:before { - content: "\f01c"; -} -.fa-play-circle-o:before { - content: "\f01d"; -} -.fa-rotate-right:before, -.fa-repeat:before { - content: "\f01e"; -} -.fa-refresh:before { - content: "\f021"; -} -.fa-list-alt:before { - content: "\f022"; -} -.fa-lock:before { - content: "\f023"; -} -.fa-flag:before { - content: "\f024"; -} -.fa-headphones:before { - content: "\f025"; -} -.fa-volume-off:before { - content: "\f026"; -} -.fa-volume-down:before { - content: "\f027"; -} -.fa-volume-up:before { - content: "\f028"; -} -.fa-qrcode:before { - content: "\f029"; -} -.fa-barcode:before { - content: "\f02a"; -} -.fa-tag:before { - content: "\f02b"; -} -.fa-tags:before { - content: "\f02c"; -} -.fa-book:before { - content: "\f02d"; -} -.fa-bookmark:before { - content: "\f02e"; -} -.fa-print:before { - content: "\f02f"; -} -.fa-camera:before { - content: "\f030"; -} -.fa-font:before { - content: "\f031"; -} -.fa-bold:before { - content: "\f032"; -} -.fa-italic:before { - content: "\f033"; -} -.fa-text-height:before { - content: "\f034"; -} -.fa-text-width:before { - content: "\f035"; -} -.fa-align-left:before { - content: "\f036"; -} -.fa-align-center:before { - content: "\f037"; -} -.fa-align-right:before { - content: "\f038"; -} -.fa-align-justify:before { - content: "\f039"; -} -.fa-list:before { - content: "\f03a"; -} -.fa-dedent:before, -.fa-outdent:before { - content: "\f03b"; -} -.fa-indent:before { - content: "\f03c"; -} -.fa-video-camera:before { - content: "\f03d"; -} -.fa-photo:before, -.fa-image:before, -.fa-picture-o:before { - content: "\f03e"; -} -.fa-pencil:before { - content: "\f040"; -} -.fa-map-marker:before { - content: "\f041"; -} -.fa-adjust:before { - content: "\f042"; -} -.fa-tint:before { - content: "\f043"; -} -.fa-edit:before, -.fa-pencil-square-o:before { - content: "\f044"; -} -.fa-share-square-o:before { - content: "\f045"; -} -.fa-check-square-o:before { - content: "\f046"; -} -.fa-arrows:before { - content: "\f047"; -} -.fa-step-backward:before { - content: "\f048"; -} -.fa-fast-backward:before { - content: "\f049"; -} -.fa-backward:before { - content: "\f04a"; -} -.fa-play:before { - content: "\f04b"; -} -.fa-pause:before { - content: "\f04c"; -} -.fa-stop:before { - content: "\f04d"; -} -.fa-forward:before { - content: "\f04e"; -} -.fa-fast-forward:before { - content: "\f050"; -} -.fa-step-forward:before { - content: "\f051"; -} -.fa-eject:before { - content: "\f052"; -} -.fa-chevron-left:before { - content: "\f053"; -} -.fa-chevron-right:before { - content: "\f054"; -} -.fa-plus-circle:before { - content: "\f055"; -} -.fa-minus-circle:before { - content: "\f056"; -} -.fa-times-circle:before { - content: "\f057"; -} -.fa-check-circle:before { - content: "\f058"; -} -.fa-question-circle:before { - content: "\f059"; -} -.fa-info-circle:before { - content: "\f05a"; -} -.fa-crosshairs:before { - content: "\f05b"; -} -.fa-times-circle-o:before { - content: "\f05c"; -} -.fa-check-circle-o:before { - content: "\f05d"; -} -.fa-ban:before { - content: "\f05e"; -} -.fa-arrow-left:before { - content: "\f060"; -} -.fa-arrow-right:before { - content: "\f061"; -} -.fa-arrow-up:before { - content: "\f062"; -} -.fa-arrow-down:before { - content: "\f063"; -} -.fa-mail-forward:before, -.fa-share:before { - content: "\f064"; -} -.fa-expand:before { - content: "\f065"; -} -.fa-compress:before { - content: "\f066"; -} -.fa-plus:before { - content: "\f067"; -} -.fa-minus:before { - content: "\f068"; -} -.fa-asterisk:before { - content: "\f069"; -} -.fa-exclamation-circle:before { - content: "\f06a"; -} -.fa-gift:before { - content: "\f06b"; -} -.fa-leaf:before { - content: "\f06c"; -} -.fa-fire:before { - content: "\f06d"; -} -.fa-eye:before { - content: "\f06e"; -} -.fa-eye-slash:before { - content: "\f070"; -} -.fa-warning:before, -.fa-exclamation-triangle:before { - content: "\f071"; -} -.fa-plane:before { - content: "\f072"; -} -.fa-calendar:before { - content: "\f073"; -} -.fa-random:before { - content: "\f074"; -} -.fa-comment:before { - content: "\f075"; -} -.fa-magnet:before { - content: "\f076"; -} -.fa-chevron-up:before { - content: "\f077"; -} -.fa-chevron-down:before { - content: "\f078"; -} -.fa-retweet:before { - content: "\f079"; -} -.fa-shopping-cart:before { - content: "\f07a"; -} -.fa-folder:before { - content: "\f07b"; -} -.fa-folder-open:before { - content: "\f07c"; -} -.fa-arrows-v:before { - content: "\f07d"; -} -.fa-arrows-h:before { - content: "\f07e"; -} -.fa-bar-chart-o:before, -.fa-bar-chart:before { - content: "\f080"; -} -.fa-twitter-square:before { - content: "\f081"; -} -.fa-facebook-square:before { - content: "\f082"; -} -.fa-camera-retro:before { - content: "\f083"; -} -.fa-key:before { - content: "\f084"; -} -.fa-gears:before, -.fa-cogs:before { - content: "\f085"; -} -.fa-comments:before { - content: "\f086"; -} -.fa-thumbs-o-up:before { - content: "\f087"; -} -.fa-thumbs-o-down:before { - content: "\f088"; -} -.fa-star-half:before { - content: "\f089"; -} -.fa-heart-o:before { - content: "\f08a"; -} -.fa-sign-out:before { - content: "\f08b"; -} -.fa-linkedin-square:before { - content: "\f08c"; -} -.fa-thumb-tack:before { - content: "\f08d"; -} -.fa-external-link:before { - content: "\f08e"; -} -.fa-sign-in:before { - content: "\f090"; -} -.fa-trophy:before { - content: "\f091"; -} -.fa-github-square:before { - content: "\f092"; -} -.fa-upload:before { - content: "\f093"; -} -.fa-lemon-o:before { - content: "\f094"; -} -.fa-phone:before { - content: "\f095"; -} -.fa-square-o:before { - content: "\f096"; -} -.fa-bookmark-o:before { - content: "\f097"; -} -.fa-phone-square:before { - content: "\f098"; -} -.fa-twitter:before { - content: "\f099"; -} -.fa-facebook-f:before, -.fa-facebook:before { - content: "\f09a"; -} -.fa-github:before { - content: "\f09b"; -} -.fa-unlock:before { - content: "\f09c"; -} -.fa-credit-card:before { - content: "\f09d"; -} -.fa-rss:before { - content: "\f09e"; -} -.fa-hdd-o:before { - content: "\f0a0"; -} -.fa-bullhorn:before { - content: "\f0a1"; -} -.fa-bell:before { - content: "\f0f3"; -} -.fa-certificate:before { - content: "\f0a3"; -} -.fa-hand-o-right:before { - content: "\f0a4"; -} -.fa-hand-o-left:before { - content: "\f0a5"; -} -.fa-hand-o-up:before { - content: "\f0a6"; -} -.fa-hand-o-down:before { - content: "\f0a7"; -} -.fa-arrow-circle-left:before { - content: "\f0a8"; -} -.fa-arrow-circle-right:before { - content: "\f0a9"; -} -.fa-arrow-circle-up:before { - content: "\f0aa"; -} -.fa-arrow-circle-down:before { - content: "\f0ab"; -} -.fa-globe:before { - content: "\f0ac"; -} -.fa-wrench:before { - content: "\f0ad"; -} -.fa-tasks:before { - content: "\f0ae"; -} -.fa-filter:before { - content: "\f0b0"; -} -.fa-briefcase:before { - content: "\f0b1"; -} -.fa-arrows-alt:before { - content: "\f0b2"; -} -.fa-group:before, -.fa-users:before { - content: "\f0c0"; -} -.fa-chain:before, -.fa-link:before { - content: "\f0c1"; -} -.fa-cloud:before { - content: "\f0c2"; -} -.fa-flask:before { - content: "\f0c3"; -} -.fa-cut:before, -.fa-scissors:before { - content: "\f0c4"; -} -.fa-copy:before, -.fa-files-o:before { - content: "\f0c5"; -} -.fa-paperclip:before { - content: "\f0c6"; -} -.fa-save:before, -.fa-floppy-o:before { - content: "\f0c7"; -} -.fa-square:before { - content: "\f0c8"; -} -.fa-navicon:before, -.fa-reorder:before, -.fa-bars:before { - content: "\f0c9"; -} -.fa-list-ul:before { - content: "\f0ca"; -} -.fa-list-ol:before { - content: "\f0cb"; -} -.fa-strikethrough:before { - content: "\f0cc"; -} -.fa-underline:before { - content: "\f0cd"; -} -.fa-table:before { - content: "\f0ce"; -} -.fa-magic:before { - content: "\f0d0"; -} -.fa-truck:before { - content: "\f0d1"; -} -.fa-pinterest:before { - content: "\f0d2"; -} -.fa-pinterest-square:before { - content: "\f0d3"; -} -.fa-google-plus-square:before { - content: "\f0d4"; -} -.fa-google-plus:before { - content: "\f0d5"; -} -.fa-money:before { - content: "\f0d6"; -} -.fa-caret-down:before { - content: "\f0d7"; -} -.fa-caret-up:before { - content: "\f0d8"; -} -.fa-caret-left:before { - content: "\f0d9"; -} -.fa-caret-right:before { - content: "\f0da"; -} -.fa-columns:before { - content: "\f0db"; -} -.fa-unsorted:before, -.fa-sort:before { - content: "\f0dc"; -} -.fa-sort-down:before, -.fa-sort-desc:before { - content: "\f0dd"; -} -.fa-sort-up:before, -.fa-sort-asc:before { - content: "\f0de"; -} -.fa-envelope:before { - content: "\f0e0"; -} -.fa-linkedin:before { - content: "\f0e1"; -} -.fa-rotate-left:before, -.fa-undo:before { - content: "\f0e2"; -} -.fa-legal:before, -.fa-gavel:before { - content: "\f0e3"; -} -.fa-dashboard:before, -.fa-tachometer:before { - content: "\f0e4"; -} -.fa-comment-o:before { - content: "\f0e5"; -} -.fa-comments-o:before { - content: "\f0e6"; -} -.fa-flash:before, -.fa-bolt:before { - content: "\f0e7"; -} -.fa-sitemap:before { - content: "\f0e8"; -} -.fa-umbrella:before { - content: "\f0e9"; -} -.fa-paste:before, -.fa-clipboard:before { - content: "\f0ea"; -} -.fa-lightbulb-o:before { - content: "\f0eb"; -} -.fa-exchange:before { - content: "\f0ec"; -} -.fa-cloud-download:before { - content: "\f0ed"; -} -.fa-cloud-upload:before { - content: "\f0ee"; -} -.fa-user-md:before { - content: "\f0f0"; -} -.fa-stethoscope:before { - content: "\f0f1"; -} -.fa-suitcase:before { - content: "\f0f2"; -} -.fa-bell-o:before { - content: "\f0a2"; -} -.fa-coffee:before { - content: "\f0f4"; -} -.fa-cutlery:before { - content: "\f0f5"; -} -.fa-file-text-o:before { - content: "\f0f6"; -} -.fa-building-o:before { - content: "\f0f7"; -} -.fa-hospital-o:before { - content: "\f0f8"; -} -.fa-ambulance:before { - content: "\f0f9"; -} -.fa-medkit:before { - content: "\f0fa"; -} -.fa-fighter-jet:before { - content: "\f0fb"; -} -.fa-beer:before { - content: "\f0fc"; -} -.fa-h-square:before { - content: "\f0fd"; -} -.fa-plus-square:before { - content: "\f0fe"; -} -.fa-angle-double-left:before { - content: "\f100"; -} -.fa-angle-double-right:before { - content: "\f101"; -} -.fa-angle-double-up:before { - content: "\f102"; -} -.fa-angle-double-down:before { - content: "\f103"; -} -.fa-angle-left:before { - content: "\f104"; -} -.fa-angle-right:before { - content: "\f105"; -} -.fa-angle-up:before { - content: "\f106"; -} -.fa-angle-down:before { - content: "\f107"; -} -.fa-desktop:before { - content: "\f108"; -} -.fa-laptop:before { - content: "\f109"; -} -.fa-tablet:before { - content: "\f10a"; -} -.fa-mobile-phone:before, -.fa-mobile:before { - content: "\f10b"; -} -.fa-circle-o:before { - content: "\f10c"; -} -.fa-quote-left:before { - content: "\f10d"; -} -.fa-quote-right:before { - content: "\f10e"; -} -.fa-spinner:before { - content: "\f110"; -} -.fa-circle:before { - content: "\f111"; -} -.fa-mail-reply:before, -.fa-reply:before { - content: "\f112"; -} -.fa-github-alt:before { - content: "\f113"; -} -.fa-folder-o:before { - content: "\f114"; -} -.fa-folder-open-o:before { - content: "\f115"; -} -.fa-smile-o:before { - content: "\f118"; -} -.fa-frown-o:before { - content: "\f119"; -} -.fa-meh-o:before { - content: "\f11a"; -} -.fa-gamepad:before { - content: "\f11b"; -} -.fa-keyboard-o:before { - content: "\f11c"; -} -.fa-flag-o:before { - content: "\f11d"; -} -.fa-flag-checkered:before { - content: "\f11e"; -} -.fa-terminal:before { - content: "\f120"; -} -.fa-code:before { - content: "\f121"; -} -.fa-mail-reply-all:before, -.fa-reply-all:before { - content: "\f122"; -} -.fa-star-half-empty:before, -.fa-star-half-full:before, -.fa-star-half-o:before { - content: "\f123"; -} -.fa-location-arrow:before { - content: "\f124"; -} -.fa-crop:before { - content: "\f125"; -} -.fa-code-fork:before { - content: "\f126"; -} -.fa-unlink:before, -.fa-chain-broken:before { - content: "\f127"; -} -.fa-question:before { - content: "\f128"; -} -.fa-info:before { - content: "\f129"; -} -.fa-exclamation:before { - content: "\f12a"; -} -.fa-superscript:before { - content: "\f12b"; -} -.fa-subscript:before { - content: "\f12c"; -} -.fa-eraser:before { - content: "\f12d"; -} -.fa-puzzle-piece:before { - content: "\f12e"; -} -.fa-microphone:before { - content: "\f130"; -} -.fa-microphone-slash:before { - content: "\f131"; -} -.fa-shield:before { - content: "\f132"; -} -.fa-calendar-o:before { - content: "\f133"; -} -.fa-fire-extinguisher:before { - content: "\f134"; -} -.fa-rocket:before { - content: "\f135"; -} -.fa-maxcdn:before { - content: "\f136"; -} -.fa-chevron-circle-left:before { - content: "\f137"; -} -.fa-chevron-circle-right:before { - content: "\f138"; -} -.fa-chevron-circle-up:before { - content: "\f139"; -} -.fa-chevron-circle-down:before { - content: "\f13a"; -} -.fa-html5:before { - content: "\f13b"; -} -.fa-css3:before { - content: "\f13c"; -} -.fa-anchor:before { - content: "\f13d"; -} -.fa-unlock-alt:before { - content: "\f13e"; -} -.fa-bullseye:before { - content: "\f140"; -} -.fa-ellipsis-h:before { - content: "\f141"; -} -.fa-ellipsis-v:before { - content: "\f142"; -} -.fa-rss-square:before { - content: "\f143"; -} -.fa-play-circle:before { - content: "\f144"; -} -.fa-ticket:before { - content: "\f145"; -} -.fa-minus-square:before { - content: "\f146"; -} -.fa-minus-square-o:before { - content: "\f147"; -} -.fa-level-up:before { - content: "\f148"; -} -.fa-level-down:before { - content: "\f149"; -} -.fa-check-square:before { - content: "\f14a"; -} -.fa-pencil-square:before { - content: "\f14b"; -} -.fa-external-link-square:before { - content: "\f14c"; -} -.fa-share-square:before { - content: "\f14d"; -} -.fa-compass:before { - content: "\f14e"; -} -.fa-toggle-down:before, -.fa-caret-square-o-down:before { - content: "\f150"; -} -.fa-toggle-up:before, -.fa-caret-square-o-up:before { - content: "\f151"; -} -.fa-toggle-right:before, -.fa-caret-square-o-right:before { - content: "\f152"; -} -.fa-euro:before, -.fa-eur:before { - content: "\f153"; -} -.fa-gbp:before { - content: "\f154"; -} -.fa-dollar:before, -.fa-usd:before { - content: "\f155"; -} -.fa-rupee:before, -.fa-inr:before { - content: "\f156"; -} -.fa-cny:before, -.fa-rmb:before, -.fa-yen:before, -.fa-jpy:before { - content: "\f157"; -} -.fa-ruble:before, -.fa-rouble:before, -.fa-rub:before { - content: "\f158"; -} -.fa-won:before, -.fa-krw:before { - content: "\f159"; -} -.fa-bitcoin:before, -.fa-btc:before { - content: "\f15a"; -} -.fa-file:before { - content: "\f15b"; -} -.fa-file-text:before { - content: "\f15c"; -} -.fa-sort-alpha-asc:before { - content: "\f15d"; -} -.fa-sort-alpha-desc:before { - content: "\f15e"; -} -.fa-sort-amount-asc:before { - content: "\f160"; -} -.fa-sort-amount-desc:before { - content: "\f161"; -} -.fa-sort-numeric-asc:before { - content: "\f162"; -} -.fa-sort-numeric-desc:before { - content: "\f163"; -} -.fa-thumbs-up:before { - content: "\f164"; -} -.fa-thumbs-down:before { - content: "\f165"; -} -.fa-youtube-square:before { - content: "\f166"; -} -.fa-youtube:before { - content: "\f167"; -} -.fa-xing:before { - content: "\f168"; -} -.fa-xing-square:before { - content: "\f169"; -} -.fa-youtube-play:before { - content: "\f16a"; -} -.fa-dropbox:before { - content: "\f16b"; -} -.fa-stack-overflow:before { - content: "\f16c"; -} -.fa-instagram:before { - content: "\f16d"; -} -.fa-flickr:before { - content: "\f16e"; -} -.fa-adn:before { - content: "\f170"; -} -.fa-bitbucket:before { - content: "\f171"; -} -.fa-bitbucket-square:before { - content: "\f172"; -} -.fa-tumblr:before { - content: "\f173"; -} -.fa-tumblr-square:before { - content: "\f174"; -} -.fa-long-arrow-down:before { - content: "\f175"; -} -.fa-long-arrow-up:before { - content: "\f176"; -} -.fa-long-arrow-left:before { - content: "\f177"; -} -.fa-long-arrow-right:before { - content: "\f178"; -} -.fa-apple:before { - content: "\f179"; -} -.fa-windows:before { - content: "\f17a"; -} -.fa-android:before { - content: "\f17b"; -} -.fa-linux:before { - content: "\f17c"; -} -.fa-dribbble:before { - content: "\f17d"; -} -.fa-skype:before { - content: "\f17e"; -} -.fa-foursquare:before { - content: "\f180"; -} -.fa-trello:before { - content: "\f181"; -} -.fa-female:before { - content: "\f182"; -} -.fa-male:before { - content: "\f183"; -} -.fa-gittip:before, -.fa-gratipay:before { - content: "\f184"; -} -.fa-sun-o:before { - content: "\f185"; -} -.fa-moon-o:before { - content: "\f186"; -} -.fa-archive:before { - content: "\f187"; -} -.fa-bug:before { - content: "\f188"; -} -.fa-vk:before { - content: "\f189"; -} -.fa-weibo:before { - content: "\f18a"; -} -.fa-renren:before { - content: "\f18b"; -} -.fa-pagelines:before { - content: "\f18c"; -} -.fa-stack-exchange:before { - content: "\f18d"; -} -.fa-arrow-circle-o-right:before { - content: "\f18e"; -} -.fa-arrow-circle-o-left:before { - content: "\f190"; -} -.fa-toggle-left:before, -.fa-caret-square-o-left:before { - content: "\f191"; -} -.fa-dot-circle-o:before { - content: "\f192"; -} -.fa-wheelchair:before { - content: "\f193"; -} -.fa-vimeo-square:before { - content: "\f194"; -} -.fa-turkish-lira:before, -.fa-try:before { - content: "\f195"; -} -.fa-plus-square-o:before { - content: "\f196"; -} -.fa-space-shuttle:before { - content: "\f197"; -} -.fa-slack:before { - content: "\f198"; -} -.fa-envelope-square:before { - content: "\f199"; -} -.fa-wordpress:before { - content: "\f19a"; -} -.fa-openid:before { - content: "\f19b"; -} -.fa-institution:before, -.fa-bank:before, -.fa-university:before { - content: "\f19c"; -} -.fa-mortar-board:before, -.fa-graduation-cap:before { - content: "\f19d"; -} -.fa-yahoo:before { - content: "\f19e"; -} -.fa-google:before { - content: "\f1a0"; -} -.fa-reddit:before { - content: "\f1a1"; -} -.fa-reddit-square:before { - content: "\f1a2"; -} -.fa-stumbleupon-circle:before { - content: "\f1a3"; -} -.fa-stumbleupon:before { - content: "\f1a4"; -} -.fa-delicious:before { - content: "\f1a5"; -} -.fa-digg:before { - content: "\f1a6"; -} -.fa-pied-piper:before { - content: "\f1a7"; -} -.fa-pied-piper-alt:before { - content: "\f1a8"; -} -.fa-drupal:before { - content: "\f1a9"; -} -.fa-joomla:before { - content: "\f1aa"; -} -.fa-language:before { - content: "\f1ab"; -} -.fa-fax:before { - content: "\f1ac"; -} -.fa-building:before { - content: "\f1ad"; -} -.fa-child:before { - content: "\f1ae"; -} -.fa-paw:before { - content: "\f1b0"; -} -.fa-spoon:before { - content: "\f1b1"; -} -.fa-cube:before { - content: "\f1b2"; -} -.fa-cubes:before { - content: "\f1b3"; -} -.fa-behance:before { - content: "\f1b4"; -} -.fa-behance-square:before { - content: "\f1b5"; -} -.fa-steam:before { - content: "\f1b6"; -} -.fa-steam-square:before { - content: "\f1b7"; -} -.fa-recycle:before { - content: "\f1b8"; -} -.fa-automobile:before, -.fa-car:before { - content: "\f1b9"; -} -.fa-cab:before, -.fa-taxi:before { - content: "\f1ba"; -} -.fa-tree:before { - content: "\f1bb"; -} -.fa-spotify:before { - content: "\f1bc"; -} -.fa-deviantart:before { - content: "\f1bd"; -} -.fa-soundcloud:before { - content: "\f1be"; -} -.fa-database:before { - content: "\f1c0"; -} -.fa-file-pdf-o:before { - content: "\f1c1"; -} -.fa-file-word-o:before { - content: "\f1c2"; -} -.fa-file-excel-o:before { - content: "\f1c3"; -} -.fa-file-powerpoint-o:before { - content: "\f1c4"; -} -.fa-file-photo-o:before, -.fa-file-picture-o:before, -.fa-file-image-o:before { - content: "\f1c5"; -} -.fa-file-zip-o:before, -.fa-file-archive-o:before { - content: "\f1c6"; -} -.fa-file-sound-o:before, -.fa-file-audio-o:before { - content: "\f1c7"; -} -.fa-file-movie-o:before, -.fa-file-video-o:before { - content: "\f1c8"; -} -.fa-file-code-o:before { - content: "\f1c9"; -} -.fa-vine:before { - content: "\f1ca"; -} -.fa-codepen:before { - content: "\f1cb"; -} -.fa-jsfiddle:before { - content: "\f1cc"; -} -.fa-life-bouy:before, -.fa-life-buoy:before, -.fa-life-saver:before, -.fa-support:before, -.fa-life-ring:before { - content: "\f1cd"; -} -.fa-circle-o-notch:before { - content: "\f1ce"; -} -.fa-ra:before, -.fa-rebel:before { - content: "\f1d0"; -} -.fa-ge:before, -.fa-empire:before { - content: "\f1d1"; -} -.fa-git-square:before { - content: "\f1d2"; -} -.fa-git:before { - content: "\f1d3"; -} -.fa-hacker-news:before { - content: "\f1d4"; -} -.fa-tencent-weibo:before { - content: "\f1d5"; -} -.fa-qq:before { - content: "\f1d6"; -} -.fa-wechat:before, -.fa-weixin:before { - content: "\f1d7"; -} -.fa-send:before, -.fa-paper-plane:before { - content: "\f1d8"; -} -.fa-send-o:before, -.fa-paper-plane-o:before { - content: "\f1d9"; -} -.fa-history:before { - content: "\f1da"; -} -.fa-genderless:before, -.fa-circle-thin:before { - content: "\f1db"; -} -.fa-header:before { - content: "\f1dc"; -} -.fa-paragraph:before { - content: "\f1dd"; -} -.fa-sliders:before { - content: "\f1de"; -} -.fa-share-alt:before { - content: "\f1e0"; -} -.fa-share-alt-square:before { - content: "\f1e1"; -} -.fa-bomb:before { - content: "\f1e2"; -} -.fa-soccer-ball-o:before, -.fa-futbol-o:before { - content: "\f1e3"; -} -.fa-tty:before { - content: "\f1e4"; -} -.fa-binoculars:before { - content: "\f1e5"; -} -.fa-plug:before { - content: "\f1e6"; -} -.fa-slideshare:before { - content: "\f1e7"; -} -.fa-twitch:before { - content: "\f1e8"; -} -.fa-yelp:before { - content: "\f1e9"; -} -.fa-newspaper-o:before { - content: "\f1ea"; -} -.fa-wifi:before { - content: "\f1eb"; -} -.fa-calculator:before { - content: "\f1ec"; -} -.fa-paypal:before { - content: "\f1ed"; -} -.fa-google-wallet:before { - content: "\f1ee"; -} -.fa-cc-visa:before { - content: "\f1f0"; -} -.fa-cc-mastercard:before { - content: "\f1f1"; -} -.fa-cc-discover:before { - content: "\f1f2"; -} -.fa-cc-amex:before { - content: "\f1f3"; -} -.fa-cc-paypal:before { - content: "\f1f4"; -} -.fa-cc-stripe:before { - content: "\f1f5"; -} -.fa-bell-slash:before { - content: "\f1f6"; -} -.fa-bell-slash-o:before { - content: "\f1f7"; -} -.fa-trash:before { - content: "\f1f8"; -} -.fa-copyright:before { - content: "\f1f9"; -} -.fa-at:before { - content: "\f1fa"; -} -.fa-eyedropper:before { - content: "\f1fb"; -} -.fa-paint-brush:before { - content: "\f1fc"; -} -.fa-birthday-cake:before { - content: "\f1fd"; -} -.fa-area-chart:before { - content: "\f1fe"; -} -.fa-pie-chart:before { - content: "\f200"; -} -.fa-line-chart:before { - content: "\f201"; -} -.fa-lastfm:before { - content: "\f202"; -} -.fa-lastfm-square:before { - content: "\f203"; -} -.fa-toggle-off:before { - content: "\f204"; -} -.fa-toggle-on:before { - content: "\f205"; -} -.fa-bicycle:before { - content: "\f206"; -} -.fa-bus:before { - content: "\f207"; -} -.fa-ioxhost:before { - content: "\f208"; -} -.fa-angellist:before { - content: "\f209"; -} -.fa-cc:before { - content: "\f20a"; -} -.fa-shekel:before, -.fa-sheqel:before, -.fa-ils:before { - content: "\f20b"; -} -.fa-meanpath:before { - content: "\f20c"; -} -.fa-buysellads:before { - content: "\f20d"; -} -.fa-connectdevelop:before { - content: "\f20e"; -} -.fa-dashcube:before { - content: "\f210"; -} -.fa-forumbee:before { - content: "\f211"; -} -.fa-leanpub:before { - content: "\f212"; -} -.fa-sellsy:before { - content: "\f213"; -} -.fa-shirtsinbulk:before { - content: "\f214"; -} -.fa-simplybuilt:before { - content: "\f215"; -} -.fa-skyatlas:before { - content: "\f216"; -} -.fa-cart-plus:before { - content: "\f217"; -} -.fa-cart-arrow-down:before { - content: "\f218"; -} -.fa-diamond:before { - content: "\f219"; -} -.fa-ship:before { - content: "\f21a"; -} -.fa-user-secret:before { - content: "\f21b"; -} -.fa-motorcycle:before { - content: "\f21c"; -} -.fa-street-view:before { - content: "\f21d"; -} -.fa-heartbeat:before { - content: "\f21e"; -} -.fa-venus:before { - content: "\f221"; -} -.fa-mars:before { - content: "\f222"; -} -.fa-mercury:before { - content: "\f223"; -} -.fa-transgender:before { - content: "\f224"; -} -.fa-transgender-alt:before { - content: "\f225"; -} -.fa-venus-double:before { - content: "\f226"; -} -.fa-mars-double:before { - content: "\f227"; -} -.fa-venus-mars:before { - content: "\f228"; -} -.fa-mars-stroke:before { - content: "\f229"; -} -.fa-mars-stroke-v:before { - content: "\f22a"; -} -.fa-mars-stroke-h:before { - content: "\f22b"; -} -.fa-neuter:before { - content: "\f22c"; -} -.fa-facebook-official:before { - content: "\f230"; -} -.fa-pinterest-p:before { - content: "\f231"; -} -.fa-whatsapp:before { - content: "\f232"; -} -.fa-server:before { - content: "\f233"; -} -.fa-user-plus:before { - content: "\f234"; -} -.fa-user-times:before { - content: "\f235"; -} -.fa-hotel:before, -.fa-bed:before { - content: "\f236"; -} -.fa-viacoin:before { - content: "\f237"; -} -.fa-train:before { - content: "\f238"; -} -.fa-subway:before { - content: "\f239"; -} -.fa-medium:before { - content: "\f23a"; -} diff --git a/resources/libs/fontawesome/fontawesome-webfont.eot b/resources/libs/fontawesome/fontawesome-webfont.eot deleted file mode 100644 index 33b2bb8..0000000 Binary files a/resources/libs/fontawesome/fontawesome-webfont.eot and /dev/null differ diff --git a/resources/libs/fontawesome/fontawesome-webfont.svg b/resources/libs/fontawesome/fontawesome-webfont.svg deleted file mode 100644 index 1ee89d4..0000000 --- a/resources/libs/fontawesome/fontawesome-webfont.svg +++ /dev/null @@ -1,565 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/resources/libs/fontawesome/fontawesome-webfont.ttf b/resources/libs/fontawesome/fontawesome-webfont.ttf deleted file mode 100644 index ed9372f..0000000 Binary files a/resources/libs/fontawesome/fontawesome-webfont.ttf and /dev/null differ diff --git a/resources/libs/fontawesome/fontawesome-webfont.woff b/resources/libs/fontawesome/fontawesome-webfont.woff deleted file mode 100644 index 8b280b9..0000000 Binary files a/resources/libs/fontawesome/fontawesome-webfont.woff and /dev/null differ diff --git a/resources/libs/fontawesome/fontawesome-webfont.woff2 b/resources/libs/fontawesome/fontawesome-webfont.woff2 deleted file mode 100644 index 3311d58..0000000 Binary files a/resources/libs/fontawesome/fontawesome-webfont.woff2 and /dev/null differ diff --git a/resources/libs/popper.min.js b/resources/libs/popper.min.js new file mode 100644 index 0000000..89b2142 --- /dev/null +++ b/resources/libs/popper.min.js @@ -0,0 +1,6 @@ +/** + * @popperjs/core v2.9.2 - MIT License + */ + +"use strict";!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){function t(e){return{width:(e=e.getBoundingClientRect()).width,height:e.height,top:e.top,right:e.right,bottom:e.bottom,left:e.left,x:e.left,y:e.top}}function n(e){return null==e?window:"[object Window]"!==e.toString()?(e=e.ownerDocument)&&e.defaultView||window:e}function o(e){return{scrollLeft:(e=n(e)).pageXOffset,scrollTop:e.pageYOffset}}function r(e){return e instanceof n(e).Element||e instanceof Element}function i(e){return e instanceof n(e).HTMLElement||e instanceof HTMLElement}function a(e){return"undefined"!=typeof ShadowRoot&&(e instanceof n(e).ShadowRoot||e instanceof ShadowRoot)}function s(e){return e?(e.nodeName||"").toLowerCase():null}function f(e){return((r(e)?e.ownerDocument:e.document)||window.document).documentElement}function p(e){return t(f(e)).left+o(e).scrollLeft}function c(e){return n(e).getComputedStyle(e)}function l(e){return e=c(e),/auto|scroll|overlay|hidden/.test(e.overflow+e.overflowY+e.overflowX)}function u(e,r,a){void 0===a&&(a=!1);var c=f(r);e=t(e);var u=i(r),d={scrollLeft:0,scrollTop:0},m={x:0,y:0};return(u||!u&&!a)&&(("body"!==s(r)||l(c))&&(d=r!==n(r)&&i(r)?{scrollLeft:r.scrollLeft,scrollTop:r.scrollTop}:o(r)),i(r)?((m=t(r)).x+=r.clientLeft,m.y+=r.clientTop):c&&(m.x=p(c))),{x:e.left+d.scrollLeft-m.x,y:e.top+d.scrollTop-m.y,width:e.width,height:e.height}}function d(e){var n=t(e),o=e.offsetWidth,r=e.offsetHeight;return 1>=Math.abs(n.width-o)&&(o=n.width),1>=Math.abs(n.height-r)&&(r=n.height),{x:e.offsetLeft,y:e.offsetTop,width:o,height:r}}function m(e){return"html"===s(e)?e:e.assignedSlot||e.parentNode||(a(e)?e.host:null)||f(e)}function h(e){return 0<=["html","body","#document"].indexOf(s(e))?e.ownerDocument.body:i(e)&&l(e)?e:h(m(e))}function v(e,t){var o;void 0===t&&(t=[]);var r=h(e);return e=r===(null==(o=e.ownerDocument)?void 0:o.body),o=n(r),r=e?[o].concat(o.visualViewport||[],l(r)?r:[]):r,t=t.concat(r),e?t:t.concat(v(m(r)))}function g(e){return i(e)&&"fixed"!==c(e).position?e.offsetParent:null}function y(e){for(var t=n(e),o=g(e);o&&0<=["table","td","th"].indexOf(s(o))&&"static"===c(o).position;)o=g(o);if(o&&("html"===s(o)||"body"===s(o)&&"static"===c(o).position))return t;if(!o)e:{if(o=-1!==navigator.userAgent.toLowerCase().indexOf("firefox"),-1===navigator.userAgent.indexOf("Trident")||!i(e)||"fixed"!==c(e).position)for(e=m(e);i(e)&&0>["html","body"].indexOf(s(e));){var r=c(e);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||o&&"filter"===r.willChange||o&&r.filter&&"none"!==r.filter){o=e;break e}e=e.parentNode}o=null}return o||t}function b(e){function t(e){o.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){o.has(e)||(e=n.get(e))&&t(e)})),r.push(e)}var n=new Map,o=new Set,r=[];return e.forEach((function(e){n.set(e.name,e)})),e.forEach((function(e){o.has(e.name)||t(e)})),r}function w(e){var t;return function(){return t||(t=new Promise((function(n){Promise.resolve().then((function(){t=void 0,n(e())}))}))),t}}function x(e){return e.split("-")[0]}function O(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&a(n))do{if(t&&e.isSameNode(t))return!0;t=t.parentNode||t.host}while(t);return!1}function j(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function E(e,r){if("viewport"===r){r=n(e);var a=f(e);r=r.visualViewport;var s=a.clientWidth;a=a.clientHeight;var l=0,u=0;r&&(s=r.width,a=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(l=r.offsetLeft,u=r.offsetTop)),e=j(e={width:s,height:a,x:l+p(e),y:u})}else i(r)?((e=t(r)).top+=r.clientTop,e.left+=r.clientLeft,e.bottom=e.top+r.clientHeight,e.right=e.left+r.clientWidth,e.width=r.clientWidth,e.height=r.clientHeight,e.x=e.left,e.y=e.top):(u=f(e),e=f(u),s=o(u),r=null==(a=u.ownerDocument)?void 0:a.body,a=_(e.scrollWidth,e.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),l=_(e.scrollHeight,e.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),u=-s.scrollLeft+p(u),s=-s.scrollTop,"rtl"===c(r||e).direction&&(u+=_(e.clientWidth,r?r.clientWidth:0)-a),e=j({width:a,height:l,x:u,y:s}));return e}function D(e,t,n){return t="clippingParents"===t?function(e){var t=v(m(e)),n=0<=["absolute","fixed"].indexOf(c(e).position)&&i(e)?y(e):e;return r(n)?t.filter((function(e){return r(e)&&O(e,n)&&"body"!==s(e)})):[]}(e):[].concat(t),(n=(n=[].concat(t,[n])).reduce((function(t,n){return n=E(e,n),t.top=_(n.top,t.top),t.right=U(n.right,t.right),t.bottom=U(n.bottom,t.bottom),t.left=_(n.left,t.left),t}),E(e,n[0]))).width=n.right-n.left,n.height=n.bottom-n.top,n.x=n.left,n.y=n.top,n}function L(e){return 0<=["top","bottom"].indexOf(e)?"x":"y"}function P(e){var t=e.reference,n=e.element,o=(e=e.placement)?x(e):null;e=e?e.split("-")[1]:null;var r=t.x+t.width/2-n.width/2,i=t.y+t.height/2-n.height/2;switch(o){case"top":r={x:r,y:t.y-n.height};break;case"bottom":r={x:r,y:t.y+t.height};break;case"right":r={x:t.x+t.width,y:i};break;case"left":r={x:t.x-n.width,y:i};break;default:r={x:t.x,y:t.y}}if(null!=(o=o?L(o):null))switch(i="y"===o?"height":"width",e){case"start":r[o]-=t[i]/2-n[i]/2;break;case"end":r[o]+=t[i]/2-n[i]/2}return r}function M(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function k(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function A(e,n){void 0===n&&(n={});var o=n;n=void 0===(n=o.placement)?e.placement:n;var i=o.boundary,a=void 0===i?"clippingParents":i,s=void 0===(i=o.rootBoundary)?"viewport":i;i=void 0===(i=o.elementContext)?"popper":i;var p=o.altBoundary,c=void 0!==p&&p;o=M("number"!=typeof(o=void 0===(o=o.padding)?0:o)?o:k(o,C));var l=e.elements.reference;p=e.rects.popper,a=D(r(c=e.elements[c?"popper"===i?"reference":"popper":i])?c:c.contextElement||f(e.elements.popper),a,s),c=P({reference:s=t(l),element:p,strategy:"absolute",placement:n}),p=j(Object.assign({},p,c)),s="popper"===i?p:s;var u={top:a.top-s.top+o.top,bottom:s.bottom-a.bottom+o.bottom,left:a.left-s.left+o.left,right:s.right-a.right+o.right};if(e=e.modifiersData.offset,"popper"===i&&e){var d=e[n];Object.keys(u).forEach((function(e){var t=0<=["right","bottom"].indexOf(e)?1:-1,n=0<=["top","bottom"].indexOf(e)?"y":"x";u[e]+=d[n]*t}))}return u}function W(){for(var e=arguments.length,t=Array(e),n=0;n(g.devicePixelRatio||1)?"translate("+e+"px, "+u+"px)":"translate3d("+e+"px, "+u+"px, 0)",m)):Object.assign({},o,((t={})[v]=a?u+"px":"",t[h]=d?e+"px":"",t.transform="",t))}function H(e){return e.replace(/left|right|bottom|top/g,(function(e){return $[e]}))}function R(e){return e.replace(/start|end/g,(function(e){return ee[e]}))}function S(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function q(e){return["top","right","bottom","left"].some((function(t){return 0<=e[t]}))}var C=["top","bottom","right","left"],N=C.reduce((function(e,t){return e.concat([t+"-start",t+"-end"])}),[]),V=[].concat(C,["auto"]).reduce((function(e,t){return e.concat([t,t+"-start",t+"-end"])}),[]),I="beforeRead read afterRead beforeMain main afterMain beforeWrite write afterWrite".split(" "),_=Math.max,U=Math.min,z=Math.round,F={placement:"bottom",modifiers:[],strategy:"absolute"},X={passive:!0},Y={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,o=e.instance,r=(e=e.options).scroll,i=void 0===r||r,a=void 0===(e=e.resize)||e,s=n(t.elements.popper),f=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&f.forEach((function(e){e.addEventListener("scroll",o.update,X)})),a&&s.addEventListener("resize",o.update,X),function(){i&&f.forEach((function(e){e.removeEventListener("scroll",o.update,X)})),a&&s.removeEventListener("resize",o.update,X)}},data:{}},G={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state;t.modifiersData[e.name]=P({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},J={top:"auto",right:"auto",bottom:"auto",left:"auto"},K={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options;e=void 0===(e=n.gpuAcceleration)||e;var o=n.adaptive;o=void 0===o||o,n=void 0===(n=n.roundOffsets)||n,e={placement:x(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:e},null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,T(Object.assign({},e,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:o,roundOffsets:n})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,T(Object.assign({},e,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:n})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Q={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},o=t.attributes[e]||{},r=t.elements[e];i(r)&&s(r)&&(Object.assign(r.style,n),Object.keys(o).forEach((function(e){var t=o[e];!1===t?r.removeAttribute(e):r.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var o=t.elements[e],r=t.attributes[e]||{};e=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{}),i(o)&&s(o)&&(Object.assign(o.style,e),Object.keys(r).forEach((function(e){o.removeAttribute(e)})))}))}},requires:["computeStyles"]},Z={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.name,o=void 0===(e=e.options.offset)?[0,0]:e,r=(e=V.reduce((function(e,n){var r=t.rects,i=x(n),a=0<=["left","top"].indexOf(i)?-1:1,s="function"==typeof o?o(Object.assign({},r,{placement:n})):o;return r=(r=s[0])||0,s=((s=s[1])||0)*a,i=0<=["left","right"].indexOf(i)?{x:s,y:r}:{x:r,y:s},e[n]=i,e}),{}))[t.placement],i=r.x;r=r.y,null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=i,t.modifiersData.popperOffsets.y+=r),t.modifiersData[n]=e}},$={left:"right",right:"left",bottom:"top",top:"bottom"},ee={start:"end",end:"start"},te={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options;if(e=e.name,!t.modifiersData[e]._skip){var o=n.mainAxis;o=void 0===o||o;var r=n.altAxis;r=void 0===r||r;var i=n.fallbackPlacements,a=n.padding,s=n.boundary,f=n.rootBoundary,p=n.altBoundary,c=n.flipVariations,l=void 0===c||c,u=n.allowedAutoPlacements;c=x(n=t.options.placement),i=i||(c!==n&&l?function(e){if("auto"===x(e))return[];var t=H(e);return[R(e),t,R(t)]}(n):[H(n)]);var d=[n].concat(i).reduce((function(e,n){return e.concat("auto"===x(n)?function(e,t){void 0===t&&(t={});var n=t.boundary,o=t.rootBoundary,r=t.padding,i=t.flipVariations,a=t.allowedAutoPlacements,s=void 0===a?V:a,f=t.placement.split("-")[1];0===(i=(t=f?i?N:N.filter((function(e){return e.split("-")[1]===f})):C).filter((function(e){return 0<=s.indexOf(e)}))).length&&(i=t);var p=i.reduce((function(t,i){return t[i]=A(e,{placement:i,boundary:n,rootBoundary:o,padding:r})[x(i)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}(t,{placement:n,boundary:s,rootBoundary:f,padding:a,flipVariations:l,allowedAutoPlacements:u}):n)}),[]);n=t.rects.reference,i=t.rects.popper;var m=new Map;c=!0;for(var h=d[0],v=0;vi[O]&&(b=H(b)),O=H(b),w=[],o&&w.push(0>=j[y]),r&&w.push(0>=j[b],0>=j[O]),w.every((function(e){return e}))){h=g,c=!1;break}m.set(g,w)}if(c)for(o=function(e){var t=d.find((function(t){if(t=m.get(t))return t.slice(0,e).every((function(e){return e}))}));if(t)return h=t,"break"},r=l?3:1;0 Ctrl+G", imagedescription: "enter image description here", - imagedialog: "

Insert Image

https://dmoj.ca/logo.png \"optional title\"

Need free image hosting?

", + imagedialog: "

Insert Image

https://lqdoj.edu.vn/logo.png \"optional title\"

Need free image hosting?

", olist: "Numbered List
    Ctrl+O", ulist: "Bulleted List
      Ctrl+U", diff --git a/resources/pagedown_init.js b/resources/pagedown_init.js new file mode 100644 index 0000000..249921e --- /dev/null +++ b/resources/pagedown_init.js @@ -0,0 +1,158 @@ +var DjangoPagedown = DjangoPagedown | {}; + +DjangoPagedown = (function() { + var converter = Markdown.getSanitizingConverter(); + var editors = {}; + var elements; + + Markdown.Extra.init(converter, { + extensions: "all" + }); + + var createEditor = function(element) { + var input = element.getElementsByClassName("wmd-input")[0]; + if (input === undefined) { + return + } + var id = input.id.substr(9); + if (!editors.hasOwnProperty(id)) { + var editor = new Markdown.Editor(converter, id, {}); + + // Handle image upload + if (element.classList.contains("image-upload-enabled")) { + var upload = element.getElementsByClassName("pagedown-image-upload")[0]; + var url = upload.getElementsByClassName("url-input")[0]; + var file = upload.getElementsByClassName("file-input")[0]; + var cancel = upload.getElementsByClassName("deletelink")[0]; + var submit = upload.getElementsByClassName("submit-input")[0]; + var loading = upload.getElementsByClassName("submit-loading")[0]; + + var close = function(value, callback = undefined) { + upload.classList.remove("show"); + url.value = ""; + file.value = ""; + document.removeEventListener('click', outsideClickListener); + if (callback) callback(value); + }; + + var outsideClickListener = function(event) { + if (!upload.contains(event.target) && upload.classList.contains("show")) { + cancel.click(); + } + }; + + editor.hooks.set("insertImageDialog", function(callback) { + upload.classList.add("show"); + + setTimeout(function() { + document.addEventListener('click', outsideClickListener); + }, 0); + + cancel.addEventListener( + "click", + function(event) { + close(null, callback); + event.preventDefault(); + }, + { once: true } + ); + + submit.addEventListener( + "click", + function() { + // Regular URL + if (url.value.length > 0) { + close(url.value, callback); + } + // File upload + else if (file.files.length > 0) { + loading.classList.add("show"); + submit.classList.remove("show"); + + var data = new FormData(); + var xhr = new XMLHttpRequest(); + data.append("image", file.files[0]); + xhr.open("POST", file.dataset.action, true); + xhr.addEventListener( + "load", + function() { + loading.classList.remove("show"); + submit.classList.add("show"); + + if (xhr.status !== 200) { + alert(xhr.statusText); + } else { + var response = JSON.parse(xhr.response); + if (response.success) { + close(response.url, callback); + } else { + if (response.error) { + var error = ""; + for (var key in response.error) { + if (response.error.hasOwnProperty(key)) { + error += key + ":" + response.error[key]; + } + } + alert(error); + } + close(null, callback); + } + } + }, + { + once: true + } + ); + xhr.send(data); + } else { + // Nothing + close(null, callback); + } + event.preventDefault(); + }, + { once: true } + ); + + return true; + }); + } + + editor.run(); + editors[id] = editor; + } + }; + + var destroyEditor = function(element) { + var input = element.getElementsByClassName("wmd-input")[0]; + if (input === undefined) { + return + } + var id = input.id.substr(9); + if (editors.hasOwnProperty(id)) { + delete editors[id]; + return true; + } + return false; + }; + + var init = function() { + elements = document.getElementsByClassName("wmd-wrapper"); + for (var i = 0; i < elements.length; ++i) { + createEditor(elements[i]); + } + }; + + return { + init: function() { + return init(); + }, + createEditor: function(element) { + return createEditor(element); + }, + destroyEditor: function(element) { + return destroyEditor(element); + } + }; +})(); + +window.onload = DjangoPagedown.init; \ No newline at end of file diff --git a/resources/pagedown_math.js b/resources/pagedown_math.js index febfd8d..861ef78 100644 --- a/resources/pagedown_math.js +++ b/resources/pagedown_math.js @@ -1,17 +1,15 @@ -function mathjax_pagedown($) { - if ('MathJax' in window) { - $.each(window.editors, function (id, editor) { - var preview = $('div.wmd-preview#' + id + '_wmd_preview')[0]; - editor.hooks.chain('onPreviewRefresh', function () { - MathJax.typeset(preview); - }); - MathJax.typeset(preview); +function latex_pagedown($) { + $.each(window.editors, function (id, editor) { + var preview = $('div.wmd-preview#' + id + '_wmd_preview')[0]; + editor.hooks.chain('onPreviewRefresh', function () { + renderKatex(preview); }); - } + renderKatex(preview); + }); } -window.mathjax_pagedown = mathjax_pagedown; +window.latex_pagedown = latex_pagedown; $(function () { - (mathjax_pagedown)('$' in window ? $ : django.jQuery); + (latex_pagedown)('$' in window ? $ : django.jQuery); }); \ No newline at end of file diff --git a/resources/pagedown_widget.css b/resources/pagedown_widget.css index 3601240..23f6c9d 100644 --- a/resources/pagedown_widget.css +++ b/resources/pagedown_widget.css @@ -14,7 +14,7 @@ width: 100%; background: #fff; border: 1px solid DarkGray; - font-family: "Noto Sans",Arial,"Lucida Grande",sans-serif !important; + font-family: var(--md-code-font-family),monospace !important; } .wmd-preview { diff --git a/resources/pagedown_widget.scss b/resources/pagedown_widget.scss index fa97abe..071a71e 100644 --- a/resources/pagedown_widget.scss +++ b/resources/pagedown_widget.scss @@ -1,3 +1,5 @@ +@import "vars"; + .wmd-panel { margin: 0; width: 100%; @@ -14,7 +16,8 @@ width: 100%; background: #fff; border: 1px solid DarkGray; - font-family: "Noto Sans",Arial,"Lucida Grande",sans-serif !important; + font-family: $monospace-fonts; + font-size: 15px; } .wmd-preview { @@ -23,8 +26,14 @@ } .wmd-button-row { - margin: 10px 5px 5px; + margin-top: 10px; + margin-bottom: 5px; padding: 0; + display: flex; /* Display as a flex container */ + flex-wrap: nowrap; /* Prevent items from wrapping */ + overflow-x: auto; + white-space: nowrap; + gap: 3px; } .wmd-button { @@ -37,8 +46,7 @@ background-position: center; border-radius: 3px; cursor: pointer; - padding-left: 2px; - padding-right: 3px; + flex: 0 0 auto; } .wmd-bold-button { @@ -124,7 +132,7 @@ .wmd-spacer { display: inline-flex; - width: 20px; + width: 10px; } .wmd-prompt-background { diff --git a/resources/problem.scss b/resources/problem.scss index ddb3690..3473906 100644 --- a/resources/problem.scss +++ b/resources/problem.scss @@ -73,7 +73,7 @@ } .filter-form-group { - margin-top: 5px; + margin-top: 15px; } } @@ -97,11 +97,6 @@ height: 2.3em; } -label[for="category"], label[for="type"] { - padding-bottom: 0.25em; - display: block; -} - #category { margin-top: 0.5em; width: 100%; @@ -170,19 +165,20 @@ ul.problem-list { .organization-tags { padding-left: 0.75em; - vertical-align: middle; + display: flex; } .organization-tag { - box-shadow: inset 0 -0.1em 0 rgba(0, 0, 0, 0.12); + display: flex; + align-items: center; padding: 0.15em 0.3em; border-radius: 0.15em; font-weight: 600; margin-right: 0.45em; position: relative; background-color: #ccc; - transform: translateY(+35%); - display: inline-block; + color: initial; + min-height: 1.5em; } .organization-tag a { @@ -324,10 +320,6 @@ ul.problem-list { padding: 4px 10px; } -#category, #types { - visibility: hidden; -} - #filter-form .form-label { margin-top: 0.5em; font-style: italic; @@ -416,3 +408,31 @@ ul.problem-list { } } } + +.new-problem-info { + background-color: #fff6dd; + border-radius: 25px; + font-size: 14px; + height: 25px; + width: 98%; + display: table; + padding: 5px 10px; + margin-top: 14px; + border: solid; + border-color: black; + border-width: 0.1px; +} + +.info-block { + display:table-cell; + vertical-align:middle; + margin-right: auto; +} + +@media screen and (min-width: 1100px) { + .d-flex-problem { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + } +} \ No newline at end of file diff --git a/resources/ranks.scss b/resources/ranks.scss index 391d529..effb6a8 100644 --- a/resources/ranks.scss +++ b/resources/ranks.scss @@ -62,6 +62,7 @@ svg.rate-box { .rating { font-weight: bold; + font-family: "Noto Sans"; } .rate-none, .rate-none a { diff --git a/resources/status.scss b/resources/status.scss index 20190cb..2f3dd10 100644 --- a/resources/status.scss +++ b/resources/status.scss @@ -4,18 +4,18 @@ } .AC { - background-color: #53f23f; - color: green; + background-color: green; + color: white; } ._AC { - background-color: #DFFF00; - color: green; + background-color: greenyellow; + color: black; } .WA { - background-color: #CCC; - color: #ef1b53; + background-color: red; + color: white; } .TLE, .MLE { diff --git a/resources/style.scss b/resources/style.scss index eac2a94..dc93ab2 100644 --- a/resources/style.scss +++ b/resources/style.scss @@ -1,6 +1,5 @@ @import "base"; @import "table"; -@import "math"; @import "status"; @import "blog"; @import "problem"; @@ -17,3 +16,4 @@ @import "ticket"; @import "pagedown_widget"; @import "dmmd-preview"; +@import "course"; \ No newline at end of file diff --git a/resources/submission.scss b/resources/submission.scss index ba07515..bcb8c87 100644 --- a/resources/submission.scss +++ b/resources/submission.scss @@ -5,64 +5,59 @@ width: 20%; } -#submissions-table { - background: white; -} - .submission-row { display: flex; - border-left: #ccc 1px solid; - border-right: #ccc 1px solid; transition: background-color linear 0.2s; - - &:hover { - background: #F2F2F2; - } - - &:first-of-type { - border-top: #ccc 1px solid; - border-top-left-radius: $widget_border_radius; - border-top-right-radius: $widget_border_radius; - .sub-result { - border-top-left-radius: $widget_border_radius; - } - } - - > div { - padding: 7px 5px; - vertical-align: middle; - border-bottom: #ccc 1px solid; - display: flex; - flex-direction: column; - justify-content: center; - } + margin-bottom: 15px; + border-radius: 8px; + box-shadow: 0 2px 4px rgba(0,0,0,0.1); + align-items: center; + padding: 10px; + background: white; .sub-result { - min-width: 80px; - width: 80px; - text-align: center; - border-bottom-color: white; - border-right: #ccc 1px solid; + display: flex; + align-items: center; + font-weight: 600; + gap: 10px; .state { - font-size: 0.7em; - font-weight: bold; - padding-top: 0.5em; + padding: 5px 10px; + border-radius: 15px; + } + + .language { + background-color: #e1e1e1; + border-radius: 5px; + padding: 2px 8px; } .score { - font-size: 1.3em; - color: #000; + font-size: 1.2em; } } + .sub-details { + flex-grow: 1; + overflow: hidden; + } + .sub-info { flex: 1; - padding-left: 20px !important; + display: flex; + gap: 5px; + font-size: 1.2em; + margin-bottom: 10px; - .name { + .sub-user { + overflow-wrap: break-word; + } + .sub-problem { font-weight: 700; - font-size: 1.2em; + } + + .sub-problem:hover { + text-decoration: underline; } } @@ -78,16 +73,22 @@ } .sub-usage { - min-width: 70px; - width: 70px; + margin-left: auto; white-space: nowrap; - text-align: center; - border-left: #ccc 1px solid; + text-align: right; + display: flex; + flex-direction: column; + gap: 4px; .time { font-weight: bold; } } + .sub-user-img { + width: 70px; + height: 70px; + margin-right: 15px; + } } .sub-prop .fa { @@ -128,16 +129,20 @@ label[for="language"], label[for="status"] { } @media(max-width: 799px) { - .sub-prop { - .label { + .submission-row { + .sub-prop { + .label { + display: none; + } + + .fa { + display: inline-block; + } + } + .sub-user-img { display: none; } - - .fa { - display: inline-block; - } } - #fake-info-float { display: none; } @@ -155,48 +160,6 @@ label[for="language"], label[for="status"] { color: #555; } -.source-ln { - color: gray; - border-right: 1px solid gray; - padding-right: 5px; - text-align: right; - - a { - color: gray; - display: block; - - &:hover { - text-decoration: underline; - } - - &::before { - display: block; - content: " "; - margin-top: -50px; - height: 50px; - visibility: hidden; - } - } -} - -.source-code pre, .source-ln pre { - margin: 0; - padding: 0; - white-space: pre; -} - -.source-code { - padding-left: 15px; - width: 100%; -} - -.source-wrap { - overflow-x: auto; - padding: 1em; - border-radius: 10px; - border: double 4px darkgray; -} - .statistics-table { .status { font-weight: bold; @@ -240,6 +203,7 @@ label[for="language"], label[for="status"] { border-radius: .28571429rem; border: 1px solid rgba(34,36,38,.15); font-family: Consolas; + overflow-wrap: anywhere; } .testcases-table { diff --git a/resources/table.scss b/resources/table.scss index 704af10..ff7d871 100644 --- a/resources/table.scss +++ b/resources/table.scss @@ -16,18 +16,20 @@ background: white; } + &.no-border { + td, th { + border: none; + } + } + td:first-child { border-color: $border_gray; border-width: 1px 1px 0 1px; } tr:last-child td { - &:first-child { - border: 1px solid $border_gray; - } - border-color: $border_gray; - border-width: 1px 1px 1px 0; + border-bottom-width: 1px; } thead th { @@ -52,7 +54,6 @@ padding: 4px 10px; vertical-align: middle; text-align: center; - white-space: nowrap; font-weight: 600; font-size: 1.1em; diff --git a/resources/ticket.scss b/resources/ticket.scss index 092c1a1..5109531 100644 --- a/resources/ticket.scss +++ b/resources/ticket.scss @@ -10,7 +10,7 @@ display: inline; } - #content > h2:first-child .fa-check-circle-o { + #content > h2:first-child .fa-check-circle { color: #00a900; } diff --git a/resources/users.scss b/resources/users.scss index 841e7bd..0b2a6e9 100644 --- a/resources/users.scss +++ b/resources/users.scss @@ -29,6 +29,17 @@ th.header.rank { padding-left: 5px; } +.user-with-img { + display: inline-flex; + gap: 0.5em; + align-items: center; + + .user-img { + height: 2em; + width: 2em; + } +} + #search-handle { width: 100%; height: 2.3em; @@ -59,8 +70,10 @@ th.header.rank { vertical-align: middle; } - .rank, .points, .problems, .username { + .rank, .points, .problems { white-space: nowrap; + max-width: 20em; + overflow: hidden; } .about-td { @@ -154,6 +167,11 @@ th.header.rank { color: gray !important; font-weight: 600; } + + .rank-td { + font-weight: bold; + width: 2em; + } } #search-form { @@ -265,7 +283,7 @@ a.edit-profile { .user-sidebar { flex: 0 0 150px; - padding-left: 1em; + padding-right: 1em; } .user-content { @@ -274,6 +292,20 @@ a.edit-profile { word-wrap: break-word; } +.user-img { + flex-shrink: 0; + background-color: #ddd; + border-radius: 50%; + overflow: hidden; + display: flex; + align-items: center; + + img { + width: 100%; + height: auto; + } +} + @media not all and (min-width: 600px) { .user-info-page { display: block; @@ -322,6 +354,7 @@ a.edit-profile { td.problem-category { width: 100px; } + width: 99%; } #pp-load-link-wrapper { @@ -479,4 +512,78 @@ a.edit-profile { .user-stat-header { color: gray; +} + +.profile-card { + border: 1px solid #ddd; + border-radius: 8px; + overflow: hidden; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + transition: box-shadow 0.3s; + + &:hover { + box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); + } + + .card-header { + background-color: #f7f7f7; + text-align: center; + padding: 10px; + } + + .avatar { + width: 80px; + height: 80px; + border-radius: 50%; + } + + .card-body { + padding: 20px; + padding-bottom: 5px; + } + + .user-info { + display: flex; + justify-content: space-between; + margin-bottom: 10px; + } + + .user-info-body { + font-weight: bold; + } + + /* Medals Container */ + .medals-container { + display: flex; + justify-content: center; + padding: 10px; + padding-top: 0px; + gap: 5px; + } + + /* Medal Item */ + .medal-item { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + + img { + width: 70px; /* Adjust size based on your actual image size */ + height: auto; + } + } + + .medal-count { + background-color: hsla(30, 4%, 91%, .7); + border-radius: 50%; + bottom: .5rem; + color: black; + font-size: 1em; + line-height: 1; + padding: 0.8em 0; + right: .5rem; + text-align: center; + width: 2.5em; + } } \ No newline at end of file diff --git a/resources/vars.scss b/resources/vars.scss index 70c30a6..34c11d1 100644 --- a/resources/vars.scss +++ b/resources/vars.scss @@ -10,6 +10,6 @@ $base_font_size: 14px; $widget_border_radius: 0.5em; $table_header_rounding: 6px; -$monospace-fonts: Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace; +$monospace-fonts: var(--md-code-font-family),monospace; $navbar_height: 50px; $navbar_height_mobile: 36px; diff --git a/resources/widgets.scss b/resources/widgets.scss index 42e8c8e..b694da0 100644 --- a/resources/widgets.scss +++ b/resources/widgets.scss @@ -28,6 +28,9 @@ // Bootstrap-y buttons .button, button, input[type=submit] { + -webkit-transition: .3s all ease; + -o-transition: .3s all ease; + transition: .3s all ease; align-items: center; background-clip: padding-box; background-color: $theme_color; @@ -56,7 +59,7 @@ text-align: center; width: auto; - &.disabled { + &.disabled, &[disabled] { background: linear-gradient(to bottom, darkgray 0, gray 100%) repeat-x !important; border-color: grey !important; cursor: not-allowed; @@ -78,10 +81,10 @@ } &.btn-green { - background: green; + background: #28a745; &:hover { - background: #2c974b; + background: green; } } @@ -140,7 +143,7 @@ } input { - &[type=text], &[type=password], &[type=email], &[type=number] { + &[type=text], &[type=password], &[type=email], &[type=number], &[type=datetime-local], &[type=date] { padding: 4px 8px; color: #555; background: #FFF none; @@ -197,30 +200,26 @@ input { // Bootstrap-y copy button .btn-clipboard { - top: 0; - right: 0; + top: -5px; + right: -8px; display: block; font-size: 12px; - color: #767676; cursor: pointer; - background-color: #FFF; - border: 1px solid #E1E1E8; - border-radius: 0 $widget_border_radius; position: absolute; padding: 5px 8px; + font-family: system-ui, "Noto Sans"; + + &:hover { + border-radius: $widget_border_radius; + border: 1px solid #E1E1E8; + background-color: #FFF; + } } .copy-clipboard { position: relative; } -.md-typeset .admonition .btn-clipboard, -.md-typeset details .btn-clipboard { - right: -0.6rem; - border-radius: 0 0 0 4px; -} - - // Bootstrap-y tabs .ul_tab_a_active { color: $theme_color; @@ -321,7 +320,6 @@ input { ul.pagination a:hover { color: #FFF; background: #cc4e17; - border: none; } ul.pagination { @@ -599,7 +597,6 @@ ul.select2-selection__rendered { } .control-button { - background: lightgray; color: black !important; border: 0; } @@ -614,6 +611,7 @@ ul.errorlist { list-style: none; padding: 0px; color: red; + margin-bottom: 3px; } .registration-form { @@ -741,4 +739,160 @@ ul.errorlist { .github-icon i { color: black; } +} + +@media (prefers-reduced-motion: reduce) { + .btn { + -webkit-transition: none; + -o-transition: none; + transition: none; + } +} + +.btn:hover { + color: #212529; + text-decoration: none; +} + +.btn-block { + display: block; + width: 100%; +} + +.btn-block + .btn-block { + margin-top: 0.5rem; +} + +.d-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; +} + +.justify-content-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; +} + +.align-items-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important; +} + +.align-content-center { + -ms-flex-line-pack: center !important; + align-content: center !important; +} + +.align-self-center { + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; +} + +.link-row { + display: flex; + align-items: center; + padding: 6px; + font-weight: normal; + cursor: pointer; + transition: background-color 0.3s; + + a { + color: inherit; + display: flex; + align-items: center; + width: 100%; + text-decoration: none; + + i { + width: 1.5em; + } + } + + span { + flex-grow: 1; + } + + &:hover { + color: $theme_color; + background-color: #f8f8f2; + } +} + +a { + -webkit-transition: .3s all ease; + -o-transition: .3s all ease; + transition: .3s all ease; +} + +button:hover, button:focus { + text-decoration: none; + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn { + padding: 8px 12px; + cursor: pointer; + border-width: 1px; + border-radius: 5px; + font-size: 14px; + font-weight: 500; + -webkit-box-shadow: 0px 10px 20px -6px rgba(0, 0, 0, 0.12); + -moz-box-shadow: 0px 10px 20px -6px rgba(0, 0, 0, 0.12); + box-shadow: 0px 10px 20px -6px rgba(0, 0, 0, 0.12); + overflow: hidden; + position: relative; + -moz-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + -webkit-transition: all 0.3s ease; + -ms-transition: all 0.3s ease; + transition: all 0.3s ease; + span { + font-size: 15px; + margin-left: -20px; + -moz-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + -webkit-transition: all 0.3s ease; + -ms-transition: all 0.3s ease; + transition: all 0.3s ease; + } + .icon { + position: absolute; + top: 0; + right: 0; + width: 45px; + bottom: 0; + background: #fff; + i { + font-size: 20px; + } + } + .icon.icon-round { + border-radius: 50%; + } + &.btn-round { + border-radius: 40px; + } + &:hover, &:active, &:focus { + outline: none; + span { + margin-left: -10px; + } + } + &.btn-primary { + color: #fff; + .icon i { + color: #28a745; + } + } + &.btn-disabled { + color: #fff; + background: gray; + border-color: gray; + } } \ No newline at end of file diff --git a/templates/about/about.html b/templates/about/about.html index 7924c6e..ce978de 100644 --- a/templates/about/about.html +++ b/templates/about/about.html @@ -2,7 +2,7 @@ {% block body %} {% if request.organization %} - {% cache 3600 'organization_html' request.organization.id MATH_ENGINE %} + {% cache 3600 'organization_html' request.organization.id %} {{ request.organization.about|markdown|reference|str|safe }} {% endcache %} {% else %} diff --git a/templates/actionbar/list.html b/templates/actionbar/list.html index 6b8e1d6..b02048b 100644 --- a/templates/actionbar/list.html +++ b/templates/actionbar/list.html @@ -11,25 +11,25 @@ class="like-button actionbar-button {% if pagevote.vote_score(request.profile) == 1 %}voted{% endif %}" onclick="javascript:pagevote_upvote({{ pagevote.id }}, event)"> {{ pagevote.score }} - + {{_("Like")}} - + {% if not hide_actionbar_comment %} - + {{_("Comment")}} - {% if comment_count %} + {% if all_comment_count %} - ({{ comment_count }}) + ({{ all_comment_count }}) {% endif %} @@ -37,9 +37,9 @@ {% endif %} - + {{_("Bookmark")}} @@ -53,7 +53,7 @@ {% if actionbar_report_url %} - + {{_("Report")}} diff --git a/templates/base.html b/templates/base.html index c82368d..969558c 100644 --- a/templates/base.html +++ b/templates/base.html @@ -50,10 +50,9 @@ {% compress css %} - {% if PYGMENT_THEME %} - - {% endif %}{% if INLINE_FONTAWESOME %} - {% endif %} + {% if INLINE_FONTAWESOME %} + + {% endif %} @@ -70,10 +69,8 @@ {% endif %} {% block media %}{% endblock %} {% if use_darkmode %} - {% compress css %} - - - {% endcompress %} + + {% endif %}
+ {% if request.user.is_authenticated %} - +
- +
    {% include 'chat/message_list.html' %}
- +
diff --git a/templates/chat/chat_css.html b/templates/chat/chat_css.html index fa54ef8..b6bf801 100644 --- a/templates/chat/chat_css.html +++ b/templates/chat/chat_css.html @@ -66,7 +66,6 @@ .profile-pic { height: 2.6em; width: 2.6em; - border-radius: 50%; margin-top: 0.1em; float: left; } @@ -115,7 +114,17 @@ #setting { position: relative; } - #setting-button { + .setting-button { + height: 2.3em; + width: 2.5em; + border-radius: 50%; + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + padding-top: 2px; + } + .user-setting-button { height: 2.3em; width: 2.5em; border-radius: 50%; @@ -217,9 +226,15 @@ .active-span { display: none; } - #chat-area { - display: none; - } + {% if not room %} + #chat-area { + display: none; + } + {% else %} + .chat-left-panel { + display: none; + } + {% endif %} .back-button { margin-right: 1em; font-size: 1.5em; diff --git a/templates/chat/chat_js.html b/templates/chat/chat_js.html index 78418c5..70c52a0 100644 --- a/templates/chat/chat_js.html +++ b/templates/chat/chat_js.html @@ -2,6 +2,11 @@ let isMobile = window.matchMedia("only screen and (max-width: 799px)").matches; function load_next_page(last_id, refresh_html=false) { + if (refresh_html) { + window.lock = true; + $('#chat-log').html(''); + $('#loader').show(); + } var param = { 'last_id': last_id, 'only_messages': true, @@ -9,12 +14,11 @@ $.get("{{ url('chat', '') }}" + window.room_id, param) .fail(function() { console.log("Fail to load page, last_id = " + last_id); + window.lock = false; }) .done(function(data) { if (refresh_html) { - $('#chat-log').html(''); $('#chat-box').scrollTop($('#chat-box')[0].scrollHeight); - window.lock = true; } var time = refresh_html ? 0 : 200; @@ -32,8 +36,7 @@ $('#chat-log').prepend(data); } - register_time($('.time-with-rel')); - merge_authors(); + postProcessMessages(); if (!refresh_html) { $chat_box.scrollTop(scrollTopOfBottom($chat_box) - lastMsgPos); @@ -47,6 +50,13 @@ }) } + function postProcessMessages() { + register_time($('.time-with-rel')); + renderKatex(); + populateCopyButton(); + merge_authors(); + } + function scrollTopOfBottom(container) { return container[0].scrollHeight - container.innerHeight() } @@ -64,7 +74,7 @@ } })} - function refresh_status() { + function refresh_status(refresh_chat_info=false) { $.get("{{url('online_status_ajax')}}") .fail(function() { console.log("Fail to get online status"); @@ -78,6 +88,7 @@ register_toggle($(this)); }); register_click_space(); + register_setting(false); color_selected_room(); } }) @@ -86,6 +97,10 @@ 'user': window.other_user_id, }; + if (refresh_chat_info) { + $('#chat-info').html(''); + } + $.get("{{url('user_online_status_ajax')}}", data) .fail(function() { console.log("Fail to get user online status"); @@ -93,7 +108,7 @@ .done(function(data) { $('#chat-info').html(data); register_time($('.time-with-rel')); - register_setting(); + register_setting(true); }) } @@ -102,9 +117,7 @@ $('#chat-log').append($data); $('#chat-box').scrollTop($('#chat-box')[0].scrollHeight); - register_time($('.time-with-rel')); - MathJax.typeset(); - merge_authors(); + postProcessMessages(); } function add_new_message(message, room, is_self_author) { @@ -157,10 +170,8 @@ else { add_new_message(message, room, true); } - MathJax.typeset(); - register_time($('.time-with-rel')); remove_unread_current_user(); - merge_authors(); + postProcessMessages(); }, error: function (data) { console.log('Fail to check message'); @@ -219,7 +230,6 @@ if ($("#chat-input").val().trim()) { $('#chat-input-container').height('auto'); var body = $('#chat-input').val().trim(); - // body = body.split('\n').join('\n\n'); var message = { body: body, @@ -228,12 +238,16 @@ }; $('#chat-input').val(''); + $('#chat-input').css('height', '70%'); add_message_from_template(body, message.tmp_id); $.post("{{ url('post_chat_message') }}", message) .fail(function(res) { console.log('Fail to send message'); + var $body = $('#message-text-'+ message.tmp_id); + $body.css('text-decoration', 'line-through'); + $body.css('background', 'red'); }) .done(function(res, status) { $('#empty_msg').hide(); @@ -295,9 +309,11 @@ history.replaceState(null, '', "{{url('chat', '')}}" + window.room_id); load_next_page(null, true); update_last_seen(); - refresh_status(); - $('#chat-input').focus(); + refresh_status(true); + show_right_panel(); + $('#chat-input').focus(); + $('#chat-input').val('').trigger('input'); } window.lock_click_space = true; if (encrypted_user) { @@ -307,6 +323,7 @@ window.other_user_id = data.other_user_id; color_selected_room(); callback(); + $('#chat-input').attr('maxlength', 5000); }) .fail(function() { console.log('Fail to get_or_create_room'); @@ -317,6 +334,7 @@ window.other_user_id = ''; color_selected_room(); callback(); + $('#chat-input').attr('maxlength', 200); } window.lock_click_space = false; } @@ -363,18 +381,22 @@ } } - function register_setting() { - $('#setting-button').on('click', function() { - $('#setting-content').toggle(); + function register_setting(is_on_user_status_bar) { + let $setting_button = is_on_user_status_bar ? $('.user-setting-button') : $('.setting-button'); + $setting_button.on('click', function(e) { + e.stopPropagation(); + $('.setting-content').not($(this).siblings('.setting-content')).hide(); + $(this).siblings('.setting-content').toggle(); }); - $('#setting-content li').on('click', function() { - $(this).children('a')[0].click(); - }) - $('#setting-content a').on('click', function() { + $('.setting-content a').on('click', function(e) { + e.stopPropagation(); var href = $(this).attr('href'); href += '?next=' + window.location.pathname; $(this).attr('href', href); }) + $(document).on('click', function() { + $('.setting-content').hide(); + }); } $(function() { $('#loader').hide(); @@ -456,12 +478,13 @@ const button = document.querySelector('#emoji-button'); const tooltip = document.querySelector('.tooltip'); - Popper.createPopper(button, tooltip, { - placement: isMobile ? 'auto-end' : 'left-end', + const popper = Popper.createPopper(button, tooltip, { + placement: isMobile ? 'auto-end' : 'left', }); function toggleEmoji() { - tooltip.classList.toggle('shown') + tooltip.classList.toggle('shown'); + popper.update(); } $('#emoji-button').on('click', function(e) { e.preventDefault(); @@ -500,7 +523,9 @@ $('#search-handle').select2({ placeholder: ' {{ _('Search by handle...') }}', ajax: { - url: '{{ url('chat_user_search_select2_ajax') }}' + url: '{{ url('chat_user_search_select2_ajax') }}', + delay: 250, + cache: true, }, minimumInputLength: 1, escapeMarkup: function (markup) { @@ -547,7 +572,8 @@ characterData: false }) } - register_setting(); + register_setting(true); + register_setting(false); color_selected_room(); $('#chat-input').on('input', function() { @@ -560,5 +586,8 @@ }); $('#submit-button').on('click', submit_chat); + register_copy_clipboard($("#chat-input"), () => { + $('#chat-input').trigger('input'); + }); }); \ No newline at end of file diff --git a/templates/chat/message.html b/templates/chat/message.html index ba20db9..a253fab 100644 --- a/templates/chat/message.html +++ b/templates/chat/message.html @@ -1,6 +1,6 @@
  • - +
    @@ -23,7 +23,7 @@ {{_('Mute')}} {% endif %} -
    +
    {{message.body|markdown(lazy_load=False)|reference|str|safe }}
    diff --git a/templates/chat/message_list.html b/templates/chat/message_list.html index 3dcdc97..3f7e188 100644 --- a/templates/chat/message_list.html +++ b/templates/chat/message_list.html @@ -6,4 +6,5 @@ {% endfor %} {% else %}
    {{_('You are connect now. Say something to start the conversation.')}}
    -{% endif %} \ No newline at end of file +{% endif %} + diff --git a/templates/chat/online_status.html b/templates/chat/online_status.html index 73dea74..d17b6ff 100644 --- a/templates/chat/online_status.html +++ b/templates/chat/online_status.html @@ -1,6 +1,6 @@
  • - +
    {{_('Lobby')}} @@ -23,10 +23,9 @@ {% for user in section.user_list %}
  • - + - +
    @@ -44,8 +43,19 @@ {{user.unread_count}} {% endif %} +
    +
    + +
    + +
  • {% endfor %} {% endif %} {% endfor %} + diff --git a/templates/chat/user_online_status.html b/templates/chat/user_online_status.html index 370d261..3f2d10b 100644 --- a/templates/chat/user_online_status.html +++ b/templates/chat/user_online_status.html @@ -3,7 +3,7 @@
    {% if other_user %}
    - + @@ -11,7 +11,7 @@
    {% else %}
    - +
    {% endif %} @@ -27,22 +27,20 @@ {% endif %} {% if other_user %} - -
    +
    +
    - {% else %} {{online_count}} {{_('users are online')}} {% endif %} \ No newline at end of file diff --git a/templates/comments/content-list.html b/templates/comments/content-list.html index ebf0c31..e87690e 100644 --- a/templates/comments/content-list.html +++ b/templates/comments/content-list.html @@ -1,5 +1,5 @@ {% for node in mptt_tree(comment_list) recursive %} -
  • @@ -24,21 +24,16 @@
    - {% with author=node.author, user=node.author.user %} - - - - {% endwith %} - {{ link_user(node.author) }},  + {{ link_user(node.author_id, show_image=True) }}   {{ relative_time(node.time, abs=_('{time}'), rel=_('{time}')) }} - {% if node.revisions > 1 %} + {% if node.revision_count > 1 %} - {% if node.revisions > 2 %} - {% trans edits=node.revisions - 1 %}edit {{ edits }}{% endtrans %} + {% if node.revision_count > 2 %} + {% trans edits=node.revision_count - 1 %}edit {{ edits }}{% endtrans %} {% else %} {{ _('edited') }} {% endif %} @@ -53,10 +48,9 @@ {% if profile and not comment_lock %} - {% set can_edit = node.author.id == profile.id and not profile.mute %} + {% set can_edit = node.author_id == profile.id and not profile.mute %} {% if can_edit %} - + {% else %} @@ -69,9 +63,9 @@ {% else %} - + + + {% endif %} diff --git a/templates/comments/feed.html b/templates/comments/feed.html index 4ea15e6..c0fff1d 100644 --- a/templates/comments/feed.html +++ b/templates/comments/feed.html @@ -5,11 +5,11 @@ {{ comment.page_title }} - {% with author=comment.author %} - {% if author %} + {% with author_id=comment.author_id %} + {% if author_id %}
    - - {{ link_user(author) }} + + {{ link_user(author_id) }}
    {% endif %} {% endwith %} diff --git a/templates/comments/media-js.html b/templates/comments/media-js.html index 4c85ae4..5baa8a8 100644 --- a/templates/comments/media-js.html +++ b/templates/comments/media-js.html @@ -1,36 +1,8 @@ - {% compress js %} {{ comment_form.media.js }} - {% if not REQUIRE_JAX %} - - {% endif %} {% endcompress %} @@ -71,10 +43,4 @@ {% block comments %}{% endblock %}
    -{% endblock %} - -{% block bodyend %} - {% if REQUIRE_JAX %} - {% include "mathjax-load.html" %} - {% endif %} -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/templates/contest/contest-datetime-js.html b/templates/contest/contest-datetime-js.html new file mode 100644 index 0000000..478205d --- /dev/null +++ b/templates/contest/contest-datetime-js.html @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/templates/contest/contest-datetime.html b/templates/contest/contest-datetime.html index b4b6278..7ed2e1e 100644 --- a/templates/contest/contest-datetime.html +++ b/templates/contest/contest-datetime.html @@ -1,10 +1,3 @@ -