diff --git a/aleksis/apps/ticdesk/forms.py b/aleksis/apps/ticdesk/forms.py
index a6fb00a6b15157171a89718938cb5c0f335f8df8..d3eb497bb1b1ed978d24989f5f269d73ac1cb0ad 100644
--- a/aleksis/apps/ticdesk/forms.py
+++ b/aleksis/apps/ticdesk/forms.py
@@ -495,3 +495,44 @@ class EditFeedbackAspectForm(forms.ModelForm):
     class Meta:
         model = FeedbackAspect
         exclude = []
+
+
+#FIXME: Workaroung for https://edugit.org/AlekSIS/official/AlekSIS-Core/-/issues/331
+class RegisterForm(ExtensibleForm):
+
+    layout = Layout(
+        Fieldset(
+            _("General information"), Row("first_name", "last_name"),
+            "date_of_birth",
+        ),
+        Fieldset(_("Contact details"), "email"),
+        Fielset(_("User details"), "username", Row("password1", "password2"),
+        Fieldset(
+            _("Declaration of consent"), Row("accept_terms", "accept_data"),
+        ),
+    )
+
+    class Meta:
+        model = Person
+        fields = ["first_name", "last_name", "date_of_birth", "email"]
+
+    username = forms.CharField(
+        label = _("Username"),
+        required = True
+    )
+    password1 = forms.PasswordField(
+        label = _("Password")
+    )
+    password2 = forms.PasswordField(
+        label = _("Confirm password")
+    )
+
+    accept_terms = forms.BooleanField(
+        label = _("Ich habe die Nutzungsbedingungen gelesen und stimme ihnen zu."),
+        help_text = _("Bitte lies die <a href="https://www.teckids.org/de/kleingedrucktes/nutzungsbedingungen/">Nutzungsbedingungen</a> aufmerksam durch!"),
+        required = True
+    )
+    accept_data = forms.BooleanField(
+        label = _("Ich habe die Hinweise zur Verarbeitung meiner Daten gelesen und stimme diesen zu. "),
+        help_text = _("Ich bin mit der in den  erklärten Verarbeitung meiner Daten einverstanden und alle angegebenen Daten sind richtig. Falls ich jünger als 16 Jahre bin, sind meine Eltern hiermit ebenfalls einverstanden und ich kann dies, auf Anfrage, nachweisen (z.B. durch Herstellung eines Kontakts zu meinen Eltern).<a href="https://www.teckids.org/kleingedrucktes/nutzungsbedingungen/">Nutzungsbedingungen</a>"),
+    )
diff --git a/aleksis/apps/ticdesk/menus.py b/aleksis/apps/ticdesk/menus.py
index e4e95a22b124494ffa98c672d578e010b49c0516..f20748525c800d582abc2fb953fa17a05c82a807 100644
--- a/aleksis/apps/ticdesk/menus.py
+++ b/aleksis/apps/ticdesk/menus.py
@@ -2,6 +2,7 @@ from django.utils.translation import gettext_lazy as _
 
 MENUS = {
     "NAV_MENU_CORE": [
+        {"name": _("Register"), "url": "tmp_register", "icon": "person_add",},
         {"name": _("Events"), "url": "events", "icon": "event",},
         {
             "name": _("Vouchers"),
diff --git a/aleksis/apps/ticdesk/templates/ticdesk/register.html b/aleksis/apps/ticdesk/templates/ticdesk/register.html
new file mode 100644
index 0000000000000000000000000000000000000000..dc9d7ff8109e2fc2af5d7bc0bd36868197c48e94
--- /dev/null
+++ b/aleksis/apps/ticdesk/templates/ticdesk/register.html
@@ -0,0 +1,17 @@
+{% extends "core/base.html" %}
+{% load material_form i18n %}
+
+{% block page_title %}{% blocktrans %}Registration{% endblocktrans %}{% endblock %}
+{% block browser_title %}{% blocktrans %}Registration{% endblocktrans %}{% endblock %}
+
+{% block content %}
+ <h5>
+  {% blocktrans %}Registration{% endblocktrans %} {{ event.display_name }}
+ </h5>
+
+ <form method="post">
+   {% csrf_token %}
+   {% form form=register_form %}{% endform %}
+   {% include "core/partials/save_button.html" %}
+ </form>
+{% endblock %}
diff --git a/aleksis/apps/ticdesk/urls.py b/aleksis/apps/ticdesk/urls.py
index 0cc63ecdf4b7a9429f14b466405bf63d8ecb8797..6c961b2189986df1ff85db0def61c172e77e6875 100644
--- a/aleksis/apps/ticdesk/urls.py
+++ b/aleksis/apps/ticdesk/urls.py
@@ -3,6 +3,7 @@ from django.urls import path
 from . import views
 
 urlpatterns = [
+    path("register", views.register, name="tmp_register"),
     path("event/<int:id_>/edit", views.edit_event, name="edit_event_by_id"),
     path("event/<int:id_>/feedback", views.feedback_event, name="feedback_event_by_id"),
     path("event/<int:id_>/register", views.register_event, name="register_event_by_id"),
diff --git a/aleksis/apps/ticdesk/views.py b/aleksis/apps/ticdesk/views.py
index 4247c42e718179e16b6fc5c73f00e0e0b46526b6..389c690602b472bd15be26c6c6f2e7c2ed36e081 100644
--- a/aleksis/apps/ticdesk/views.py
+++ b/aleksis/apps/ticdesk/views.py
@@ -620,3 +620,43 @@ def edit_feedback_aspect(request: HttpRequest, id_: Optional[int] = None) -> Htt
     context["edit_feedback_aspect_form"] = edit_feedback_aspect_form
 
     return render(request, "ticdesk/feedback_aspect/edit.html", context)
+
+
+@login_required
+def register(request):
+    context = {}
+
+    register_form = RegisterForm()
+
+    if request.method == "POST":
+        if register_form.is_valid():
+            user = User.objects.create(
+                username = register_form.cleaned_data["username"],
+                email = register_form.cleaned_data["email"],
+                password = register_form.cleaned_data["password2"],
+            )
+            person = Person.objects.create(
+                first_name = register_form.cleaned_data["first_name"],
+                last_name = register_form.cleaned_data["last_name"],
+                date_of_birth = register_form.cleaned_data["date_of_birth"],
+                email = register_form.cleaned_data["email"],
+                user = user,
+            )
+            context["person"] = person
+            context["user"] = user
+
+            send_templated_mail(
+                template_name="account_registered",
+                from_email=lazy_preference("mail", "address"),
+                recipient_list=["root@teckids.org", person.email],
+                headers={"reply_to": [request.person.email,],},
+                context=context,
+            )
+
+            # Set success
+            messages.success(request, _("Account successfully registered"))
+            return redirect("login")
+
+    context["register_form"] = register_form
+
+    return render(request, "ticdesk/register.html", context)
diff --git a/poetry.lock b/poetry.lock
index 98dcf666d984b4f64ece09dd4a1a876264eb2ebd..70f73d1048e0c8136be4b3b345cefd422046af42 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -8,11 +8,11 @@ python-versions = "*"
 
 [[package]]
 name = "aleksis-builddeps"
-version = "2"
+version = "3"
 description = "AlekSIS (School Information System) — Build/Dev dependencies for apps"
 category = "dev"
 optional = false
-python-versions = "*"
+python-versions = ">=3.6,<4.0"
 
 [package.dependencies]
 black = ">=19.10b0,<20.0"
@@ -27,7 +27,8 @@ flake8-docstrings = ">=1.5.0,<2.0.0"
 flake8-fixme = ">=1.1.1,<2.0.0"
 flake8-isort = ">=4.0.0,<5.0.0"
 flake8-mypy = ">=17.8.0,<18.0.0"
-flake8-rst-docstrings = ">=0.0.14,<0.0.15"
+flake8-rst-docstrings = ">=0.1.0,<0.2.0"
+freezegun = ">=1.1.0,<2.0.0"
 isort = ">=5.0.0,<6.0.0"
 pytest = ">=6.0,<7.0"
 pytest-cov = ">=2.8.1,<3.0.0"
@@ -47,7 +48,7 @@ reference = "gitlab"
 
 [[package]]
 name = "aleksis-core"
-version = "2.0a5.dev0+20210215073735.26fabd33"
+version = "2.0a5.dev0+20210217102451.bbdb8454"
 description = "AlekSIS (School Information System) — Core"
 category = "main"
 optional = false
@@ -60,8 +61,8 @@ Celery = {version = ">=5.0.0,<6.0.0", extras = ["django", "redis"]}
 celery-haystack-ng = ">=0.20,<0.21"
 celery-progress = ">=0.1.0,<0.2.0"
 colour = ">=0.1.5,<0.2.0"
-Django = ">=3.1.7,<4.0.0"
-django-any-js = ">=1.0,<2.0"
+Django = ">=3.2,<4.0"
+django-any-js = ">=1.1,<2.0"
 django-bleach = ">=0.6.1,<0.7.0"
 django-cachalot = ">=2.3.2,<3.0.0"
 django-cache-memoize = ">=0.1.6,<0.2.0"
@@ -69,6 +70,7 @@ django-celery-beat = ">=2.2.0,<3.0.0"
 django-celery-email = ">=3.0.0,<4.0.0"
 django-celery-results = ">=2.0.1,<3.0.0"
 django-ckeditor = ">=6.0.0,<7.0.0"
+django-cleanup = ">=5.1.0,<6.0.0"
 django-colorfield = ">=0.4.0,<0.5.0"
 django-dbbackup = ">=3.3.0,<4.0.0"
 django-debug-toolbar = ">=3.2,<4.0"
@@ -87,9 +89,8 @@ django-jsonstore = ">=0.5.0,<0.6.0"
 django-maintenance-mode = ">=0.16.0,<0.17.0"
 django-material = ">=1.6.0,<2.0.0"
 django-menu-generator-ng = ">=1.2.3,<2.0.0"
-django-middleware-global-request = ">=0.1.2,<0.2.0"
 django-model-utils = ">=4.0.0,<5.0.0"
-django-phonenumber-field = {version = "<5.1", extras = ["phonenumbers"]}
+django-phonenumber-field = {version = "<5.2", extras = ["phonenumbers"]}
 django-polymorphic = ">=3.0.0,<4.0.0"
 django-prometheus = ">=2.1.0,<3.0.0"
 django-pwa = ">=1.0.8,<2.0.0"
@@ -106,7 +107,6 @@ django_widget_tweaks = ">=1.4.5,<2.0.0"
 django-yarnpkg = ">=6.0,<7.0"
 dynaconf = {version = ">=3.1,<4.0", extras = ["ini", "toml", "yaml"]}
 html2text = ">=2020.0.0,<2021.0.0"
-importlib-metadata = {version = ">=3.0.0,<4.0.0", markers = "python_version < \"3.9\""}
 ipython = ">=7.20.0,<8.0.0"
 libsass = ">=0.20.0,<0.21.0"
 license-expression = ">=1.2,<2.0"
@@ -155,14 +155,14 @@ python-versions = "*"
 
 [[package]]
 name = "asgiref"
-version = "3.3.1"
+version = "3.3.4"
 description = "ASGI specs, helper code, and adapters"
 category = "main"
 optional = false
-python-versions = ">=3.5"
+python-versions = ">=3.6"
 
 [package.extras]
-tests = ["pytest", "pytest-asyncio"]
+tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"]
 
 [[package]]
 name = "asn1crypto"
@@ -182,21 +182,21 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
 
 [[package]]
 name = "attrs"
-version = "20.3.0"
+version = "21.2.0"
 description = "Classes Without Boilerplate"
 category = "dev"
 optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
 
 [package.extras]
-dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"]
-docs = ["furo", "sphinx", "zope.interface"]
-tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"]
-tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"]
+dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit"]
+docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
+tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface"]
+tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins"]
 
 [[package]]
 name = "babel"
-version = "2.9.0"
+version = "2.9.1"
 description = "Internationalization utilities"
 category = "dev"
 optional = false
@@ -515,22 +515,9 @@ toml = ">=0.9.4"
 [package.extras]
 dev = ["black (==19.10b0)", "flake8 (==3.8.4)", "mypy (==0.812)", "pytest (==6.2.2)", "coverage (==5.4)"]
 
-[[package]]
-name = "data"
-version = "0.4"
-description = "Work with unicode/non-unicode data from files or strings uniformly."
-category = "main"
-optional = false
-python-versions = "*"
-
-[package.dependencies]
-decorator = "*"
-funcsigs = "*"
-six = "*"
-
 [[package]]
 name = "decorator"
-version = "5.0.5"
+version = "5.0.7"
 description = "Decorators for Humans"
 category = "main"
 optional = false
@@ -546,31 +533,31 @@ python-versions = "*"
 
 [[package]]
 name = "django"
-version = "3.1.7"
+version = "3.2.2"
 description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design."
 category = "main"
 optional = false
 python-versions = ">=3.6"
 
 [package.dependencies]
-asgiref = ">=3.2.10,<4"
+asgiref = ">=3.3.2,<4"
 pytz = "*"
 sqlparse = ">=0.2.2"
 
 [package.extras]
-argon2 = ["argon2-cffi (>=16.1.0)"]
+argon2 = ["argon2-cffi (>=19.1.0)"]
 bcrypt = ["bcrypt"]
 
 [[package]]
 name = "django-any-js"
-version = "1.0.3.post1"
-description = "Include JavaScript libraries with readable template tags"
+version = "1.1"
+description = "Include JavaScript/CSS libraries with readable template tags"
 category = "main"
 optional = false
-python-versions = "*"
+python-versions = ">=3.7,<4.0"
 
 [package.dependencies]
-Django = ">=1.11"
+Django = ">=2.2,<4.0"
 
 [[package]]
 name = "django-appconf"
@@ -619,7 +606,7 @@ Django = ">=2"
 
 [[package]]
 name = "django-cache-memoize"
-version = "0.1.8"
+version = "0.1.9"
 description = "Django utility for a memoization decorator that uses the Django cache framework."
 category = "main"
 optional = false
@@ -677,6 +664,14 @@ python-versions = "*"
 [package.dependencies]
 django-js-asset = ">=1.2.2"
 
+[[package]]
+name = "django-cleanup"
+version = "5.2.0"
+description = "Deletes old files."
+category = "main"
+optional = false
+python-versions = "*"
+
 [[package]]
 name = "django-colorfield"
 version = "0.4.1"
@@ -700,7 +695,7 @@ six = "*"
 
 [[package]]
 name = "django-debug-toolbar"
-version = "3.2"
+version = "3.2.1"
 description = "A configurable set of panels that display various debug information about the current request/response."
 category = "main"
 optional = false
@@ -725,7 +720,7 @@ six = "*"
 
 [[package]]
 name = "django-extensions"
-version = "3.1.2"
+version = "3.1.3"
 description = "Extensions for Django"
 category = "main"
 optional = false
@@ -759,14 +754,14 @@ Django = ">=2.2"
 
 [[package]]
 name = "django-formtools"
-version = "2.2"
+version = "2.3"
 description = "A set of high-level abstractions for Django forms"
 category = "main"
 optional = false
-python-versions = "*"
+python-versions = ">=3.6"
 
 [package.dependencies]
-Django = ">=1.11"
+Django = ">=2.2"
 
 [[package]]
 name = "django-guardian"
@@ -807,14 +802,14 @@ Django = ">=2.2"
 
 [[package]]
 name = "django-health-check"
-version = "3.16.3"
+version = "3.16.4"
 description = "Run checks on services like databases, queue servers, celery processes, etc."
 category = "main"
 optional = false
 python-versions = "*"
 
 [package.dependencies]
-django = ">=1.11"
+django = ">=2.2"
 
 [[package]]
 name = "django-iban-field"
@@ -871,20 +866,6 @@ python-versions = "*"
 Django = ">=1.11"
 six = "*"
 
-[[package]]
-name = "django-leaflet"
-version = "0.26.0"
-description = "Use Leaflet in your django projects"
-category = "main"
-optional = false
-python-versions = "*"
-
-[package.dependencies]
-Django = "*"
-
-[package.extras]
-docs = ["sphinx", "sphinx-autobuild"]
-
 [[package]]
 name = "django-maintenance-mode"
 version = "0.16.0"
@@ -895,7 +876,7 @@ python-versions = "*"
 
 [[package]]
 name = "django-material"
-version = "1.7.6"
+version = "1.9.0"
 description = "Material design for django forms and admin"
 category = "main"
 optional = false
@@ -912,17 +893,6 @@ category = "main"
 optional = false
 python-versions = "*"
 
-[[package]]
-name = "django-middleware-global-request"
-version = "0.1.2"
-description = "Django middleware that keep request instance for every thread."
-category = "main"
-optional = false
-python-versions = "*"
-
-[package.dependencies]
-django = "*"
-
 [[package]]
 name = "django-model-utils"
 version = "4.1.1"
@@ -936,7 +906,7 @@ Django = ">=2.0.1"
 
 [[package]]
 name = "django-otp"
-version = "1.0.3"
+version = "1.0.5"
 description = "A pluggable framework for adding two-factor authentication to Django using one-time passwords."
 category = "main"
 optional = false
@@ -950,7 +920,7 @@ qrcode = ["qrcode"]
 
 [[package]]
 name = "django-otp-yubikey"
-version = "1.0.0"
+version = "1.0.0.post1"
 description = "A django-otp plugin that verifies YubiKey OTP tokens."
 category = "main"
 optional = false
@@ -962,11 +932,11 @@ YubiOTP = ">=0.2.2"
 
 [[package]]
 name = "django-phonenumber-field"
-version = "5.0.0"
+version = "5.1.0"
 description = "An international phone number field for django models."
 category = "main"
 optional = false
-python-versions = ">=3.5"
+python-versions = ">=3.6"
 
 [package.dependencies]
 Django = ">=2.2"
@@ -1045,7 +1015,7 @@ django = ">=1.11"
 
 [[package]]
 name = "django-sass-processor"
-version = "1.0.0"
+version = "1.0.1"
 description = "SASS processor to compile SCSS files into *.css, while rendering, or offline."
 category = "main"
 optional = false
@@ -1056,7 +1026,7 @@ management_command = ["django-compressor (>=2.4)"]
 
 [[package]]
 name = "django-select2"
-version = "7.7.0"
+version = "7.7.1"
 description = "Select2 option fields for Django"
 category = "main"
 optional = false
@@ -1090,7 +1060,7 @@ Django = ">=1.11"
 
 [[package]]
 name = "django-stubs"
-version = "1.7.0"
+version = "1.8.0"
 description = "Mypy stubs for Django"
 category = "dev"
 optional = false
@@ -1098,9 +1068,21 @@ python-versions = ">=3.6"
 
 [package.dependencies]
 django = "*"
+django-stubs-ext = "*"
 mypy = ">=0.790"
 typing-extensions = "*"
 
+[[package]]
+name = "django-stubs-ext"
+version = "0.2.0"
+description = "Monkey-patching and extensions for django-stubs"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+django = "*"
+
 [[package]]
 name = "django-tables2"
 version = "2.3.4"
@@ -1200,7 +1182,7 @@ six = "*"
 
 [[package]]
 name = "docutils"
-version = "0.17"
+version = "0.16"
 description = "Docutils -- Python Documentation Utilities"
 category = "dev"
 optional = false
@@ -1246,7 +1228,7 @@ yaml = ["ruamel.yaml"]
 
 [[package]]
 name = "faker"
-version = "7.0.1"
+version = "8.1.3"
 description = "Faker is a Python package that generates fake data for you."
 category = "main"
 optional = false
@@ -1258,7 +1240,7 @@ text-unidecode = "1.3"
 
 [[package]]
 name = "flake8"
-version = "3.9.0"
+version = "3.9.2"
 description = "the modular source code checker: pep8 pyflakes and co"
 category = "dev"
 optional = false
@@ -1382,31 +1364,28 @@ flake8 = "*"
 
 [[package]]
 name = "flake8-rst-docstrings"
-version = "0.0.14"
+version = "0.1.2"
 description = "Python docstring reStructuredText (RST) validator"
 category = "dev"
 optional = false
-python-versions = "*"
+python-versions = ">=3.3"
 
 [package.dependencies]
 flake8 = ">=3.0.0"
-restructuredtext_lint = "*"
+pydocstyle = ">=3.0.0"
+pygments = "*"
+restructuredtext-lint = "*"
 
 [[package]]
-name = "funcsigs"
-version = "1.0.2"
-description = "Python function signatures from PEP362 for Python 2.6, 2.7 and 3.2+"
-category = "main"
+name = "freezegun"
+version = "1.1.0"
+description = "Let your Python tests travel through time"
+category = "dev"
 optional = false
-python-versions = "*"
+python-versions = ">=3.5"
 
-[[package]]
-name = "future"
-version = "0.18.2"
-description = "Clean single-source support for Python 3 and 2"
-category = "main"
-optional = false
-python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
+[package.dependencies]
+python-dateutil = ">=2.7"
 
 [[package]]
 name = "gitdb"
@@ -1421,14 +1400,15 @@ smmap = ">=3.0.1,<5"
 
 [[package]]
 name = "gitpython"
-version = "3.1.14"
+version = "3.1.15"
 description = "Python Git Library"
 category = "dev"
 optional = false
-python-versions = ">=3.4"
+python-versions = ">=3.5"
 
 [package.dependencies]
 gitdb = ">=4.0.1,<5"
+typing-extensions = ">=3.7.4.0"
 
 [[package]]
 name = "html2text"
@@ -1454,21 +1434,6 @@ category = "dev"
 optional = false
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
 
-[[package]]
-name = "importlib-metadata"
-version = "3.10.0"
-description = "Read metadata from Python packages"
-category = "main"
-optional = false
-python-versions = ">=3.6"
-
-[package.dependencies]
-zipp = ">=0.5"
-
-[package.extras]
-docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
-testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"]
-
 [[package]]
 name = "iniconfig"
 version = "1.1.1"
@@ -1479,7 +1444,7 @@ python-versions = "*"
 
 [[package]]
 name = "ipython"
-version = "7.22.0"
+version = "7.23.1"
 description = "IPython: Productive Interactive Computing"
 category = "main"
 optional = false
@@ -1491,6 +1456,7 @@ backcall = "*"
 colorama = {version = "*", markers = "sys_platform == \"win32\""}
 decorator = "*"
 jedi = ">=0.16"
+matplotlib-inline = "*"
 pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
 pickleshare = "*"
 prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0"
@@ -1585,20 +1551,6 @@ sqs = ["boto3 (>=1.4.4)", "pycurl (==7.43.0.2)"]
 yaml = ["PyYAML (>=3.10)"]
 zookeeper = ["kazoo (>=1.3.1)"]
 
-[[package]]
-name = "latex"
-version = "0.7.0"
-description = "Wrappers for calling LaTeX/building LaTeX documents."
-category = "main"
-optional = false
-python-versions = "*"
-
-[package.dependencies]
-data = "*"
-future = "*"
-shutilwhich = "*"
-tempdir = "*"
-
 [[package]]
 name = "libsass"
 version = "0.20.1"
@@ -1629,6 +1581,17 @@ category = "dev"
 optional = false
 python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
 
+[[package]]
+name = "matplotlib-inline"
+version = "0.1.2"
+description = "Inline Matplotlib backend for Jupyter"
+category = "main"
+optional = false
+python-versions = ">=3.5"
+
+[package.dependencies]
+traitlets = "*"
+
 [[package]]
 name = "mccabe"
 version = "0.6.1"
@@ -1702,7 +1665,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
 
 [[package]]
 name = "pbr"
-version = "5.5.1"
+version = "5.6.0"
 description = "Python Build Reasonableness"
 category = "dev"
 optional = false
@@ -1729,18 +1692,18 @@ ptyprocess = ">=0.5"
 
 [[package]]
 name = "pg8000"
-version = "1.19.1"
+version = "1.19.4"
 description = "PostgreSQL interface library"
 category = "dev"
 optional = false
 python-versions = ">=3.6"
 
 [package.dependencies]
-scramp = "1.3.0"
+scramp = "1.4.0"
 
 [[package]]
 name = "phonenumbers"
-version = "8.12.20"
+version = "8.12.22"
 description = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers."
 category = "main"
 optional = false
@@ -1775,7 +1738,7 @@ dev = ["pre-commit", "tox"]
 
 [[package]]
 name = "prometheus-client"
-version = "0.10.0"
+version = "0.10.1"
 description = "Python client for the Prometheus monitoring system."
 category = "main"
 optional = false
@@ -1867,7 +1830,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
 
 [[package]]
 name = "pygments"
-version = "2.8.1"
+version = "2.9.0"
 description = "Pygments is a syntax highlighting package written in Python."
 category = "main"
 optional = false
@@ -1896,7 +1859,7 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
 
 [[package]]
 name = "pytest"
-version = "6.2.3"
+version = "6.2.4"
 description = "pytest: simple powerful testing with Python"
 category = "dev"
 optional = false
@@ -1932,7 +1895,7 @@ testing = ["fields", "hunter", "process-tests (==2.0.2)", "six", "pytest-xdist",
 
 [[package]]
 name = "pytest-django"
-version = "4.1.0"
+version = "4.2.0"
 description = "A Django plugin for pytest."
 category = "dev"
 optional = false
@@ -2111,7 +2074,7 @@ docutils = ">=0.11,<1.0"
 
 [[package]]
 name = "ruamel.yaml"
-version = "0.17.2"
+version = "0.17.4"
 description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order"
 category = "main"
 optional = false
@@ -2156,7 +2119,7 @@ requests = "*"
 
 [[package]]
 name = "scramp"
-version = "1.3.0"
+version = "1.4.0"
 description = "An implementation of the SCRAM protocol."
 category = "dev"
 optional = false
@@ -2176,17 +2139,9 @@ python-versions = "*"
 [package.dependencies]
 urllib3 = "*"
 
-[[package]]
-name = "shutilwhich"
-version = "1.1.0"
-description = "shutil.which for those not using Python 3.3 yet."
-category = "main"
-optional = false
-python-versions = "*"
-
 [[package]]
 name = "six"
-version = "1.15.0"
+version = "1.16.0"
 description = "Python 2 and 3 compatibility utilities"
 category = "main"
 optional = false
@@ -2226,7 +2181,7 @@ python-versions = "*"
 
 [[package]]
 name = "sphinx"
-version = "3.5.3"
+version = "3.5.4"
 description = "Python documentation generator"
 category = "dev"
 optional = false
@@ -2236,7 +2191,7 @@ python-versions = ">=3.5"
 alabaster = ">=0.7,<0.8"
 babel = ">=1.3"
 colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""}
-docutils = ">=0.12"
+docutils = ">=0.12,<0.17"
 imagesize = "*"
 Jinja2 = ">=2.3"
 packaging = "*"
@@ -2257,11 +2212,11 @@ test = ["pytest", "pytest-cov", "html5lib", "cython", "typed-ast"]
 
 [[package]]
 name = "sphinx-autodoc-typehints"
-version = "1.11.1"
+version = "1.12.0"
 description = "Type hints (PEP 484) support for the Sphinx autodoc extension"
 category = "dev"
 optional = false
-python-versions = ">=3.5.2"
+python-versions = ">=3.6"
 
 [package.dependencies]
 Sphinx = ">=3.0"
@@ -2368,14 +2323,6 @@ python-versions = ">=3.6"
 [package.dependencies]
 pbr = ">=2.0.0,<2.1.0 || >2.1.0"
 
-[[package]]
-name = "tempdir"
-version = "0.7.1"
-description = "Tempdirs are temporary directories, based on tempfile.mkdtemp"
-category = "main"
-optional = false
-python-versions = "*"
-
 [[package]]
 name = "termcolor"
 version = "1.1.0"
@@ -2441,7 +2388,7 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
 
 [[package]]
 name = "tqdm"
-version = "4.59.0"
+version = "4.60.0"
 description = "Fast, Extensible Progress Meter"
 category = "main"
 optional = false
@@ -2468,7 +2415,7 @@ test = ["pytest"]
 
 [[package]]
 name = "twilio"
-version = "6.55.0"
+version = "6.58.0"
 description = "Twilio API client and TwiML generator"
 category = "main"
 optional = false
@@ -2482,7 +2429,7 @@ six = "*"
 
 [[package]]
 name = "typed-ast"
-version = "1.4.2"
+version = "1.4.3"
 description = "a fork of Python 2 and 3 ast modules with type comment support"
 category = "dev"
 optional = false
@@ -2490,7 +2437,7 @@ python-versions = "*"
 
 [[package]]
 name = "typing-extensions"
-version = "3.7.4.3"
+version = "3.10.0.0"
 description = "Backported and Experimental Type Hints for Python 3.5+"
 category = "dev"
 optional = false
@@ -2544,22 +2491,10 @@ python-versions = "*"
 [package.dependencies]
 pycryptodome = "*"
 
-[[package]]
-name = "zipp"
-version = "3.4.1"
-description = "Backport of pathlib-compatible object wrapper for zip files"
-category = "main"
-optional = false
-python-versions = ">=3.6"
-
-[package.extras]
-docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
-testing = ["pytest (>=4.6)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "pytest-enabler", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"]
-
 [metadata]
 lock-version = "1.1"
-python-versions = "^3.8"
-content-hash = "87c43b412b13c0949dcc396c308a2f2b85aec3a8e8149a9b742d9d8c0e07777b"
+python-versions = "^3.9"
+content-hash = "d38050c8f910a5b7dc174461f34cc75f5b6d59967917c75578a3c90fe943a437"
 
 [metadata.files]
 alabaster = [
@@ -2567,10 +2502,9 @@ alabaster = [
     {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"},
 ]
 aleksis-builddeps = [
-    {file = "AlekSIS-Builddeps-2.tar.gz", hash = "sha256:fdf8b230ba4a690c279d99004316e84d7d9d72962768ca6b3205df54db9abaab"},
+    {file = "AlekSIS-Builddeps-3.tar.gz", hash = "sha256:04597e29a861e576d78adc068c9f1bf85450c81dc43cb1f7db0ed43e975b64a2"},
 ]
 aleksis-core = [
-    {file = "AlekSIS-Core-2.0a5.dev0+20210215073735.26fabd33.tar.gz", hash = "sha256:e367f4f23061435d8df7492eea3658dcf26a429c9ac95d58923e82e80ed52dac"},
     {file = "AlekSIS-Core-2.0a5.dev0+20210217102451.bbdb8454.tar.gz", hash = "sha256:77dfe5726d2014afae043320da8552526cfa850ecae1a316cd3f8f24bf955930"},
     {file = "AlekSIS-Core-2.0a5.dev0+20210217123802.d23be3b6.tar.gz", hash = "sha256:1489d70f360d0edf46d84d141f01af3fe3f12332b0bc99921ad20a174b4c211b"},
     {file = "AlekSIS-Core-2.0a5.dev0+20210221200356.d50b445b.tar.gz", hash = "sha256:47c2dd168483dcfca23ade2d454cc9f067634ce379d85d4ddc8d5fd4d4b65d4e"},
@@ -2764,7 +2698,88 @@ aleksis-core = [
     {file = "AlekSIS-Core-2.0a5.dev0+20210405104043.40f11494.tar.gz", hash = "sha256:cdeee776c85d696e69d4c9f537c800742d7c16b3d636a891bb33a26389c2a358"},
     {file = "AlekSIS-Core-2.0a5.dev0+20210405112438.524b91d7.tar.gz", hash = "sha256:3eedfeed58d3bb9b070d5da0069d9307a21bcac99edc77cbdb12cb10d6883d43"},
     {file = "AlekSIS-Core-2.0a5.dev0+20210405125427.1091cda7.tar.gz", hash = "sha256:3ba3c5e83d5b89c3469eb8684827da53a93f67492c2d1e44b60ccf019a5288c7"},
-    {file = "AlekSIS_Core-2.0a5.dev0+20210215073735.26fabd33-py3-none-any.whl", hash = "sha256:9dbe21e49d7aa24f02a6f86ea0c4be8f36bc869bf01382a5bd16271c76cdf2ab"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210405203530.e1650f50.tar.gz", hash = "sha256:0ef8aa65a68c622e34737bbea87467a6001883f400b44012ed882d63a861835a"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210405204907.4e887423.tar.gz", hash = "sha256:8f703c2da9006f9db4557e023118302f0772c78bfd2645f06f3c50de0fda8f37"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210405205759.2fd6ad6e.tar.gz", hash = "sha256:a7b95a835482078b01a581d7080446d1ca74b5c7eb82bcc4ea186f5026828ff1"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210407100203.cb16c7ce.tar.gz", hash = "sha256:5b2ba3b2c54e5472b90184bfe1c301e4de20d2d27f122562fec3129d8ccaa7c9"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210408144309.a23d091a.tar.gz", hash = "sha256:0809dff9eebb99a7f1aff9c581587246df733a1f650212b366bd329f90523db1"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210408145707.9ade2048.tar.gz", hash = "sha256:ae91b544f6bd756ddcdd33caf37719253240d8b390c8388e02ba6b5906563308"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210408191547.c6bbf577.tar.gz", hash = "sha256:1c0cecd2a7276f6aa335831ec37be75a9934265500dda257b11319be26218d03"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210408192808.873a673d.tar.gz", hash = "sha256:0b4135d2a6cf64880b083d215eb8dac166125525184afcf92bd062578a18e855"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210408202102.04a696db.tar.gz", hash = "sha256:c231a8743418edcefd6784bba4699aae6401df3da9b8dd4f4528874c780ef3bf"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210408203115.94c4c291.tar.gz", hash = "sha256:196df5034a0d2a72c9aa013ce99150c789f5d4b138e44878233e1c81253d0fd1"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210408204951.30cdc3a0.tar.gz", hash = "sha256:93381241fac16ffe516db55d5a8232f6aeab1cc987ad1bdf08f3f2b8f42ebbab"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210411154713.b03040bd.tar.gz", hash = "sha256:28043bc9bf1be5bfb242e256796f64e64521009b3ced454d736fb85015a56de9"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210413120325.47d8e6c3.tar.gz", hash = "sha256:ed7feaa15bd3b6537190b607867bb9fbc293a69847ca01c5d85d84df9950acae"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210413125407.466a6e29.tar.gz", hash = "sha256:46cbccae7ea6a7def08bd1ec6881feade7681906b480090ddea1b3db68ed976e"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210413170223.83fc8097.tar.gz", hash = "sha256:1eb08d87033928080c6fb30c4bfe756ad21c110c21236f0ef21a2a130cf0c6cc"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210413171814.97e442b6.tar.gz", hash = "sha256:e5091f608a6fbec65e4bc3f0ac89a6401a3516a36e84229aea3f620ebb3c58a4"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210413205314.a990b99b.tar.gz", hash = "sha256:b1e70a2965c4c6bfe440b99a1208482f68928e5a95875e63a0caed65ba087187"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210414131048.3333d61a.tar.gz", hash = "sha256:ce88fa6d5a4b70b8a4846410fdeaa3b369a64ef69fa222faa8ba32f69a263735"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210414162612.8251a782.tar.gz", hash = "sha256:c57e2ded72874d2f6784bc2ec38c7731d0a5fd9564195a6d7d0b29f467b03a40"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210414173418.d859205b.tar.gz", hash = "sha256:2d95f13cf7c1537a9d48f2ccbcceb68f780a54739c8996c77f858d15e0662dfc"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210414185256.a52afb05.tar.gz", hash = "sha256:4112081bf169fb83b2bfe96c8eb5d11eb9a3a011d00e34b9dd59f81b9d0ec37a"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210414210640.719faa35.tar.gz", hash = "sha256:2cf45a6fb10f283e1c8e2f78ea61c1222a396733dbc1b428e3194c722f1a5cc4"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210414211751.3bfcc9c2.tar.gz", hash = "sha256:9d11b8f1ad28d86ab15cbd4b0c44f98860216fafb788d52a8c05a2d01bdd626d"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210415075328.eb22ff04.tar.gz", hash = "sha256:4f1b238ebd124a0a9107f2ac6df0a2eb1e30f43847cea798c0d105b9ff975693"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210415081501.ab7953bf.tar.gz", hash = "sha256:b53603bfff230fc8a5fb36b52bf9176a198e64b5a2705819694466f2f2727ef7"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210415193215.2a851f31.tar.gz", hash = "sha256:4e2321518290b6453a9514164e6448c407742b1fc9fc4f62bc396a2bd16b834f"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210415205640.e3bed4c2.tar.gz", hash = "sha256:0e0e1c13393dba4c3cace9d060eda1c7159e46beea2108b2face9fe95e3e2c17"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210415212302.b200ef3e.tar.gz", hash = "sha256:9f6d9840223618f8d3549f19dedae0f173ca03a18adb639bb2c49dfecea47d92"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210415222556.37d73508.tar.gz", hash = "sha256:5a00085a71ced055c9e71903bc608919029a8de297b6987d8e1263cbc5925390"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210416094627.29e673dd.tar.gz", hash = "sha256:8613c0458dcfb7fe88a481b5193dc74c95f09bb04c3458d8c028ec62b3a8f429"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210416180926.e07a8fa9.tar.gz", hash = "sha256:e2b56145cd93ca60ec2f88bd880699670c46795d714999311012aec24898e185"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210416182514.a9e12912.tar.gz", hash = "sha256:85da6db5a3787d4cc254b19a1d7ad324d7ea632b4cadf3ef2fd6a950dc287ca1"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210416185404.87cda3a7.tar.gz", hash = "sha256:13053dbcea14bad3d026ec288aae89f3f35866b19691e606db9bb14380331b4e"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210416190643.ce484b16.tar.gz", hash = "sha256:4a64e59bd22bf467b8ff0c1b77f26b965eb6411f7731d66a9cff597bdebf436a"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210416190706.2dba6aa3.tar.gz", hash = "sha256:72f22af9dbb0d5eb19629c0d05af7e92063f4ba6142aa0a6950d80a463bc96b9"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210416202532.7675da51.tar.gz", hash = "sha256:c3a68e71ee69fc71aa0fca0ed3b4eac544403387262d6836086224597ba47787"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210416204906.bf5ffd15.tar.gz", hash = "sha256:ee4187fe246409b5819677ed8f97e0f1f3a5255864f88ffa4ffc7a0a2d54cbe7"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210416205923.c8d07af1.tar.gz", hash = "sha256:b0a5171d60896d6dd9215dcc133042770f056482a31b987b3a39f8867db7f9ba"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210416214418.a53d3a1a.tar.gz", hash = "sha256:dc2964aefe73d628a62139f23894ec3bc7c55e2da597d3b6d2308d9525a0ab9d"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210416215531.63a42cdf.tar.gz", hash = "sha256:e84b70d5b9b5a6616427d8471e55787628bc9ba1a6f6fabefc4c2b4abd69ba93"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210416221013.ee8679da.tar.gz", hash = "sha256:c5497b2f56cc3955da48cfe4b98cc8fff1e2a6da481ddf183af18319460f53c0"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210417103737.29fbbeb0.tar.gz", hash = "sha256:2f288b5615bbe51d79e980422deaf311902d3020b8fdb943b37bc96eabc20383"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210417122516.5168ee93.tar.gz", hash = "sha256:2ca4d50e81e27c51496dd8549de6357f0dd1c9c8c5bd48717935b7887859b02d"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210417124934.183a0dbf.tar.gz", hash = "sha256:85063cddf42699c7d2bea4372de50dec7c380c74235e6f9ed27daeb1b8c1ff65"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210417131248.76d5fcc3.tar.gz", hash = "sha256:3f399c795e824e8e3892c38c0b01af19ef3b0b827d942a0f8294e3711e7272a4"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210417132234.f0e29a55.tar.gz", hash = "sha256:cceacddc3f24b74b6c3b2178fb9a17b64f87987c64a35cc6bd45e39e229f8e44"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210417152537.178df480.tar.gz", hash = "sha256:c52ec0e59ba626f53c797d4e29452254103181be1ef7375b1be3d7a657dc7e4d"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210417170003.1fd6195e.tar.gz", hash = "sha256:0bbf1ee8631e85c7e1acf52e912945f6618d417926334c66c8bdf72c7bd729a1"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210417173610.6b514d1e.tar.gz", hash = "sha256:58d25c13526211df291b998b2d36c6a4680ff195b146ee2cb3a7e499f41db42b"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210417184746.82178a16.tar.gz", hash = "sha256:9b936c04f45f4898cd7bf8877a0227dc65f4dc332f23bf727dd0a6b22ffb1137"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210418150411.327549b6.tar.gz", hash = "sha256:bd49c92da1687335fd66ef7ed11e2d197f8985fda39463208adb434a2432eff7"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210418195231.9cc26eb6.tar.gz", hash = "sha256:42a6e4ead770974caf6e0c9ae09888ccf75597adc5a1c1b1efb10ecfc8cb6734"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210418201326.a659c916.tar.gz", hash = "sha256:2062d99ac8eca6d488fcf8b074f57c9adc87b0765875cfaabefff8a25a81af40"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210420063518.52e4b4c8.tar.gz", hash = "sha256:20775c936a7d2cf34836e2f691c1819799032529796c7fcea435befdfba590a9"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210420081335.b9fe9e08.tar.gz", hash = "sha256:ab7bb92f9279602a9edec202d8568506f69601d6fce529f8cd4ab86f41ee553c"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210420083403.072a542e.tar.gz", hash = "sha256:a70cf54dc3b7de1ccfd10930f02e26630c480c5d1ca663be165444ccb0f6e6cf"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210420195745.c64671b6.tar.gz", hash = "sha256:6b4efaa632a2c23d5f46a6ebde3b8bea276c4d7f3f69356942500c8960844ba0"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210420211222.e8dc50c3.tar.gz", hash = "sha256:542a36216af6e9c1d39a72cced0c2eaef4a829518b252c61af714d4a8eae37e5"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210420212018.e71f1ea9.tar.gz", hash = "sha256:47b6014f8e47ba57150367036fe9762164e22e13daad778643f73dee95b71c5a"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210420215134.3f447b3b.tar.gz", hash = "sha256:66678439151443f83f9533f5a17ff4cf127d1267fd40d205e580fdd7aed8bc5d"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210421185152.6631ab3b.tar.gz", hash = "sha256:c951a32009596d38723b0839c401133641470cde739ecff4a3ca94d8701b0543"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210421192142.4c0c841f.tar.gz", hash = "sha256:22db093afce9b65d3d11e8a0ffca3d9441e465ac5d16126925584c5c355286e0"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210421193251.6fc69398.tar.gz", hash = "sha256:ecaf52c30363d7cf5333312c021cffbd0f3146dbc906b6a5dcfe7dbba1f74e82"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210421194328.54077d6f.tar.gz", hash = "sha256:30236b78a30ab680fdfcff7d7b3b3cff1619b9035d7943d1efa98b39c1c67f59"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210421195054.92b9b545.tar.gz", hash = "sha256:83a6e5ea8397c8a8eea1a68fff02152a428ce64d5d7d761d7599a7056727af28"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210422185706.c7fae2a0.tar.gz", hash = "sha256:b30ea4decb40e1e872ecf821ef7678a8238077ba4eec46d2a5a7cb4b5c19b7b9"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210422190231.915790ff.tar.gz", hash = "sha256:67324172b76867a38087928f80cd3a6065be11a842f9d82d8870dfc77d1cd908"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210422191150.17189375.tar.gz", hash = "sha256:a05b3635414a0c04baabeb538971163fe05d74f240ad2b771b481efd8c9fdc0f"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210425125708.0c3778c8.tar.gz", hash = "sha256:b8de9a26b2e57edeefb626e7ac4681557c5e38f8fbdeb2a9d2ac72389320a1ef"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210425131027.639e74e1.tar.gz", hash = "sha256:4a6a1dc452994b0c3348949286a614cf6fa6a165c1b3bdb322ad0aa880368336"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210425141833.291781db.tar.gz", hash = "sha256:54f69ad0ee44982c9ede9e4baa851e55084c39692eefb52c79427ba7e8372746"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210428141608.7dcdd1e1.tar.gz", hash = "sha256:960c2bf0495d59e10f9d9a94d7c6211d3ace9124345437e55db768b3127772b9"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210429100850.2da5f8cd.tar.gz", hash = "sha256:b2bf53a6560b1357435f8e3ac675b0c87faafb8a9bc20df48aabceea2c1f8033"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210429154305.220887cd.tar.gz", hash = "sha256:2302c6257fb2094a5807d7473ba2e0f04ffd8eb9982e8ca4c7f262f8ba74305a"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210429172736.9525df89.tar.gz", hash = "sha256:4a118d38df89e1560a77d867b991cef3aa82bb8727da615da7d0cc3b43ed5ca8"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210429195720.62ce6f82.tar.gz", hash = "sha256:c0b6598ba6bf892fb22dd93351fa4673629114a2a7a97227a09c8e80ed5875f2"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210430141509.72bcb568.tar.gz", hash = "sha256:a6af0c8d9985ebada82d8a8514ba01ac5822ef9ee680b4fbb83dc71b79261dab"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210430194309.1b350d89.tar.gz", hash = "sha256:ac4ef788f015e34781c8149e62d1c409e7809286e1a8aea2cf62cecb74edbc3d"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210430195057.6e478f1d.tar.gz", hash = "sha256:1c8407626ce8e3938f8ede2df9c0e923e22fc5e665caafe5f7083f8bf00c9c2c"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210430195631.db66c5d5.tar.gz", hash = "sha256:ed7d03e7076b8a6298786b76a960fb7825f6a4716a7a9119baee42fdc3a252fb"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210430202402.d3bf1dd6.tar.gz", hash = "sha256:a5664fc8b5e00b3a0f2edaff852f81793ae2f2c76153b9eb168704ec4c61ec68"},
+    {file = "AlekSIS-Core-2.0a5.dev0+20210504095553.39c31522.tar.gz", hash = "sha256:eb4268453ab8addd48ae9c51187f30d0c19ed172b089739dd282d179cf591b78"},
     {file = "AlekSIS_Core-2.0a5.dev0+20210217102451.bbdb8454-py3-none-any.whl", hash = "sha256:0c5359f23d48e3d8482c2e13c973f76ec314c0a11241186affaad0a7c8ed655d"},
     {file = "AlekSIS_Core-2.0a5.dev0+20210217123802.d23be3b6-py3-none-any.whl", hash = "sha256:381bb46e98b9dd6dfef638ade1cbfe837dd7c72779b6250819f99897c7050c6d"},
     {file = "AlekSIS_Core-2.0a5.dev0+20210221200356.d50b445b-py3-none-any.whl", hash = "sha256:9375fc896a88143afc986d6c7ab7f77a0bd778f4b72d3790f4f46b313ba7c03f"},
@@ -2958,6 +2973,88 @@ aleksis-core = [
     {file = "AlekSIS_Core-2.0a5.dev0+20210405104043.40f11494-py3-none-any.whl", hash = "sha256:c786df03a7998fe108af53c8ed8120559938ca3671e4dca997c3ab0b7cd9cc2d"},
     {file = "AlekSIS_Core-2.0a5.dev0+20210405112438.524b91d7-py3-none-any.whl", hash = "sha256:46cb3ba4da387c3adabc1fac8573878ca93db82dfd69e92c44a4af7c7e68da1b"},
     {file = "AlekSIS_Core-2.0a5.dev0+20210405125427.1091cda7-py3-none-any.whl", hash = "sha256:3136c6030619c34ea23ff7725a93104d7538268c5bb6f3960550a43b313e5a44"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210405203530.e1650f50-py3-none-any.whl", hash = "sha256:e829b99a7c56a13f89f91e2ce9c60f94096df3f246f4423d76f545f954c18fb6"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210405204907.4e887423-py3-none-any.whl", hash = "sha256:a434c772c1f410ad7170becbc681a02366f59ea9108a288e3c496c5009a131c4"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210405205759.2fd6ad6e-py3-none-any.whl", hash = "sha256:07d6e5f707180dd882999897b361afd3bf1fa3f7491a730d1b5b4a39ad34f01d"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210407100203.cb16c7ce-py3-none-any.whl", hash = "sha256:3cfa05bba50134b206eb9e7087083240315537e1495c8dd12899925e990b6a32"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210408144309.a23d091a-py3-none-any.whl", hash = "sha256:97c9f476b8ee20ab101777d406cfbd3b5f8b09b0137c308236aba7ff99f1419b"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210408145707.9ade2048-py3-none-any.whl", hash = "sha256:8ac1c697d4838c2a58a81de7d721ce0b21eb674eeb82c96f542fc956a76cd449"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210408191547.c6bbf577-py3-none-any.whl", hash = "sha256:e18ffee1d734a76e5bde8b0cd27e371620185bd94b196a45210ad043956db60b"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210408192808.873a673d-py3-none-any.whl", hash = "sha256:8ef51c43c2da554a88270d02f1429144d0ea72efd3b332406f7a35c1b0102374"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210408202102.04a696db-py3-none-any.whl", hash = "sha256:3559ad1759c446012234b80d6d3569a8039bfc334040809e689b063523926f8e"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210408203115.94c4c291-py3-none-any.whl", hash = "sha256:5fe2b7a821d51054b8772d258f11c8ce4c2bec32b11dc79b0427d05ba0f71e29"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210408204951.30cdc3a0-py3-none-any.whl", hash = "sha256:d20155d5b0ead95c69edb14d171c720ad6c9b5019d9112072f632def8d0dc486"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210411154713.b03040bd-py3-none-any.whl", hash = "sha256:ba3e5331c9c8baf6a546ebc33b8d55bb94cc3c4fdb21a5db411ed4442dd84fe6"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210413120325.47d8e6c3-py3-none-any.whl", hash = "sha256:41d7dae47c1df34ff6ddaa41a9ede52e0d8fb41dc931ed2ca7ca25341e12c83f"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210413125407.466a6e29-py3-none-any.whl", hash = "sha256:c200be1445d85d1b015fa931538ccdc45f2d70ba3ebc069ec18dcb54f0ca02ff"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210413170223.83fc8097-py3-none-any.whl", hash = "sha256:80425453d0c5b38cef44891a69d49359882e1df60066a989d31bcb4f1185f9b5"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210413171814.97e442b6-py3-none-any.whl", hash = "sha256:d22595b02f64f09c1dccfbaad10cb1c58f6dd1c23a45213bd9c5235918c66119"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210413205314.a990b99b-py3-none-any.whl", hash = "sha256:284f1c77a1abf306e94835e6dc2be73bbd35f47f257a07a3c627d522d48a819a"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210414131048.3333d61a-py3-none-any.whl", hash = "sha256:d74d576aedbaece72128584989f2d1799566bca5fdf81e84af158c24fdfa368f"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210414162612.8251a782-py3-none-any.whl", hash = "sha256:fd44740f6fae596cffcdc90da4c79e46dc2fdfb297331539fcde29a38c2906ee"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210414173418.d859205b-py3-none-any.whl", hash = "sha256:c3fb99293dea28d2f39e045b69892e383f6012577b470d36a605df5ad624e68d"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210414185256.a52afb05-py3-none-any.whl", hash = "sha256:1e9d918ab216d210eb073a20669cb235129f4f8a1a64246b718107ed38158132"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210414210640.719faa35-py3-none-any.whl", hash = "sha256:de03d1ecd2637de7b271cb77fbbc0f65d803369e19eb52e100597a0806d49338"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210414211751.3bfcc9c2-py3-none-any.whl", hash = "sha256:3405db22c30a7b752d20bce3cd5067b17dade48b743877687c32fc47cf84f3e8"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210415075328.eb22ff04-py3-none-any.whl", hash = "sha256:d9959a8319267e642d49cdfeb773c6846190db8fdf68d0911a680f5d5c119dd9"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210415081501.ab7953bf-py3-none-any.whl", hash = "sha256:4e00bb9abf0238bbf8ecaaf2dd2d869ebcb3e4a2fd64c2772107e1c34c17fa2c"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210415193215.2a851f31-py3-none-any.whl", hash = "sha256:78bacd79cb3512fb09eff0ea90ff40f2508221bd34f951e39c1bf29819940aa4"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210415205640.e3bed4c2-py3-none-any.whl", hash = "sha256:39a56da60ef1b2649188257bc5a86b2f5b04f6f305e24ae9890f097fdb1827b7"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210415212302.b200ef3e-py3-none-any.whl", hash = "sha256:e3f5a534ebeb80c00dbed52621ab63b7825062617f0048fc3ae014472f56709c"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210415222556.37d73508-py3-none-any.whl", hash = "sha256:8312198c3f4a5832e4a6380f59262873419076206a9ded1a33073c6c2799ccf6"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210416094627.29e673dd-py3-none-any.whl", hash = "sha256:4b92638293b94cc74cdb992f1dd14aa1b63530e72622c403d94c47dd8d9d9059"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210416180926.e07a8fa9-py3-none-any.whl", hash = "sha256:54c1070e1cc6111527c9419a3dba0894e6daf100934da3fb67c06df837c9ef81"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210416182514.a9e12912-py3-none-any.whl", hash = "sha256:f76f1553ea6443deadd79aa2e50bf86627971433f5b72e20858df381759f87de"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210416185404.87cda3a7-py3-none-any.whl", hash = "sha256:e5c09c418bc63e142d79e06006580ee7ce091da980ec6391c7d7a4223fbac508"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210416190643.ce484b16-py3-none-any.whl", hash = "sha256:48c63f8c148d50ac1fa87e623b68cd18566a2b44b1aa2fc060daa9675bd769e2"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210416190706.2dba6aa3-py3-none-any.whl", hash = "sha256:b97fecef8461c78a28f32e5b505fa21279e67ebe902c3f17ab2a5f6233b380fc"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210416202532.7675da51-py3-none-any.whl", hash = "sha256:e612d7eb41ffe3e52d706e6d17667a8d7df3668c4d0b15bdfac4570e6656ed74"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210416204906.bf5ffd15-py3-none-any.whl", hash = "sha256:84475f3c88848cdbbc13af987e07b314d48316f9d3d8b72d9974335032c969fa"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210416205923.c8d07af1-py3-none-any.whl", hash = "sha256:0b9866cbe02296827b8a7611a246df7e94b2be01608d3c9aec5a26c2250849aa"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210416214418.a53d3a1a-py3-none-any.whl", hash = "sha256:d0cce9f7e86eb7a898474ef303a723a57ae426d15da061c453e0e36c9b4773ba"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210416215531.63a42cdf-py3-none-any.whl", hash = "sha256:6c13ab00f7397f462b9fde816dcb9bb735fa5b45dbcd79eb403801ad61294939"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210416221013.ee8679da-py3-none-any.whl", hash = "sha256:fb2ab235aaa88f8f6a2fe7e84444c7fda5bf88a8df06a2a7b84500de8136f388"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210417103737.29fbbeb0-py3-none-any.whl", hash = "sha256:d7227a1635cc805e519bb5141c52f909e6f5354b5a99928e362e0194ea048960"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210417122516.5168ee93-py3-none-any.whl", hash = "sha256:4588275418158f8a7c265a0c12cf5995f10611ac75f155a49797ae0e929ddb07"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210417124934.183a0dbf-py3-none-any.whl", hash = "sha256:0a8e28d2ea9d94acf256a167509f5146e149f147daa4b52c8b372f1c65c7db90"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210417131248.76d5fcc3-py3-none-any.whl", hash = "sha256:e0fd85fbcdbcdbcdd6e0f838071f8c79c38a9b8b310627c27cd9528587b7eeda"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210417132234.f0e29a55-py3-none-any.whl", hash = "sha256:631b0fee9e6ef25bea004f027577b91c9361b2f79ce552673078a8f06f7ebc96"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210417152537.178df480-py3-none-any.whl", hash = "sha256:cd43a1262cebb2a4053daf9c1a1f5dfcfc51bccd10f752c7c25edca871e0a8ea"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210417170003.1fd6195e-py3-none-any.whl", hash = "sha256:3c58d423fa6519a4a4a92fa74e9fdf3cce647bcb8fd6eaf0b927cadcfddad692"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210417173610.6b514d1e-py3-none-any.whl", hash = "sha256:9e689d7cbe4887e64215053b8f6ad100756ebb09333ba31e864d3252aa22e32c"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210417184746.82178a16-py3-none-any.whl", hash = "sha256:2a2633212c9f0ee95d834941410398f71924592d9075ff9130c8e6d1285ae0ab"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210418150411.327549b6-py3-none-any.whl", hash = "sha256:18088bd855093b168eb4e2d0fa855ab2f21cf5190e67ecefab035324a8882319"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210418195231.9cc26eb6-py3-none-any.whl", hash = "sha256:607c7d5a7dfa69d948f545f77bc8a063efd788c7df9a22808060dff3735d2b72"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210418201326.a659c916-py3-none-any.whl", hash = "sha256:5b1860be9dffe1468b953f0a52b2a684f3c961a61f0493657e0402e8af0375c1"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210420063518.52e4b4c8-py3-none-any.whl", hash = "sha256:72d3077361aab8c6c38e79477bbc1cb1b0f02eba78331c8e3cd3d47c42858b3e"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210420081335.b9fe9e08-py3-none-any.whl", hash = "sha256:c09c413e760f7cdd9606240d0ea27d52df49637779307893eaec0dc4592a5191"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210420083403.072a542e-py3-none-any.whl", hash = "sha256:2546b709eb4c082d16ade6966ef6114e34a488376057d70e8ed2a8c5feb7ac40"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210420195745.c64671b6-py3-none-any.whl", hash = "sha256:64d3b99971e0ec8e39f1d50f5c10930a47c3907ae23b53fb6dbb258b15191843"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210420211222.e8dc50c3-py3-none-any.whl", hash = "sha256:6fb32bd922ca8fe5d71ae6b0d2604896158bcd6a3e3655dabc004c5c04227e40"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210420212018.e71f1ea9-py3-none-any.whl", hash = "sha256:257112ee50228b33006118530201582f3dd154c560f8ec9e7b76a54b9fe53a0c"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210420215134.3f447b3b-py3-none-any.whl", hash = "sha256:3ecc844a3afd2d8c5e03ce21c93f1800d40d008ae2a9815dd8458ec19e5b6e88"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210421185152.6631ab3b-py3-none-any.whl", hash = "sha256:8f36be4b880149417e3c55b75041d990e8ae062a45b5b0f0e4df6fea8b6e3dcd"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210421192142.4c0c841f-py3-none-any.whl", hash = "sha256:d0c0bb622f36ab3a494d4582053ef1d33e9fd42837346f6c8d1211647b7e8bf7"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210421193251.6fc69398-py3-none-any.whl", hash = "sha256:2a6af4b1244bb2df53ee2636728778a7d6b075285d91e927652777ecbd5f6aa5"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210421194328.54077d6f-py3-none-any.whl", hash = "sha256:1aa0c2ef25c2cb61ad555d27dfddd520d72da98d75e3aabb5653d1c5041c948d"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210421195054.92b9b545-py3-none-any.whl", hash = "sha256:21df57a8cfaa69de00862194ffe7dfa89ce9b598f52d63870656451be0f707ef"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210422185706.c7fae2a0-py3-none-any.whl", hash = "sha256:ac551d4c5a56bfa715485aa942b007175cf5a2f86b5528c61ffe7236af5af93d"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210422190231.915790ff-py3-none-any.whl", hash = "sha256:4f3ff2c17524997c625478753c791a641371983d26bcf770dbe1692b145535ea"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210422191150.17189375-py3-none-any.whl", hash = "sha256:8e6b98cedefa2a226a55fc32424a31ec646cd6def1c962ef1c4b58b36ca058c3"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210425125708.0c3778c8-py3-none-any.whl", hash = "sha256:35f8041dfc1d44665a840e0f9244e36462da89fe25efb34bfc63868120355abc"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210425131027.639e74e1-py3-none-any.whl", hash = "sha256:112c80bae68070b5d297d87b5d0c822f1a1f128c15fda4360841d5f27db06585"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210425141833.291781db-py3-none-any.whl", hash = "sha256:00b287ee78f84db2bd47d19c4ad95dd7580b01290460133422d1d296147ecc96"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210428141608.7dcdd1e1-py3-none-any.whl", hash = "sha256:cf013317fb03df60ac8be049afc68fe86850fca3d36446f6cdfba25c9915028e"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210429100850.2da5f8cd-py3-none-any.whl", hash = "sha256:a93721f0437f50e54c13e5f7de86a6f07a58f64785f75d9952a5e6965abfc6fa"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210429154305.220887cd-py3-none-any.whl", hash = "sha256:b6d03daa5f91d9ce8586dd1e0d1413e84876d96f4716cc04d4f36c19c7e28e80"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210429172736.9525df89-py3-none-any.whl", hash = "sha256:0cf3f8ed6714c4fd162e3e48fd71df4a231a4ef7494283fb79d7d596c34df7ca"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210429195720.62ce6f82-py3-none-any.whl", hash = "sha256:18834339d892fd40a3248b966dea177f213c645cdf3e514b0481cf08fb5bcde4"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210430141509.72bcb568-py3-none-any.whl", hash = "sha256:b9084e21c5765b0895a1eb2be26ecc99f2fd0778a116cd320fd56dc19b314e78"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210430194309.1b350d89-py3-none-any.whl", hash = "sha256:ef0778ab1a305cb839b098c69887bea6a965c90698f18aa396760fa365fd156c"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210430195057.6e478f1d-py3-none-any.whl", hash = "sha256:1ce4afab4712246e366672b1662a4afcd13d1f4bb2b77d2ba501224c7176e7e6"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210430195631.db66c5d5-py3-none-any.whl", hash = "sha256:cb39f4fac529427e7d67ac40bff8019597d8a038bbfbcdbe7648f1c1391119e3"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210430202402.d3bf1dd6-py3-none-any.whl", hash = "sha256:8dceef1e4f3a41d73dc170f069095c4a3e82c93f8ad64acb523ce4886ccc4af1"},
+    {file = "AlekSIS_Core-2.0a5.dev0+20210504095553.39c31522-py3-none-any.whl", hash = "sha256:3c8121b7fc13d7c892d00f44544ede2d816fca4157651303467036d6aaab7d59"},
 ]
 amqp = [
     {file = "amqp-5.0.6-py3-none-any.whl", hash = "sha256:493a2ac6788ce270a2f6a765b017299f60c1998f5a8617908ee9be082f7300fb"},
@@ -2972,8 +3069,8 @@ appnope = [
     {file = "appnope-0.1.2.tar.gz", hash = "sha256:dd83cd4b5b460958838f6eb3000c660b1f9caf2a5b1de4264e941512f603258a"},
 ]
 asgiref = [
-    {file = "asgiref-3.3.1-py3-none-any.whl", hash = "sha256:5ee950735509d04eb673bd7f7120f8fa1c9e2df495394992c73234d526907e17"},
-    {file = "asgiref-3.3.1.tar.gz", hash = "sha256:7162a3cb30ab0609f1a4c95938fd73e8604f63bdba516a7f7d64b83ff09478f0"},
+    {file = "asgiref-3.3.4-py3-none-any.whl", hash = "sha256:92906c611ce6c967347bbfea733f13d6313901d54dcca88195eaeb52b2a8e8ee"},
+    {file = "asgiref-3.3.4.tar.gz", hash = "sha256:d1216dfbdfb63826470995d31caed36225dcaf34f182e0fa257a4dd9e86f1b78"},
 ]
 asn1crypto = [
     {file = "asn1crypto-1.4.0-py2.py3-none-any.whl", hash = "sha256:4bcdf33c861c7d40bdcd74d8e4dd7661aac320fcdf40b9a3f95b4ee12fde2fa8"},
@@ -2984,12 +3081,12 @@ atomicwrites = [
     {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"},
 ]
 attrs = [
-    {file = "attrs-20.3.0-py2.py3-none-any.whl", hash = "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6"},
-    {file = "attrs-20.3.0.tar.gz", hash = "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700"},
+    {file = "attrs-21.2.0-py2.py3-none-any.whl", hash = "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1"},
+    {file = "attrs-21.2.0.tar.gz", hash = "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"},
 ]
 babel = [
-    {file = "Babel-2.9.0-py2.py3-none-any.whl", hash = "sha256:9d35c22fcc79893c3ecc85ac4a56cde1ecf3f19c540bba0922308a6c06ca6fa5"},
-    {file = "Babel-2.9.0.tar.gz", hash = "sha256:da031ab54472314f210b0adcff1588ee5d1d1d0ba4dbd07b94dba82bde791e05"},
+    {file = "Babel-2.9.1-py2.py3-none-any.whl", hash = "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9"},
+    {file = "Babel-2.9.1.tar.gz", hash = "sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0"},
 ]
 backcall = [
     {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"},
@@ -3130,23 +3227,21 @@ curlylint = [
     {file = "curlylint-0.12.2-py3-none-any.whl", hash = "sha256:98bc15609ce858387dd70a28c7ddda96e82d0f1cb8bf51b8902532ce0fc1a97e"},
     {file = "curlylint-0.12.2.tar.gz", hash = "sha256:76b557cf8d007bd92df2dae61a02e65f8aa2ff3e05c6398b1314d92692fbb0d8"},
 ]
-data = [
-    {file = "data-0.4.tar.gz", hash = "sha256:2726a65da1af31e2345b6bba81ae4cee87dddf17f7c62f5c63ba7327a8480667"},
-]
 decorator = [
-    {file = "decorator-5.0.5-py3-none-any.whl", hash = "sha256:b7157d62ea3c2c0c57b81a05e4569853e976a3dda5dd7a1cb86be78978c3c5f8"},
-    {file = "decorator-5.0.5.tar.gz", hash = "sha256:acda948ffcfe4bd0c4a57834b74ad968b91925b8201b740ca9d46fb8c5c618ce"},
+    {file = "decorator-5.0.7-py3-none-any.whl", hash = "sha256:945d84890bb20cc4a2f4a31fc4311c0c473af65ea318617f13a7257c9a58bc98"},
+    {file = "decorator-5.0.7.tar.gz", hash = "sha256:6f201a6c4dac3d187352661f508b9364ec8091217442c9478f1f83c003a0f060"},
 ]
 dj-database-url = [
     {file = "dj-database-url-0.5.0.tar.gz", hash = "sha256:4aeaeb1f573c74835b0686a2b46b85990571159ffc21aa57ecd4d1e1cb334163"},
     {file = "dj_database_url-0.5.0-py2.py3-none-any.whl", hash = "sha256:851785365761ebe4994a921b433062309eb882fedd318e1b0fcecc607ed02da9"},
 ]
 django = [
-    {file = "Django-3.1.7-py3-none-any.whl", hash = "sha256:baf099db36ad31f970775d0be5587cc58a6256a6771a44eb795b554d45f211b8"},
-    {file = "Django-3.1.7.tar.gz", hash = "sha256:32ce792ee9b6a0cbbec340123e229ac9f765dff8c2a4ae9247a14b2ba3a365a7"},
+    {file = "Django-3.2.2-py3-none-any.whl", hash = "sha256:18dd3145ddbd04bf189ff79b9954d08fda5171ea7b57bf705789fea766a07d50"},
+    {file = "Django-3.2.2.tar.gz", hash = "sha256:0a1d195ad65c52bf275b8277b3d49680bd1137a5f55039a806f25f6b9752ce3d"},
 ]
 django-any-js = [
-    {file = "django-any-js-1.0.3.post1.tar.gz", hash = "sha256:32306643d4989b3cdbbf6a87bb43ca4d5ca35863c96ad96a8bc0d50bcf9d4ab4"},
+    {file = "django-any-js-1.1.tar.gz", hash = "sha256:2972946902ba049f73bf8bb87e0a0118f77a8c9dca89438f193598bff758422f"},
+    {file = "django_any_js-1.1-py3-none-any.whl", hash = "sha256:1499934e293bbcaad29b8edaaefca87dda79eb3df1faeaaea67b80e2866ae1f8"},
 ]
 django-appconf = [
     {file = "django-appconf-1.0.4.tar.gz", hash = "sha256:be58deb54a43d77d2e1621fe59f787681376d3cd0b8bd8e4758ef6c3a6453380"},
@@ -3165,8 +3260,8 @@ django-cachalot = [
     {file = "django_cachalot-2.3.5-py3-none-any.whl", hash = "sha256:ed0782f9702ead95337692f0fae8bbb9352a106490f272d9b76e86b1da81c7e3"},
 ]
 django-cache-memoize = [
-    {file = "django-cache-memoize-0.1.8.tar.gz", hash = "sha256:f85ca71ddfe3d61d561d5a382736f83148fb75e542585e7028b65d6d3681ec85"},
-    {file = "django_cache_memoize-0.1.8-py3-none-any.whl", hash = "sha256:81b00714b50917431ce12a4544e0630a70c86fed27755a82186efc2945b8f8b3"},
+    {file = "django-cache-memoize-0.1.9.tar.gz", hash = "sha256:31f9d45fc1374d64963c5490877b857d3160d9b9047e40e40ed721345ca32bf3"},
+    {file = "django_cache_memoize-0.1.9-py3-none-any.whl", hash = "sha256:01b209488d3b62d2de362de82d55098f7393e36d31c6e220fa88165e3556aa28"},
 ]
 django-celery-beat = [
     {file = "django-celery-beat-2.2.0.tar.gz", hash = "sha256:b8a13afb15e7c53fc04f4f847ac71a6d32088959aba701eb7c4a59f0c28ba543"},
@@ -3184,6 +3279,10 @@ django-ckeditor = [
     {file = "django-ckeditor-6.0.0.tar.gz", hash = "sha256:29fd1a333cb9741ac2c3fd4e427a5c00115ed33a2389716a09af7656022dcdde"},
     {file = "django_ckeditor-6.0.0-py2.py3-none-any.whl", hash = "sha256:cc2d377f1bdcd4ca1540caeebe85f7e2cd006198d57328ef6c718d3eaa5a0846"},
 ]
+django-cleanup = [
+    {file = "django-cleanup-5.2.0.tar.gz", hash = "sha256:909d10ff574f5ce1a40fa63bd5c94c9ed866fd7ae770994c46cdf66c3db3e846"},
+    {file = "django_cleanup-5.2.0-py2.py3-none-any.whl", hash = "sha256:193cf69de54b9fc0a0f4547edbb3a63bbe01728cb029f9f4b7912098cc1bced7"},
+]
 django-colorfield = [
     {file = "django-colorfield-0.4.1.tar.gz", hash = "sha256:63a542c417b72d0dac898a0f61a2a00aed3c9aabc2f5057c926efccf421f7887"},
     {file = "django_colorfield-0.4.1-py3-none-any.whl", hash = "sha256:e38f8b9dabbab48a6dab3d1eb5bd802decb92970d56a28128c9a70cdbf383e30"},
@@ -3192,16 +3291,16 @@ django-dbbackup = [
     {file = "django-dbbackup-3.3.0.tar.gz", hash = "sha256:bb109735cae98b64ad084e5b461b7aca2d7b39992f10c9ed9435e3ebb6fb76c8"},
 ]
 django-debug-toolbar = [
-    {file = "django-debug-toolbar-3.2.tar.gz", hash = "sha256:84e2607d900dbd571df0a2acf380b47c088efb787dce9805aefeb407341961d2"},
-    {file = "django_debug_toolbar-3.2-py3-none-any.whl", hash = "sha256:9e5a25d0c965f7e686f6a8ba23613ca9ca30184daa26487706d4829f5cfb697a"},
+    {file = "django-debug-toolbar-3.2.1.tar.gz", hash = "sha256:a5ff2a54f24bf88286f9872836081078f4baa843dc3735ee88524e89f8821e33"},
+    {file = "django_debug_toolbar-3.2.1-py3-none-any.whl", hash = "sha256:e759e63e3fe2d3110e0e519639c166816368701eab4a47fed75d7de7018467b9"},
 ]
 django-dynamic-preferences = [
     {file = "django-dynamic-preferences-1.10.1.tar.gz", hash = "sha256:e4b2bb7b2563c5064ba56dd76441c77e06b850ff1466a386a1cd308909a6c7de"},
     {file = "django_dynamic_preferences-1.10.1-py2.py3-none-any.whl", hash = "sha256:9419fa925fd2cbb665269ae72059eb3058bf080913d853419b827e4e7a141902"},
 ]
 django-extensions = [
-    {file = "django-extensions-3.1.2.tar.gz", hash = "sha256:081828e985485662f62a22340c1506e37989d14b927652079a5b7cd84a82368b"},
-    {file = "django_extensions-3.1.2-py3-none-any.whl", hash = "sha256:17f85f4dcdd5eea09b8c4f0bad8f0370bf2db6d03e61b431fa7103fee29888de"},
+    {file = "django-extensions-3.1.3.tar.gz", hash = "sha256:5f0fea7bf131ca303090352577a9e7f8bfbf5489bd9d9c8aea9401db28db34a0"},
+    {file = "django_extensions-3.1.3-py3-none-any.whl", hash = "sha256:50de8977794a66a91575dd40f87d5053608f679561731845edbd325ceeb387e3"},
 ]
 django-favicon-plus-reloaded = [
     {file = "django-favicon-plus-reloaded-1.0.4.tar.gz", hash = "sha256:90c761c636a338e6e9fb1d086649d82095085f92cff816c9cf074607f28c85a5"},
@@ -3212,8 +3311,8 @@ django-filter = [
     {file = "django_filter-2.4.0-py3-none-any.whl", hash = "sha256:e00d32cebdb3d54273c48f4f878f898dced8d5dfaad009438fe61ebdf535ace1"},
 ]
 django-formtools = [
-    {file = "django-formtools-2.2.tar.gz", hash = "sha256:c5272c03c1cd51b2375abf7397a199a3148a9fbbf2f100e186467a84025d13b2"},
-    {file = "django_formtools-2.2-py2.py3-none-any.whl", hash = "sha256:304fa777b8ef9e0693ce7833f885cb89ba46b0e46fc23b01176900a93f46742f"},
+    {file = "django-formtools-2.3.tar.gz", hash = "sha256:9663b6eca64777b68d6d4142efad8597fe9a685924673b25aa8a1dcff4db00c3"},
+    {file = "django_formtools-2.3-py3-none-any.whl", hash = "sha256:4699937e19ee041d803943714fe0c1c7ad4cab802600eb64bbf4cdd0a1bfe7d9"},
 ]
 django-guardian = [
     {file = "django-guardian-2.3.0.tar.gz", hash = "sha256:ed2de26e4defb800919c5749fb1bbe370d72829fbd72895b6cf4f7f1a7607e1b"},
@@ -3227,8 +3326,8 @@ django-haystack = [
     {file = "django-haystack-3.0.tar.gz", hash = "sha256:d490f920afa85471dd1fa5000bc8eff4b704daacbe09aee1a64e75cbc426f3be"},
 ]
 django-health-check = [
-    {file = "django-health-check-3.16.3.tar.gz", hash = "sha256:a6aa6ea423eae4fd0665f6372b826af1ed20dfc3e88cf52789d0b49cfb64969c"},
-    {file = "django_health_check-3.16.3-py2.py3-none-any.whl", hash = "sha256:d0628ffc11aee7e62e73b58ff39179ea2a9ca5abfbc92cb345ceca268593dd71"},
+    {file = "django-health-check-3.16.4.tar.gz", hash = "sha256:334bcbbb9273a6dbd9c928e78474306e623dfb38cc442281cb9fd230a20a7fdb"},
+    {file = "django_health_check-3.16.4-py2.py3-none-any.whl", hash = "sha256:86a8869d67e72394a1dd73e37819a7d2cfd915588b96927fda611d7451fd4735"},
 ]
 django-iban-field = [
     {file = "django_iban_field-0.8-py2.py3-none-any.whl", hash = "sha256:9d11eacb49b939702aa169aa0a3c9880970ed087c236279c32c26f86c7e10092"},
@@ -3251,38 +3350,32 @@ django-jsonstore = [
     {file = "django-jsonstore-0.5.0.tar.gz", hash = "sha256:896dc10b08f59807eda1c6cebf43cd26e50d0db29d13495c027dc31e464be3c3"},
     {file = "django_jsonstore-0.5.0-py2-none-any.whl", hash = "sha256:9630c1fb43ae9f8e32733c5cf7d4c3775ba6f08532f517c64025053352d72844"},
 ]
-django-leaflet = [
-    {file = "django-leaflet-0.26.0.tar.gz", hash = "sha256:b90ea16f69e94cb89254569b5f3e1875602e4c028365acf2e5a1271d80bc6035"},
-]
 django-maintenance-mode = [
     {file = "django-maintenance-mode-0.16.0.tar.gz", hash = "sha256:57595795062156d5f3f712c885acc18b77a303425bf78b5de80e7fd47d9ab433"},
     {file = "django_maintenance_mode-0.16.0-py3-none-any.whl", hash = "sha256:88287573b4e95285052f664d4f08e15ac4c350c1a6c77bc743ca3fc6e1f6410c"},
 ]
 django-material = [
-    {file = "django-material-1.7.6.tar.gz", hash = "sha256:5488e8fe24069cc6682801692ad05293a4b60a637a87a31e0ebd9f3319cd371d"},
-    {file = "django_material-1.7.6-py2.py3-none-any.whl", hash = "sha256:b5496505da7dd92f23ca694bc411c6bf0ff584fc30f4239d890ab29f9260160c"},
+    {file = "django-material-1.9.0.tar.gz", hash = "sha256:5a7144d1029b4a2bfee2e5d0d8d00f30742dd7e3f868b3787d8cd61e54f26437"},
+    {file = "django_material-1.9.0-py2.py3-none-any.whl", hash = "sha256:816513170771bcb2540b5ce314fbef1a906906220587a9cb9521e61092a6f610"},
 ]
 django-menu-generator-ng = [
     {file = "django-menu-generator-ng-1.2.3.tar.gz", hash = "sha256:0c21a094b094add909655728b6b2d4a8baa5a2047da8f649be52589bea0e3ba2"},
 ]
-django-middleware-global-request = [
-    {file = "django-middleware-global-request-0.1.2.tar.gz", hash = "sha256:f6490759bc9f7dbde4001709554e29ca715daf847f2222914b4e47117dca9313"},
-]
 django-model-utils = [
     {file = "django-model-utils-4.1.1.tar.gz", hash = "sha256:eb5dd05ef7d7ce6bc79cae54ea7c4a221f6f81e2aad7722933aee66489e7264b"},
     {file = "django_model_utils-4.1.1-py3-none-any.whl", hash = "sha256:ef7c440024e797796a3811432abdd2be8b5225ae64ef346f8bfc6de7d8e5d73c"},
 ]
 django-otp = [
-    {file = "django-otp-1.0.3.tar.gz", hash = "sha256:381a15e65293b8b06d47b7d6b306e0b7af2e104137ac92f6c566d3b9b90b6244"},
-    {file = "django_otp-1.0.3-py3-none-any.whl", hash = "sha256:f4ab096b424c33ffe69453620356e1b7517f30dfb9ba13bfeaa1d1f20faddc13"},
+    {file = "django-otp-1.0.5.tar.gz", hash = "sha256:cc657a0e7266cda6ab42f861bdc3840ed24f7e441bc7f249916174dd1a6375a0"},
+    {file = "django_otp-1.0.5-py3-none-any.whl", hash = "sha256:75a815747a0542cc5442e3a6396dfd272c49a0866bee2149ac57ecc36ddd3961"},
 ]
 django-otp-yubikey = [
-    {file = "django-otp-yubikey-1.0.0.tar.gz", hash = "sha256:fbd409277892229b7e3578faa4f63ea766e242659456939164c8f71b845287b6"},
-    {file = "django_otp_yubikey-1.0.0-py2.py3-none-any.whl", hash = "sha256:07743473024900c3b7a14647039f2cf66148cf6243d6aee0853ba45516c224a4"},
+    {file = "django-otp-yubikey-1.0.0.post1.tar.gz", hash = "sha256:1da060257611d06e681848b7923fd788d878a79e8c358a373374deab13a085af"},
+    {file = "django_otp_yubikey-1.0.0.post1-py2.py3-none-any.whl", hash = "sha256:613c96be211c1267400a5a78ae63f212c722f82dffb9daef3c8b1df370abb9be"},
 ]
 django-phonenumber-field = [
-    {file = "django-phonenumber-field-5.0.0.tar.gz", hash = "sha256:1eb7af3a108744665f7c3939d38aa15b3728c57d13d45d656b0a2aa11e8cdc3c"},
-    {file = "django_phonenumber_field-5.0.0-py3-none-any.whl", hash = "sha256:adb46905cc4ecb19d8494424e1c4352f24946bb472340a2a17257d44bf8228e6"},
+    {file = "django-phonenumber-field-5.1.0.tar.gz", hash = "sha256:9eda963ac15b363393f677cc084efd45c3bd97bb5a0cdb4a06409ac99e05dd4b"},
+    {file = "django_phonenumber_field-5.1.0-py3-none-any.whl", hash = "sha256:48724ba235ee8248a474204faa0934c5baf9536f429859d05cb131fbd6b1c695"},
 ]
 django-polymorphic = [
     {file = "django-polymorphic-3.0.0.tar.gz", hash = "sha256:9d886f19f031d26bb1391c055ed9be06fb226a04a4cec1842b372c58873b3caa"},
@@ -3309,11 +3402,12 @@ django-reversion = [
     {file = "django_reversion-3.0.9-py3-none-any.whl", hash = "sha256:1b57127a136b969f4b843a915c72af271febe7f336469db6c27121f8adcad35c"},
 ]
 django-sass-processor = [
-    {file = "django-sass-processor-1.0.0.tar.gz", hash = "sha256:cb90efee38cd7b0fe727c78d8993ad7804de33f40328200dfc1a481307ef0466"},
+    {file = "django-sass-processor-1.0.1.tar.gz", hash = "sha256:dcaad47c591a2d52689c1bd209259e922e902d886293f0d5c9e0d1a4eb85eda2"},
+    {file = "django_sass_processor-1.0.1-py3-none-any.whl", hash = "sha256:1f043180c47754018e803a77da003377f5ea6558de57cd6946eb27a32e9c16a2"},
 ]
 django-select2 = [
-    {file = "django-select2-7.7.0.tar.gz", hash = "sha256:26b4c59cbeba57aea1737187b930a83c8070788286b4236b13f7873c01b32684"},
-    {file = "django_select2-7.7.0-py2.py3-none-any.whl", hash = "sha256:e56bfe3074d6b87524c5dbc139884c18c74a5e7324d66f0b93e42b6012ea0dc0"},
+    {file = "django-select2-7.7.1.tar.gz", hash = "sha256:dd091342e99436818b3fa98783ae6c24fb2a0cbc37ebd3faa0aef68422b6e416"},
+    {file = "django_select2-7.7.1-py2.py3-none-any.whl", hash = "sha256:8c54984bb931d842eab6a46d1b427c6883e5f5347529cda27dcd942fb37d87b9"},
 ]
 django-settings-context-processor = [
     {file = "django-settings-context-processor-0.2.tar.gz", hash = "sha256:d37c853d69a3069f5abbf94c7f4f6fc0fac38bbd0524190cd5a250ba800e496a"},
@@ -3322,8 +3416,12 @@ django-starfield = [
     {file = "django-starfield-1.0.post2.tar.gz", hash = "sha256:9bbc59870b958b439a2e52e3d44592ef6d80af4d57b36528292274c499f7df91"},
 ]
 django-stubs = [
-    {file = "django-stubs-1.7.0.tar.gz", hash = "sha256:ddd190aca5b9adb4d30760d5c64f67cb3658703f5f42c3bb0c2c71ff4d752c39"},
-    {file = "django_stubs-1.7.0-py3-none-any.whl", hash = "sha256:30a7d99c694acf79c5d93d69a5a8e4b54d2a8c11dd672aa869006789e2189fa6"},
+    {file = "django-stubs-1.8.0.tar.gz", hash = "sha256:717967d7fee0a6af0746724a0be80d72831a982a40fa8f245a6a46f4cafd157b"},
+    {file = "django_stubs-1.8.0-py3-none-any.whl", hash = "sha256:bde9e44e3c4574c2454e74a3e607cc3bc23b0441bb7d1312cd677d5e30984b74"},
+]
+django-stubs-ext = [
+    {file = "django-stubs-ext-0.2.0.tar.gz", hash = "sha256:c14f297835a42c1122421ec7e2d06579996b29d33b8016002762afa5d78863af"},
+    {file = "django_stubs_ext-0.2.0-py3-none-any.whl", hash = "sha256:bd4a1e36ef2ba0ef15801933c85c68e59b383302c873795c6ecfc25950c7ecdb"},
 ]
 django-tables2 = [
     {file = "django-tables2-2.3.4.tar.gz", hash = "sha256:50ccadbd13740a996d8a4d4f144ef80134745cd0b5ec278061537e341f5ef7a2"},
@@ -3351,8 +3449,8 @@ django-yarnpkg = [
     {file = "django-yarnpkg-6.0.1.tar.gz", hash = "sha256:aa059347b246c6f242401581d2c129bdcb45aa726be59fe2f288762a9843348a"},
 ]
 docutils = [
-    {file = "docutils-0.17-py2.py3-none-any.whl", hash = "sha256:a71042bb7207c03d5647f280427f14bfbd1a65c9eb84f4b341d85fafb6bb4bdf"},
-    {file = "docutils-0.17.tar.gz", hash = "sha256:e2ffeea817964356ba4470efba7c2f42b6b0de0b04e66378507e3e2504bbff4c"},
+    {file = "docutils-0.16-py2.py3-none-any.whl", hash = "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af"},
+    {file = "docutils-0.16.tar.gz", hash = "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"},
 ]
 dparse = [
     {file = "dparse-0.5.1-py3-none-any.whl", hash = "sha256:e953a25e44ebb60a5c6efc2add4420c177f1d8404509da88da9729202f306994"},
@@ -3363,18 +3461,19 @@ dynaconf = [
     {file = "dynaconf-3.1.4.tar.gz", hash = "sha256:b2f472d83052f809c5925565b8a2ba76a103d5dc1dbb9748b693ed67212781b9"},
 ]
 faker = [
-    {file = "Faker-7.0.1-py3-none-any.whl", hash = "sha256:08c4cfbfd498c0e90aff6741771c01803d894013df858db6a573182c6a47951f"},
-    {file = "Faker-7.0.1.tar.gz", hash = "sha256:20c6e4253b73ef2a783d38e085e7c8d8916295fff31c7403116d2af8f908f7ca"},
+    {file = "Faker-8.1.3-py3-none-any.whl", hash = "sha256:34cb72da6eaeaa6e7d2d651e5e216a50d8dcd141f6ac75c14154d3bee95c1eda"},
+    {file = "Faker-8.1.3.tar.gz", hash = "sha256:b9259dd6153ef035ca9220b8110c402b836f864764d284885cc0841f6495784c"},
 ]
 flake8 = [
-    {file = "flake8-3.9.0-py2.py3-none-any.whl", hash = "sha256:12d05ab02614b6aee8df7c36b97d1a3b2372761222b19b58621355e82acddcff"},
-    {file = "flake8-3.9.0.tar.gz", hash = "sha256:78873e372b12b093da7b5e5ed302e8ad9e988b38b063b61ad937f26ca58fc5f0"},
+    {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"},
+    {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"},
 ]
 flake8-bandit = [
     {file = "flake8_bandit-2.1.2.tar.gz", hash = "sha256:687fc8da2e4a239b206af2e54a90093572a60d0954f3054e23690739b0b0de3b"},
 ]
 flake8-black = [
     {file = "flake8-black-0.2.1.tar.gz", hash = "sha256:f26651bc10db786c03f4093414f7c9ea982ed8a244cec323c984feeffdf4c118"},
+    {file = "flake8_black-0.2.1-py3-none-any.whl", hash = "sha256:941514149cb8b489cb17a4bb1cf18d84375db3b34381bb018de83509437931a0"},
 ]
 flake8-builtins = [
     {file = "flake8-builtins-1.5.3.tar.gz", hash = "sha256:09998853b2405e98e61d2ff3027c47033adbdc17f9fe44ca58443d876eb00f3b"},
@@ -3405,22 +3504,20 @@ flake8-polyfill = [
     {file = "flake8_polyfill-1.0.2-py2.py3-none-any.whl", hash = "sha256:12be6a34ee3ab795b19ca73505e7b55826d5f6ad7230d31b18e106400169b9e9"},
 ]
 flake8-rst-docstrings = [
-    {file = "flake8-rst-docstrings-0.0.14.tar.gz", hash = "sha256:8f8bcb18f1408b506dd8ba2c99af3eac6128f6911d4bf6ff874b94caa70182a2"},
-]
-funcsigs = [
-    {file = "funcsigs-1.0.2-py2.py3-none-any.whl", hash = "sha256:330cc27ccbf7f1e992e69fef78261dc7c6569012cf397db8d3de0234e6c937ca"},
-    {file = "funcsigs-1.0.2.tar.gz", hash = "sha256:a7bb0f2cf3a3fd1ab2732cb49eba4252c2af4240442415b4abce3b87022a8f50"},
+    {file = "flake8-rst-docstrings-0.1.2.tar.gz", hash = "sha256:7d34d2175a0cd92aba0872ade74268b2f2c12582c7267d4a0e6ef1c32a828ce3"},
+    {file = "flake8_rst_docstrings-0.1.2-py3-none-any.whl", hash = "sha256:73b5db2fd9d4d7c7e6b7767931730c4570e5a89f34a1501b837afb3b6d31537a"},
 ]
-future = [
-    {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"},
+freezegun = [
+    {file = "freezegun-1.1.0-py2.py3-none-any.whl", hash = "sha256:2ae695f7eb96c62529f03a038461afe3c692db3465e215355e1bb4b0ab408712"},
+    {file = "freezegun-1.1.0.tar.gz", hash = "sha256:177f9dd59861d871e27a484c3332f35a6e3f5d14626f2bf91be37891f18927f3"},
 ]
 gitdb = [
     {file = "gitdb-4.0.7-py3-none-any.whl", hash = "sha256:6c4cc71933456991da20917998acbe6cf4fb41eeaab7d6d67fbc05ecd4c865b0"},
     {file = "gitdb-4.0.7.tar.gz", hash = "sha256:96bf5c08b157a666fec41129e6d327235284cca4c81e92109260f353ba138005"},
 ]
 gitpython = [
-    {file = "GitPython-3.1.14-py3-none-any.whl", hash = "sha256:3283ae2fba31c913d857e12e5ba5f9a7772bbc064ae2bb09efafa71b0dd4939b"},
-    {file = "GitPython-3.1.14.tar.gz", hash = "sha256:be27633e7509e58391f10207cd32b2a6cf5b908f92d9cd30da2e514e1137af61"},
+    {file = "GitPython-3.1.15-py3-none-any.whl", hash = "sha256:a77824e516d3298b04fb36ec7845e92747df8fcfee9cacc32dd6239f9652f867"},
+    {file = "GitPython-3.1.15.tar.gz", hash = "sha256:05af150f47a5cca3f4b0af289b73aef8cf3c4fe2385015b06220cbcdee48bb6e"},
 ]
 html2text = [
     {file = "html2text-2020.1.16-py3-none-any.whl", hash = "sha256:c7c629882da0cf377d66f073329ccf34a12ed2adf0169b9285ae4e63ef54c82b"},
@@ -3434,17 +3531,13 @@ imagesize = [
     {file = "imagesize-1.2.0-py2.py3-none-any.whl", hash = "sha256:6965f19a6a2039c7d48bca7dba2473069ff854c36ae6f19d2cde309d998228a1"},
     {file = "imagesize-1.2.0.tar.gz", hash = "sha256:b1f6b5a4eab1f73479a50fb79fcf729514a900c341d8503d62a62dbc4127a2b1"},
 ]
-importlib-metadata = [
-    {file = "importlib_metadata-3.10.0-py3-none-any.whl", hash = "sha256:d2d46ef77ffc85cbf7dac7e81dd663fde71c45326131bea8033b9bad42268ebe"},
-    {file = "importlib_metadata-3.10.0.tar.gz", hash = "sha256:c9db46394197244adf2f0b08ec5bc3cf16757e9590b02af1fca085c16c0d600a"},
-]
 iniconfig = [
     {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
     {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
 ]
 ipython = [
-    {file = "ipython-7.22.0-py3-none-any.whl", hash = "sha256:c0ce02dfaa5f854809ab7413c601c4543846d9da81010258ecdab299b542d199"},
-    {file = "ipython-7.22.0.tar.gz", hash = "sha256:9c900332d4c5a6de534b4befeeb7de44ad0cc42e8327fa41b7685abde58cec74"},
+    {file = "ipython-7.23.1-py3-none-any.whl", hash = "sha256:f78c6a3972dde1cc9e4041cbf4de583546314ba52d3c97208e5b6b2221a9cb7d"},
+    {file = "ipython-7.23.1.tar.gz", hash = "sha256:714810a5c74f512b69d5f3b944c86e592cee0a5fb9c728e582f074610f6cf038"},
 ]
 ipython-genutils = [
     {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"},
@@ -3466,9 +3559,6 @@ kombu = [
     {file = "kombu-5.0.2-py2.py3-none-any.whl", hash = "sha256:6dc509178ac4269b0e66ab4881f70a2035c33d3a622e20585f965986a5182006"},
     {file = "kombu-5.0.2.tar.gz", hash = "sha256:f4965fba0a4718d47d470beeb5d6446e3357a62402b16c510b6a2f251e05ac3c"},
 ]
-latex = [
-    {file = "latex-0.7.0.tar.gz", hash = "sha256:bf10c3fe27e9f3adccebc12e90ec239c86dcba101b89221f6775918211482a79"},
-]
 libsass = [
     {file = "libsass-0.20.1-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:4a246e4b88fd279abef8b669206228c92534d96ddcd0770d7012088c408dff23"},
     {file = "libsass-0.20.1-cp27-cp27m-win32.whl", hash = "sha256:697f0f9fa8a1367ca9ec6869437cb235b1c537fc8519983d1d890178614a8903"},
@@ -3542,6 +3632,10 @@ markupsafe = [
     {file = "MarkupSafe-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7d644ddb4dbd407d31ffb699f1d140bc35478da613b441c582aeb7c43838dd8"},
     {file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"},
 ]
+matplotlib-inline = [
+    {file = "matplotlib-inline-0.1.2.tar.gz", hash = "sha256:f41d5ff73c9f5385775d5c0bc13b424535c8402fe70ea8210f93e11f3683993e"},
+    {file = "matplotlib_inline-0.1.2-py3-none-any.whl", hash = "sha256:5cf1176f554abb4fa98cb362aa2b55c500147e4bdbb07e3fda359143e1da0811"},
+]
 mccabe = [
     {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"},
     {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"},
@@ -3591,8 +3685,8 @@ pathspec = [
     {file = "pathspec-0.8.1.tar.gz", hash = "sha256:86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd"},
 ]
 pbr = [
-    {file = "pbr-5.5.1-py2.py3-none-any.whl", hash = "sha256:b236cde0ac9a6aedd5e3c34517b423cd4fd97ef723849da6b0d2231142d89c00"},
-    {file = "pbr-5.5.1.tar.gz", hash = "sha256:5fad80b613c402d5b7df7bd84812548b2a61e9977387a80a5fc5c396492b13c9"},
+    {file = "pbr-5.6.0-py2.py3-none-any.whl", hash = "sha256:c68c661ac5cc81058ac94247278eeda6d2e6aecb3e227b0387c30d277e7ef8d4"},
+    {file = "pbr-5.6.0.tar.gz", hash = "sha256:42df03e7797b796625b1029c0400279c7c34fd7df24a7d7818a1abb5b38710dd"},
 ]
 persisting-theory = [
     {file = "persisting-theory-0.2.1.tar.gz", hash = "sha256:00ff7dcc8f481ff75c770ca5797d968e8725b6df1f77fe0cf7d20fa1e5790c0a"},
@@ -3602,12 +3696,12 @@ pexpect = [
     {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"},
 ]
 pg8000 = [
-    {file = "pg8000-1.19.1-py3-none-any.whl", hash = "sha256:35c1f3db6e5540456aa38da5f42589274e7266c25365d2829dc8d52513520abe"},
-    {file = "pg8000-1.19.1.tar.gz", hash = "sha256:cb7ace8c582b7000a5ee428efa8ff6c82a7d710cc0f7d2d76258703a2aa7afe3"},
+    {file = "pg8000-1.19.4-py3-none-any.whl", hash = "sha256:510db12be8ad85488289bd0b97bc340202cf6749da08cf8588032a047fb5d0ba"},
+    {file = "pg8000-1.19.4.tar.gz", hash = "sha256:7c9c6d57541b0f2153e23a8d759ceb3d7cb9308918fba6ad9e92f8e0e5a90bc8"},
 ]
 phonenumbers = [
-    {file = "phonenumbers-8.12.20-py2.py3-none-any.whl", hash = "sha256:7c2b26ee026f765a8032fc2a333b46fa1860445c7ce6df3b717b9f6985106084"},
-    {file = "phonenumbers-8.12.20.tar.gz", hash = "sha256:ee5a8508c4a414262abad92ec33f050347f681973ed0fb36e98b52bfe159f6b8"},
+    {file = "phonenumbers-8.12.22-py2.py3-none-any.whl", hash = "sha256:f9cb4882e5c7daeaa183af7b0390c44a02604731c7aab561d9456e1df4582207"},
+    {file = "phonenumbers-8.12.22.tar.gz", hash = "sha256:b20765cb9d1392308071a3462c06edcaa953cb383e3565f5fc0a6fb93f240150"},
 ]
 pickleshare = [
     {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"},
@@ -3653,8 +3747,8 @@ pluggy = [
     {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"},
 ]
 prometheus-client = [
-    {file = "prometheus_client-0.10.0-py2.py3-none-any.whl", hash = "sha256:c5843b3e1b4689a3599a2463e5b5850d110d1a7e28a94bdc2c6f5bb6585cfb18"},
-    {file = "prometheus_client-0.10.0.tar.gz", hash = "sha256:1e7bc14fd6ca9c3fc07309b73a7a3469920dfe88ca9f331c02258cc62736cbc2"},
+    {file = "prometheus_client-0.10.1-py2.py3-none-any.whl", hash = "sha256:030e4f9df5f53db2292eec37c6255957eb76168c6f974e4176c711cf91ed34aa"},
+    {file = "prometheus_client-0.10.1.tar.gz", hash = "sha256:b6c5a9643e3545bcbfd9451766cbaa5d9c67e7303c7bc32c750b6fa70ecb107d"},
 ]
 prompt-toolkit = [
     {file = "prompt_toolkit-3.0.18-py3-none-any.whl", hash = "sha256:bf00f22079f5fadc949f42ae8ff7f05702826a97059ffcc6281036ad40ac6f04"},
@@ -3760,8 +3854,8 @@ pyflakes = [
     {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"},
 ]
 pygments = [
-    {file = "Pygments-2.8.1-py3-none-any.whl", hash = "sha256:534ef71d539ae97d4c3a4cf7d6f110f214b0e687e92f9cb9d2a3b0d3101289c8"},
-    {file = "Pygments-2.8.1.tar.gz", hash = "sha256:2656e1a6edcdabf4275f9a3640db59fd5de107d88e8663c5d4e9a0fa62f77f94"},
+    {file = "Pygments-2.9.0-py3-none-any.whl", hash = "sha256:d66e804411278594d764fc69ec36ec13d9ae9147193a1740cd34d272ca383b8e"},
+    {file = "Pygments-2.9.0.tar.gz", hash = "sha256:a18f47b506a429f6f4b9df81bb02beab9ca21d0a5fee38ed15aef65f0545519f"},
 ]
 pyjwt = [
     {file = "PyJWT-1.7.1-py2.py3-none-any.whl", hash = "sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e"},
@@ -3772,16 +3866,16 @@ pyparsing = [
     {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"},
 ]
 pytest = [
-    {file = "pytest-6.2.3-py3-none-any.whl", hash = "sha256:6ad9c7bdf517a808242b998ac20063c41532a570d088d77eec1ee12b0b5574bc"},
-    {file = "pytest-6.2.3.tar.gz", hash = "sha256:671238a46e4df0f3498d1c3270e5deb9b32d25134c99b7d75370a68cfbe9b634"},
+    {file = "pytest-6.2.4-py3-none-any.whl", hash = "sha256:91ef2131a9bd6be8f76f1f08eac5c5317221d6ad1e143ae03894b862e8976890"},
+    {file = "pytest-6.2.4.tar.gz", hash = "sha256:50bcad0a0b9c5a72c8e4e7c9855a3ad496ca6a881a3641b4260605450772c54b"},
 ]
 pytest-cov = [
     {file = "pytest-cov-2.11.1.tar.gz", hash = "sha256:359952d9d39b9f822d9d29324483e7ba04a3a17dd7d05aa6beb7ea01e359e5f7"},
     {file = "pytest_cov-2.11.1-py2.py3-none-any.whl", hash = "sha256:bdb9fdb0b85a7cc825269a4c56b48ccaa5c7e365054b6038772c32ddcdc969da"},
 ]
 pytest-django = [
-    {file = "pytest-django-4.1.0.tar.gz", hash = "sha256:26f02c16d36fd4c8672390deebe3413678d89f30720c16efb8b2a6bf63b9041f"},
-    {file = "pytest_django-4.1.0-py3-none-any.whl", hash = "sha256:10e384e6b8912ded92db64c58be8139d9ae23fb8361e5fc139d8e4f8fc601bc2"},
+    {file = "pytest-django-4.2.0.tar.gz", hash = "sha256:80f8875226ec4dc0b205f0578072034563879d98d9b1bec143a80b9045716cb0"},
+    {file = "pytest_django-4.2.0-py3-none-any.whl", hash = "sha256:a51150d8962200250e850c6adcab670779b9c2aa07271471059d1fb92a843fa9"},
 ]
 pytest-django-testing-postgresql = [
     {file = "pytest-django-testing-postgresql-0.1.post0.tar.gz", hash = "sha256:78b0c58930084cb4393407b2e5a2a3b8734c627b841ecef7d62d39bbfb8e8a45"},
@@ -3902,8 +3996,8 @@ restructuredtext-lint = [
     {file = "restructuredtext_lint-1.3.2.tar.gz", hash = "sha256:d3b10a1fe2ecac537e51ae6d151b223b78de9fafdd50e5eb6b08c243df173c80"},
 ]
 "ruamel.yaml" = [
-    {file = "ruamel.yaml-0.17.2-py3-none-any.whl", hash = "sha256:0850def9ebca23b3a8c64c4b4115ebb6b364a10d49f89d289a26ee965e1e7d9d"},
-    {file = "ruamel.yaml-0.17.2.tar.gz", hash = "sha256:8f1e15421668b9edf30ed02899f5f81aff9808a4271935776f61a99a569a13da"},
+    {file = "ruamel.yaml-0.17.4-py3-none-any.whl", hash = "sha256:ac79fb25f5476e8e9ed1c53b8a2286d2c3f5dde49eb37dbcee5c7eb6a8415a22"},
+    {file = "ruamel.yaml-0.17.4.tar.gz", hash = "sha256:44bc6b54fddd45e4bc0619059196679f9e8b79c027f4131bb072e6a22f4d5e28"},
 ]
 "ruamel.yaml.clib" = [
     {file = "ruamel.yaml.clib-0.2.2-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:28116f204103cb3a108dfd37668f20abe6e3cafd0d3fd40dba126c732457b3cc"},
@@ -3946,19 +4040,16 @@ safety = [
     {file = "safety-1.10.3.tar.gz", hash = "sha256:30e394d02a20ac49b7f65292d19d38fa927a8f9582cdfd3ad1adbbc66c641ad5"},
 ]
 scramp = [
-    {file = "scramp-1.3.0-py3-none-any.whl", hash = "sha256:6d73eae03e7a3d647a8c36ca95dc8082fe56496db6f803b561ab231627022f82"},
-    {file = "scramp-1.3.0.tar.gz", hash = "sha256:f56208b544387b98e9d39735cc054e273d060efcdf44bb4a20935180772d1ccf"},
+    {file = "scramp-1.4.0-py3-none-any.whl", hash = "sha256:27349d6839038fe3b56c641ea2a8703df065c1d605fdee67275857c0a82122b4"},
+    {file = "scramp-1.4.0.tar.gz", hash = "sha256:d27d768408c6fc025a0e567eed84325b0aaf24364c81ea5974e8334ae3c4fda3"},
 ]
 selenium = [
     {file = "selenium-3.141.0-py2.py3-none-any.whl", hash = "sha256:2d7131d7bc5a5b99a2d9b04aaf2612c411b03b8ca1b1ee8d3de5845a9be2cb3c"},
     {file = "selenium-3.141.0.tar.gz", hash = "sha256:deaf32b60ad91a4611b98d8002757f29e6f2c2d5fcaf202e1c9ad06d6772300d"},
 ]
-shutilwhich = [
-    {file = "shutilwhich-1.1.0.tar.gz", hash = "sha256:db1f39c6461e42f630fa617bb8c79090f7711c9ca493e615e43d0610ecb64dc6"},
-]
 six = [
-    {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"},
-    {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"},
+    {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
+    {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
 ]
 smmap = [
     {file = "smmap-4.0.0-py2.py3-none-any.whl", hash = "sha256:a9a7479e4c572e2e775c404dcd3080c8dc49f39918c2cf74913d30c4c478e3c2"},
@@ -3977,12 +4068,12 @@ spdx-license-list = [
     {file = "spdx_license_list-0.5.2.tar.gz", hash = "sha256:952996f72ab807972dc2278bb9b91e5294767211e51f09aad9c0e2ff5b82a31b"},
 ]
 sphinx = [
-    {file = "Sphinx-3.5.3-py3-none-any.whl", hash = "sha256:3f01732296465648da43dec8fb40dc451ba79eb3e2cc5c6d79005fd98197107d"},
-    {file = "Sphinx-3.5.3.tar.gz", hash = "sha256:ce9c228456131bab09a3d7d10ae58474de562a6f79abb3dc811ae401cf8c1abc"},
+    {file = "Sphinx-3.5.4-py3-none-any.whl", hash = "sha256:2320d4e994a191f4b4be27da514e46b3d6b420f2ff895d064f52415d342461e8"},
+    {file = "Sphinx-3.5.4.tar.gz", hash = "sha256:19010b7b9fa0dc7756a6e105b2aacd3a80f798af3c25c273be64d7beeb482cb1"},
 ]
 sphinx-autodoc-typehints = [
-    {file = "sphinx-autodoc-typehints-1.11.1.tar.gz", hash = "sha256:244ba6d3e2fdb854622f643c7763d6f95b6886eba24bec28e86edf205e4ddb20"},
-    {file = "sphinx_autodoc_typehints-1.11.1-py3-none-any.whl", hash = "sha256:da049791d719f4c9813642496ee4764203e317f0697eb75446183fa2a68e3f77"},
+    {file = "sphinx-autodoc-typehints-1.12.0.tar.gz", hash = "sha256:193617d9dbe0847281b1399d369e74e34cd959c82e02c7efde077fca908a9f52"},
+    {file = "sphinx_autodoc_typehints-1.12.0-py3-none-any.whl", hash = "sha256:5e81776ec422dd168d688ab60f034fccfafbcd94329e9537712c93003bddc04a"},
 ]
 sphinxcontrib-applehelp = [
     {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"},
@@ -4020,9 +4111,6 @@ stevedore = [
     {file = "stevedore-3.3.0-py3-none-any.whl", hash = "sha256:50d7b78fbaf0d04cd62411188fa7eedcb03eb7f4c4b37005615ceebe582aa82a"},
     {file = "stevedore-3.3.0.tar.gz", hash = "sha256:3a5bbd0652bf552748871eaa73a4a8dc2899786bc497a2aa1fcb4dcdb0debeee"},
 ]
-tempdir = [
-    {file = "tempdir-0.7.1.tar.gz", hash = "sha256:689680ed3ba4cc8347a70e67efc25086ce85b53b9d24a1420899c585bbf7ba8e"},
-]
 termcolor = [
     {file = "termcolor-1.1.0.tar.gz", hash = "sha256:1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b"},
 ]
@@ -4047,52 +4135,52 @@ toml = [
     {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
 ]
 tqdm = [
-    {file = "tqdm-4.59.0-py2.py3-none-any.whl", hash = "sha256:9fdf349068d047d4cfbe24862c425883af1db29bcddf4b0eeb2524f6fbdb23c7"},
-    {file = "tqdm-4.59.0.tar.gz", hash = "sha256:d666ae29164da3e517fcf125e41d4fe96e5bb375cd87ff9763f6b38b5592fe33"},
+    {file = "tqdm-4.60.0-py2.py3-none-any.whl", hash = "sha256:daec693491c52e9498632dfbe9ccfc4882a557f5fa08982db1b4d3adbe0887c3"},
+    {file = "tqdm-4.60.0.tar.gz", hash = "sha256:ebdebdb95e3477ceea267decfc0784859aa3df3e27e22d23b83e9b272bf157ae"},
 ]
 traitlets = [
     {file = "traitlets-5.0.5-py3-none-any.whl", hash = "sha256:69ff3f9d5351f31a7ad80443c2674b7099df13cc41fc5fa6e2f6d3b0330b0426"},
     {file = "traitlets-5.0.5.tar.gz", hash = "sha256:178f4ce988f69189f7e523337a3e11d91c786ded9360174a3d9ca83e79bc5396"},
 ]
 twilio = [
-    {file = "twilio-6.55.0.tar.gz", hash = "sha256:766555e9f3bdfe9eb2fad9e2efa701f6f7644337a3f6b31a660293d2fbd54331"},
+    {file = "twilio-6.58.0.tar.gz", hash = "sha256:9ef381a62b06e79dfd310712087293d51514b12966cfb67fbebf6c8244d6a8ef"},
 ]
 typed-ast = [
-    {file = "typed_ast-1.4.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:7703620125e4fb79b64aa52427ec192822e9f45d37d4b6625ab37ef403e1df70"},
-    {file = "typed_ast-1.4.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:c9aadc4924d4b5799112837b226160428524a9a45f830e0d0f184b19e4090487"},
-    {file = "typed_ast-1.4.2-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:9ec45db0c766f196ae629e509f059ff05fc3148f9ffd28f3cfe75d4afb485412"},
-    {file = "typed_ast-1.4.2-cp35-cp35m-win32.whl", hash = "sha256:85f95aa97a35bdb2f2f7d10ec5bbdac0aeb9dafdaf88e17492da0504de2e6400"},
-    {file = "typed_ast-1.4.2-cp35-cp35m-win_amd64.whl", hash = "sha256:9044ef2df88d7f33692ae3f18d3be63dec69c4fb1b5a4a9ac950f9b4ba571606"},
-    {file = "typed_ast-1.4.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c1c876fd795b36126f773db9cbb393f19808edd2637e00fd6caba0e25f2c7b64"},
-    {file = "typed_ast-1.4.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:5dcfc2e264bd8a1db8b11a892bd1647154ce03eeba94b461effe68790d8b8e07"},
-    {file = "typed_ast-1.4.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:8db0e856712f79c45956da0c9a40ca4246abc3485ae0d7ecc86a20f5e4c09abc"},
-    {file = "typed_ast-1.4.2-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:d003156bb6a59cda9050e983441b7fa2487f7800d76bdc065566b7d728b4581a"},
-    {file = "typed_ast-1.4.2-cp36-cp36m-win32.whl", hash = "sha256:4c790331247081ea7c632a76d5b2a265e6d325ecd3179d06e9cf8d46d90dd151"},
-    {file = "typed_ast-1.4.2-cp36-cp36m-win_amd64.whl", hash = "sha256:d175297e9533d8d37437abc14e8a83cbc68af93cc9c1c59c2c292ec59a0697a3"},
-    {file = "typed_ast-1.4.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cf54cfa843f297991b7388c281cb3855d911137223c6b6d2dd82a47ae5125a41"},
-    {file = "typed_ast-1.4.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:b4fcdcfa302538f70929eb7b392f536a237cbe2ed9cba88e3bf5027b39f5f77f"},
-    {file = "typed_ast-1.4.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:987f15737aba2ab5f3928c617ccf1ce412e2e321c77ab16ca5a293e7bbffd581"},
-    {file = "typed_ast-1.4.2-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:37f48d46d733d57cc70fd5f30572d11ab8ed92da6e6b28e024e4a3edfb456e37"},
-    {file = "typed_ast-1.4.2-cp37-cp37m-win32.whl", hash = "sha256:36d829b31ab67d6fcb30e185ec996e1f72b892255a745d3a82138c97d21ed1cd"},
-    {file = "typed_ast-1.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:8368f83e93c7156ccd40e49a783a6a6850ca25b556c0fa0240ed0f659d2fe496"},
-    {file = "typed_ast-1.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:963c80b583b0661918718b095e02303d8078950b26cc00b5e5ea9ababe0de1fc"},
-    {file = "typed_ast-1.4.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e683e409e5c45d5c9082dc1daf13f6374300806240719f95dc783d1fc942af10"},
-    {file = "typed_ast-1.4.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:84aa6223d71012c68d577c83f4e7db50d11d6b1399a9c779046d75e24bed74ea"},
-    {file = "typed_ast-1.4.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:a38878a223bdd37c9709d07cd357bb79f4c760b29210e14ad0fb395294583787"},
-    {file = "typed_ast-1.4.2-cp38-cp38-win32.whl", hash = "sha256:a2c927c49f2029291fbabd673d51a2180038f8cd5a5b2f290f78c4516be48be2"},
-    {file = "typed_ast-1.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:c0c74e5579af4b977c8b932f40a5464764b2f86681327410aa028a22d2f54937"},
-    {file = "typed_ast-1.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:07d49388d5bf7e863f7fa2f124b1b1d89d8aa0e2f7812faff0a5658c01c59aa1"},
-    {file = "typed_ast-1.4.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:240296b27397e4e37874abb1df2a608a92df85cf3e2a04d0d4d61055c8305ba6"},
-    {file = "typed_ast-1.4.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:d746a437cdbca200622385305aedd9aef68e8a645e385cc483bdc5e488f07166"},
-    {file = "typed_ast-1.4.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:14bf1522cdee369e8f5581238edac09150c765ec1cb33615855889cf33dcb92d"},
-    {file = "typed_ast-1.4.2-cp39-cp39-win32.whl", hash = "sha256:cc7b98bf58167b7f2db91a4327da24fb93368838eb84a44c472283778fc2446b"},
-    {file = "typed_ast-1.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:7147e2a76c75f0f64c4319886e7639e490fee87c9d25cb1d4faef1d8cf83a440"},
-    {file = "typed_ast-1.4.2.tar.gz", hash = "sha256:9fc0b3cb5d1720e7141d103cf4819aea239f7d136acf9ee4a69b047b7986175a"},
+    {file = "typed_ast-1.4.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:2068531575a125b87a41802130fa7e29f26c09a2833fea68d9a40cf33902eba6"},
+    {file = "typed_ast-1.4.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:c907f561b1e83e93fad565bac5ba9c22d96a54e7ea0267c708bffe863cbe4075"},
+    {file = "typed_ast-1.4.3-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:1b3ead4a96c9101bef08f9f7d1217c096f31667617b58de957f690c92378b528"},
+    {file = "typed_ast-1.4.3-cp35-cp35m-win32.whl", hash = "sha256:dde816ca9dac1d9c01dd504ea5967821606f02e510438120091b84e852367428"},
+    {file = "typed_ast-1.4.3-cp35-cp35m-win_amd64.whl", hash = "sha256:777a26c84bea6cd934422ac2e3b78863a37017618b6e5c08f92ef69853e765d3"},
+    {file = "typed_ast-1.4.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f8afcf15cc511ada719a88e013cec87c11aff7b91f019295eb4530f96fe5ef2f"},
+    {file = "typed_ast-1.4.3-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:52b1eb8c83f178ab787f3a4283f68258525f8d70f778a2f6dd54d3b5e5fb4341"},
+    {file = "typed_ast-1.4.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:01ae5f73431d21eead5015997ab41afa53aa1fbe252f9da060be5dad2c730ace"},
+    {file = "typed_ast-1.4.3-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:c190f0899e9f9f8b6b7863debfb739abcb21a5c054f911ca3596d12b8a4c4c7f"},
+    {file = "typed_ast-1.4.3-cp36-cp36m-win32.whl", hash = "sha256:398e44cd480f4d2b7ee8d98385ca104e35c81525dd98c519acff1b79bdaac363"},
+    {file = "typed_ast-1.4.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bff6ad71c81b3bba8fa35f0f1921fb24ff4476235a6e94a26ada2e54370e6da7"},
+    {file = "typed_ast-1.4.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0fb71b8c643187d7492c1f8352f2c15b4c4af3f6338f21681d3681b3dc31a266"},
+    {file = "typed_ast-1.4.3-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:760ad187b1041a154f0e4d0f6aae3e40fdb51d6de16e5c99aedadd9246450e9e"},
+    {file = "typed_ast-1.4.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5feca99c17af94057417d744607b82dd0a664fd5e4ca98061480fd8b14b18d04"},
+    {file = "typed_ast-1.4.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:95431a26309a21874005845c21118c83991c63ea800dd44843e42a916aec5899"},
+    {file = "typed_ast-1.4.3-cp37-cp37m-win32.whl", hash = "sha256:aee0c1256be6c07bd3e1263ff920c325b59849dc95392a05f258bb9b259cf39c"},
+    {file = "typed_ast-1.4.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9ad2c92ec681e02baf81fdfa056fe0d818645efa9af1f1cd5fd6f1bd2bdfd805"},
+    {file = "typed_ast-1.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b36b4f3920103a25e1d5d024d155c504080959582b928e91cb608a65c3a49e1a"},
+    {file = "typed_ast-1.4.3-cp38-cp38-manylinux1_i686.whl", hash = "sha256:067a74454df670dcaa4e59349a2e5c81e567d8d65458d480a5b3dfecec08c5ff"},
+    {file = "typed_ast-1.4.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7538e495704e2ccda9b234b82423a4038f324f3a10c43bc088a1636180f11a41"},
+    {file = "typed_ast-1.4.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:af3d4a73793725138d6b334d9d247ce7e5f084d96284ed23f22ee626a7b88e39"},
+    {file = "typed_ast-1.4.3-cp38-cp38-win32.whl", hash = "sha256:f2362f3cb0f3172c42938946dbc5b7843c2a28aec307c49100c8b38764eb6927"},
+    {file = "typed_ast-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:dd4a21253f42b8d2b48410cb31fe501d32f8b9fbeb1f55063ad102fe9c425e40"},
+    {file = "typed_ast-1.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f328adcfebed9f11301eaedfa48e15bdece9b519fb27e6a8c01aa52a17ec31b3"},
+    {file = "typed_ast-1.4.3-cp39-cp39-manylinux1_i686.whl", hash = "sha256:2c726c276d09fc5c414693a2de063f521052d9ea7c240ce553316f70656c84d4"},
+    {file = "typed_ast-1.4.3-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:cae53c389825d3b46fb37538441f75d6aecc4174f615d048321b716df2757fb0"},
+    {file = "typed_ast-1.4.3-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:b9574c6f03f685070d859e75c7f9eeca02d6933273b5e69572e5ff9d5e3931c3"},
+    {file = "typed_ast-1.4.3-cp39-cp39-win32.whl", hash = "sha256:209596a4ec71d990d71d5e0d312ac935d86930e6eecff6ccc7007fe54d703808"},
+    {file = "typed_ast-1.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:9c6d1a54552b5330bc657b7ef0eae25d00ba7ffe85d9ea8ae6540d2197a3788c"},
+    {file = "typed_ast-1.4.3.tar.gz", hash = "sha256:fb1bbeac803adea29cedd70781399c99138358c26d05fcbd23c13016b7f5ec65"},
 ]
 typing-extensions = [
-    {file = "typing_extensions-3.7.4.3-py2-none-any.whl", hash = "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f"},
-    {file = "typing_extensions-3.7.4.3-py3-none-any.whl", hash = "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918"},
-    {file = "typing_extensions-3.7.4.3.tar.gz", hash = "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c"},
+    {file = "typing_extensions-3.10.0.0-py2-none-any.whl", hash = "sha256:0ac0f89795dd19de6b97debb0c6af1c70987fd80a2d62d1958f7e56fcc31b497"},
+    {file = "typing_extensions-3.10.0.0-py3-none-any.whl", hash = "sha256:779383f6086d90c99ae41cf0ff39aac8a7937a9283ce0a414e5dd782f4c94a84"},
+    {file = "typing_extensions-3.10.0.0.tar.gz", hash = "sha256:50b6f157849174217d0656f99dc82fe932884fb250826c18350e159ec6cdf342"},
 ]
 urllib3 = [
     {file = "urllib3-1.26.4-py2.py3-none-any.whl", hash = "sha256:2f4da4594db7e1e110a944bb1b551fdf4e6c136ad42e4234131391e21eb5b0df"},
@@ -4114,7 +4202,3 @@ yubiotp = [
     {file = "YubiOTP-1.0.0.post1-py2.py3-none-any.whl", hash = "sha256:7ad57011866e0bc6c6d179ffbc3926fcc0e82d410178a6d01ba4da0f88332878"},
     {file = "YubiOTP-1.0.0.post1.tar.gz", hash = "sha256:c13825f7b76a69afb92f19521f4dea9f5031d70f45123b505dc2e0ac03132065"},
 ]
-zipp = [
-    {file = "zipp-3.4.1-py3-none-any.whl", hash = "sha256:51cb66cc54621609dd593d1787f286ee42a5c0adbb4b29abea5a63edc3e03098"},
-    {file = "zipp-3.4.1.tar.gz", hash = "sha256:3607921face881ba3e026887d8150cca609d517579abe052ac81fc5aeffdbd76"},
-]
diff --git a/pyproject.toml b/pyproject.toml
index 9bdb57e66573515d44e5349ad99238da6c3e6a13..35d5d83517d1f23b2a20c48a6f8b3da76402ebcf 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -25,9 +25,7 @@ url = "https://edugit.org/api/v4/projects/461/packages/pypi/simple"
 secondary = true
 
 [tool.poetry.dependencies]
-python = "^3.8"
-latex = "^0.7.0"
-django-leaflet = "^0.26.0"
+python = "^3.9"
 django-starfield = "^1.0.post1"
 pexpect = "^4.8.0"
 python-dateutil = "^2.8.1"