From 313af70fb4c53f1fe282854815b14d36e48ba1d7 Mon Sep 17 00:00:00 2001 From: WaldiS Date: Wed, 5 Apr 2023 16:02:00 +0000 Subject: [PATCH 001/134] :globe_with_meridians: Translated (Polish) Currently translated at 100.0% (212 of 212 strings) Translation: ClassQuiz/Frontend Translate-URL: https://hosted.weblate.org/projects/classquiz/frontend/pl/ --- frontend/src/lib/i18n/locales/pl.json | 28 +++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/frontend/src/lib/i18n/locales/pl.json b/frontend/src/lib/i18n/locales/pl.json index 76ee34b..1fada00 100644 --- a/frontend/src/lib/i18n/locales/pl.json +++ b/frontend/src/lib/i18n/locales/pl.json @@ -43,7 +43,7 @@ "download_quizzes": "Pobierz quizy", "download_quizzes_content": "Quizy mogą być pobierane jako jeden plik i importowane w dowolnym momencie. Pozwala to również na przenoszenie quizów do innych instancji ClassQuiz.", "community_driven_content": "ClassQuiz polega na swojej społeczności w zakresie finansowania, testowania pomysłów, próśb o nowe funkcje, tłumaczeń i nie tylko! Ty też możesz być częścią społeczności ClassQuiz!", - "community_driven": "Napędzane przez społeczność", + "community_driven": "Napędzany przez społeczność", "students_site": "Strona ucznia", "create_a_quiz_from_scratch": "Stwórz quiz od podstaw za pomocą edytora i dołącz zdjęcia i więcej", "multilingual_content": "ClassQuiz jest dostępny w języku angielskim, francuskim, niemieckim, włoskim, norweskim bokmål, tureckim oraz częściowo indonezyjskim i katalońskim.", @@ -78,11 +78,11 @@ "email_or_username": "Adres e-mail lub nazwa użytkownika", "modal": { "success": { - "success_check_mail": "Zalogowany. Sprawdź swoją skrzynkę e-mail.", - "success": "Zalogowany.", + "success_check_mail": "Zalogowano. Sprawdź swoją skrzynkę e-mail.", + "success": "Zalogowano.", "description": { "success_check_mail": "Sprawdź swoją skrzynkę e-mail i poszukaj wiadomości z linkiem, który możesz kliknąć, aby się zalogować.", - "success": "Zalogowany." + "success": "Zalogowano." } }, "error": { @@ -116,7 +116,7 @@ "screenshot_plural": "Zrzuty ekranu", "browser": "Przeglądarka", "view": "Widok", - "result": "Wyniki", + "result": "Wynik", "result_plural": "Wyniki", "range": "Zakres", "multiple_choice": "Wielokrotny wybór", @@ -124,12 +124,12 @@ "question_plural": "Pytania", "game_pin": "PIN do gry", "other": "inne", - "other_plural": "inni", - "donating": "darowizna", + "other_plural": "innych", + "donating": "dotację", "find": "Szukaj", "practice": "Ćwiczenia", "error": "Błąd", - "register": "Zarejestruj", + "register": "Zarejestruj się", "docs": "Dokumentacja", "close": "Zamknij", "save": "Zapisz", @@ -154,8 +154,8 @@ "image": "Obraz", "overview": "Przegląd", "report": "Raport", - "explore": "Odkryj", - "correct": "Prawidłowo", + "explore": "Przeglądaj", + "correct": "Poprawnie", "count": "Liczba", "private": "Prywatny", "backup_code": "Kod zapasowy", @@ -179,8 +179,8 @@ }, "footer": { "self_ads": "Wykonane z ❤️ przez {{mawoka_link}} i z pomocą {{others_link}}.", - "more_details_here": "Więcej szczegółów tutaj", - "donate": "Jeśli uznasz to za przydatne, rozważ {{donate_link}}." + "more_details_here": "Więcej szczegółów znajdziesz tutaj", + "donate": "Jeśli uznasz to za użyteczne, rozważ {{donate_link}}." }, "error_page": { "404_text": "Strona, której szukałeś, zniknęła lub nawet nigdy nie istniała. Kto wie?", @@ -238,7 +238,7 @@ }, "explore_page": { "made_by": "Wykonane przez", - "imported_by": "Importowane przez" + "imported_by": "Zaimportowane przez" }, "avatar_settings": { "skin_color": "Kolorystyka", @@ -249,7 +249,7 @@ "clothe_type": "Odzież", "clothe_graphic_type": "Grafika", "start_over": "Zacznij od nowa", - "thats_you": "To ty!", + "thats_you": "To Ty!", "clothe_color": "Kolor odzieży", "hair_color": "Kolor włosów", "facial_hair_type": "Zarost", From b04ba0af78ccb890b0325707d6141840c6c66d4f Mon Sep 17 00:00:00 2001 From: Sneffel Date: Mon, 10 Apr 2023 09:55:27 +0000 Subject: [PATCH 002/134] :globe_with_meridians: Translated (Italian) Currently translated at 100.0% (212 of 212 strings) Translation: ClassQuiz/Frontend Translate-URL: https://hosted.weblate.org/projects/classquiz/frontend/it/ --- frontend/src/lib/i18n/locales/it.json | 149 +++++++++++++++++++++----- 1 file changed, 121 insertions(+), 28 deletions(-) diff --git a/frontend/src/lib/i18n/locales/it.json b/frontend/src/lib/i18n/locales/it.json index 44ce103..a4bb0c7 100644 --- a/frontend/src/lib/i18n/locales/it.json +++ b/frontend/src/lib/i18n/locales/it.json @@ -2,12 +2,12 @@ "index_page": { "meta": { "title": "Home", - "description": "ClassQuiz è un'applicazione per quiz come KAHOOT! per gli studenti, è gratuita e open source" + "description": "ClassQuiz è un'app di quiz per gli studenti come Kahoot!, open source e gratuita" }, "features_description": { "1": "ClassQuiz è una webapp per creare e gestire quiz.", - "2": "Una delle caratteristiche principali è la possibilità di importare i quiz di KAHOOT!.", - "3": "L'editor delle domande è molto facile da usare, come l'esportazione dei risultati dei quiz in formato Excel." + "2": "La caratteristica principale è una funzione di importazione di Kahoot!che consente di importare quiz da Kahoot!-quiz.", + "3": "L'editor e la funzione di esportazione dei risultati dei quiz in file Excel sono i punti forti del software." }, "stats": "In ClassQuiz ci sono già {{user_count}} utenti e {{quiz_count}} quiz.", "see_what_true_and_false": "Verifica cos'è corretto o sbagliato", @@ -17,21 +17,52 @@ "students_site": "Sito per lo studente", "slogan": "La piattaforma per quiz open-source!", "see_all_quizzes": "I tuoi quiz", - "dark_mode": "Modalità Notte" + "dark_mode": "Modalità Notte", + "quiz_results_downloadable_content": "I risultati dei quiz possono essere facilmente esportati in un foglio Excel. (Non sapevo che altri non potessero farlo)", + "multilingual_content": "ClassQuiz è già disponibile in inglese, francese, tedesco, italiano, norvegese, turco, e parzialmente in indonesiano e in catalano.", + "no_tracking_content": "Kahoot! ti traccia e invia le tue informazioni a terza parti, ma ClassQuiz, no.", + "no_tracking": "Senza tracking", + "self_hostable": "È possibile fare hosting autonomo", + "german_server": "Server tedesco", + "user_friendly": "Facile da usare", + "completely_free": "Completamente gratuito", + "quiz_results_downloadable": "I risultati dei quiz possono essere scaricati", + "multilingual": "Multilingue", + "get_a_quiz": "1. Ottieni un quiz", + "create_a_quiz_from_scratch": "Crea un quiz da zero con l'editor, includi immagini e altro ancora", + "find_or_explore": "Trova (o esplora) dei quiz fatti o importati da altre persone", + "import_quiz_from_kahoot_and_edit": "Importa un quiz da Kahoot! e modificalo su ClassQuiz", + "play_quiz": "2. Gioca al quiz", + "select_answer": "Seleziona la risposta", + "choose_answer_wisely": "Scegli la risposta attentamente", + "view_results": "Visualizza i risultati", + "check_if_chosen_wisely": "Controlla se hai scelto correttamente", + "list_winners": "Elenco vincitori", + "get_ranking_and_winners": "Vedi la classifica e chi ha vinto", + "why_classquiz": "Perché ClassQuiz?", + "self_hostable_content": "Con ClassQuiz si può fare facilmente hosting autonomo, così i dati sono in tuo controllo!", + "user_friendly_content": "ClassQuiz cerca di essere semplice, così può essere usato da tutti.", + "dark_mode_content": "Una delle caratteristiche più importanti che un sito web possa avere!", + "german_server_content": "I server di ClassQuiz si trovano in Germania e sono ospitati da netcup.", + "download_quizzes_content": "I quiz possono essere scaricati come un unico file e importati in qualsiasi momento. Questo ti permette di spostare i tuoi quiz in altre istanze di ClassQuiz.", + "download_quizzes": "Scarica i quiz", + "community_driven": "Guidati dalla comunità", + "community_driven_content": "ClassQuiz dipende dalla sua comunità per finanziamenti, idee di test, richieste di funzionalità, traduzioni e altro! Anche tu puoi far parte della comunità di ClassQuiz!", + "completely_free_content": "ClassQuiz è completamente gratuito (per l'utente), senza piani a pagamento o fastidiose richieste di aggiornamento. Le donazioni sono molto apprezzate." }, "overview_page": { "created_at": "Creato il", "question_count": "Numero domande", - "no_quizzes": "Sembra che tu non abbia ancora quiz. Clicca sul pulsante \"Crea\" o importa un quiz da Kahoot!" + "no_quizzes": "Clicca sul pulsante \"Crea\", o importa un quiz da Kahoot! per iniziare." }, "edit_page": { - "success_update_title": "Quiz importato con successo!", - "success_update_body": "Quiz aggiornato con successo!" + "success_update_title": "Quiz aggiornato.", + "success_update_body": "Nessuno si aspetta l'inquisizione spagnola." }, "create_page": { "success": { - "title": "Quiz creato con successo!", - "body": "Quiz creato con successo!" + "title": "Quiz creato.", + "body": "Che i giochi abbiano inizio." } }, "register_page": { @@ -41,36 +72,38 @@ "already_have_account?": "Hai già un account?" }, "login_page": { - "welcome_back": "Bentornato!", + "welcome_back": "Bentornato.", "already_have_account": "Non hai un account?", "modal": { "success": { - "success_check_mail": "Login effettuato! Verifica la tua mailbox!", - "success": "Login effettuato!", + "success_check_mail": "Accesso effettuato. Controlla la mail.", + "success": "Accesso effettuato.", "description": { - "success": "Login effettuato con successo!", - "success_check_mail": "Verifica la tua mailbox, dato che dovresti aver ricevuto una email con il link per accedere." + "success": "Accesso effettuato.", + "success_check_mail": "Per favore apri la mail. Troverai un link che puoi cliccare per effettuare l'accesso." } }, "error": { - "wrong_creds": "Email o password errate!", + "wrong_creds": "Indirizzo e-mail o password errati.", "unexpected": "Errore imprevisto!", "description": { "unexpected": "È accaduto il buon vecco errore inatteso!", - "wrong_creds": "Verifica che l'email e la password siano corrette!" + "wrong_creds": "Per favore, assicurati che la tua password e l'indirizzo e-mail siano corretti." } } }, - "login_or_create_account": "Effettua il login o crea un account" + "login_or_create_account": "Accedi o crea un account", + "email_or_username": "Email o nome utente", + "use_backup_code": "Usa il codice di backup" }, "words": { "answer": "Risposta", "question": "Domanda", "stats": "Statistiche", "features": "Caratteristiche", - "login": "Login", - "email": "Email", - "username": "Username", + "login": "Accedi", + "email": "Indirizzo e-mail", + "username": "Nome utente", "password": "Password", "play": "Avvia", "delete": "Elimina", @@ -78,7 +111,7 @@ "start": "Avvia", "create": "Crea", "import": "Importa", - "logout": "Logout", + "logout": "Esci dall'account", "title": "Titolo", "url": "URL", "submit": "Invia", @@ -111,10 +144,24 @@ "search": "Cerca", "private": "Privato", "question_plural": "Domande", - "game_pin": "PIN", + "game_pin": "PIN del gioco", "other": "altro", "other_plural": "altri", - "donating": "donazione" + "donating": "donazione", + "practice": "Esercitati", + "error": "Errore", + "voting": "Votazione", + "download": "Scarica", + "text": "Testo", + "order": "ordine", + "totp": "Password momentanea", + "continue": "Continua", + "backup_code": "Codice di backup", + "results": "Risultati", + "note": "Nota", + "player_plural": "Giocatori", + "score": "Punteggio", + "find": "Trova" }, "editor": { "right_or_true?": "Corretto?", @@ -127,7 +174,13 @@ }, "import_page": { "need_help": "Hai bisogno di aiuto?", - "visit_docs": "Guarda la documentazione" + "visit_docs": "Guarda la documentazione", + "url_should_look_like_this": "L'URL dovrebbe essere così: https://create.kahoot.it/details/...", + "this_side_classquiz": "Da questa parte puoi importare i quiz esportati da ClassQuiz.", + "side_import_kahoot": "Da questa parte è possibile importare i quiz di Kahoot!.", + "a_kahoot_quiz": "Un quiz di Kahoot", + "classquiz_quiz": "Un quiz di ClassQuiz", + "upload_file_ending": "Carica il file che termina con .cqa" }, "admin_page": { "already_registered_as_admin": "C'è già un amministratore registrato per questo quiz.", @@ -138,8 +191,10 @@ "show_next_question": "Mostra la prossima domanda", "no_answers": "Nessuna risposta!", "get_final_results": "Risultati finali", - "start_by_showing_first_question": "Avvia mostrando la prima domanda!", - "get_results_and_stop_time": "Raccogli i risultati e ferma il tempo" + "start_by_showing_first_question": "Avvia mostrando la prima domanda.", + "get_results_and_stop_time": "Raccogli i risultati e ferma il tempo", + "stop_time": "Ferma il cronometro", + "save_results": "Salva i risultati" }, "password_reset_page": { "reset_password": "Resetta la password" @@ -170,14 +225,52 @@ "right_click_to_delete": "Clicca col destro sulla risposta per eliminarla!" }, "search_page": { - "at_least_3_characters": "Digita almento 3 caratteri..." + "at_least_3_characters": "Digita almento 3 caratteri...", + "nothing_here": "Non c'è nulla qua..." }, "dashboard": { "search_for_own_quizzes": "Cerca fra i tuoi quiz" }, "footer": { "self_ads": "Realizzato con ❤️ da {{mawoka_link}} e con l'aiuto di {{others_link}}.", - "more_details_here": "Maggiorni informazioni qui", + "more_details_here": "Maggiori informazioni qui", "donate": "Se ritieni questa applicazione utile, considera la possibilità di fare una {{donate_link}}." + }, + "avatar_settings": { + "facial_hair_type": "Peli del viso", + "skin_color": "Colore della pelle", + "top_type": "In alto", + "hair_color": "Colore dei capelli", + "eyebrow_type": "Sopracciglio", + "accessories_type": "Occhiali", + "hat_color": "Colore del cappello", + "clothe_type": "Vestiti", + "thats_you": "Sei tu!", + "clothe_graphic_type": "Grafica", + "facial_hair_color": "Colore dei peli del viso", + "mouth_type": "Bocca", + "clothe_color": "Colore dei vestiti", + "start_over": "Ricomincia da capo" + }, + "uploader": { + "add_image": "Aggiungi immagine" + }, + "results_page": { + "no_results_so_far": "Nessun risultato salvato finora...", + "quiz_title": "Titolo del quiz", + "date_played": "Data della partita", + "player_count": "Numero dei giocatori" + }, + "result_page": { + "player_name": "Nome del giocatore", + "custom_field": "Campo personalizzato", + "average_score": "Punteggio medio: {{average_score}}", + "correct_answer": "{{count}} risposta corretta", + "correct_answer_plural": "{{count}} risposte corrette", + "time_taken": "Tempo impiegato" + }, + "error_page": { + "404_text": "La pagina che stavi cercando è sparita o non è mai esistita. Chi lo sa?", + "unknown_error_text": "Questo non dovrebbe succedere. Probabilmente è colpa mia, non tua, oppure forse tu hai il potere magico di rompere le cose..." } } From 0a73cdfee8a828fc478c9abad3ecc3d4709ed031 Mon Sep 17 00:00:00 2001 From: Mawoka Date: Sun, 16 Apr 2023 13:41:34 +0200 Subject: [PATCH 003/134] :bug: May have fixed the popup --- frontend/src/routes/+layout.svelte | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/frontend/src/routes/+layout.svelte b/frontend/src/routes/+layout.svelte index 908873a..d0244b9 100644 --- a/frontend/src/routes/+layout.svelte +++ b/frontend/src/routes/+layout.svelte @@ -91,9 +91,12 @@ {:else} {/if} -{#if $alertModal.open} +{#if $alertModal.open ?? false}
Date: Sat, 15 Apr 2023 14:28:54 +0200 Subject: [PATCH 004/134] :globe_with_meridians: Added translation for (Dutch) --- frontend/src/lib/i18n/locales/nl.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 frontend/src/lib/i18n/locales/nl.json diff --git a/frontend/src/lib/i18n/locales/nl.json b/frontend/src/lib/i18n/locales/nl.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/frontend/src/lib/i18n/locales/nl.json @@ -0,0 +1 @@ +{} From 36979f9886839bafface0996bb2ef53ad9e5d2b9 Mon Sep 17 00:00:00 2001 From: Miniontoby Date: Sat, 15 Apr 2023 12:35:09 +0000 Subject: [PATCH 005/134] :globe_with_meridians: Translated (Dutch) Currently translated at 100.0% (212 of 212 strings) Translation: ClassQuiz/Frontend Translate-URL: https://hosted.weblate.org/projects/classquiz/frontend/nl/ --- frontend/src/lib/i18n/locales/nl.json | 277 +++++++++++++++++++++++++- 1 file changed, 276 insertions(+), 1 deletion(-) diff --git a/frontend/src/lib/i18n/locales/nl.json b/frontend/src/lib/i18n/locales/nl.json index 0967ef4..87b81b9 100644 --- a/frontend/src/lib/i18n/locales/nl.json +++ b/frontend/src/lib/i18n/locales/nl.json @@ -1 +1,276 @@ -{} +{ + "index_page": { + "features_description": { + "1": "ClassQuiz is een quiz-platform waarmee je quizzen kunt maken en beheren.", + "2": "De belangrijkste functie is een Kahoot!-importfunctie waarmee je quizzen van Kahoot! kunt importeren.", + "3": "De editor en de functie voor het exporteren van testresultaten als Excel-bestanden zijn bijzondere hoogtepunten van de software." + }, + "create_or_import": "Maken of Importeren", + "see_all_quizzes": "Bekijk al je quizzen", + "no_tracking": "Geen Tracking", + "german_server": "Duitse Server", + "user_friendly": "Gebruikers Vriendelijk", + "completely_free": "Volledig Kostenloos", + "quiz_results_downloadable": "Quiz-resultaten kunnen worden gedownload", + "multilingual": "Meertalig", + "dark_mode": "Donkere Modus", + "create_a_quiz_from_scratch": "Maak een quiz vanaf niks met de editor en voeg afbeeldingen en meer toe", + "find_or_explore": "Zoek (of verken) quizzen gemaakt of geïmporteerd door andere mensen", + "import_quiz_from_kahoot_and_edit": "Importeer een quiz van Kahoot! en bewerk hem in ClassQuiz", + "play_quiz": "2. Speel de quiz", + "select_answer": "Selecteer een antwoord", + "view_results": "Bekijk de resultaten", + "check_if_chosen_wisely": "Check of je goed had gekozen", + "list_winners": "Winnaarslijst", + "get_ranking_and_winners": "Bekijk het klassement en zie wie er gewonnen heeft", + "why_classquiz": "Waarom ClassQuiz?", + "meta": { + "title": "Home", + "description": "ClassQuiz is een quiz-app zoals Kahoot! voor studenten, die open source en gratis te gebruiken is" + }, + "get_a_quiz": "1. Verkrijg een quiz", + "user_friendly_content": "ClassQuiz heeft als doel simpel te zijn, zodat iedereen het kan gebruiken.", + "students_site": "Studenten site", + "teachers_site": "Leraar's site", + "slogan": "Het open-source quizplatform!", + "self_hostable": "Zelf-Hostable", + "multilingual_content": "ClassQuiz is beschikbaar in het Engels, Frans, Duits, Italiaans, Noors Bokmål, Turks en gedeeltelijk Indonesisch en Catalaans.", + "dark_mode_content": "Een van de belangrijkste functies die een website kan hebben!", + "community_driven_content": "ClassQuiz is afhankelijk van haar gemeenschap voor financiering, het testen van ideeën, feature requests, vertalingen en meer! U kunt ook deel uitmaken van de ClassQuiz-community!", + "community_driven": "Gedreven door de community", + "stats": "Er zijn al {{user_count}} gebruikers en {{quiz_count}} quizzen op ClassQuiz.", + "see_how_many_true_and_false": "Kijk hoeveel er goed of fout waren", + "see_what_true_and_false": "Zie wat goed of fout was", + "choose_answer_wisely": "Kies je antwoord verstandig", + "no_tracking_content": "Kahoot! volgt je en stuurt die informatie naar partijen van derden, maar ClassQuiz niet.", + "self_hostable_content": "ClassQuiz kan eenvoudig zelf worden gehost, dus de gegevens zijn alleen in jouw beheer!", + "german_server_content": "De servers van ClassQuiz bevinden zich in Duitsland en worden gehost door netcup.", + "completely_free_content": "ClassQuiz is volledig gratis (voor de gebruiker), zonder betaalde abonnementen of vervelende doorverwijzingen naar de upgrade-pagina. Donaties worden zeer op prijs gesteld.", + "download_quizzes": "Download Quizzen", + "download_quizzes_content": "Quizzen kunnen als één bestand worden gedownload en op elk moment worden geïmporteerd. Zo kun je ook je testen verplaatsen naar andere ClassQuiz instanties.", + "quiz_results_downloadable_content": "Quiz-resultaten kunnen gemakkelijk worden geëxporteerd naar een Excel-spreadsheet. (Wist niet dat anderen dat niet konden)" + }, + "overview_page": { + "created_at": "Gemaakt op", + "question_count": "Vragenaantal", + "no_quizzes": "Klik op de \"Creëer\"-knop of importeer een quiz van Kahoot! om aan de slag te gaan." + }, + "edit_page": { + "success_update_title": "Quiz bijgewerkt.", + "success_update_body": "Niemand zal het onderzoek verwachten." + }, + "create_page": { + "success": { + "title": "Quiz gemaakt.", + "body": "Laat het spel beginnen." + } + }, + "register_page": { + "greeting": "Leuk je te ontmoeten!", + "create_account": "Account aanmaken", + "forgot_password?": "Wachtwoord vergeten?", + "already_have_account?": "Heb je al een account?" + }, + "login_page": { + "welcome_back": "Welkom terug.", + "login_or_create_account": "Log in of maak een account", + "already_have_account": "Heb je geen account?", + "email_or_username": "Email of Gebruikersnaam", + "modal": { + "success": { + "success_check_mail": "Ingelogd. Controleer jouw e-mail.", + "success": "Ingelogd.", + "description": { + "success": "Ingelogd.", + "success_check_mail": "Controleer jouw e-mail voor een mail met een link waarop je kunt klikken om in te loggen." + } + }, + "error": { + "wrong_creds": "Verkeerd e-mailadres of wachtwoord.", + "unexpected": "Onverwachte fout!", + "description": { + "wrong_creds": "Zorg ervoor dat jouw wachtwoord en e-mailadres correct zijn.", + "unexpected": "De goede oude onverwachte fout trad op!" + } + } + }, + "use_backup_code": "Gebruik backup-code" + }, + "words": { + "question": "Vraag", + "answer": "Antwoord", + "stats": "Statistieken", + "email": "E-mailadres", + "username": "Gebruikersnaam", + "password": "Wachtwoord", + "play": "Speel", + "features": "Mogelijkheden", + "login": "Inloggen", + "edit": "Bewerken", + "delete": "Verwijderen", + "public": "Openbaar", + "url": "URL", + "submit": "Versturen", + "connect": "Verbinden", + "pin": "PIN", + "kick": "Eruit gooien", + "register": "Registeren", + "docs": "Documentatie", + "close": "Sluiten", + "save": "Opslaan", + "description": "Beschrijving", + "image": "Afbeelding", + "repeat_password": "Wachtwoord herhalen", + "overview": "Overzicht", + "report": "Melden", + "explore": "Verkennen", + "screenshot": "Schermafbeelding", + "screenshot_plural": "Schermafbeeldingen", + "view": "Bekijken", + "browser": "Browser", + "correct": "Juist", + "result": "Resultaat", + "result_plural": "Resultaten", + "count": "Aantal", + "range": "Bereik", + "private": "Privé", + "other": "andere", + "other_plural": "anderen", + "donating": "doneren", + "find": "Vind", + "practice": "Oefenen", + "error": "Fout", + "voting": "Stemmen", + "download": "Downloaden", + "continue": "Verder", + "backup_code": "Backup-code", + "totp": "TOTP", + "text": "Tekst", + "order": "volgorde", + "results": "Resultaten", + "note": "Opmerking", + "multiple_choice": "Meerkeuze", + "start": "Start", + "create": "Creëren", + "import": "Importeren", + "logout": "Uitloggen", + "title": "Titel", + "settings": "Instellingen", + "player_plural": "Spelers", + "search": "Zoeken", + "game_pin": "Spel PIN", + "dashboard": "Dashboard", + "question_plural": "Vragen", + "score": "Score" + }, + "editor": { + "not_all_links_imgur_links": "Niet alle links zijn Imgur-links!", + "time_in_seconds": "Tijd in seconden", + "delete_answer": "Verwijder antwoord", + "right_or_true?": "Juist?", + "add_new_answer": "Nieuw antwoord toevoegen", + "add_new_question": "Nieuwe vraag toevoegen", + "delete_question": "Verwijder vraag" + }, + "import_page": { + "url_should_look_like_this": "De URL zou er als volgt uit moeten zien: https://create.kahoot.it/details/...", + "side_import_kahoot": "Aan deze kant kun je quizzen van Kahoot! importeren.", + "upload_file_ending": "Upload het bestand eindigend op .cqa", + "this_side_classquiz": "Aan deze kant kun je quizzen importeren die geëxporteerd zijn vanuit ClassQuiz.", + "visit_docs": "Bekijk de documentatie", + "a_kahoot_quiz": "Een Kahoot!-Quiz", + "need_help": "Hulp nodig?", + "classquiz_quiz": "Een ClassQuiz-Quiz" + }, + "admin_page": { + "start_game": "Start spel", + "time_left": "Tijd over", + "get_results": "Verkrijg resultaten", + "no_answers": "Geen antwoorden!", + "stop_time": "Stop de tijd", + "save_results": "Resultaten opslaan", + "start_by_showing_first_question": "Start met het vertonen van de eerste vraag.", + "show_next_question": "Toon volgende vraag", + "already_registered_as_admin": "Er is al een beheerder geregistreerd voor dit spel.", + "get_results_and_stop_time": "Verkrijg resultaten en stop de tijd", + "get_final_results": "Verkrijg definitieve resultaten", + "export_results": "Exporteer resultaten" + }, + "password_reset_page": { + "reset_password": "Wachtwoord resetten" + }, + "settings_page": { + "old_password": "Oud wachtwoord", + "new_password": "Nieuw wachtwoord", + "repeat_password": "Herhaal wachtwoord", + "change_password_submit": "Wachtwoord aangepast!", + "last_seen": "Laatst gezien", + "check_location": "Check locatie", + "delete_this_session": "Verwijder deze sessie", + "this_session?": "Deze sessie?" + }, + "explore_page": { + "made_by": "Gemaakt door", + "imported_by": "Geïmporteerd door" + }, + "search_page": { + "at_least_3_characters": "Voer minimaal 3 tekens in...", + "nothing_here": "Er is hier niks..." + }, + "play_page": { + "end_sentence": "Dat was het! Dit was de quiz.", + "1st_place": "1ste Plek", + "2nd_place": "2de Plek", + "3rd place": "3de Plek", + "with_out_of": "met {{correct_questions}} van de {{total_question_count}}" + }, + "editor_page": { + "add_an_answer": "Voeg een antwoord toe", + "right_click_to_delete": "Klik met de rechtermuisknop op een antwoord om het te verwijderen!" + }, + "footer": { + "more_details_here": "Meer details hier", + "donate": "Als je dit nuttig vindt overweeg dan {{donate_link}}.", + "self_ads": "Gemaakt met ❤️ door {{mawoka_link}} en met de hulp van {{others_link}}." + }, + "error_page": { + "404_text": "De pagina waarnaar je op zoek was, is verdwenen of heeft zelfs nooit bestaan. Wie weet?", + "unknown_error_text": "Dat zou niet mogen gebeuren. Het is waarschijnlijk mijn schuld, niet de jouwe, maar misschien heb je een magische kracht om dingen te breken..." + }, + "uploader": { + "add_image": "Afbeelding toevoegen" + }, + "avatar_settings": { + "skin_color": "Huidskleur", + "hair_color": "Haarkleur", + "facial_hair_type": "Gezichtshaar", + "facial_hair_color": "Gezichtshaar kleur", + "mouth_type": "Mond", + "eyebrow_type": "Wenkbrauw", + "accessories_type": "Bril", + "hat_color": "Hoed kleur", + "clothe_type": "Kleding", + "clothe_color": "Kleding kleur", + "clothe_graphic_type": "Grafisch", + "thats_you": "Dat ben jij!", + "start_over": "Opnieuw beginnen", + "top_type": "Top" + }, + "results_page": { + "no_results_so_far": "Geen resultaten opgeslagen tot nu toe...", + "quiz_title": "Quiz Titel", + "date_played": "Datum Gespeeld", + "player_count": "Aantal spelers" + }, + "result_page": { + "player_name": "Naam speler", + "custom_field": "Aangepast veld", + "average_score": "Gemiddelde score: {{average_score}}", + "correct_answer_plural": "{{count}} juiste antwoorden", + "time_taken": "Benodigde tijd", + "correct_answer": "{{count}} juist antwoord" + }, + "dashboard": { + "search_for_own_quizzes": "Zoek voor je eigen quizzen" + } +} From 345dd4583ddbe2f853ed1f5f1244b910471eac3e Mon Sep 17 00:00:00 2001 From: Mawoka Date: Tue, 18 Apr 2023 18:39:20 +0200 Subject: [PATCH 006/134] :globe_with_meridians: Integrated Dutch --- frontend/src/lib/i18n/i18n-service.ts | 2 ++ frontend/src/lib/language-toggle.svelte | 5 +++++ frontend/src/routes/docs/attribution/+page.svelte | 9 +++++++++ 3 files changed, 16 insertions(+) diff --git a/frontend/src/lib/i18n/i18n-service.ts b/frontend/src/lib/i18n/i18n-service.ts index 8fa249e..3a5294b 100644 --- a/frontend/src/lib/i18n/i18n-service.ts +++ b/frontend/src/lib/i18n/i18n-service.ts @@ -19,6 +19,7 @@ import zh_Hant from './locales/zh_Hant.json'; import pl from './locales/pl.json'; import pt from './locales/pt.json'; import uk from './locales/uk.json'; +import nl from './locales/nl.json'; // import uz from './locales/uz.json' // import zh_Hans from './locales/zh_Hans.json'; import LanguageDetector from 'i18next-browser-languagedetector'; @@ -79,6 +80,7 @@ export class I18nService { this.i18n.addResourceBundle('pl', 'translation', pl); this.i18n.addResourceBundle('pt', 'translation', pt); this.i18n.addResourceBundle('uk', 'translation', uk); + this.i18n.addResourceBundle('nl', 'translation', nl); // this.i18n.addResourceBundle('uz', 'translation', uz); } diff --git a/frontend/src/lib/language-toggle.svelte b/frontend/src/lib/language-toggle.svelte index 13d3a3e..67cf8ee 100644 --- a/frontend/src/lib/language-toggle.svelte +++ b/frontend/src/lib/language-toggle.svelte @@ -117,6 +117,11 @@ code: 'uk', name: 'Українська', flag: '🇺🇦' + }, + { + code: 'nl', + name: 'Nederlands', + flag: '🇳🇱' } ]; const get_selected_language = (): string => { diff --git a/frontend/src/routes/docs/attribution/+page.svelte b/frontend/src/routes/docs/attribution/+page.svelte index 89370f5..de23751 100644 --- a/frontend/src/routes/docs/attribution/+page.svelte +++ b/frontend/src/routes/docs/attribution/+page.svelte @@ -50,6 +50,15 @@
  • RicoLaaa (Spanish)
  • +
  • + Waldemar Stoczkowski (Polish) +
  • +
  • + OptimisticSean (Chinese) +
  • +
  • + Miniontoby (Dutch) +
  • ...Maybe you?

    From a0b02ec9c320b6edf18d11b3e056cc4985363f40 Mon Sep 17 00:00:00 2001 From: Mawoka Date: Tue, 18 Apr 2023 19:22:26 +0200 Subject: [PATCH 007/134] :sparkles: Added s3 storage --- Pipfile | 1 + Pipfile.lock | 1450 ++++++++++++++++------------- classquiz/config.py | 10 + classquiz/routers/search.py | 4 +- classquiz/routers/storage.py | 5 +- classquiz/storage/__init__.py | 42 +- classquiz/storage/deta_storage.py | 2 +- classquiz/storage/s3_storage.py | 147 +++ classquiz/tests/test_storage.py | 18 + 9 files changed, 1026 insertions(+), 653 deletions(-) create mode 100644 classquiz/storage/s3_storage.py diff --git a/Pipfile b/Pipfile index 48fef47..ab1bba2 100644 --- a/Pipfile +++ b/Pipfile @@ -36,6 +36,7 @@ cryptography = "*" scheduler = "*" webauthn = "*" pyotp = "*" +minio = "*" [dev-packages] coverage = "*" diff --git a/Pipfile.lock b/Pipfile.lock index afd6f92..a078bf6 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "19b0681be7b80c66411658702fc9b518ba4e60a82d33ee026c31560e71a41522" + "sha256": "0f27e59c80a47f8948353baf55cc7495131b532f2718bcd2ba08f25a40dc3dab" }, "pipfile-spec": 6, "requires": { @@ -18,104 +18,104 @@ "default": { "aiofiles": { "hashes": [ - "sha256:1142fa8e80dbae46bb6339573ad4c8c0841358f79c6eb50a493dceca14621bad", - "sha256:9107f1ca0b2a5553987a94a3c9959fe5b491fdf731389aa5b7b1bd0733e32de6" + "sha256:9312414ae06472eb6f1d163f555e466a23aed1c8f60c30cccf7121dba2e53eb2", + "sha256:edd247df9a19e0db16534d4baaf536d6609a43e1de5401d7a4c1c148753a1635" ], "index": "pypi", - "version": "==22.1.0" + "version": "==23.1.0" }, "aiohttp": { "hashes": [ - "sha256:02f9a2c72fc95d59b881cf38a4b2be9381b9527f9d328771e90f72ac76f31ad8", - "sha256:059a91e88f2c00fe40aed9031b3606c3f311414f86a90d696dd982e7aec48142", - "sha256:05a3c31c6d7cd08c149e50dc7aa2568317f5844acd745621983380597f027a18", - "sha256:08c78317e950e0762c2983f4dd58dc5e6c9ff75c8a0efeae299d363d439c8e34", - "sha256:09e28f572b21642128ef31f4e8372adb6888846f32fecb288c8b0457597ba61a", - "sha256:0d2c6d8c6872df4a6ec37d2ede71eff62395b9e337b4e18efd2177de883a5033", - "sha256:16c121ba0b1ec2b44b73e3a8a171c4f999b33929cd2397124a8c7fcfc8cd9e06", - "sha256:1d90043c1882067f1bd26196d5d2db9aa6d268def3293ed5fb317e13c9413ea4", - "sha256:1e56b9cafcd6531bab5d9b2e890bb4937f4165109fe98e2b98ef0dcfcb06ee9d", - "sha256:20acae4f268317bb975671e375493dbdbc67cddb5f6c71eebdb85b34444ac46b", - "sha256:21b30885a63c3f4ff5b77a5d6caf008b037cb521a5f33eab445dc566f6d092cc", - "sha256:21d69797eb951f155026651f7e9362877334508d39c2fc37bd04ff55b2007091", - "sha256:256deb4b29fe5e47893fa32e1de2d73c3afe7407738bd3c63829874661d4822d", - "sha256:25892c92bee6d9449ffac82c2fe257f3a6f297792cdb18ad784737d61e7a9a85", - "sha256:2ca9af5f8f5812d475c5259393f52d712f6d5f0d7fdad9acdb1107dd9e3cb7eb", - "sha256:2d252771fc85e0cf8da0b823157962d70639e63cb9b578b1dec9868dd1f4f937", - "sha256:2dea10edfa1a54098703cb7acaa665c07b4e7568472a47f4e64e6319d3821ccf", - "sha256:2df5f139233060578d8c2c975128fb231a89ca0a462b35d4b5fcf7c501ebdbe1", - "sha256:2feebbb6074cdbd1ac276dbd737b40e890a1361b3cc30b74ac2f5e24aab41f7b", - "sha256:309aa21c1d54b8ef0723181d430347d7452daaff93e8e2363db8e75c72c2fb2d", - "sha256:3828fb41b7203176b82fe5d699e0d845435f2374750a44b480ea6b930f6be269", - "sha256:398701865e7a9565d49189f6c90868efaca21be65c725fc87fc305906be915da", - "sha256:43046a319664a04b146f81b40e1545d4c8ac7b7dd04c47e40bf09f65f2437346", - "sha256:437399385f2abcd634865705bdc180c8314124b98299d54fe1d4c8990f2f9494", - "sha256:45d88b016c849d74ebc6f2b6e8bc17cabf26e7e40c0661ddd8fae4c00f015697", - "sha256:47841407cc89a4b80b0c52276f3cc8138bbbfba4b179ee3acbd7d77ae33f7ac4", - "sha256:4a4fbc769ea9b6bd97f4ad0b430a6807f92f0e5eb020f1e42ece59f3ecfc4585", - "sha256:4ab94426ddb1ecc6a0b601d832d5d9d421820989b8caa929114811369673235c", - "sha256:4b0f30372cef3fdc262f33d06e7b411cd59058ce9174ef159ad938c4a34a89da", - "sha256:4e3a23ec214e95c9fe85a58470b660efe6534b83e6cbe38b3ed52b053d7cb6ad", - "sha256:512bd5ab136b8dc0ffe3fdf2dfb0c4b4f49c8577f6cae55dca862cd37a4564e2", - "sha256:527b3b87b24844ea7865284aabfab08eb0faf599b385b03c2aa91fc6edd6e4b6", - "sha256:54d107c89a3ebcd13228278d68f1436d3f33f2dd2af5415e3feaeb1156e1a62c", - "sha256:5835f258ca9f7c455493a57ee707b76d2d9634d84d5d7f62e77be984ea80b849", - "sha256:598adde339d2cf7d67beaccda3f2ce7c57b3b412702f29c946708f69cf8222aa", - "sha256:599418aaaf88a6d02a8c515e656f6faf3d10618d3dd95866eb4436520096c84b", - "sha256:5bf651afd22d5f0c4be16cf39d0482ea494f5c88f03e75e5fef3a85177fecdeb", - "sha256:5c59fcd80b9049b49acd29bd3598cada4afc8d8d69bd4160cd613246912535d7", - "sha256:653acc3880459f82a65e27bd6526e47ddf19e643457d36a2250b85b41a564715", - "sha256:66bd5f950344fb2b3dbdd421aaa4e84f4411a1a13fca3aeb2bcbe667f80c9f76", - "sha256:6f3553510abdbec67c043ca85727396ceed1272eef029b050677046d3387be8d", - "sha256:7018ecc5fe97027214556afbc7c502fbd718d0740e87eb1217b17efd05b3d276", - "sha256:713d22cd9643ba9025d33c4af43943c7a1eb8547729228de18d3e02e278472b6", - "sha256:73a4131962e6d91109bca6536416aa067cf6c4efb871975df734f8d2fd821b37", - "sha256:75880ed07be39beff1881d81e4a907cafb802f306efd6d2d15f2b3c69935f6fb", - "sha256:75e14eac916f024305db517e00a9252714fce0abcb10ad327fb6dcdc0d060f1d", - "sha256:8135fa153a20d82ffb64f70a1b5c2738684afa197839b34cc3e3c72fa88d302c", - "sha256:84b14f36e85295fe69c6b9789b51a0903b774046d5f7df538176516c3e422446", - "sha256:86fc24e58ecb32aee09f864cb11bb91bc4c1086615001647dbfc4dc8c32f4008", - "sha256:87f44875f2804bc0511a69ce44a9595d5944837a62caecc8490bbdb0e18b1342", - "sha256:88c70ed9da9963d5496d38320160e8eb7e5f1886f9290475a881db12f351ab5d", - "sha256:88e5be56c231981428f4f506c68b6a46fa25c4123a2e86d156c58a8369d31ab7", - "sha256:89d2e02167fa95172c017732ed7725bc8523c598757f08d13c5acca308e1a061", - "sha256:8d6aaa4e7155afaf994d7924eb290abbe81a6905b303d8cb61310a2aba1c68ba", - "sha256:92a2964319d359f494f16011e23434f6f8ef0434acd3cf154a6b7bec511e2fb7", - "sha256:96372fc29471646b9b106ee918c8eeb4cca423fcbf9a34daa1b93767a88a2290", - "sha256:978b046ca728073070e9abc074b6299ebf3501e8dee5e26efacb13cec2b2dea0", - "sha256:9c7149272fb5834fc186328e2c1fa01dda3e1fa940ce18fded6d412e8f2cf76d", - "sha256:a0239da9fbafd9ff82fd67c16704a7d1bccf0d107a300e790587ad05547681c8", - "sha256:ad5383a67514e8e76906a06741febd9126fc7c7ff0f599d6fcce3e82b80d026f", - "sha256:ad61a9639792fd790523ba072c0555cd6be5a0baf03a49a5dd8cfcf20d56df48", - "sha256:b29bfd650ed8e148f9c515474a6ef0ba1090b7a8faeee26b74a8ff3b33617502", - "sha256:b97decbb3372d4b69e4d4c8117f44632551c692bb1361b356a02b97b69e18a62", - "sha256:ba71c9b4dcbb16212f334126cc3d8beb6af377f6703d9dc2d9fb3874fd667ee9", - "sha256:c37c5cce780349d4d51739ae682dec63573847a2a8dcb44381b174c3d9c8d403", - "sha256:c971bf3786b5fad82ce5ad570dc6ee420f5b12527157929e830f51c55dc8af77", - "sha256:d1fde0f44029e02d02d3993ad55ce93ead9bb9b15c6b7ccd580f90bd7e3de476", - "sha256:d24b8bb40d5c61ef2d9b6a8f4528c2f17f1c5d2d31fed62ec860f6006142e83e", - "sha256:d5ba88df9aa5e2f806650fcbeedbe4f6e8736e92fc0e73b0400538fd25a4dd96", - "sha256:d6f76310355e9fae637c3162936e9504b4767d5c52ca268331e2756e54fd4ca5", - "sha256:d737fc67b9a970f3234754974531dc9afeea11c70791dcb7db53b0cf81b79784", - "sha256:da22885266bbfb3f78218dc40205fed2671909fbd0720aedba39b4515c038091", - "sha256:da37dcfbf4b7f45d80ee386a5f81122501ec75672f475da34784196690762f4b", - "sha256:db19d60d846283ee275d0416e2a23493f4e6b6028825b51290ac05afc87a6f97", - "sha256:db4c979b0b3e0fa7e9e69ecd11b2b3174c6963cebadeecfb7ad24532ffcdd11a", - "sha256:e164e0a98e92d06da343d17d4e9c4da4654f4a4588a20d6c73548a29f176abe2", - "sha256:e168a7560b7c61342ae0412997b069753f27ac4862ec7867eff74f0fe4ea2ad9", - "sha256:e381581b37db1db7597b62a2e6b8b57c3deec95d93b6d6407c5b61ddc98aca6d", - "sha256:e65bc19919c910127c06759a63747ebe14f386cda573d95bcc62b427ca1afc73", - "sha256:e7b8813be97cab8cb52b1375f41f8e6804f6507fe4660152e8ca5c48f0436017", - "sha256:e8a78079d9a39ca9ca99a8b0ac2fdc0c4d25fc80c8a8a82e5c8211509c523363", - "sha256:ebf909ea0a3fc9596e40d55d8000702a85e27fd578ff41a5500f68f20fd32e6c", - "sha256:ec40170327d4a404b0d91855d41bfe1fe4b699222b2b93e3d833a27330a87a6d", - "sha256:f178d2aadf0166be4df834c4953da2d7eef24719e8aec9a65289483eeea9d618", - "sha256:f88df3a83cf9df566f171adba39d5bd52814ac0b94778d2448652fc77f9eb491", - "sha256:f973157ffeab5459eefe7b97a804987876dd0a55570b8fa56b4e1954bf11329b", - "sha256:ff25f48fc8e623d95eca0670b8cc1469a83783c924a602e0fbd47363bb54aaca" + "sha256:03543dcf98a6619254b409be2d22b51f21ec66272be4ebda7b04e6412e4b2e14", + "sha256:03baa76b730e4e15a45f81dfe29a8d910314143414e528737f8589ec60cf7391", + "sha256:0a63f03189a6fa7c900226e3ef5ba4d3bd047e18f445e69adbd65af433add5a2", + "sha256:10c8cefcff98fd9168cdd86c4da8b84baaa90bf2da2269c6161984e6737bf23e", + "sha256:147ae376f14b55f4f3c2b118b95be50a369b89b38a971e80a17c3fd623f280c9", + "sha256:176a64b24c0935869d5bbc4c96e82f89f643bcdf08ec947701b9dbb3c956b7dd", + "sha256:17b79c2963db82086229012cff93ea55196ed31f6493bb1ccd2c62f1724324e4", + "sha256:1a45865451439eb320784918617ba54b7a377e3501fb70402ab84d38c2cd891b", + "sha256:1b3ea7edd2d24538959c1c1abf97c744d879d4e541d38305f9bd7d9b10c9ec41", + "sha256:22f6eab15b6db242499a16de87939a342f5a950ad0abaf1532038e2ce7d31567", + "sha256:3032dcb1c35bc330134a5b8a5d4f68c1a87252dfc6e1262c65a7e30e62298275", + "sha256:33587f26dcee66efb2fff3c177547bd0449ab7edf1b73a7f5dea1e38609a0c54", + "sha256:34ce9f93a4a68d1272d26030655dd1b58ff727b3ed2a33d80ec433561b03d67a", + "sha256:3a80464982d41b1fbfe3154e440ba4904b71c1a53e9cd584098cd41efdb188ef", + "sha256:3b90467ebc3d9fa5b0f9b6489dfb2c304a1db7b9946fa92aa76a831b9d587e99", + "sha256:3d89efa095ca7d442a6d0cbc755f9e08190ba40069b235c9886a8763b03785da", + "sha256:3d8ef1a630519a26d6760bc695842579cb09e373c5f227a21b67dc3eb16cfea4", + "sha256:3f43255086fe25e36fd5ed8f2ee47477408a73ef00e804cb2b5cba4bf2ac7f5e", + "sha256:40653609b3bf50611356e6b6554e3a331f6879fa7116f3959b20e3528783e699", + "sha256:41a86a69bb63bb2fc3dc9ad5ea9f10f1c9c8e282b471931be0268ddd09430b04", + "sha256:493f5bc2f8307286b7799c6d899d388bbaa7dfa6c4caf4f97ef7521b9cb13719", + "sha256:4a6cadebe132e90cefa77e45f2d2f1a4b2ce5c6b1bfc1656c1ddafcfe4ba8131", + "sha256:4c745b109057e7e5f1848c689ee4fb3a016c8d4d92da52b312f8a509f83aa05e", + "sha256:4d347a172f866cd1d93126d9b239fcbe682acb39b48ee0873c73c933dd23bd0f", + "sha256:4dac314662f4e2aa5009977b652d9b8db7121b46c38f2073bfeed9f4049732cd", + "sha256:4ddaae3f3d32fc2cb4c53fab020b69a05c8ab1f02e0e59665c6f7a0d3a5be54f", + "sha256:5393fb786a9e23e4799fec788e7e735de18052f83682ce2dfcabaf1c00c2c08e", + "sha256:59f029a5f6e2d679296db7bee982bb3d20c088e52a2977e3175faf31d6fb75d1", + "sha256:5a7bdf9e57126dc345b683c3632e8ba317c31d2a41acd5800c10640387d193ed", + "sha256:5b3f2e06a512e94722886c0827bee9807c86a9f698fac6b3aee841fab49bbfb4", + "sha256:5ce45967538fb747370308d3145aa68a074bdecb4f3a300869590f725ced69c1", + "sha256:5e14f25765a578a0a634d5f0cd1e2c3f53964553a00347998dfdf96b8137f777", + "sha256:618c901dd3aad4ace71dfa0f5e82e88b46ef57e3239fc7027773cb6d4ed53531", + "sha256:652b1bff4f15f6287550b4670546a2947f2a4575b6c6dff7760eafb22eacbf0b", + "sha256:6c08e8ed6fa3d477e501ec9db169bfac8140e830aa372d77e4a43084d8dd91ab", + "sha256:6ddb2a2026c3f6a68c3998a6c47ab6795e4127315d2e35a09997da21865757f8", + "sha256:6e601588f2b502c93c30cd5a45bfc665faaf37bbe835b7cfd461753068232074", + "sha256:6e74dd54f7239fcffe07913ff8b964e28b712f09846e20de78676ce2a3dc0bfc", + "sha256:7235604476a76ef249bd64cb8274ed24ccf6995c4a8b51a237005ee7a57e8643", + "sha256:7ab43061a0c81198d88f39aaf90dae9a7744620978f7ef3e3708339b8ed2ef01", + "sha256:7c7837fe8037e96b6dd5cfcf47263c1620a9d332a87ec06a6ca4564e56bd0f36", + "sha256:80575ba9377c5171407a06d0196b2310b679dc752d02a1fcaa2bc20b235dbf24", + "sha256:80a37fe8f7c1e6ce8f2d9c411676e4bc633a8462844e38f46156d07a7d401654", + "sha256:8189c56eb0ddbb95bfadb8f60ea1b22fcfa659396ea36f6adcc521213cd7b44d", + "sha256:854f422ac44af92bfe172d8e73229c270dc09b96535e8a548f99c84f82dde241", + "sha256:880e15bb6dad90549b43f796b391cfffd7af373f4646784795e20d92606b7a51", + "sha256:8b631e26df63e52f7cce0cce6507b7a7f1bc9b0c501fcde69742130b32e8782f", + "sha256:8c29c77cc57e40f84acef9bfb904373a4e89a4e8b74e71aa8075c021ec9078c2", + "sha256:91f6d540163f90bbaef9387e65f18f73ffd7c79f5225ac3d3f61df7b0d01ad15", + "sha256:92c0cea74a2a81c4c76b62ea1cac163ecb20fb3ba3a75c909b9fa71b4ad493cf", + "sha256:9bcb89336efa095ea21b30f9e686763f2be4478f1b0a616969551982c4ee4c3b", + "sha256:a1f4689c9a1462f3df0a1f7e797791cd6b124ddbee2b570d34e7f38ade0e2c71", + "sha256:a3fec6a4cb5551721cdd70473eb009d90935b4063acc5f40905d40ecfea23e05", + "sha256:a5d794d1ae64e7753e405ba58e08fcfa73e3fad93ef9b7e31112ef3c9a0efb52", + "sha256:a86d42d7cba1cec432d47ab13b6637bee393a10f664c425ea7b305d1301ca1a3", + "sha256:adfbc22e87365a6e564c804c58fc44ff7727deea782d175c33602737b7feadb6", + "sha256:aeb29c84bb53a84b1a81c6c09d24cf33bb8432cc5c39979021cc0f98c1292a1a", + "sha256:aede4df4eeb926c8fa70de46c340a1bc2c6079e1c40ccf7b0eae1313ffd33519", + "sha256:b744c33b6f14ca26b7544e8d8aadff6b765a80ad6164fb1a430bbadd593dfb1a", + "sha256:b7a00a9ed8d6e725b55ef98b1b35c88013245f35f68b1b12c5cd4100dddac333", + "sha256:bb96fa6b56bb536c42d6a4a87dfca570ff8e52de2d63cabebfd6fb67049c34b6", + "sha256:bbcf1a76cf6f6dacf2c7f4d2ebd411438c275faa1dc0c68e46eb84eebd05dd7d", + "sha256:bca5f24726e2919de94f047739d0a4fc01372801a3672708260546aa2601bf57", + "sha256:bf2e1a9162c1e441bf805a1fd166e249d574ca04e03b34f97e2928769e91ab5c", + "sha256:c4eb3b82ca349cf6fadcdc7abcc8b3a50ab74a62e9113ab7a8ebc268aad35bb9", + "sha256:c6cc15d58053c76eacac5fa9152d7d84b8d67b3fde92709195cb984cfb3475ea", + "sha256:c6cd05ea06daca6ad6a4ca3ba7fe7dc5b5de063ff4daec6170ec0f9979f6c332", + "sha256:c844fd628851c0bc309f3c801b3a3d58ce430b2ce5b359cd918a5a76d0b20cb5", + "sha256:c9cb1565a7ad52e096a6988e2ee0397f72fe056dadf75d17fa6b5aebaea05622", + "sha256:cab9401de3ea52b4b4c6971db5fb5c999bd4260898af972bf23de1c6b5dd9d71", + "sha256:cd468460eefef601ece4428d3cf4562459157c0f6523db89365202c31b6daebb", + "sha256:d1e6a862b76f34395a985b3cd39a0d949ca80a70b6ebdea37d3ab39ceea6698a", + "sha256:d1f9282c5f2b5e241034a009779e7b2a1aa045f667ff521e7948ea9b56e0c5ff", + "sha256:d265f09a75a79a788237d7f9054f929ced2e69eb0bb79de3798c468d8a90f945", + "sha256:db3fc6120bce9f446d13b1b834ea5b15341ca9ff3f335e4a951a6ead31105480", + "sha256:dbf3a08a06b3f433013c143ebd72c15cac33d2914b8ea4bea7ac2c23578815d6", + "sha256:de04b491d0e5007ee1b63a309956eaed959a49f5bb4e84b26c8f5d49de140fa9", + "sha256:e4b09863aae0dc965c3ef36500d891a3ff495a2ea9ae9171e4519963c12ceefd", + "sha256:e595432ac259af2d4630008bf638873d69346372d38255774c0e286951e8b79f", + "sha256:e75b89ac3bd27d2d043b234aa7b734c38ba1b0e43f07787130a0ecac1e12228a", + "sha256:ea9eb976ffdd79d0e893869cfe179a8f60f152d42cb64622fca418cd9b18dc2a", + "sha256:eafb3e874816ebe2a92f5e155f17260034c8c341dad1df25672fb710627c6949", + "sha256:ee3c36df21b5714d49fc4580247947aa64bcbe2939d1b77b4c8dcb8f6c9faecc", + "sha256:f352b62b45dff37b55ddd7b9c0c8672c4dd2eb9c0f9c11d395075a84e2c40f75", + "sha256:fabb87dd8850ef0f7fe2b366d44b77d7e6fa2ea87861ab3844da99291e81e60f", + "sha256:fe11310ae1e4cd560035598c3f29d86cef39a83d244c7466f95c27ae04850f10", + "sha256:fe7ba4a51f33ab275515f66b0a236bcde4fb5561498fe8f898d4e549b2e4509f" ], "index": "pypi", - "version": "==3.8.3" + "version": "==3.8.4" }, "aiosignal": { "hashes": [ @@ -127,11 +127,11 @@ }, "alembic": { "hashes": [ - "sha256:6880dec4f28dd7bd999d2ed13fbe7c9d4337700a44d11a524c0ce0c59aaf0dbd", - "sha256:e8a6ff9f3b1887e1fed68bfb8fb9a000d8f61c21bdcc85b67bb9f87fcbc4fce3" + "sha256:32a69b13a613aeb7e8093f242da60eff9daed13c0df02fff279c1b06c32965d2", + "sha256:b2e0a6cfd3a8ce936a1168320bcbe94aefa3f4463cd773a968a55071beb3cd37" ], "index": "pypi", - "version": "==1.9.2" + "version": "==1.10.3" }, "anyio": { "hashes": [ @@ -193,42 +193,52 @@ }, "asyncpg": { "hashes": [ - "sha256:03f44926fa7ff7ccd59e98f05c7e227e9de15332a7da5bbcef3654bf468ee597", - "sha256:050e339694f8c5d9aebcf326ca26f6622ef23963a6a3a4f97aeefc743954afd5", - "sha256:0de408626cfc811ef04f372debfcdd5e4ab5aeb358f2ff14d1bdc246ed6272b5", - "sha256:235205b60d4d014921f7b1cdca0e19669a9a8978f7606b3eb8237ca95f8e716e", - "sha256:2ed3880b3aec8bda90548218fe0914d251d641f798382eda39a17abfc4910af0", - "sha256:3ecbe8ed3af4c739addbfbd78f7752866cce2c4e9cc3f953556e4960349ae360", - "sha256:49fc7220334cc31d14866a0b77a575d6a5945c0fa3bb67f17304e8b838e2a02b", - "sha256:4b4051012ca75defa9a1dc6b78185ca58cdc3a247187eb76a6bcf55dfaa2fad4", - "sha256:6d60f15a0ac18c54a6ca6507c28599c06e2e87a0901e7b548f15243d71905b18", - "sha256:7129bd809990fd119e8b2b9982e80be7712bb6041cd082be3e415e60e5e2e98f", - "sha256:77e684a24fee17ba3e487ca982d0259ed17bae1af68006f4cf284b23ba20ea2c", - "sha256:838e4acd72da370ad07243898e886e93d3c0c9413f4444d600ba60a5cc206014", - "sha256:868a71704262834065ca7113d80b1f679609e2df77d837747e3d92150dd5a39b", - "sha256:8e1e79f0253cbd51fc43c4d0ce8804e46ee71f6c173fdc75606662ad18756b52", - "sha256:9acb22a7b6bcca0d80982dce3d67f267d43e960544fb5dd934fd3abe20c48014", - "sha256:a254d09a3a989cc1839ba2c34448b879cdd017b528a0cda142c92fbb6c13d957", - "sha256:b0c3f39ebfac06848ba3f1e280cb1fada7cc1229538e3dad3146e8d1f9deb92a", - "sha256:b1f7b173af649b85126429e11a628d01a5b75973d2a55d64dba19ad8f0e9f904", - "sha256:d156e53b329e187e2dbfca8c28c999210045c45ef22a200b50de9b9e520c2694", - "sha256:d96cf93e01df9fb03cef5f62346587805e6c0ca6f654c23b8d35315bdc69af59", - "sha256:e550d8185f2c4725c1e8d3c555fe668b41bd092143012ddcc5343889e1c2a13d", - "sha256:e5bd99ee7a00e87df97b804f178f31086e88c8106aca9703b1d7be5078999e68", - "sha256:ede1a3a2c377fe12a3930f4b4dd5340e8b32929541d5db027a21816852723438", - "sha256:efe056fd22fc6ed5c1ab353b6510808409566daac4e6f105e2043797f17b8dad", - "sha256:f3ce7d8c0ab4639bbf872439eba86ef62dd030b245ad0e17c8c675d93d7a6b2d", - "sha256:f92d501bf213b16fabad4fbb0061398d2bceae30ddc228e7314c28dcc6641b79" + "sha256:16ba8ec2e85d586b4a12bcd03e8d29e3d99e832764d6a1d0b8c27dbbe4a2569d", + "sha256:18f77e8e71e826ba2d0c3ba6764930776719ae2b225ca07e014590545928b576", + "sha256:1b6499de06fe035cf2fa932ec5617ed3f37d4ebbf663b655922e105a484a6af9", + "sha256:20b596d8d074f6f695c13ffb8646d0b6bb1ab570ba7b0cfd349b921ff03cfc1e", + "sha256:2232ebae9796d4600a7819fc383da78ab51b32a092795f4555575fc934c1c89d", + "sha256:4750f5cf49ed48a6e49c6e5aed390eee367694636c2dcfaf4a273ca832c5c43c", + "sha256:4bb366ae34af5b5cabc3ac6a5347dfb6013af38c68af8452f27968d49085ecc0", + "sha256:5710cb0937f696ce303f5eed6d272e3f057339bb4139378ccecafa9ee923a71c", + "sha256:609054a1f47292a905582a1cfcca51a6f3f30ab9d822448693e66fdddde27920", + "sha256:62932f29cf2433988fcd799770ec64b374a3691e7902ecf85da14d5e0854d1ea", + "sha256:69aa1b443a182b13a17ff926ed6627af2d98f62f2fe5890583270cc4073f63bf", + "sha256:71cca80a056ebe19ec74b7117b09e650990c3ca535ac1c35234a96f65604192f", + "sha256:720986d9a4705dd8a40fdf172036f5ae787225036a7eb46e704c45aa8f62c054", + "sha256:768e0e7c2898d40b16d4ef7a0b44e8150db3dd8995b4652aa1fe2902e92c7df8", + "sha256:7a6206210c869ebd3f4eb9e89bea132aefb56ff3d1b7dd7e26b102b17e27bbb1", + "sha256:7d8585707ecc6661d07367d444bbaa846b4e095d84451340da8df55a3757e152", + "sha256:8113e17cfe236dc2277ec844ba9b3d5312f61bd2fdae6d3ed1c1cdd75f6cf2d8", + "sha256:879c29a75969eb2722f94443752f4720d560d1e748474de54ae8dd230bc4956b", + "sha256:88b62164738239f62f4af92567b846a8ef7cf8abf53eddd83650603de4d52163", + "sha256:8934577e1ed13f7d2d9cea3cc016cc6f95c19faedea2c2b56a6f94f257cea672", + "sha256:9654085f2b22f66952124de13a8071b54453ff972c25c59b5ce1173a4283ffd9", + "sha256:975a320baf7020339a67315284a4d3bf7460e664e484672bd3e71dbd881bc692", + "sha256:9a3a4ff43702d39e3c97a8786314123d314e0f0e4dabc8367db5b665c93914de", + "sha256:a7a94c03386bb95456b12c66026b3a87d1b965f0f1e5733c36e7229f8f137747", + "sha256:ab0f21c4818d46a60ca789ebc92327d6d874d3b7ccff3963f7af0a21dc6cff52", + "sha256:bb71211414dd1eeb8d31ec529fe77cff04bf53efc783a5f6f0a32d84923f45cf", + "sha256:bf21ebf023ec67335258e0f3d3ad7b91bb9507985ba2b2206346de488267cad0", + "sha256:bfc3980b4ba6f97138b04f0d32e8af21d6c9fa1f8e6e140c07d15690a0a99279", + "sha256:c2232d4625c558f2aa001942cac1d7952aa9f0dbfc212f63bc754277769e1ef2", + "sha256:ccddb9419ab4e1c48742457d0c0362dbdaeb9b28e6875115abfe319b29ee225d", + "sha256:d20dea7b83651d93b1eb2f353511fe7fd554752844523f17ad30115d8b9c8cd6", + "sha256:e56ac8a8237ad4adec97c0cd4728596885f908053ab725e22900b5902e7f8e69", + "sha256:eb4b2fdf88af4fb1cc569781a8f933d2a73ee82cd720e0cb4edabbaecf2a905b", + "sha256:eca01eb112a39d31cc4abb93a5aef2a81514c23f70956729f42fb83b11b3483f", + "sha256:fca608d199ffed4903dce1bcd97ad0fe8260f405c1c225bdf0002709132171c2", + "sha256:fddcacf695581a8d856654bc4c8cfb73d5c9df26d5f55201722d3e6a699e9629" ], - "version": "==0.26.0" + "version": "==0.27.0" }, "attrs": { "hashes": [ - "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836", - "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99" + "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04", + "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015" ], - "markers": "python_version >= '3.6'", - "version": "==22.2.0" + "markers": "python_version >= '3.7'", + "version": "==23.1.0" }, "authlib": { "hashes": [ @@ -386,11 +396,84 @@ }, "charset-normalizer": { "hashes": [ - "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", - "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" + "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6", + "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1", + "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e", + "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373", + "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62", + "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230", + "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be", + "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c", + "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0", + "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448", + "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f", + "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649", + "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d", + "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0", + "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706", + "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a", + "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59", + "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23", + "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5", + "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb", + "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e", + "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e", + "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c", + "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28", + "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d", + "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41", + "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974", + "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce", + "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f", + "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1", + "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d", + "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8", + "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017", + "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31", + "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7", + "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8", + "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e", + "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14", + "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd", + "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d", + "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795", + "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b", + "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b", + "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b", + "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203", + "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f", + "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19", + "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1", + "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a", + "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac", + "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9", + "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0", + "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137", + "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f", + "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6", + "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5", + "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909", + "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f", + "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0", + "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324", + "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755", + "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb", + "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854", + "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c", + "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60", + "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84", + "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0", + "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b", + "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1", + "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531", + "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1", + "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11", + "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326", + "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df", + "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab" ], - "markers": "python_full_version >= '3.6.0'", - "version": "==2.1.1" + "markers": "python_full_version >= '3.7.0'", + "version": "==3.1.0" }, "click": { "hashes": [ @@ -402,40 +485,36 @@ }, "cryptography": { "hashes": [ - "sha256:1a6915075c6d3a5e1215eab5d99bcec0da26036ff2102a1038401d6ef5bef25b", - "sha256:1ee1fd0de9851ff32dbbb9362a4d833b579b4a6cc96883e8e6d2ff2a6bc7104f", - "sha256:407cec680e811b4fc829de966f88a7c62a596faa250fc1a4b520a0355b9bc190", - "sha256:50386acb40fbabbceeb2986332f0287f50f29ccf1497bae31cf5c3e7b4f4b34f", - "sha256:6f97109336df5c178ee7c9c711b264c502b905c2d2a29ace99ed761533a3460f", - "sha256:754978da4d0457e7ca176f58c57b1f9de6556591c19b25b8bcce3c77d314f5eb", - "sha256:76c24dd4fd196a80f9f2f5405a778a8ca132f16b10af113474005635fe7e066c", - "sha256:7dacfdeee048814563eaaec7c4743c8aea529fe3dd53127313a792f0dadc1773", - "sha256:80ee674c08aaef194bc4627b7f2956e5ba7ef29c3cc3ca488cf15854838a8f72", - "sha256:844ad4d7c3850081dffba91cdd91950038ee4ac525c575509a42d3fc806b83c8", - "sha256:875aea1039d78557c7c6b4db2fe0e9d2413439f4676310a5f269dd342ca7a717", - "sha256:887cbc1ea60786e534b00ba8b04d1095f4272d380ebd5f7a7eb4cc274710fad9", - "sha256:ad04f413436b0781f20c52a661660f1e23bcd89a0e9bb1d6d20822d048cf2856", - "sha256:bae6c7f4a36a25291b619ad064a30a07110a805d08dc89984f4f441f6c1f3f96", - "sha256:c52a1a6f81e738d07f43dab57831c29e57d21c81a942f4602fac7ee21b27f288", - "sha256:e0a05aee6a82d944f9b4edd6a001178787d1546ec7c6223ee9a848a7ade92e39", - "sha256:e324de6972b151f99dc078defe8fb1b0a82c6498e37bff335f5bc6b1e3ab5a1e", - "sha256:e5d71c5d5bd5b5c3eebcf7c5c2bb332d62ec68921a8c593bea8c394911a005ce", - "sha256:f3ed2d864a2fa1666e749fe52fb8e23d8e06b8012e8bd8147c73797c506e86f1", - "sha256:f671c1bb0d6088e94d61d80c606d65baacc0d374e67bf895148883461cd848de", - "sha256:f6c0db08d81ead9576c4d94bbb27aed8d7a430fa27890f39084c2d0e2ec6b0df", - "sha256:f964c7dcf7802d133e8dbd1565914fa0194f9d683d82411989889ecd701e8adf", - "sha256:fec8b932f51ae245121c4671b4bbc030880f363354b2f0e0bd1366017d891458" + "sha256:05dc219433b14046c476f6f09d7636b92a1c3e5808b9a6536adf4932b3b2c440", + "sha256:0dcca15d3a19a66e63662dc8d30f8036b07be851a8680eda92d079868f106288", + "sha256:142bae539ef28a1c76794cca7f49729e7c54423f615cfd9b0b1fa90ebe53244b", + "sha256:3daf9b114213f8ba460b829a02896789751626a2a4e7a43a28ee77c04b5e4958", + "sha256:48f388d0d153350f378c7f7b41497a54ff1513c816bcbbcafe5b829e59b9ce5b", + "sha256:4df2af28d7bedc84fe45bd49bc35d710aede676e2a4cb7fc6d103a2adc8afe4d", + "sha256:4f01c9863da784558165f5d4d916093737a75203a5c5286fde60e503e4276c7a", + "sha256:7a38250f433cd41df7fcb763caa3ee9362777fdb4dc642b9a349721d2bf47404", + "sha256:8f79b5ff5ad9d3218afb1e7e20ea74da5f76943ee5edb7f76e56ec5161ec782b", + "sha256:956ba8701b4ffe91ba59665ed170a2ebbdc6fc0e40de5f6059195d9f2b33ca0e", + "sha256:a04386fb7bc85fab9cd51b6308633a3c271e3d0d3eae917eebab2fac6219b6d2", + "sha256:a95f4802d49faa6a674242e25bfeea6fc2acd915b5e5e29ac90a32b1139cae1c", + "sha256:adc0d980fd2760c9e5de537c28935cc32b9353baaf28e0814df417619c6c8c3b", + "sha256:aecbb1592b0188e030cb01f82d12556cf72e218280f621deed7d806afd2113f9", + "sha256:b12794f01d4cacfbd3177b9042198f3af1c856eedd0a98f10f141385c809a14b", + "sha256:c0764e72b36a3dc065c155e5b22f93df465da9c39af65516fe04ed3c68c92636", + "sha256:c33c0d32b8594fa647d2e01dbccc303478e16fdd7cf98652d5b3ed11aa5e5c99", + "sha256:cbaba590180cba88cb99a5f76f90808a624f18b169b90a4abb40c1fd8c19420e", + "sha256:d5a1bd0e9e2031465761dfa920c16b0065ad77321d8a8c1f5ee331021fda65e9" ], "index": "pypi", - "version": "==39.0.0" + "version": "==40.0.2" }, "databases": { "hashes": [ - "sha256:0a69c6983a27e10a5b75ffa094486f1febadd9d5a8db016e69b8c2f6a354dc30", - "sha256:47fae85d82d8227049f08b154019913c3ad2f6057ceb0b5ebb36703be6f5666b" + "sha256:b09c370ad7c2f64c7f4316c096e265dc2e28304732639889272390decda2f893", + "sha256:ff4010136ac2bb9da2322a2ffda4ef9185ae1c365e5891e52924dd9499d33dc4" ], "markers": "python_version >= '3.7'", - "version": "==0.6.1" + "version": "==0.6.2" }, "dnspython": { "hashes": [ @@ -455,19 +534,19 @@ }, "email-validator": { "hashes": [ - "sha256:49a72f5fa6ed26be1c964f0567d931d10bf3fdeeacdf97bc26ef1cd2a44e0bda", - "sha256:d178c5c6fa6c6824e9b04f199cf23e79ac15756786573c190d2ad13089411ad2" + "sha256:07c61b62ee446e39274b18204afa8e422baf64570776045272b04d10c02f64f6", + "sha256:f4904f4145c11f8de5897afbb8d7db4b465c57f13db1c8c106c16d02bceebd9a" ], "index": "pypi", - "version": "==1.3.1" + "version": "==2.0.0" }, "fastapi": { "hashes": [ - "sha256:15d9271ee52b572a015ca2ae5c72e1ce4241dd8532a534ad4f7ec70c376a580f", - "sha256:f9773ea22290635b2f48b4275b2bf69a8fa721fda2e38228bed47139839dc877" + "sha256:9569f0a381f8a457ec479d90fa01005cfddaae07546eb1f3fa035bc4797ae7d5", + "sha256:a870d443e5405982e1667dfe372663abf10754f246866056336d7f01c21dab07" ], "index": "pypi", - "version": "==0.89.1" + "version": "==0.95.1" }, "frozenlist": { "hashes": [ @@ -633,11 +712,11 @@ }, "httpcore": { "hashes": [ - "sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb", - "sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0" + "sha256:0fdfea45e94f0c9fd96eab9286077f9ff788dd186635ae61b312693e4d943599", + "sha256:cc045a3241afbf60ce056202301b4d8b6af08845e3294055eb26b09913ef903c" ], "markers": "python_version >= '3.7'", - "version": "==0.16.3" + "version": "==0.17.0" }, "httptools": { "hashes": [ @@ -687,11 +766,11 @@ }, "httpx": { "hashes": [ - "sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9", - "sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6" + "sha256:447556b50c1921c351ea54b4fe79d91b724ed2b027462ab9a329465d147d5a4e", + "sha256:507d676fc3e26110d41df7d35ebd8b3b8585052450f4097401c9be59d928c63e" ], "index": "pypi", - "version": "==0.23.3" + "version": "==0.24.0" }, "idna": { "hashes": [ @@ -783,11 +862,19 @@ }, "meilisearch": { "hashes": [ - "sha256:2b649540b533eeb02b47f1d354c868004652886f6279ecf4d270b64290fa46c2", - "sha256:7fd7238bf5ad079a398092725e2d38f22ac3517916fe262014507bfd9b181d6a" + "sha256:597ec5eaf6b726428c0e04ecf05af19379aa097093225dab0c6bfb892d03a90d", + "sha256:e35ad840a42554b575ddb72c6aa5d9f7202ab2a6777fada5752269fe453379f4" ], "index": "pypi", - "version": "==0.23.0" + "version": "==0.26.0" + }, + "minio": { + "hashes": [ + "sha256:230faf1d0db1c3ce09aef86b0eb38e994a64769e34dad4b77febf59bc90d8ab0", + "sha256:ee5cbd4ba73f71b73555209f3411d5da3e9742bbe3fd038c362042d6d2527256" + ], + "index": "pypi", + "version": "==7.1.14" }, "multidict": { "hashes": [ @@ -874,11 +961,11 @@ "postgresql" ], "hashes": [ - "sha256:bb71e5a9ea6477de1c5ed5acf5692067152ef7452ef9625e5eeb13f165068722", - "sha256:fc76a3a1ef602c8c65c6b956bd57ecc4961d3ba750f1deb498cda822a7162288" + "sha256:d172b00398fc272ae1dde373b1ee9774f52e77efebeb57956f0b03aed3bc154f", + "sha256:e4400623140861da8e0a4d520bdaf5dfcbbf4b3e69c0dd4107f3c7faa16c7789" ], "index": "pypi", - "version": "==0.12.0" + "version": "==0.12.1" }, "passlib": { "hashes": [ @@ -890,170 +977,150 @@ }, "pillow": { "hashes": [ - "sha256:013016af6b3a12a2f40b704677f8b51f72cb007dac785a9933d5c86a72a7fe33", - "sha256:0845adc64fe9886db00f5ab68c4a8cd933ab749a87747555cec1c95acea64b0b", - "sha256:0884ba7b515163a1a05440a138adeb722b8a6ae2c2b33aea93ea3118dd3a899e", - "sha256:09b89ddc95c248ee788328528e6a2996e09eaccddeeb82a5356e92645733be35", - "sha256:0dd4c681b82214b36273c18ca7ee87065a50e013112eea7d78c7a1b89a739153", - "sha256:0e51f608da093e5d9038c592b5b575cadc12fd748af1479b5e858045fff955a9", - "sha256:0f3269304c1a7ce82f1759c12ce731ef9b6e95b6df829dccd9fe42912cc48569", - "sha256:16a8df99701f9095bea8a6c4b3197da105df6f74e6176c5b410bc2df2fd29a57", - "sha256:19005a8e58b7c1796bc0167862b1f54a64d3b44ee5d48152b06bb861458bc0f8", - "sha256:1b4b4e9dda4f4e4c4e6896f93e84a8f0bcca3b059de9ddf67dac3c334b1195e1", - "sha256:28676836c7796805914b76b1837a40f76827ee0d5398f72f7dcc634bae7c6264", - "sha256:2968c58feca624bb6c8502f9564dd187d0e1389964898f5e9e1fbc8533169157", - "sha256:3f4cc516e0b264c8d4ccd6b6cbc69a07c6d582d8337df79be1e15a5056b258c9", - "sha256:3fa1284762aacca6dc97474ee9c16f83990b8eeb6697f2ba17140d54b453e133", - "sha256:43521ce2c4b865d385e78579a082b6ad1166ebed2b1a2293c3be1d68dd7ca3b9", - "sha256:451f10ef963918e65b8869e17d67db5e2f4ab40e716ee6ce7129b0cde2876eab", - "sha256:46c259e87199041583658457372a183636ae8cd56dbf3f0755e0f376a7f9d0e6", - "sha256:46f39cab8bbf4a384ba7cb0bc8bae7b7062b6a11cfac1ca4bc144dea90d4a9f5", - "sha256:519e14e2c49fcf7616d6d2cfc5c70adae95682ae20f0395e9280db85e8d6c4df", - "sha256:53dcb50fbdc3fb2c55431a9b30caeb2f7027fcd2aeb501459464f0214200a503", - "sha256:54614444887e0d3043557d9dbc697dbb16cfb5a35d672b7a0fcc1ed0cf1c600b", - "sha256:575d8912dca808edd9acd6f7795199332696d3469665ef26163cd090fa1f8bfa", - "sha256:5dd5a9c3091a0f414a963d427f920368e2b6a4c2f7527fdd82cde8ef0bc7a327", - "sha256:5f532a2ad4d174eb73494e7397988e22bf427f91acc8e6ebf5bb10597b49c493", - "sha256:60e7da3a3ad1812c128750fc1bc14a7ceeb8d29f77e0a2356a8fb2aa8925287d", - "sha256:653d7fb2df65efefbcbf81ef5fe5e5be931f1ee4332c2893ca638c9b11a409c4", - "sha256:6663977496d616b618b6cfa43ec86e479ee62b942e1da76a2c3daa1c75933ef4", - "sha256:6abfb51a82e919e3933eb137e17c4ae9c0475a25508ea88993bb59faf82f3b35", - "sha256:6c6b1389ed66cdd174d040105123a5a1bc91d0aa7059c7261d20e583b6d8cbd2", - "sha256:6d9dfb9959a3b0039ee06c1a1a90dc23bac3b430842dcb97908ddde05870601c", - "sha256:765cb54c0b8724a7c12c55146ae4647e0274a839fb6de7bcba841e04298e1011", - "sha256:7a21222644ab69ddd9967cfe6f2bb420b460dae4289c9d40ff9a4896e7c35c9a", - "sha256:7ac7594397698f77bce84382929747130765f66406dc2cd8b4ab4da68ade4c6e", - "sha256:7cfc287da09f9d2a7ec146ee4d72d6ea1342e770d975e49a8621bf54eaa8f30f", - "sha256:83125753a60cfc8c412de5896d10a0a405e0bd88d0470ad82e0869ddf0cb3848", - "sha256:847b114580c5cc9ebaf216dd8c8dbc6b00a3b7ab0131e173d7120e6deade1f57", - "sha256:87708d78a14d56a990fbf4f9cb350b7d89ee8988705e58e39bdf4d82c149210f", - "sha256:8a2b5874d17e72dfb80d917213abd55d7e1ed2479f38f001f264f7ce7bae757c", - "sha256:8f127e7b028900421cad64f51f75c051b628db17fb00e099eb148761eed598c9", - "sha256:94cdff45173b1919350601f82d61365e792895e3c3a3443cf99819e6fbf717a5", - "sha256:99d92d148dd03fd19d16175b6d355cc1b01faf80dae93c6c3eb4163709edc0a9", - "sha256:9a3049a10261d7f2b6514d35bbb7a4dfc3ece4c4de14ef5876c4b7a23a0e566d", - "sha256:9d9a62576b68cd90f7075876f4e8444487db5eeea0e4df3ba298ee38a8d067b0", - "sha256:9e5f94742033898bfe84c93c831a6f552bb629448d4072dd312306bab3bd96f1", - "sha256:a1c2d7780448eb93fbcc3789bf3916aa5720d942e37945f4056680317f1cd23e", - "sha256:a2e0f87144fcbbe54297cae708c5e7f9da21a4646523456b00cc956bd4c65815", - "sha256:a4dfdae195335abb4e89cc9762b2edc524f3c6e80d647a9a81bf81e17e3fb6f0", - "sha256:a96e6e23f2b79433390273eaf8cc94fec9c6370842e577ab10dabdcc7ea0a66b", - "sha256:aabdab8ec1e7ca7f1434d042bf8b1e92056245fb179790dc97ed040361f16bfd", - "sha256:b222090c455d6d1a64e6b7bb5f4035c4dff479e22455c9eaa1bdd4c75b52c80c", - "sha256:b52ff4f4e002f828ea6483faf4c4e8deea8d743cf801b74910243c58acc6eda3", - "sha256:b70756ec9417c34e097f987b4d8c510975216ad26ba6e57ccb53bc758f490dab", - "sha256:b8c2f6eb0df979ee99433d8b3f6d193d9590f735cf12274c108bd954e30ca858", - "sha256:b9b752ab91e78234941e44abdecc07f1f0d8f51fb62941d32995b8161f68cfe5", - "sha256:ba6612b6548220ff5e9df85261bddc811a057b0b465a1226b39bfb8550616aee", - "sha256:bd752c5ff1b4a870b7661234694f24b1d2b9076b8bf337321a814c612665f343", - "sha256:c3c4ed2ff6760e98d262e0cc9c9a7f7b8a9f61aa4d47c58835cdaf7b0b8811bb", - "sha256:c5c1362c14aee73f50143d74389b2c158707b4abce2cb055b7ad37ce60738d47", - "sha256:cb362e3b0976dc994857391b776ddaa8c13c28a16f80ac6522c23d5257156bed", - "sha256:d197df5489004db87d90b918033edbeee0bd6df3848a204bca3ff0a903bef837", - "sha256:d3b56206244dc8711f7e8b7d6cad4663917cd5b2d950799425076681e8766286", - "sha256:d5b2f8a31bd43e0f18172d8ac82347c8f37ef3e0b414431157718aa234991b28", - "sha256:d7081c084ceb58278dd3cf81f836bc818978c0ccc770cbbb202125ddabec6628", - "sha256:db74f5562c09953b2c5f8ec4b7dfd3f5421f31811e97d1dbc0a7c93d6e3a24df", - "sha256:df41112ccce5d47770a0c13651479fbcd8793f34232a2dd9faeccb75eb5d0d0d", - "sha256:e1339790c083c5a4de48f688b4841f18df839eb3c9584a770cbd818b33e26d5d", - "sha256:e621b0246192d3b9cb1dc62c78cfa4c6f6d2ddc0ec207d43c0dedecb914f152a", - "sha256:e8c5cf126889a4de385c02a2c3d3aba4b00f70234bfddae82a5eaa3ee6d5e3e6", - "sha256:e9d7747847c53a16a729b6ee5e737cf170f7a16611c143d95aa60a109a59c336", - "sha256:eaef5d2de3c7e9b21f1e762f289d17b726c2239a42b11e25446abf82b26ac132", - "sha256:ed3e4b4e1e6de75fdc16d3259098de7c6571b1a6cc863b1a49e7d3d53e036070", - "sha256:ef21af928e807f10bf4141cad4746eee692a0dd3ff56cfb25fce076ec3cc8abe", - "sha256:f09598b416ba39a8f489c124447b007fe865f786a89dbfa48bb5cf395693132a", - "sha256:f0caf4a5dcf610d96c3bd32932bfac8aee61c96e60481c2a0ea58da435e25acd", - "sha256:f6e78171be3fb7941f9910ea15b4b14ec27725865a73c15277bc39f5ca4f8391", - "sha256:f715c32e774a60a337b2bb8ad9839b4abf75b267a0f18806f6f4f5f1688c4b5a", - "sha256:fb5c1ad6bad98c57482236a21bf985ab0ef42bd51f7ad4e4538e89a997624e12" + "sha256:07999f5834bdc404c442146942a2ecadd1cb6292f5229f4ed3b31e0a108746b1", + "sha256:0852ddb76d85f127c135b6dd1f0bb88dbb9ee990d2cd9aa9e28526c93e794fba", + "sha256:1781a624c229cb35a2ac31cc4a77e28cafc8900733a864870c49bfeedacd106a", + "sha256:1e7723bd90ef94eda669a3c2c19d549874dd5badaeefabefd26053304abe5799", + "sha256:229e2c79c00e85989a34b5981a2b67aa079fd08c903f0aaead522a1d68d79e51", + "sha256:22baf0c3cf0c7f26e82d6e1adf118027afb325e703922c8dfc1d5d0156bb2eeb", + "sha256:252a03f1bdddce077eff2354c3861bf437c892fb1832f75ce813ee94347aa9b5", + "sha256:2dfaaf10b6172697b9bceb9a3bd7b951819d1ca339a5ef294d1f1ac6d7f63270", + "sha256:322724c0032af6692456cd6ed554bb85f8149214d97398bb80613b04e33769f6", + "sha256:35f6e77122a0c0762268216315bf239cf52b88865bba522999dc38f1c52b9b47", + "sha256:375f6e5ee9620a271acb6820b3d1e94ffa8e741c0601db4c0c4d3cb0a9c224bf", + "sha256:3ded42b9ad70e5f1754fb7c2e2d6465a9c842e41d178f262e08b8c85ed8a1d8e", + "sha256:432b975c009cf649420615388561c0ce7cc31ce9b2e374db659ee4f7d57a1f8b", + "sha256:482877592e927fd263028c105b36272398e3e1be3269efda09f6ba21fd83ec66", + "sha256:489f8389261e5ed43ac8ff7b453162af39c3e8abd730af8363587ba64bb2e865", + "sha256:54f7102ad31a3de5666827526e248c3530b3a33539dbda27c6843d19d72644ec", + "sha256:560737e70cb9c6255d6dcba3de6578a9e2ec4b573659943a5e7e4af13f298f5c", + "sha256:5671583eab84af046a397d6d0ba25343c00cd50bce03787948e0fff01d4fd9b1", + "sha256:5ba1b81ee69573fe7124881762bb4cd2e4b6ed9dd28c9c60a632902fe8db8b38", + "sha256:5d4ebf8e1db4441a55c509c4baa7a0587a0210f7cd25fcfe74dbbce7a4bd1906", + "sha256:60037a8db8750e474af7ffc9faa9b5859e6c6d0a50e55c45576bf28be7419705", + "sha256:608488bdcbdb4ba7837461442b90ea6f3079397ddc968c31265c1e056964f1ef", + "sha256:6608ff3bf781eee0cd14d0901a2b9cc3d3834516532e3bd673a0a204dc8615fc", + "sha256:662da1f3f89a302cc22faa9f14a262c2e3951f9dbc9617609a47521c69dd9f8f", + "sha256:7002d0797a3e4193c7cdee3198d7c14f92c0836d6b4a3f3046a64bd1ce8df2bf", + "sha256:763782b2e03e45e2c77d7779875f4432e25121ef002a41829d8868700d119392", + "sha256:77165c4a5e7d5a284f10a6efaa39a0ae8ba839da344f20b111d62cc932fa4e5d", + "sha256:7c9af5a3b406a50e313467e3565fc99929717f780164fe6fbb7704edba0cebbe", + "sha256:7ec6f6ce99dab90b52da21cf0dc519e21095e332ff3b399a357c187b1a5eee32", + "sha256:833b86a98e0ede388fa29363159c9b1a294b0905b5128baf01db683672f230f5", + "sha256:84a6f19ce086c1bf894644b43cd129702f781ba5751ca8572f08aa40ef0ab7b7", + "sha256:8507eda3cd0608a1f94f58c64817e83ec12fa93a9436938b191b80d9e4c0fc44", + "sha256:85ec677246533e27770b0de5cf0f9d6e4ec0c212a1f89dfc941b64b21226009d", + "sha256:8aca1152d93dcc27dc55395604dcfc55bed5f25ef4c98716a928bacba90d33a3", + "sha256:8d935f924bbab8f0a9a28404422da8af4904e36d5c33fc6f677e4c4485515625", + "sha256:8f36397bf3f7d7c6a3abdea815ecf6fd14e7fcd4418ab24bae01008d8d8ca15e", + "sha256:91ec6fe47b5eb5a9968c79ad9ed78c342b1f97a091677ba0e012701add857829", + "sha256:965e4a05ef364e7b973dd17fc765f42233415974d773e82144c9bbaaaea5d089", + "sha256:96e88745a55b88a7c64fa49bceff363a1a27d9a64e04019c2281049444a571e3", + "sha256:99eb6cafb6ba90e436684e08dad8be1637efb71c4f2180ee6b8f940739406e78", + "sha256:9adf58f5d64e474bed00d69bcd86ec4bcaa4123bfa70a65ce72e424bfb88ed96", + "sha256:9b1af95c3a967bf1da94f253e56b6286b50af23392a886720f563c547e48e964", + "sha256:a0aa9417994d91301056f3d0038af1199eb7adc86e646a36b9e050b06f526597", + "sha256:a0f9bb6c80e6efcde93ffc51256d5cfb2155ff8f78292f074f60f9e70b942d99", + "sha256:a127ae76092974abfbfa38ca2d12cbeddcdeac0fb71f9627cc1135bedaf9d51a", + "sha256:aaf305d6d40bd9632198c766fb64f0c1a83ca5b667f16c1e79e1661ab5060140", + "sha256:aca1c196f407ec7cf04dcbb15d19a43c507a81f7ffc45b690899d6a76ac9fda7", + "sha256:ace6ca218308447b9077c14ea4ef381ba0b67ee78d64046b3f19cf4e1139ad16", + "sha256:b416f03d37d27290cb93597335a2f85ed446731200705b22bb927405320de903", + "sha256:bf548479d336726d7a0eceb6e767e179fbde37833ae42794602631a070d630f1", + "sha256:c1170d6b195555644f0616fd6ed929dfcf6333b8675fcca044ae5ab110ded296", + "sha256:c380b27d041209b849ed246b111b7c166ba36d7933ec6e41175fd15ab9eb1572", + "sha256:c446d2245ba29820d405315083d55299a796695d747efceb5717a8b450324115", + "sha256:c830a02caeb789633863b466b9de10c015bded434deb3ec87c768e53752ad22a", + "sha256:cb841572862f629b99725ebaec3287fc6d275be9b14443ea746c1dd325053cbd", + "sha256:cfa4561277f677ecf651e2b22dc43e8f5368b74a25a8f7d1d4a3a243e573f2d4", + "sha256:cfcc2c53c06f2ccb8976fb5c71d448bdd0a07d26d8e07e321c103416444c7ad1", + "sha256:d3c6b54e304c60c4181da1c9dadf83e4a54fd266a99c70ba646a9baa626819eb", + "sha256:d3d403753c9d5adc04d4694d35cf0391f0f3d57c8e0030aac09d7678fa8030aa", + "sha256:d9c206c29b46cfd343ea7cdfe1232443072bbb270d6a46f59c259460db76779a", + "sha256:e49eb4e95ff6fd7c0c402508894b1ef0e01b99a44320ba7d8ecbabefddcc5569", + "sha256:f8286396b351785801a976b1e85ea88e937712ee2c3ac653710a4a57a8da5d9c", + "sha256:f8fc330c3370a81bbf3f88557097d1ea26cd8b019d6433aa59f71195f5ddebbf", + "sha256:fbd359831c1657d69bb81f0db962905ee05e5e9451913b18b831febfe0519082", + "sha256:fe7e1c262d3392afcf5071df9afa574544f28eac825284596ac6db56e6d11062", + "sha256:fed1e1cf6a42577953abbe8e6cf2fe2f566daebde7c34724ec8803c4c0cda579" ], "index": "pypi", - "version": "==9.4.0" + "version": "==9.5.0" }, "psycopg2-binary": { "hashes": [ - "sha256:00475004e5ed3e3bf5e056d66e5dcdf41a0dc62efcd57997acd9135c40a08a50", - "sha256:01ad49d68dd8c5362e4bfb4158f2896dc6e0c02e87b8a3770fc003459f1a4425", - "sha256:024030b13bdcbd53d8a93891a2cf07719715724fc9fee40243f3bd78b4264b8f", - "sha256:02551647542f2bf89073d129c73c05a25c372fc0a49aa50e0de65c3c143d8bd0", - "sha256:043a9fd45a03858ff72364b4b75090679bd875ee44df9c0613dc862ca6b98460", - "sha256:05b3d479425e047c848b9782cd7aac9c6727ce23181eb9647baf64ffdfc3da41", - "sha256:0775d6252ccb22b15da3b5d7adbbf8cfe284916b14b6dc0ff503a23edb01ee85", - "sha256:1764546ffeaed4f9428707be61d68972eb5ede81239b46a45843e0071104d0dd", - "sha256:1e491e6489a6cb1d079df8eaa15957c277fdedb102b6a68cfbf40c4994412fd0", - "sha256:212757ffcecb3e1a5338d4e6761bf9c04f750e7d027117e74aa3cd8a75bb6fbd", - "sha256:215d6bf7e66732a514f47614f828d8c0aaac9a648c46a831955cb103473c7147", - "sha256:25382c7d174c679ce6927c16b6fbb68b10e56ee44b1acb40671e02d29f2fce7c", - "sha256:2abccab84d057723d2ca8f99ff7b619285d40da6814d50366f61f0fc385c3903", - "sha256:2d964eb24c8b021623df1c93c626671420c6efadbdb8655cb2bd5e0c6fa422ba", - "sha256:2ec46ed947801652c9643e0b1dc334cfb2781232e375ba97312c2fc256597632", - "sha256:2ef892cabdccefe577088a79580301f09f2a713eb239f4f9f62b2b29cafb0577", - "sha256:33e632d0885b95a8b97165899006c40e9ecdc634a529dca7b991eb7de4ece41c", - "sha256:3520d7af1ebc838cc6084a3281145d5cd5bdd43fdef139e6db5af01b92596cb7", - "sha256:3d790f84201c3698d1bfb404c917f36e40531577a6dda02e45ba29b64d539867", - "sha256:3fc33295cfccad697a97a76dec3f1e94ad848b7b163c3228c1636977966b51e2", - "sha256:422e3d43b47ac20141bc84b3d342eead8d8099a62881a501e97d15f6addabfe9", - "sha256:426c2ae999135d64e6a18849a7d1ad0e1bd007277e4a8f4752eaa40a96b550ff", - "sha256:46512486be6fbceef51d7660dec017394ba3e170299d1dc30928cbedebbf103a", - "sha256:46850a640df62ae940e34a163f72e26aca1f88e2da79148e1862faaac985c302", - "sha256:484405b883630f3e74ed32041a87456c5e0e63a8e3429aa93e8714c366d62bd1", - "sha256:4e7904d1920c0c89105c0517dc7e3f5c20fb4e56ba9cdef13048db76947f1d79", - "sha256:56b2957a145f816726b109ee3d4e6822c23f919a7d91af5a94593723ed667835", - "sha256:5c6527c8efa5226a9e787507652dd5ba97b62d29b53c371a85cd13f957fe4d42", - "sha256:5cbc554ba47ecca8cd3396ddaca85e1ecfe3e48dd57dc5e415e59551affe568e", - "sha256:5d28ecdf191db558d0c07d0f16524ee9d67896edf2b7990eea800abeb23ebd61", - "sha256:5fc447058d083b8c6ac076fc26b446d44f0145308465d745fba93a28c14c9e32", - "sha256:63e318dbe52709ed10d516a356f22a635e07a2e34c68145484ed96a19b0c4c68", - "sha256:68d81a2fe184030aa0c5c11e518292e15d342a667184d91e30644c9d533e53e1", - "sha256:6e63814ec71db9bdb42905c925639f319c80e7909fb76c3b84edc79dadef8d60", - "sha256:6f8a9bcab7b6db2e3dbf65b214dfc795b4c6b3bb3af922901b6a67f7cb47d5f8", - "sha256:70831e03bd53702c941da1a1ad36c17d825a24fbb26857b40913d58df82ec18b", - "sha256:74eddec4537ab1f701a1647214734bc52cee2794df748f6ae5908e00771f180a", - "sha256:7b3751857da3e224f5629400736a7b11e940b5da5f95fa631d86219a1beaafec", - "sha256:7cf1d44e710ca3a9ce952bda2855830fe9f9017ed6259e01fcd71ea6287565f5", - "sha256:7d07f552d1e412f4b4e64ce386d4c777a41da3b33f7098b6219012ba534fb2c2", - "sha256:7d88db096fa19d94f433420eaaf9f3c45382da2dd014b93e4bf3215639047c16", - "sha256:7ee3095d02d6f38bd7d9a5358fcc9ea78fcdb7176921528dd709cc63f40184f5", - "sha256:902844f9c4fb19b17dfa84d9e2ca053d4a4ba265723d62ea5c9c26b38e0aa1e6", - "sha256:937880290775033a743f4836aa253087b85e62784b63fd099ee725d567a48aa1", - "sha256:95076399ec3b27a8f7fa1cc9a83417b1c920d55cf7a97f718a94efbb96c7f503", - "sha256:9c38d3869238e9d3409239bc05bc27d6b7c99c2a460ea337d2814b35fb4fea1b", - "sha256:9e32cedc389bcb76d9f24ea8a012b3cb8385ee362ea437e1d012ffaed106c17d", - "sha256:9ffdc51001136b699f9563b1c74cc1f8c07f66ef7219beb6417a4c8aaa896c28", - "sha256:a0adef094c49f242122bb145c3c8af442070dc0e4312db17e49058c1702606d4", - "sha256:a36a0e791805aa136e9cbd0ffa040d09adec8610453ee8a753f23481a0057af5", - "sha256:a7e518a0911c50f60313cb9e74a169a65b5d293770db4770ebf004245f24b5c5", - "sha256:af0516e1711995cb08dc19bbd05bec7dbdebf4185f68870595156718d237df3e", - "sha256:b8104f709590fff72af801e916817560dbe1698028cd0afe5a52d75ceb1fce5f", - "sha256:b911dfb727e247340d36ae20c4b9259e4a64013ab9888ccb3cbba69b77fd9636", - "sha256:b9a794cef1d9c1772b94a72eec6da144c18e18041d294a9ab47669bc77a80c1d", - "sha256:b9c33d4aef08dfecbd1736ceab8b7b3c4358bf10a0121483e5cd60d3d308cc64", - "sha256:b9d38a4656e4e715d637abdf7296e98d6267df0cc0a8e9a016f8ba07e4aa3eeb", - "sha256:bcda1c84a1c533c528356da5490d464a139b6e84eb77cc0b432e38c5c6dd7882", - "sha256:bef7e3f9dc6f0c13afdd671008534be5744e0e682fb851584c8c3a025ec09720", - "sha256:c15ba5982c177bc4b23a7940c7e4394197e2d6a424a2d282e7c236b66da6d896", - "sha256:c5254cbd4f4855e11cebf678c1a848a3042d455a22a4ce61349c36aafd4c2267", - "sha256:c5682a45df7d9642eff590abc73157c887a68f016df0a8ad722dcc0f888f56d7", - "sha256:c5e65c6ac0ae4bf5bef1667029f81010b6017795dcb817ba5c7b8a8d61fab76f", - "sha256:d4c7b3a31502184e856df1f7bbb2c3735a05a8ce0ade34c5277e1577738a5c91", - "sha256:d892bfa1d023c3781a3cab8dd5af76b626c483484d782e8bd047c180db590e4c", - "sha256:dbc332beaf8492b5731229a881807cd7b91b50dbbbaf7fe2faf46942eda64a24", - "sha256:dc85b3777068ed30aff8242be2813038a929f2084f69e43ef869daddae50f6ee", - "sha256:e59137cdb970249ae60be2a49774c6dfb015bd0403f05af1fe61862e9626642d", - "sha256:e67b3c26e9b6d37b370c83aa790bbc121775c57bfb096c2e77eacca25fd0233b", - "sha256:e72c91bda9880f097c8aa3601a2c0de6c708763ba8128006151f496ca9065935", - "sha256:f95b8aca2703d6a30249f83f4fe6a9abf2e627aa892a5caaab2267d56be7ab69" + "sha256:02c0f3757a4300cf379eb49f543fb7ac527fb00144d39246ee40e1df684ab514", + "sha256:02c6e3cf3439e213e4ee930308dc122d6fb4d4bea9aef4a12535fbd605d1a2fe", + "sha256:0645376d399bfd64da57148694d78e1f431b1e1ee1054872a5713125681cf1be", + "sha256:0892ef645c2fabb0c75ec32d79f4252542d0caec1d5d949630e7d242ca4681a3", + "sha256:0d236c2825fa656a2d98bbb0e52370a2e852e5a0ec45fc4f402977313329174d", + "sha256:0e0f754d27fddcfd74006455b6e04e6705d6c31a612ec69ddc040a5468e44b4e", + "sha256:15e2ee79e7cf29582ef770de7dab3d286431b01c3bb598f8e05e09601b890081", + "sha256:1876843d8e31c89c399e31b97d4b9725a3575bb9c2af92038464231ec40f9edb", + "sha256:1f64dcfb8f6e0c014c7f55e51c9759f024f70ea572fbdef123f85318c297947c", + "sha256:2ab652e729ff4ad76d400df2624d223d6e265ef81bb8aa17fbd63607878ecbee", + "sha256:30637a20623e2a2eacc420059be11527f4458ef54352d870b8181a4c3020ae6b", + "sha256:34b9ccdf210cbbb1303c7c4db2905fa0319391bd5904d32689e6dd5c963d2ea8", + "sha256:38601cbbfe600362c43714482f43b7c110b20cb0f8172422c616b09b85a750c5", + "sha256:441cc2f8869a4f0f4bb408475e5ae0ee1f3b55b33f350406150277f7f35384fc", + "sha256:498807b927ca2510baea1b05cc91d7da4718a0f53cb766c154c417a39f1820a0", + "sha256:4ac30da8b4f57187dbf449294d23b808f8f53cad6b1fc3623fa8a6c11d176dd0", + "sha256:4c727b597c6444a16e9119386b59388f8a424223302d0c06c676ec8b4bc1f963", + "sha256:4d67fbdaf177da06374473ef6f7ed8cc0a9dc640b01abfe9e8a2ccb1b1402c1f", + "sha256:4dfb4be774c4436a4526d0c554af0cc2e02082c38303852a36f6456ece7b3503", + "sha256:4ea29fc3ad9d91162c52b578f211ff1c931d8a38e1f58e684c45aa470adf19e2", + "sha256:51537e3d299be0db9137b321dfb6a5022caaab275775680e0c3d281feefaca6b", + "sha256:61b047a0537bbc3afae10f134dc6393823882eb263088c271331602b672e52e9", + "sha256:6460c7a99fc939b849431f1e73e013d54aa54293f30f1109019c56a0b2b2ec2f", + "sha256:65bee1e49fa6f9cf327ce0e01c4c10f39165ee76d35c846ade7cb0ec6683e303", + "sha256:65c07febd1936d63bfde78948b76cd4c2a411572a44ac50719ead41947d0f26b", + "sha256:71f14375d6f73b62800530b581aed3ada394039877818b2d5f7fc77e3bb6894d", + "sha256:7a40c00dbe17c0af5bdd55aafd6ff6679f94a9be9513a4c7e071baf3d7d22a70", + "sha256:7e13a5a2c01151f1208d5207e42f33ba86d561b7a89fca67c700b9486a06d0e2", + "sha256:7f0438fa20fb6c7e202863e0d5ab02c246d35efb1d164e052f2f3bfe2b152bd0", + "sha256:8122cfc7cae0da9a3077216528b8bb3629c43b25053284cc868744bfe71eb141", + "sha256:8338a271cb71d8da40b023a35d9c1e919eba6cbd8fa20a54b748a332c355d896", + "sha256:84d2222e61f313c4848ff05353653bf5f5cf6ce34df540e4274516880d9c3763", + "sha256:8a6979cf527e2603d349a91060f428bcb135aea2be3201dff794813256c274f1", + "sha256:8a76e027f87753f9bd1ab5f7c9cb8c7628d1077ef927f5e2446477153a602f2c", + "sha256:964b4dfb7c1c1965ac4c1978b0f755cc4bd698e8aa2b7667c575fb5f04ebe06b", + "sha256:9972aad21f965599ed0106f65334230ce826e5ae69fda7cbd688d24fa922415e", + "sha256:a8c28fd40a4226b4a84bdf2d2b5b37d2c7bd49486b5adcc200e8c7ec991dfa7e", + "sha256:ae102a98c547ee2288637af07393dd33f440c25e5cd79556b04e3fca13325e5f", + "sha256:af335bac6b666cc6aea16f11d486c3b794029d9df029967f9938a4bed59b6a19", + "sha256:afe64e9b8ea66866a771996f6ff14447e8082ea26e675a295ad3bdbffdd72afb", + "sha256:b4b24f75d16a89cc6b4cdff0eb6a910a966ecd476d1e73f7ce5985ff1328e9a6", + "sha256:b6c8288bb8a84b47e07013bb4850f50538aa913d487579e1921724631d02ea1b", + "sha256:b83456c2d4979e08ff56180a76429263ea254c3f6552cd14ada95cff1dec9bb8", + "sha256:bfb13af3c5dd3a9588000910178de17010ebcccd37b4f9794b00595e3a8ddad3", + "sha256:c3dba7dab16709a33a847e5cd756767271697041fbe3fe97c215b1fc1f5c9848", + "sha256:c48d8f2db17f27d41fb0e2ecd703ea41984ee19362cbce52c097963b3a1b4365", + "sha256:c7e62ab8b332147a7593a385d4f368874d5fe4ad4e341770d4983442d89603e3", + "sha256:c83a74b68270028dc8ee74d38ecfaf9c90eed23c8959fca95bd703d25b82c88e", + "sha256:cacbdc5839bdff804dfebc058fe25684cae322987f7a38b0168bc1b2df703fb1", + "sha256:cf4499e0a83b7b7edcb8dabecbd8501d0d3a5ef66457200f77bde3d210d5debb", + "sha256:cfec476887aa231b8548ece2e06d28edc87c1397ebd83922299af2e051cf2827", + "sha256:d26e0342183c762de3276cca7a530d574d4e25121ca7d6e4a98e4f05cb8e4df7", + "sha256:d4e6036decf4b72d6425d5b29bbd3e8f0ff1059cda7ac7b96d6ac5ed34ffbacd", + "sha256:d57c3fd55d9058645d26ae37d76e61156a27722097229d32a9e73ed54819982a", + "sha256:dfa74c903a3c1f0d9b1c7e7b53ed2d929a4910e272add6700c38f365a6002820", + "sha256:e3ed340d2b858d6e6fb5083f87c09996506af483227735de6964a6100b4e6a54", + "sha256:e78e6e2a00c223e164c417628572a90093c031ed724492c763721c2e0bc2a8df", + "sha256:e9182eb20f41417ea1dd8e8f7888c4d7c6e805f8a7c98c1081778a3da2bee3e4", + "sha256:e99e34c82309dd78959ba3c1590975b5d3c862d6f279f843d47d26ff89d7d7e1", + "sha256:f6a88f384335bb27812293fdb11ac6aee2ca3f51d3c7820fe03de0a304ab6249", + "sha256:f81e65376e52f03422e1fb475c9514185669943798ed019ac50410fb4c4df232", + "sha256:ffe9dc0a884a8848075e576c1de0290d85a533a9f6e9c4e564f19adf8f6e54a7" ], - "version": "==2.9.5" + "version": "==2.9.6" }, "puremagic": { "hashes": [ - "sha256:3d5df26cc7ec9aebbf842a09115a2fa85dc59ea6414fa568572c44775d796cbc", - "sha256:40e32752827f2d0cea7e6f11454fab2b4bd440582af83d8a47bf403ab42364fa" + "sha256:349e179f04bcc14eb0e2c3941cd9ee4ea74881ab6ccac63ea0c37c98f7a80b22", + "sha256:6e46aa78113a466abc9f69e6e8a4ce90eb57d908dafb809597012621061462bd" ], "index": "pypi", - "version": "==1.14" + "version": "==1.15" }, "py-avataaars-no-png": { "hashes": [ @@ -1090,53 +1157,53 @@ }, "pydantic": { "hashes": [ - "sha256:05e00dbebbe810b33c7a7362f231893183bcc4251f3f2ff991c31d5c08240c42", - "sha256:06094d18dd5e6f2bbf93efa54991c3240964bb663b87729ac340eb5014310624", - "sha256:0b959f4d8211fc964772b595ebb25f7652da3f22322c007b6fed26846a40685e", - "sha256:19b3b9ccf97af2b7519c42032441a891a5e05c68368f40865a90eb88833c2559", - "sha256:1b6ee725bd6e83ec78b1aa32c5b1fa67a3a65badddde3976bca5fe4568f27709", - "sha256:1ee433e274268a4b0c8fde7ad9d58ecba12b069a033ecc4645bb6303c062d2e9", - "sha256:216f3bcbf19c726b1cc22b099dd409aa371f55c08800bcea4c44c8f74b73478d", - "sha256:2d0567e60eb01bccda3a4df01df677adf6b437958d35c12a3ac3e0f078b0ee52", - "sha256:2e05aed07fa02231dbf03d0adb1be1d79cabb09025dd45aa094aa8b4e7b9dcda", - "sha256:352aedb1d71b8b0736c6d56ad2bd34c6982720644b0624462059ab29bd6e5912", - "sha256:355639d9afc76bcb9b0c3000ddcd08472ae75318a6eb67a15866b87e2efa168c", - "sha256:37c90345ec7dd2f1bcef82ce49b6235b40f282b94d3eec47e801baf864d15525", - "sha256:4b8795290deaae348c4eba0cebb196e1c6b98bdbe7f50b2d0d9a4a99716342fe", - "sha256:5760e164b807a48a8f25f8aa1a6d857e6ce62e7ec83ea5d5c5a802eac81bad41", - "sha256:6eb843dcc411b6a2237a694f5e1d649fc66c6064d02b204a7e9d194dff81eb4b", - "sha256:7b5ba54d026c2bd2cb769d3468885f23f43710f651688e91f5fb1edcf0ee9283", - "sha256:7c2abc4393dea97a4ccbb4ec7d8658d4e22c4765b7b9b9445588f16c71ad9965", - "sha256:81a7b66c3f499108b448f3f004801fcd7d7165fb4200acb03f1c2402da73ce4c", - "sha256:91b8e218852ef6007c2b98cd861601c6a09f1aa32bbbb74fab5b1c33d4a1e410", - "sha256:9300fcbebf85f6339a02c6994b2eb3ff1b9c8c14f502058b5bf349d42447dcf5", - "sha256:9cabf4a7f05a776e7793e72793cd92cc865ea0e83a819f9ae4ecccb1b8aa6116", - "sha256:a1f5a63a6dfe19d719b1b6e6106561869d2efaca6167f84f5ab9347887d78b98", - "sha256:a4c805731c33a8db4b6ace45ce440c4ef5336e712508b4d9e1aafa617dc9907f", - "sha256:ae544c47bec47a86bc7d350f965d8b15540e27e5aa4f55170ac6a75e5f73b644", - "sha256:b97890e56a694486f772d36efd2ba31612739bc6f3caeee50e9e7e3ebd2fdd13", - "sha256:bb6ad4489af1bac6955d38ebcb95079a836af31e4c4f74aba1ca05bb9f6027bd", - "sha256:bedf309630209e78582ffacda64a21f96f3ed2e51fbf3962d4d488e503420254", - "sha256:c1ba1afb396148bbc70e9eaa8c06c1716fdddabaf86e7027c5988bae2a829ab6", - "sha256:c33602f93bfb67779f9c507e4d69451664524389546bacfe1bee13cae6dc7488", - "sha256:c4aac8e7103bf598373208f6299fa9a5cfd1fc571f2d40bf1dd1955a63d6eeb5", - "sha256:c6f981882aea41e021f72779ce2a4e87267458cc4d39ea990729e21ef18f0f8c", - "sha256:cc78cc83110d2f275ec1970e7a831f4e371ee92405332ebfe9860a715f8336e1", - "sha256:d49f3db871575e0426b12e2f32fdb25e579dea16486a26e5a0474af87cb1ab0a", - "sha256:dd3f9a40c16daf323cf913593083698caee97df2804aa36c4b3175d5ac1b92a2", - "sha256:e0bedafe4bc165ad0a56ac0bd7695df25c50f76961da29c050712596cf092d6d", - "sha256:e9069e1b01525a96e6ff49e25876d90d5a563bc31c658289a8772ae186552236" + "sha256:05a81b006be15655b2a1bae5faa4280cf7c81d0e09fcb49b342ebf826abe5a72", + "sha256:0b53e1d41e97063d51a02821b80538053ee4608b9a181c1005441f1673c55423", + "sha256:2b3ce5f16deb45c472dde1a0ee05619298c864a20cded09c4edd820e1454129f", + "sha256:2e82a6d37a95e0b1b42b82ab340ada3963aea1317fd7f888bb6b9dfbf4fff57c", + "sha256:301d626a59edbe5dfb48fcae245896379a450d04baeed50ef40d8199f2733b06", + "sha256:39f4a73e5342b25c2959529f07f026ef58147249f9b7431e1ba8414a36761f53", + "sha256:4948f264678c703f3877d1c8877c4e3b2e12e549c57795107f08cf70c6ec7774", + "sha256:4b05697738e7d2040696b0a66d9f0a10bec0efa1883ca75ee9e55baf511909d6", + "sha256:51bdeb10d2db0f288e71d49c9cefa609bca271720ecd0c58009bd7504a0c464c", + "sha256:55b1625899acd33229c4352ce0ae54038529b412bd51c4915349b49ca575258f", + "sha256:572066051eeac73d23f95ba9a71349c42a3e05999d0ee1572b7860235b850cc6", + "sha256:6a05a9db1ef5be0fe63e988f9617ca2551013f55000289c671f71ec16f4985e3", + "sha256:6dc1cc241440ed7ca9ab59d9929075445da6b7c94ced281b3dd4cfe6c8cff817", + "sha256:6e7124d6855b2780611d9f5e1e145e86667eaa3bd9459192c8dc1a097f5e9903", + "sha256:75d52162fe6b2b55964fbb0af2ee58e99791a3138588c482572bb6087953113a", + "sha256:78cec42b95dbb500a1f7120bdf95c401f6abb616bbe8785ef09887306792e66e", + "sha256:7feb6a2d401f4d6863050f58325b8d99c1e56f4512d98b11ac64ad1751dc647d", + "sha256:8775d4ef5e7299a2f4699501077a0defdaac5b6c4321173bcb0f3c496fbadf85", + "sha256:887ca463c3bc47103c123bc06919c86720e80e1214aab79e9b779cda0ff92a00", + "sha256:9193d4f4ee8feca58bc56c8306bcb820f5c7905fd919e0750acdeeeef0615b28", + "sha256:983e720704431a6573d626b00662eb78a07148c9115129f9b4351091ec95ecc3", + "sha256:990406d226dea0e8f25f643b370224771878142155b879784ce89f633541a024", + "sha256:9cbdc268a62d9a98c56e2452d6c41c0263d64a2009aac69246486f01b4f594c4", + "sha256:a48f1953c4a1d9bd0b5167ac50da9a79f6072c63c4cef4cf2a3736994903583e", + "sha256:a9a6747cac06c2beb466064dda999a13176b23535e4c496c9d48e6406f92d42d", + "sha256:a9f2de23bec87ff306aef658384b02aa7c32389766af3c5dee9ce33e80222dfa", + "sha256:b5635de53e6686fe7a44b5cf25fcc419a0d5e5c1a1efe73d49d48fe7586db854", + "sha256:b6f9d649892a6f54a39ed56b8dfd5e08b5f3be5f893da430bed76975f3735d15", + "sha256:b9a3859f24eb4e097502a3be1fb4b2abb79b6103dd9e2e0edb70613a4459a648", + "sha256:cd8702c5142afda03dc2b1ee6bc358b62b3735b2cce53fc77b31ca9f728e4bc8", + "sha256:d7b5a3821225f5c43496c324b0d6875fde910a1c2933d726a743ce328fbb2a8c", + "sha256:d88c4c0e5c5dfd05092a4b271282ef0588e5f4aaf345778056fc5259ba098857", + "sha256:eb992a1ef739cc7b543576337bebfc62c0e6567434e522e97291b251a41dad7f", + "sha256:f2f7eb6273dd12472d7f218e1fef6f7c7c2f00ac2e1ecde4db8824c457300416", + "sha256:fdf88ab63c3ee282c76d652fc86518aacb737ff35796023fae56a65ced1a5978", + "sha256:fdf8d759ef326962b4678d89e275ffc55b7ce59d917d9f72233762061fd04a2d" ], "index": "pypi", - "version": "==1.10.2" + "version": "==1.10.4" }, "pyopenssl": { "hashes": [ - "sha256:c1cc5f86bcacefc84dada7d31175cae1b1518d5f60d3d0bb595a67822a868a6f", - "sha256:df5fc28af899e74e19fccb5510df423581047e10ab6f1f4ba1763ff5fde844c0" + "sha256:841498b9bec61623b1b6c47ebbc02367c07d60e0e195f19790817f10cc8db0b7", + "sha256:9e0c526404a210df9d2b18cd33364beadb0dc858a739b885677bc65e105d4a4c" ], "markers": "python_version >= '3.6'", - "version": "==23.0.0" + "version": "==23.1.1" }, "pyotp": { "hashes": [ @@ -1146,20 +1213,27 @@ "index": "pypi", "version": "==2.8.0" }, + "pypng": { + "hashes": [ + "sha256:4a43e969b8f5aaafb2a415536c1a8ec7e341cd6a3f957fd5b5f32a4cfeed902c", + "sha256:739c433ba96f078315de54c0db975aee537cbc3e1d0ae4ed9aab0ca1e427e2c1" + ], + "version": "==0.20220715.0" + }, "python-dotenv": { "hashes": [ - "sha256:1c93de8f636cde3ce377292818d0e440b6e45a82f215c3744979151fa8151c49", - "sha256:41e12e0318bebc859fcc4d97d4db8d20ad21721a6aa5047dd59f090391cb549a" + "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba", + "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a" ], - "version": "==0.21.1" + "version": "==1.0.0" }, "python-engineio": { "hashes": [ - "sha256:7454314a529bba20e745928601ffeaf101c1b5aca9a6c4e48ad397803d10ea0c", - "sha256:d8d8b072799c36cadcdcc2b40d2a560ce09797ab3d2d596b2ad519a5e4df19ae" + "sha256:11f9c35b775fe70e0a25f67b16d5b69fbfafc368cdd87eeb6f4135a475c88e50", + "sha256:bcc035c70ecc30acc3cfd49ef19aca6c51fa6caaadd0fa58c2d7480f50d04cf2" ], "markers": "python_version >= '3.6'", - "version": "==4.3.4" + "version": "==4.4.0" }, "python-jose": { "hashes": [ @@ -1171,18 +1245,19 @@ }, "python-multipart": { "hashes": [ - "sha256:f7bb5f611fc600d15fa47b3974c8aa16e93724513b49b5f95c81e6624c83fa43" + "sha256:e9925a80bb668529f1b67c7fdb0a5dacdd7cbfc6fb0bff3ea443fe22bdd62132", + "sha256:ee698bab5ef148b0a760751c261902cd096e57e10558e11aca17646b74ee1c18" ], "index": "pypi", - "version": "==0.0.5" + "version": "==0.0.6" }, "python-socketio": { "hashes": [ - "sha256:92395062d9db3c13d30e7cdedaa0e1330bba78505645db695415f9a3c628d097", - "sha256:d9a9f047e6fdd306c852fbac36516f4b495c2096f8ad9ceb8803b8e5ff5622e3" + "sha256:7adb8867aac1c2929b9c1429f1c02e12ca4c36b67c807967393e367dfbb01441", + "sha256:e714f4dddfaaa0cb0e37a1e2deef2bb60590a5b9fea9c343dd8ca5e688416fd9" ], "index": "pypi", - "version": "==5.7.2" + "version": "==5.8.0" }, "pyyaml": { "hashes": [ @@ -1231,18 +1306,19 @@ }, "qrcode": { "hashes": [ - "sha256:375a6ff240ca9bd41adc070428b5dfc1dcfbb0f2507f1ac848f6cded38956578" + "sha256:581dca7a029bcb2deef5d01068e39093e80ef00b4a61098a2182eac59d01643a", + "sha256:9dd969454827e127dbd93696b20747239e6d540e082937c90f14ac95b30f5845" ], "index": "pypi", - "version": "==7.3.1" + "version": "==7.4.2" }, "redis": { "hashes": [ - "sha256:a010f6cb7378065040a02839c3f75c7e0fb37a87116fb4a95be82a95552776c7", - "sha256:e6206448e2f8a432871d07d432c13ed6c2abcf6b74edb436c99752b1371be387" + "sha256:2c19e6767c474f2e85167909061d525ed65bea9301c0770bb151e041b7ac89a2", + "sha256:73ec35da4da267d6847e47f68730fdd5f62e2ca69e3ef5885c6a78a9374c3893" ], "index": "pypi", - "version": "==4.4.2" + "version": "==4.5.4" }, "requests": { "hashes": [ @@ -1252,16 +1328,6 @@ "markers": "python_version >= '3.7' and python_version < '4'", "version": "==2.28.2" }, - "rfc3986": { - "extras": [ - "idna2008" - ], - "hashes": [ - "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835", - "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97" - ], - "version": "==1.5.0" - }, "rsa": { "hashes": [ "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7", @@ -1272,27 +1338,27 @@ }, "scheduler": { "hashes": [ - "sha256:18dc39208d4d02f300d70f2a4f09ce7cab68fd3fc1c51c34f1c4bf5bd0bff94d", - "sha256:b2c490a6b5e4bfe452d9a993ecbb259f3638520a2d8e5f44ea2ccf14b8c75a56" + "sha256:48e8fe16f4a0cbd24f169a2ed4f65b99fb0c3a7f4a28f4dfbf26cc901ab4112b", + "sha256:5ae5181d8462d89307bdae588b47f290a2fb7e3fa1073650354e01eb87a265f4" ], "index": "pypi", - "version": "==0.8.3" + "version": "==0.8.4" }, "sentry-sdk": { "hashes": [ - "sha256:273fe05adf052b40fd19f6d4b9a5556316807246bd817e5e3482930730726bb0", - "sha256:72c00322217d813cf493fe76590b23a757e063ff62fec59299f4af7201dd4448" + "sha256:7ae78bd921981a5010ab540d6bdf3b793659a4db8cccf7f16180702d48a80d84", + "sha256:885a11c69df23e53eb281d003b9ff15a5bdfa43d8a2a53589be52104a1b4582f" ], "index": "pypi", - "version": "==1.14.0" + "version": "==1.19.1" }, "setuptools": { "hashes": [ - "sha256:883131c5b6efa70b9101c7ef30b2b7b780a4283d5fc1616383cdf22c83cbefe6", - "sha256:9d790961ba6219e9ff7d9557622d2fe136816a264dd01d5997cfc057d804853d" + "sha256:257de92a9d50a60b8e22abfcbb771571fde0dbf3ec234463212027a4eeecbe9a", + "sha256:e728ca814a823bf7bf60162daf9db95b93d532948c4c0bea762ce62f60189078" ], "markers": "python_version >= '3.7'", - "version": "==67.0.0" + "version": "==67.6.1" }, "six": { "hashes": [ @@ -1359,46 +1425,46 @@ }, "starlette": { "hashes": [ - "sha256:b092cbc365bea34dd6840b42861bdabb2f507f8671e642e8272d2442e08ea4ff", - "sha256:b5eda991ad5f0ee5d8ce4c4540202a573bb6691ecd0c712262d0bc85cf8f2c50" + "sha256:41da799057ea8620e4667a3e69a5b1923ebd32b1819c8fa75634bbe8d8bea9bd", + "sha256:e87fce5d7cbdde34b76f0ac69013fd9d190d581d80681493016666e6f96c6d5e" ], "markers": "python_version >= '3.7'", - "version": "==0.22.0" + "version": "==0.26.1" }, "typeguard": { "hashes": [ - "sha256:00edaa8da3a133674796cf5ea87d9f4b4c367d77476e185e80251cc13dfbb8c4", - "sha256:5e3e3be01e887e7eafae5af63d1f36c849aaa94e3a0112097312aabfa16284f1" + "sha256:bbe993854385284ab42fd5bd3bee6f6556577ce8b50696d6cb956d704f286c8e", + "sha256:fee5297fdb28f8e9efcb8142b5ee219e02375509cd77ea9d270b5af826358d5a" ], - "markers": "python_full_version >= '3.5.3'", - "version": "==2.13.3" + "markers": "python_full_version >= '3.7.4'", + "version": "==3.0.2" }, "typing-extensions": { "hashes": [ - "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa", - "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e" + "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb", + "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4" ], "markers": "python_version >= '3.7'", - "version": "==4.4.0" + "version": "==4.5.0" }, "urllib3": { "hashes": [ - "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72", - "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1" + "sha256:8a388717b9476f934a21484e8c8e61875ab60644d29b9b39e11e4b9dc1c6b305", + "sha256:aa751d169e23c7479ce47a0cb0da579e3ede798f994f5816a74e4f4500dcea42" ], - "markers": "python_version >= '3.6'", - "version": "==1.26.14" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==1.26.15" }, "uvicorn": { "extras": [ "standard" ], "hashes": [ - "sha256:a4e12017b940247f836bc90b72e725d7dfd0c8ed1c51eb365f5ba30d9f5127d8", - "sha256:c3ed1598a5668208723f2bb49336f4509424ad198d6ab2615b7783db58d919fd" + "sha256:0fac9cb342ba099e0d582966005f3fdba5b0290579fed4a6266dc702ca7bb032", + "sha256:e47cac98a6da10cd41e6fd036d472c6f58ede6c5dbee3dbee3ef7a100ed97742" ], "index": "pypi", - "version": "==0.20.0" + "version": "==0.21.1" }, "uvloop": { "hashes": [ @@ -1437,34 +1503,38 @@ }, "watchfiles": { "hashes": [ - "sha256:00ea0081eca5e8e695cffbc3a726bb90da77f4e3f78ce29b86f0d95db4e70ef7", - "sha256:0f9a22fff1745e2bb930b1e971c4c5b67ea3b38ae17a6adb9019371f80961219", - "sha256:1b8e6db99e49cd7125d8a4c9d33c0735eea7b75a942c6ad68b75be3e91c242fb", - "sha256:4ec0134a5e31797eb3c6c624dbe9354f2a8ee9c720e0b46fc5b7bab472b7c6d4", - "sha256:548d6b42303d40264118178053c78820533b683b20dfbb254a8706ca48467357", - "sha256:6e0d8fdfebc50ac7569358f5c75f2b98bb473befccf9498cf23b3e39993bb45a", - "sha256:7102342d60207fa635e24c02a51c6628bf0472e5fef067f78a612386840407fc", - "sha256:888db233e06907c555eccd10da99b9cd5ed45deca47e41766954292dc9f7b198", - "sha256:9891d3c94272108bcecf5597a592e61105279def1313521e637f2d5acbe08bc9", - "sha256:9a26272ef3e930330fc0c2c148cc29706cc2c40d25760c7ccea8d768a8feef8b", - "sha256:9fb12a5e2b42e0b53769455ff93546e6bc9ab14007fbd436978d827a95ca5bd1", - "sha256:a868ce2c7565137f852bd4c863a164dc81306cae7378dbdbe4e2aca51ddb8857", - "sha256:b02e7fa03cd4059dd61ff0600080a5a9e7a893a85cb8e5178943533656eec65e", - "sha256:bc7c726855f04f22ac79131b51bf0c9f728cb2117419ed830a43828b2c4a5fcb", - "sha256:c541e0f2c3e95e83e4f84561c893284ba984e9d0025352057396d96dceb09f44", - "sha256:cbaff354d12235002e62d9d3fa8bcf326a8490c1179aa5c17195a300a9e5952f", - "sha256:dde79930d1b28f15994ad6613aa2865fc7a403d2bb14585a8714a53233b15717", - "sha256:e2b2bdd26bf8d6ed90763e6020b475f7634f919dbd1730ea1b6f8cb88e21de5d" + "sha256:0089c6dc24d436b373c3c57657bf4f9a453b13767150d17284fc6162b2791911", + "sha256:09ea3397aecbc81c19ed7f025e051a7387feefdb789cf768ff994c1228182fda", + "sha256:176a9a7641ec2c97b24455135d58012a5be5c6217fc4d5fef0b2b9f75dbf5154", + "sha256:18b28f6ad871b82df9542ff958d0c86bb0d8310bb09eb8e87d97318a3b5273af", + "sha256:20b44221764955b1e703f012c74015306fb7e79a00c15370785f309b1ed9aa8d", + "sha256:3d7d267d27aceeeaa3de0dd161a0d64f0a282264d592e335fff7958cc0cbae7c", + "sha256:5471582658ea56fca122c0f0d0116a36807c63fefd6fdc92c71ca9a4491b6b48", + "sha256:5569fc7f967429d4bc87e355cdfdcee6aabe4b620801e2cf5805ea245c06097c", + "sha256:68dce92b29575dda0f8d30c11742a8e2b9b8ec768ae414b54f7453f27bdf9545", + "sha256:79c533ff593db861ae23436541f481ec896ee3da4e5db8962429b441bbaae16e", + "sha256:7f3920b1285a7d3ce898e303d84791b7bf40d57b7695ad549dc04e6a44c9f120", + "sha256:91633e64712df3051ca454ca7d1b976baf842d7a3640b87622b323c55f3345e7", + "sha256:945be0baa3e2440151eb3718fd8846751e8b51d8de7b884c90b17d271d34cae8", + "sha256:9afd0d69429172c796164fd7fe8e821ade9be983f51c659a38da3faaaaac44dc", + "sha256:9c75eff897786ee262c9f17a48886f4e98e6cfd335e011c591c305e5d083c056", + "sha256:b538014a87f94d92f98f34d3e6d2635478e6be6423a9ea53e4dd96210065e193", + "sha256:b6577b8c6c8701ba8642ea9335a129836347894b666dd1ec2226830e263909d3", + "sha256:c0376deac92377817e4fb8f347bf559b7d44ff556d9bc6f6208dd3f79f104aaf", + "sha256:cae3dde0b4b2078f31527acff6f486e23abed307ba4d3932466ba7cdd5ecec79", + "sha256:cb5d45c4143c1dd60f98a16187fd123eda7248f84ef22244818c18d531a249d1", + "sha256:d9b073073e048081e502b6c6b0b88714c026a1a4c890569238d04aca5f9ca74b", + "sha256:fac19dc9cbc34052394dbe81e149411a62e71999c0a19e1e09ce537867f95ae0" ], - "version": "==0.18.1" + "version": "==0.19.0" }, "webauthn": { "hashes": [ - "sha256:6811b3f1b5ff627dadfe9685a1eaf80cbb5689c35f9ae00d4ee63681c0dd64b2", - "sha256:9c74b0e4aea4579fbf0ecb77a72d0b1cb7d7dcab7ca2d105474925b731178686" + "sha256:0c981eb2575d66fa0a6586c2bfb24d9812dff8e158009a9030bc867717727709", + "sha256:1b87d55acd86234475591e2f60163232ba98d91685f235803f258fc891ebb6c0" ], "index": "pypi", - "version": "==1.6.0" + "version": "==1.8.0" }, "webencodings": { "hashes": [ @@ -1475,85 +1545,86 @@ }, "websockets": { "hashes": [ - "sha256:00213676a2e46b6ebf6045bc11d0f529d9120baa6f58d122b4021ad92adabd41", - "sha256:00c870522cdb69cd625b93f002961ffb0c095394f06ba8c48f17eef7c1541f96", - "sha256:0154f7691e4fe6c2b2bc275b5701e8b158dae92a1ab229e2b940efe11905dff4", - "sha256:05a7233089f8bd355e8cbe127c2e8ca0b4ea55467861906b80d2ebc7db4d6b72", - "sha256:09a1814bb15eff7069e51fed0826df0bc0702652b5cb8f87697d469d79c23576", - "sha256:0cff816f51fb33c26d6e2b16b5c7d48eaa31dae5488ace6aae468b361f422b63", - "sha256:185929b4808b36a79c65b7865783b87b6841e852ef5407a2fb0c03381092fa3b", - "sha256:2fc8709c00704194213d45e455adc106ff9e87658297f72d544220e32029cd3d", - "sha256:33d69ca7612f0ddff3316b0c7b33ca180d464ecac2d115805c044bf0a3b0d032", - "sha256:389f8dbb5c489e305fb113ca1b6bdcdaa130923f77485db5b189de343a179393", - "sha256:38ea7b82bfcae927eeffc55d2ffa31665dc7fec7b8dc654506b8e5a518eb4d50", - "sha256:3d3cac3e32b2c8414f4f87c1b2ab686fa6284a980ba283617404377cd448f631", - "sha256:40e826de3085721dabc7cf9bfd41682dadc02286d8cf149b3ad05bff89311e4f", - "sha256:4239b6027e3d66a89446908ff3027d2737afc1a375f8fd3eea630a4842ec9a0c", - "sha256:45ec8e75b7dbc9539cbfafa570742fe4f676eb8b0d3694b67dabe2f2ceed8aa6", - "sha256:47a2964021f2110116cc1125b3e6d87ab5ad16dea161949e7244ec583b905bb4", - "sha256:48c08473563323f9c9debac781ecf66f94ad5a3680a38fe84dee5388cf5acaf6", - "sha256:4c6d2264f485f0b53adf22697ac11e261ce84805c232ed5dbe6b1bcb84b00ff0", - "sha256:4f72e5cd0f18f262f5da20efa9e241699e0cf3a766317a17392550c9ad7b37d8", - "sha256:56029457f219ade1f2fc12a6504ea61e14ee227a815531f9738e41203a429112", - "sha256:5c1289596042fad2cdceb05e1ebf7aadf9995c928e0da2b7a4e99494953b1b94", - "sha256:62e627f6b6d4aed919a2052efc408da7a545c606268d5ab5bfab4432734b82b4", - "sha256:74de2b894b47f1d21cbd0b37a5e2b2392ad95d17ae983e64727e18eb281fe7cb", - "sha256:7c584f366f46ba667cfa66020344886cf47088e79c9b9d39c84ce9ea98aaa331", - "sha256:7d27a7e34c313b3a7f91adcd05134315002aaf8540d7b4f90336beafaea6217c", - "sha256:7d3f0b61c45c3fa9a349cf484962c559a8a1d80dae6977276df8fd1fa5e3cb8c", - "sha256:82ff5e1cae4e855147fd57a2863376ed7454134c2bf49ec604dfe71e446e2193", - "sha256:84bc2a7d075f32f6ed98652db3a680a17a4edb21ca7f80fe42e38753a58ee02b", - "sha256:884be66c76a444c59f801ac13f40c76f176f1bfa815ef5b8ed44321e74f1600b", - "sha256:8a5cc00546e0a701da4639aa0bbcb0ae2bb678c87f46da01ac2d789e1f2d2038", - "sha256:8dc96f64ae43dde92530775e9cb169979f414dcf5cff670455d81a6823b42089", - "sha256:8f38706e0b15d3c20ef6259fd4bc1700cd133b06c3c1bb108ffe3f8947be15fa", - "sha256:90fcf8929836d4a0e964d799a58823547df5a5e9afa83081761630553be731f9", - "sha256:931c039af54fc195fe6ad536fde4b0de04da9d5916e78e55405436348cfb0e56", - "sha256:932af322458da7e4e35df32f050389e13d3d96b09d274b22a7aa1808f292fee4", - "sha256:942de28af58f352a6f588bc72490ae0f4ccd6dfc2bd3de5945b882a078e4e179", - "sha256:9bc42e8402dc5e9905fb8b9649f57efcb2056693b7e88faa8fb029256ba9c68c", - "sha256:a7a240d7a74bf8d5cb3bfe6be7f21697a28ec4b1a437607bae08ac7acf5b4882", - "sha256:a9f9a735deaf9a0cadc2d8c50d1a5bcdbae8b6e539c6e08237bc4082d7c13f28", - "sha256:ae5e95cfb53ab1da62185e23b3130e11d64431179debac6dc3c6acf08760e9b1", - "sha256:b029fb2032ae4724d8ae8d4f6b363f2cc39e4c7b12454df8df7f0f563ed3e61a", - "sha256:b0d15c968ea7a65211e084f523151dbf8ae44634de03c801b8bd070b74e85033", - "sha256:b343f521b047493dc4022dd338fc6db9d9282658862756b4f6fd0e996c1380e1", - "sha256:b627c266f295de9dea86bd1112ed3d5fafb69a348af30a2422e16590a8ecba13", - "sha256:b9968694c5f467bf67ef97ae7ad4d56d14be2751000c1207d31bf3bb8860bae8", - "sha256:ba089c499e1f4155d2a3c2a05d2878a3428cf321c848f2b5a45ce55f0d7d310c", - "sha256:bbccd847aa0c3a69b5f691a84d2341a4f8a629c6922558f2a70611305f902d74", - "sha256:bc0b82d728fe21a0d03e65f81980abbbcb13b5387f733a1a870672c5be26edab", - "sha256:c57e4c1349fbe0e446c9fa7b19ed2f8a4417233b6984277cce392819123142d3", - "sha256:c94ae4faf2d09f7c81847c63843f84fe47bf6253c9d60b20f25edfd30fb12588", - "sha256:c9b27d6c1c6cd53dc93614967e9ce00ae7f864a2d9f99fe5ed86706e1ecbf485", - "sha256:d210abe51b5da0ffdbf7b43eed0cfdff8a55a1ab17abbec4301c9ff077dd0342", - "sha256:d58804e996d7d2307173d56c297cf7bc132c52df27a3efaac5e8d43e36c21c48", - "sha256:d6a4162139374a49eb18ef5b2f4da1dd95c994588f5033d64e0bbfda4b6b6fcf", - "sha256:da39dd03d130162deb63da51f6e66ed73032ae62e74aaccc4236e30edccddbb0", - "sha256:db3c336f9eda2532ec0fd8ea49fef7a8df8f6c804cdf4f39e5c5c0d4a4ad9a7a", - "sha256:dd500e0a5e11969cdd3320935ca2ff1e936f2358f9c2e61f100a1660933320ea", - "sha256:dd9becd5fe29773d140d68d607d66a38f60e31b86df75332703757ee645b6faf", - "sha256:e0cb5cc6ece6ffa75baccfd5c02cffe776f3f5c8bf486811f9d3ea3453676ce8", - "sha256:e23173580d740bf8822fd0379e4bf30aa1d5a92a4f252d34e893070c081050df", - "sha256:e3a686ecb4aa0d64ae60c9c9f1a7d5d46cab9bfb5d91a2d303d00e2cd4c4c5cc", - "sha256:e789376b52c295c4946403bd0efecf27ab98f05319df4583d3c48e43c7342c2f", - "sha256:edc344de4dac1d89300a053ac973299e82d3db56330f3494905643bb68801269", - "sha256:eef610b23933c54d5d921c92578ae5f89813438fded840c2e9809d378dc765d3", - "sha256:f2c38d588887a609191d30e902df2a32711f708abfd85d318ca9b367258cfd0c", - "sha256:f55b5905705725af31ccef50e55391621532cd64fbf0bc6f4bac935f0fccec46", - "sha256:f5fc088b7a32f244c519a048c170f14cf2251b849ef0e20cbbb0fdf0fdaf556f", - "sha256:fe10ddc59b304cb19a1bdf5bd0a7719cbbc9fbdd57ac80ed436b709fcf889106", - "sha256:ff64a1d38d156d429404aaa84b27305e957fd10c30e5880d1765c9480bea490f" + "sha256:007ed0d62f7e06eeb6e3a848b0d83b9fbd9e14674a59a61326845f27d20d7452", + "sha256:07cc20655fb16aeef1a8f03236ba8671c61d332580b996b6396a5b7967ba4b3d", + "sha256:0929c2ebdf00cedda77bf77685693e38c269011236e7c62182fee5848c29a4fa", + "sha256:12180bc1d72c6a9247472c1dee9dfd7fc2e23786f25feee7204406972d8dab39", + "sha256:1cb23597819f68ac6a6d133a002a1b3ef12a22850236b083242c93f81f206d5a", + "sha256:25ea5dbd3b00c56b034639dc6fe4d1dd095b8205bab1782d9a47cb020695fdf4", + "sha256:2796f097841619acf053245f266a4f66cb27c040f0d9097e5f21301aab95ff43", + "sha256:29282631da3bfeb5db497e4d3d94d56ee36222fbebd0b51014e68a2e70736fb1", + "sha256:2a58e83f82098d062ae5d4cbe7073b8783999c284d6f079f2fefe87cd8957ac8", + "sha256:349dd1fa56a30d530555988be98013688de67809f384671883f8bf8b8c9de984", + "sha256:369410925b240b30ef1c1deadbd6331e9cd865ad0b8966bf31e276cc8e0da159", + "sha256:385c5391becb9b58e0a4f33345e12762fd857ccf9fbf6fee428669929ba45e4c", + "sha256:3a88375b648a2c479532943cc19a018df1e5fcea85d5f31963c0b22794d1bdc1", + "sha256:3cf18bbd44b36749b7b66f047a30a40b799b8c0bd9a1b9173cba86a234b4306b", + "sha256:3d30cc1a90bcbf9e22e1f667c1c5a7428e2d37362288b4ebfd5118eb0b11afa9", + "sha256:42aa05e890fcf1faed8e535c088a1f0f27675827cbacf62d3024eb1e6d4c9e0c", + "sha256:43e0de552be624e5c0323ff4fcc9f0b4a9a6dc6e0116b8aa2cbb6e0d3d2baf09", + "sha256:45a85dc6b3ff76239379feb4355aadebc18d6e587c8deb866d11060755f4d3ea", + "sha256:4fe2aed5963ca267c40a2d29b1ee4e8ab008ac8d5daa284fdda9275201b8a334", + "sha256:52ba83ea132390e426f9a7b48848248a2dc0e7120ca8c65d5a8fc1efaa4eb51b", + "sha256:53b8e1ee01eb5b8be5c8a69ae26b0820dbc198d092ad50b3451adc3cdd55d455", + "sha256:54d084756c50dfc8086dce97b945f210ca43950154e1e04a44a30c6e6a2bcbb1", + "sha256:5d4f4b341100d313b08149d7031eb6d12738ac758b0c90d2f9be8675f401b019", + "sha256:5d68bd2a3e9fff6f7043c0a711cb1ebba9f202c196a3943d0c885650cd0b6464", + "sha256:5d8d5d17371ed9eb9f0e3a8d326bdf8172700164c2e705bc7f1905a719a189be", + "sha256:5ffe6fc5e5fe9f2634cdc59b805e4ba1fcccf3a5622f5f36c3c7c287f606e283", + "sha256:60a19d4ff5f451254f8623f6aa4169065f73a50ec7b59ab6b9dcddff4aa00267", + "sha256:718d19c494637f28e651031b3df6a791b9e86e0097c65ed5e8ec49b400b1210e", + "sha256:79b6548e57ab18f071b9bfe3ffe02af7184dd899bc674e2817d8fe7e9e7489ec", + "sha256:84e92dbac318a84fef722f38ca57acef19cbb89527aba5d420b96aa2656970ee", + "sha256:85b4127f7da332feb932eee833c70e5e1670469e8c9de7ef3874aa2a91a6fbb2", + "sha256:87ae582cf2319e45bc457a57232daded27a3c771263cab42fb8864214bbd74ea", + "sha256:892959b627eedcdf98ac7022f9f71f050a59624b380b67862da10c32ea3c221a", + "sha256:9d91279d57f6546eaf43671d1de50621e0578f13c2f17c96c458a72d170698d7", + "sha256:a01c674e0efe0f14aec7e722ed0e0e272fa2f10e8ea8260837e1f4f5dc4b3e53", + "sha256:a4667d4e41fa37fa3d836b2603b8b40d6887fa4838496d48791036394f7ace39", + "sha256:a797da96d4127e517a5cb0965cd03fd6ec21e02667c1258fa0579501537fbe5c", + "sha256:a88815a0c6253ad1312ef186620832fb347706c177730efec34e3efe75e0e248", + "sha256:a8d9793f3fb0da16232503df14411dabafed5a81fc9077dc430cfc6f60e71179", + "sha256:ac042e8ba9d7f2618e84af27927fdce0f3e03528eb74f343977486c093868389", + "sha256:ae59a9f0a77ecb0cbdedea7d206a547ff136e8bfbc7d2d98772fb02d398797bb", + "sha256:aedd94422745da60672a901f53de1f50b16e85408b18672b9b210db4a776b5a6", + "sha256:aef1602db81096ce3d3847865128c8879635bdad7963fb2b7df290edb9e9150a", + "sha256:b0ed24a3aa4213029e100257e5e73c5f912e70ca35630081de94b7f9e2cf4a9b", + "sha256:b138f4bf8a64c344e12c76283dac279d11adab89ac62ae4a32ac8490d3c94832", + "sha256:b91657b65355954e47f0df874917fa200426b3a7f4e68073326a8cfc2f6deef8", + "sha256:c7fdfbed727ce6b4b5e6622d15a6efb2098b2d9e22ba4dc54b2e3ce80f982045", + "sha256:c90343fd0774749d23c1891dd8b3e9210f9afd30986673ce0f9d5857f5cb1562", + "sha256:ceeef57b9aec8f27e523de4da73c518ece7721aefe7064f18aa28baabfe61b94", + "sha256:cfd0b9b18d64c51e5cd322e16b5bf4fe490db65c9f7b18fd5382c824062ead7e", + "sha256:d4e0990b6a04b07095c969969da659eecf9069cf8e7b8f49c8f5ee1bb50e3352", + "sha256:d5a3022f9291bf2d35ebf65929297d625e68effd3a5647b8eb8b89d51b09394c", + "sha256:d5a6fa353b5ef36970c3bd1cd7cecbc08bb8f2f1a3d008b0691208cf34ebf5b0", + "sha256:d5f3d0d177b3db3d1d02cce7ba6c0063586499ac28afe0c992be74ffc40d9257", + "sha256:db234da3aff01e8483cf0015b75486c04d50dbf90004bd3e5b46d384e1bd6c9e", + "sha256:db78535b791840a584c48cf3f4215eae38a7e2f43271ecd27ce4ba8a798beaaa", + "sha256:dbeada3b8f1f6d9497840f761906c4236f912a42da4515520168bc7c525b52b0", + "sha256:dc77283a7c7b2b24e00fe8c3c4f7cf36bba4f65125777e906aae4d58d06d0460", + "sha256:deb0dd98ea4e76b833f0bfd7a6042b51115360d5dfcc7c1daa72dfc417b3327a", + "sha256:e039f106d48d3c241f1943bccfb383bd38ec39900d6dcaad0c73cc5fe129f346", + "sha256:e2654e94c705ce9b768441d8e3a387a84951ca1056efdc4a26a4a6ee723c01b6", + "sha256:e53419201c6c1439148feb99de6b307651a88b8defd41348cc23bbe2a290de1d", + "sha256:ec4a887d2236e3878c07033ad5566f6b4d5d954b85f92a219519a1745d0c93e9", + "sha256:ec4e87eb9916b481216b1fede7d8913be799915f5216a0c801867cbed8eeb903", + "sha256:ef0e6253c36e42f2637cfa3ff9b3903df60d05ec040c718999f6a0644ce1c497", + "sha256:ef35cef161f76031f833146f895e7e302196e01c704c00d269c04d8e18f3ac37", + "sha256:f7b2544eb3e7bc39ce59812371214cd97762080dab90c3afc857890039384753", + "sha256:f888b9565ca1d1c25ab827d184f57f4772ffbfa6baf5710b873b01936cc335ee", + "sha256:fa1c23ed3a02732fba906ec337df65d4cc23f9f453635e1a803c285b59c7d987", + "sha256:fc0a96a6828bfa6f1ccec62b54630bcdcc205d483f5a8806c0a8abb26101c54b" ], - "version": "==10.4" + "version": "==11.0.1" }, "xlsxwriter": { "hashes": [ - "sha256:1239958b12da12be6abf05b32f64ff162eb75fff0fdf00d901ca0f46dc0557cf", - "sha256:d79dadac9dcbff3c24281764b052b46bcdb391f3184f337c4c4e6ed8d2738d7d" + "sha256:02913b50b74c00f165933d5da3e3a02cab4204cb4932722a1b342c5c71034122", + "sha256:b70a147d36235d1ee835cfd037396f789db1f76740a0e5c917d54137169341de" ], "index": "pypi", - "version": "==3.0.7" + "version": "==3.1.0" }, "yarl": { "hashes": [ @@ -1637,14 +1708,6 @@ } }, "develop": { - "attrs": { - "hashes": [ - "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836", - "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99" - ], - "markers": "python_version >= '3.6'", - "version": "==22.2.0" - }, "bidict": { "hashes": [ "sha256:1e0f7f74e4860e6d0943a05d4134c63a2fad86f3d4732fb265bd79e4e856d81d", @@ -1655,21 +1718,34 @@ }, "black": { "hashes": [ - "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320", - "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351", - "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350", - "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f", - "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf", - "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148", - "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4", - "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d", - "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc", - "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d", - "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2", - "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f" + "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5", + "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915", + "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326", + "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940", + "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b", + "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30", + "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c", + "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c", + "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab", + "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27", + "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2", + "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961", + "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9", + "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb", + "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70", + "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331", + "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2", + "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266", + "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d", + "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6", + "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b", + "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925", + "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8", + "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4", + "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3" ], "index": "pypi", - "version": "==22.12.0" + "version": "==23.3.0" }, "certifi": { "hashes": [ @@ -1689,11 +1765,84 @@ }, "charset-normalizer": { "hashes": [ - "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", - "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" + "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6", + "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1", + "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e", + "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373", + "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62", + "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230", + "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be", + "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c", + "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0", + "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448", + "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f", + "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649", + "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d", + "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0", + "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706", + "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a", + "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59", + "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23", + "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5", + "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb", + "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e", + "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e", + "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c", + "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28", + "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d", + "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41", + "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974", + "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce", + "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f", + "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1", + "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d", + "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8", + "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017", + "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31", + "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7", + "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8", + "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e", + "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14", + "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd", + "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d", + "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795", + "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b", + "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b", + "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b", + "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203", + "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f", + "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19", + "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1", + "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a", + "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac", + "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9", + "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0", + "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137", + "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f", + "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6", + "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5", + "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909", + "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f", + "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0", + "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324", + "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755", + "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb", + "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854", + "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c", + "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60", + "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84", + "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0", + "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b", + "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1", + "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531", + "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1", + "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11", + "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326", + "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df", + "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab" ], - "markers": "python_full_version >= '3.6.0'", - "version": "==2.1.1" + "markers": "python_full_version >= '3.7.0'", + "version": "==3.1.0" }, "click": { "hashes": [ @@ -1705,60 +1854,60 @@ }, "coverage": { "hashes": [ - "sha256:04481245ef966fbd24ae9b9e537ce899ae584d521dfbe78f89cad003c38ca2ab", - "sha256:0c45948f613d5d18c9ec5eaa203ce06a653334cf1bd47c783a12d0dd4fd9c851", - "sha256:10188fe543560ec4874f974b5305cd1a8bdcfa885ee00ea3a03733464c4ca265", - "sha256:218fe982371ac7387304153ecd51205f14e9d731b34fb0568181abaf7b443ba0", - "sha256:29571503c37f2ef2138a306d23e7270687c0efb9cab4bd8038d609b5c2393a3a", - "sha256:2a60d6513781e87047c3e630b33b4d1e89f39836dac6e069ffee28c4786715f5", - "sha256:2bf1d5f2084c3932b56b962a683074a3692bce7cabd3aa023c987a2a8e7612f6", - "sha256:3164d31078fa9efe406e198aecd2a02d32a62fecbdef74f76dad6a46c7e48311", - "sha256:32df215215f3af2c1617a55dbdfb403b772d463d54d219985ac7cd3bf124cada", - "sha256:33d1ae9d4079e05ac4cc1ef9e20c648f5afabf1a92adfaf2ccf509c50b85717f", - "sha256:33ff26d0f6cc3ca8de13d14fde1ff8efe1456b53e3f0273e63cc8b3c84a063d8", - "sha256:38da2db80cc505a611938d8624801158e409928b136c8916cd2e203970dde4dc", - "sha256:3b155caf3760408d1cb903b21e6a97ad4e2bdad43cbc265e3ce0afb8e0057e73", - "sha256:3b946bbcd5a8231383450b195cfb58cb01cbe7f8949f5758566b881df4b33baf", - "sha256:3baf5f126f30781b5e93dbefcc8271cb2491647f8283f20ac54d12161dff080e", - "sha256:4b14d5e09c656de5038a3f9bfe5228f53439282abcab87317c9f7f1acb280352", - "sha256:51b236e764840a6df0661b67e50697aaa0e7d4124ca95e5058fa3d7cbc240b7c", - "sha256:63ffd21aa133ff48c4dff7adcc46b7ec8b565491bfc371212122dd999812ea1c", - "sha256:6a43c7823cd7427b4ed763aa7fb63901ca8288591323b58c9cd6ec31ad910f3c", - "sha256:755e89e32376c850f826c425ece2c35a4fc266c081490eb0a841e7c1cb0d3bda", - "sha256:7a726d742816cb3a8973c8c9a97539c734b3a309345236cd533c4883dda05b8d", - "sha256:7c7c0d0827e853315c9bbd43c1162c006dd808dbbe297db7ae66cd17b07830f0", - "sha256:7ed681b0f8e8bcbbffa58ba26fcf5dbc8f79e7997595bf071ed5430d8c08d6f3", - "sha256:7ee5c9bb51695f80878faaa5598040dd6c9e172ddcf490382e8aedb8ec3fec8d", - "sha256:8361be1c2c073919500b6601220a6f2f98ea0b6d2fec5014c1d9cfa23dd07038", - "sha256:8ae125d1134bf236acba8b83e74c603d1b30e207266121e76484562bc816344c", - "sha256:9817733f0d3ea91bea80de0f79ef971ae94f81ca52f9b66500c6a2fea8e4b4f8", - "sha256:98b85dd86514d889a2e3dd22ab3c18c9d0019e696478391d86708b805f4ea0fa", - "sha256:9ccb092c9ede70b2517a57382a601619d20981f56f440eae7e4d7eaafd1d1d09", - "sha256:9d58885215094ab4a86a6aef044e42994a2bd76a446dc59b352622655ba6621b", - "sha256:b643cb30821e7570c0aaf54feaf0bfb630b79059f85741843e9dc23f33aaca2c", - "sha256:bc7c85a150501286f8b56bd8ed3aa4093f4b88fb68c0843d21ff9656f0009d6a", - "sha256:beeb129cacea34490ffd4d6153af70509aa3cda20fdda2ea1a2be870dfec8d52", - "sha256:c31b75ae466c053a98bf26843563b3b3517b8f37da4d47b1c582fdc703112bc3", - "sha256:c4e4881fa9e9667afcc742f0c244d9364d197490fbc91d12ac3b5de0bf2df146", - "sha256:c5b15ed7644ae4bee0ecf74fee95808dcc34ba6ace87e8dfbf5cb0dc20eab45a", - "sha256:d12d076582507ea460ea2a89a8c85cb558f83406c8a41dd641d7be9a32e1274f", - "sha256:d248cd4a92065a4d4543b8331660121b31c4148dd00a691bfb7a5cdc7483cfa4", - "sha256:d47dd659a4ee952e90dc56c97d78132573dc5c7b09d61b416a9deef4ebe01a0c", - "sha256:d4a5a5879a939cb84959d86869132b00176197ca561c664fc21478c1eee60d75", - "sha256:da9b41d4539eefd408c46725fb76ecba3a50a3367cafb7dea5f250d0653c1040", - "sha256:db61a79c07331e88b9a9974815c075fbd812bc9dbc4dc44b366b5368a2936063", - "sha256:ddb726cb861c3117a553f940372a495fe1078249ff5f8a5478c0576c7be12050", - "sha256:ded59300d6330be27bc6cf0b74b89ada58069ced87c48eaf9344e5e84b0072f7", - "sha256:e2617759031dae1bf183c16cef8fcfb3de7617f394c813fa5e8e46e9b82d4222", - "sha256:e5cdbb5cafcedea04924568d990e20ce7f1945a1dd54b560f879ee2d57226912", - "sha256:ec8e767f13be637d056f7e07e61d089e555f719b387a7070154ad80a0ff31801", - "sha256:ef382417db92ba23dfb5864a3fc9be27ea4894e86620d342a116b243ade5d35d", - "sha256:f2cba5c6db29ce991029b5e4ac51eb36774458f0a3b8d3137241b32d1bb91f06", - "sha256:f5b4198d85a3755d27e64c52f8c95d6333119e49fd001ae5798dac872c95e0f8", - "sha256:ffeeb38ee4a80a30a6877c5c4c359e5498eec095878f1581453202bfacc8fbc2" + "sha256:06ddd9c0249a0546997fdda5a30fbcb40f23926df0a874a60a8a185bc3a87d93", + "sha256:0743b0035d4b0e32bc1df5de70fba3059662ace5b9a2a86a9f894cfe66569013", + "sha256:0f3736a5d34e091b0a611964c6262fd68ca4363df56185902528f0b75dbb9c1f", + "sha256:1127b16220f7bfb3f1049ed4a62d26d81970a723544e8252db0efde853268e21", + "sha256:172db976ae6327ed4728e2507daf8a4de73c7cc89796483e0a9198fd2e47b462", + "sha256:182eb9ac3f2b4874a1f41b78b87db20b66da6b9cdc32737fbbf4fea0c35b23fc", + "sha256:1bb1e77a9a311346294621be905ea8a2c30d3ad371fc15bb72e98bfcfae532df", + "sha256:1fd78b911aea9cec3b7e1e2622c8018d51c0d2bbcf8faaf53c2497eb114911c1", + "sha256:20d1a2a76bb4eb00e4d36b9699f9b7aba93271c9c29220ad4c6a9581a0320235", + "sha256:21b154aba06df42e4b96fc915512ab39595105f6c483991287021ed95776d934", + "sha256:2c2e58e45fe53fab81f85474e5d4d226eeab0f27b45aa062856c89389da2f0d9", + "sha256:2c3b2803e730dc2797a017335827e9da6da0e84c745ce0f552e66400abdfb9a1", + "sha256:3146b8e16fa60427e03884301bf8209221f5761ac754ee6b267642a2fd354c48", + "sha256:344e714bd0fe921fc72d97404ebbdbf9127bac0ca1ff66d7b79efc143cf7c0c4", + "sha256:387065e420aed3c71b61af7e82c7b6bc1c592f7e3c7a66e9f78dd178699da4fe", + "sha256:3f04becd4fcda03c0160d0da9c8f0c246bc78f2f7af0feea1ec0930e7c93fa4a", + "sha256:4a42e1eff0ca9a7cb7dc9ecda41dfc7cbc17cb1d02117214be0561bd1134772b", + "sha256:4ea748802cc0de4de92ef8244dd84ffd793bd2e7be784cd8394d557a3c751e21", + "sha256:55416d7385774285b6e2a5feca0af9652f7f444a4fa3d29d8ab052fafef9d00d", + "sha256:5d0391fb4cfc171ce40437f67eb050a340fdbd0f9f49d6353a387f1b7f9dd4fa", + "sha256:63cdeaac4ae85a179a8d6bc09b77b564c096250d759eed343a89d91bce8b6367", + "sha256:72fcae5bcac3333a4cf3b8f34eec99cea1187acd55af723bcbd559adfdcb5535", + "sha256:7c4ed4e9f3b123aa403ab424430b426a1992e6f4c8fd3cb56ea520446e04d152", + "sha256:83957d349838a636e768251c7e9979e899a569794b44c3728eaebd11d848e58e", + "sha256:87ecc7c9a1a9f912e306997ffee020297ccb5ea388421fe62a2a02747e4d5539", + "sha256:8f69770f5ca1994cb32c38965e95f57504d3aea96b6c024624fdd5bb1aa494a1", + "sha256:8f6c930fd70d91ddee53194e93029e3ef2aabe26725aa3c2753df057e296b925", + "sha256:965ee3e782c7892befc25575fa171b521d33798132692df428a09efacaffe8d0", + "sha256:974bc90d6f6c1e59ceb1516ab00cf1cdfbb2e555795d49fa9571d611f449bcb2", + "sha256:981b4df72c93e3bc04478153df516d385317628bd9c10be699c93c26ddcca8ab", + "sha256:aa784405f0c640940595fa0f14064d8e84aff0b0f762fa18393e2760a2cf5841", + "sha256:ae7863a1d8db6a014b6f2ff9c1582ab1aad55a6d25bac19710a8df68921b6e30", + "sha256:aeae2aa38395b18106e552833f2a50c27ea0000122bde421c31d11ed7e6f9c91", + "sha256:b2317d5ed777bf5a033e83d4f1389fd4ef045763141d8f10eb09a7035cee774c", + "sha256:be19931a8dcbe6ab464f3339966856996b12a00f9fe53f346ab3be872d03e257", + "sha256:be9824c1c874b73b96288c6d3de793bf7f3a597770205068c6163ea1f326e8b9", + "sha256:c0045f8f23a5fb30b2eb3b8a83664d8dc4fb58faddf8155d7109166adb9f2040", + "sha256:c86bd45d1659b1ae3d0ba1909326b03598affbc9ed71520e0ff8c31a993ad911", + "sha256:ca0f34363e2634deffd390a0fef1aa99168ae9ed2af01af4a1f5865e362f8623", + "sha256:d298c2815fa4891edd9abe5ad6e6cb4207104c7dd9fd13aea3fdebf6f9b91259", + "sha256:d2a3a6146fe9319926e1d477842ca2a63fe99af5ae690b1f5c11e6af074a6b5c", + "sha256:dfd393094cd82ceb9b40df4c77976015a314b267d498268a076e940fe7be6b79", + "sha256:e58c0d41d336569d63d1b113bd573db8363bc4146f39444125b7f8060e4e04f5", + "sha256:ea3f5bc91d7d457da7d48c7a732beaf79d0c8131df3ab278e6bba6297e23c6c4", + "sha256:ea53151d87c52e98133eb8ac78f1206498c015849662ca8dc246255265d9c3c4", + "sha256:eb0edc3ce9760d2f21637766c3aa04822030e7451981ce569a1b3456b7053f22", + "sha256:f649dd53833b495c3ebd04d6eec58479454a1784987af8afb77540d6c1767abd", + "sha256:f760073fcf8f3d6933178d67754f4f2d4e924e321f4bb0dcef0424ca0215eba1", + "sha256:fa546d66639d69aa967bf08156eb8c9d0cd6f6de84be9e8c9819f52ad499c910", + "sha256:fd214917cabdd6f673a29d708574e9fbdb892cb77eb426d0eae3490d95ca7859", + "sha256:fff5aaa6becf2c6a1699ae6a39e2e6fb0672c2d42eca8eb0cafa91cf2e9bd312" ], "index": "pypi", - "version": "==7.1.0" + "version": "==7.2.3" }, "distlib": { "hashes": [ @@ -1767,13 +1916,21 @@ ], "version": "==0.3.6" }, + "exceptiongroup": { + "hashes": [ + "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e", + "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785" + ], + "markers": "python_version < '3.11'", + "version": "==1.1.1" + }, "filelock": { "hashes": [ - "sha256:7b319f24340b51f55a2bf7a12ac0755a9b03e718311dac567a0f4f7fabd2f5de", - "sha256:f58d535af89bb9ad5cd4df046f741f8553a418c01a7856bf0d173bbc9f6bd16d" + "sha256:3618c0da67adcc0506b015fd11ef7faf1b493f0b40d87728e19986b536890c37", + "sha256:f08a52314748335c6460fc8fe40cd5638b85001225db78c2aa01c8c0db83b318" ], "markers": "python_version >= '3.7'", - "version": "==3.9.0" + "version": "==3.11.0" }, "flake8": { "hashes": [ @@ -1785,11 +1942,11 @@ }, "identify": { "hashes": [ - "sha256:832832a58ecc1b8f33d5e8cb4f7d3db2f5c7fbe922dfee5f958b48fed691501a", - "sha256:c47acedfe6495b1c603ed7e93469b26e839cab38db4155113f36f718f8b3dc47" + "sha256:f0faad595a4687053669c112004178149f6c326db71ee999ae4636685753ad2f", + "sha256:f7a93d6cf98e29bd07663c60728e7a4057615068d7a639d132dc883b2d54d31e" ], "markers": "python_version >= '3.7'", - "version": "==2.5.16" + "version": "==2.5.22" }, "idna": { "hashes": [ @@ -1817,10 +1974,11 @@ }, "mypy-extensions": { "hashes": [ - "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", - "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" + "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", + "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782" ], - "version": "==0.4.3" + "markers": "python_version >= '3.5'", + "version": "==1.0.0" }, "nodeenv": { "hashes": [ @@ -1832,27 +1990,27 @@ }, "packaging": { "hashes": [ - "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2", - "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97" + "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61", + "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f" ], "markers": "python_version >= '3.7'", - "version": "==23.0" + "version": "==23.1" }, "pathspec": { "hashes": [ - "sha256:3a66eb970cbac598f9e5ccb5b2cf58930cd8e3ed86d393d541eaf2d8b1705229", - "sha256:64d338d4e0914e91c1792321e6907b5a593f1ab1851de7fc269557a21b30ebbc" + "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687", + "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293" ], "markers": "python_version >= '3.7'", - "version": "==0.11.0" + "version": "==0.11.1" }, "platformdirs": { "hashes": [ - "sha256:83c8f6d04389165de7c9b6f0c682439697887bca0aa2f1c87ef1826be3584490", - "sha256:e1fea1fe471b9ff8332e229df3cb7de4f53eeea4998d3b6bfff542115e998bd2" + "sha256:d5b638ca397f25f979350ff789db335903d7ea010ab28903f57b27e1b16c2b08", + "sha256:ebe11c0d7a805086e99506aa331612429a72ca7cd52a1f0d277dc4adc20cb10e" ], "markers": "python_version >= '3.7'", - "version": "==2.6.2" + "version": "==3.2.0" }, "pluggy": { "hashes": [ @@ -1864,11 +2022,11 @@ }, "pre-commit": { "hashes": [ - "sha256:3a3f9229e8c19a626a7f91be25b3c8c135e52de1a678da98eb015c0d0baea7a5", - "sha256:61ecb75e0e99939cc30c79181c0394545657855e9172c42ff98ebecb0e02fcb7" + "sha256:0b4210aea813fe81144e87c5a291f09ea66f199f367fa1df41b55e1d26e1e2b4", + "sha256:5b808fcbda4afbccf6d6633a56663fed35b6c2bc08096fd3d47ce197ac351d9d" ], "index": "pypi", - "version": "==3.0.1" + "version": "==3.2.2" }, "pycodestyle": { "hashes": [ @@ -1888,19 +2046,19 @@ }, "pytest": { "hashes": [ - "sha256:c7c6ca206e93355074ae32f7403e8ea12163b1163c976fee7d4d84027c162be5", - "sha256:d45e0952f3727241918b8fd0f376f5ff6b301cc0777c6f9a556935c92d8a7d42" + "sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362", + "sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3" ], "index": "pypi", - "version": "==7.2.1" + "version": "==7.3.1" }, "pytest-asyncio": { "hashes": [ - "sha256:83cbf01169ce3e8eb71c6c278ccb0574d1a7a3bb8eaaf5e50e0ad342afb33b36", - "sha256:f129998b209d04fcc65c96fc85c11e5316738358909a8399e93be553d7656442" + "sha256:2b38a496aef56f56b0e87557ec313e11e1ab9276fc3863f6a7be0f1d0e415e1b", + "sha256:f2b3366b7cd501a4056858bd39349d5af19742aed2d81660b7998b6341c7eb9c" ], "index": "pypi", - "version": "==0.20.3" + "version": "==0.21.0" }, "pytest-dependency": { "hashes": [ @@ -1911,27 +2069,27 @@ }, "pytest-order": { "hashes": [ - "sha256:5dd6b929fbd7eaa6d0ee07586f65c623babb0afe72b4843c5f15055d6b3b1b1f", - "sha256:bbe6e63a8e23741ab3e810d458d1ea7317e797b70f9550512d77d6e9e8fd1bbb" + "sha256:139d25b30826b78eebb42722f747eab14c44b88059d7a71d4f79d14a057269a5", + "sha256:3b3730969c97900fa5cd31ecff80847680ed56b2490954565c14949ba60d9371" ], "index": "pypi", - "version": "==1.0.1" + "version": "==1.1.0" }, "python-engineio": { "hashes": [ - "sha256:7454314a529bba20e745928601ffeaf101c1b5aca9a6c4e48ad397803d10ea0c", - "sha256:d8d8b072799c36cadcdcc2b40d2a560ce09797ab3d2d596b2ad519a5e4df19ae" + "sha256:11f9c35b775fe70e0a25f67b16d5b69fbfafc368cdd87eeb6f4135a475c88e50", + "sha256:bcc035c70ecc30acc3cfd49ef19aca6c51fa6caaadd0fa58c2d7480f50d04cf2" ], "markers": "python_version >= '3.6'", - "version": "==4.3.4" + "version": "==4.4.0" }, "python-socketio": { "hashes": [ - "sha256:92395062d9db3c13d30e7cdedaa0e1330bba78505645db695415f9a3c628d097", - "sha256:d9a9f047e6fdd306c852fbac36516f4b495c2096f8ad9ceb8803b8e5ff5622e3" + "sha256:7adb8867aac1c2929b9c1429f1c02e12ca4c36b67c807967393e367dfbb01441", + "sha256:e714f4dddfaaa0cb0e37a1e2deef2bb60590a5b9fea9c343dd8ca5e688416fd9" ], "index": "pypi", - "version": "==5.7.2" + "version": "==5.8.0" }, "pyyaml": { "hashes": [ @@ -1988,34 +2146,42 @@ }, "setuptools": { "hashes": [ - "sha256:883131c5b6efa70b9101c7ef30b2b7b780a4283d5fc1616383cdf22c83cbefe6", - "sha256:9d790961ba6219e9ff7d9557622d2fe136816a264dd01d5997cfc057d804853d" + "sha256:257de92a9d50a60b8e22abfcbb771571fde0dbf3ec234463212027a4eeecbe9a", + "sha256:e728ca814a823bf7bf60162daf9db95b93d532948c4c0bea762ce62f60189078" ], "markers": "python_version >= '3.7'", - "version": "==67.0.0" + "version": "==67.6.1" + }, + "tomli": { + "hashes": [ + "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" + ], + "markers": "python_version < '3.11'", + "version": "==2.0.1" }, "urllib3": { "hashes": [ - "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72", - "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1" + "sha256:8a388717b9476f934a21484e8c8e61875ab60644d29b9b39e11e4b9dc1c6b305", + "sha256:aa751d169e23c7479ce47a0cb0da579e3ede798f994f5816a74e4f4500dcea42" ], - "markers": "python_version >= '3.6'", - "version": "==1.26.14" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==1.26.15" }, "virtualenv": { "hashes": [ - "sha256:ce3b1684d6e1a20a3e5ed36795a97dfc6af29bc3970ca8dab93e11ac6094b3c4", - "sha256:f8b927684efc6f1cc206c9db297a570ab9ad0e51c16fa9e45487d36d1905c058" + "sha256:31712f8f2a17bd06234fa97fdf19609e789dd4e3e4bf108c3da71d710651adbc", + "sha256:f50e3e60f990a0757c9b68333c9fdaa72d7188caa417f96af9e52407831a3b68" ], - "markers": "python_version >= '3.6'", - "version": "==20.17.1" + "markers": "python_version >= '3.7'", + "version": "==20.21.0" }, "websocket-client": { "hashes": [ - "sha256:561ca949e5bbb5d33409a37235db55c279235c78ee407802f1d2314fff8a8536", - "sha256:fb5d81b95d350f3a54838ebcb4c68a5353bbd1412ae8f068b1e5280faeb13074" + "sha256:3f09e6d8230892547132177f575a4e3e73cfdf06526e20cc02aa1c3b47184d40", + "sha256:cdf5877568b7e83aa7cf2244ab56a3213de587bbe0ce9d8b9600fc77b455d89e" ], - "version": "==1.5.0" + "version": "==1.5.1" } } } diff --git a/classquiz/config.py b/classquiz/config.py index 760979a..354c391 100644 --- a/classquiz/config.py +++ b/classquiz/config.py @@ -58,6 +58,12 @@ class Settings(BaseSettings): # if storage_backend == "local": storage_path: str | None + # if storage_backend == "s3": + s3_access_key: str | None + s3_secret_key: str | None + s3_bucket_name: str = "classquiz" + s3_base_url: str | None + class Config: env_file = ".env" env_file_encoding = "utf-8" @@ -75,6 +81,10 @@ storage: Storage = Storage( deta_key=settings().deta_project_key, deta_id=settings().deta_project_id, storage_path=settings().storage_path, + access_key=settings().s3_access_key, + secret_key=settings().s3_secret_key, + bucket_name=settings().s3_bucket_name, + base_url=settings().s3_base_url, ) meilisearch = MeiliSearch.Client(settings().meilisearch_url) diff --git a/classquiz/routers/search.py b/classquiz/routers/search.py index 732cc3b..5d5edf3 100644 --- a/classquiz/routers/search.py +++ b/classquiz/routers/search.py @@ -8,7 +8,7 @@ from fastapi import APIRouter from classquiz.config import settings, meilisearch from uuid import UUID from typing import Optional, List, Any -from meilisearch.errors import MeiliSearchApiError +from meilisearch.errors import MeilisearchApiError from classquiz.helpers import meilisearch_init settings = settings() @@ -53,7 +53,7 @@ async def _perform_search(query: str, params: dict) -> dict[str, Any]: try: index = meilisearch.get_index(settings.meilisearch_index) return index.search(query, params) - except MeiliSearchApiError: + except MeilisearchApiError: await meilisearch_init() index = meilisearch.get_index(settings.meilisearch_index) return index.search(query, params) diff --git a/classquiz/routers/storage.py b/classquiz/routers/storage.py index 5a0b58f..ea10a8a 100644 --- a/classquiz/routers/storage.py +++ b/classquiz/routers/storage.py @@ -5,7 +5,7 @@ import re from fastapi import APIRouter, HTTPException -from fastapi.responses import StreamingResponse +from fastapi.responses import StreamingResponse, RedirectResponse from classquiz.config import settings, storage from classquiz.storage.errors import DownloadingFailedError @@ -21,6 +21,9 @@ file_regex = r"^[a-z0-9]{8}-[a-z0-9-]{27}--[a-z0-9-]{36}$" async def download_file(file_name: str): if not re.match(file_regex, file_name): raise HTTPException(status_code=400, detail="Invalid file name") + if storage.backend == "s3": + print("redir") + return RedirectResponse(url=await storage.get_url(file_name, 300)) try: download = await storage.download(file_name) except DownloadingFailedError: diff --git a/classquiz/storage/__init__.py b/classquiz/storage/__init__.py index fec2bfb..92e1c5a 100644 --- a/classquiz/storage/__init__.py +++ b/classquiz/storage/__init__.py @@ -7,6 +7,7 @@ from typing import Optional from .deta_storage import DetaStorage from .local_storage import LocalStorage +from .s3_storage import S3Storage class Storage: @@ -16,20 +17,30 @@ class Storage: deta_key: Optional[str], deta_id: Optional[str], storage_path: Optional[str], + access_key: str | None = None, + secret_key: str | None = None, + bucket_name: str | None = None, + base_url: str | None = None, ): self.backend = backend self.deta_key: str | None = deta_key self.deta_id: str | None = deta_id - self.deta_base_url = f"https://drive.deta.sh/v1/{deta_id}/classquiz1" + # self.deta_base_url = f"https://drive.deta.sh/v1/{deta_id}/classquiz1" + self.access_key = access_key + self.secret_key = secret_key + self.bucket_name = bucket_name + self.base_url = base_url + self.deta_instance = None if backend == "deta": if deta_key is None or deta_id is None: raise ValueError("deta_key and deta_id must be provided") - else: - self.deta_instance = DetaStorage( - deta_base_url=self.deta_base_url, - deta_key=self.deta_key, - deta_id=self.deta_id, - ) + if self.base_url is None: + self.base_url = f"https://drive.deta.sh/v1/{deta_id}/classquiz1" + self.deta_instance = DetaStorage( + deta_base_url=self.base_url, + deta_key=self.deta_key, + deta_id=self.deta_id, + ) elif backend == "local": if storage_path is None: @@ -37,6 +48,13 @@ class Storage: else: self.local_instance = LocalStorage(base_path=storage_path) + elif backend == "s3": + if access_key is None or secret_key is None or bucket_name is None or base_url is None: + raise ValueError("Not all parameters given") + self.s3_instance = S3Storage( + base_url=base_url, access_key=access_key, secret_key=secret_key, bucket_name=bucket_name + ) + else: raise NotImplementedError(f"Backend {backend} not implemented") @@ -45,15 +63,25 @@ class Storage: return await self.deta_instance.download(file_name) elif self.backend == "local": return await self.local_instance.get_file(file_name) + elif self.backend == "s3": + return await self.s3_instance.download(file_name) async def upload(self, file_name: str, file_data: bytes) -> None: if self.backend == "deta": return await self.deta_instance.upload(file=file_data, file_name=file_name) elif self.backend == "local": return await self.local_instance.write_file(file_name=file_name, data=file_data) + elif self.backend == "s3": + return await self.s3_instance.upload(file=file_data, file_name=file_name) async def delete(self, file_names: [str]) -> None: if self.backend == "deta": return await self.deta_instance.delete(file_names=file_names) elif self.backend == "local": return await self.local_instance.delete_file(file_names=file_names) + elif self.backend == "s3": + return await self.s3_instance.delete(file_names=file_names) + + async def get_url(self, file_name: str, expiry: int) -> str: + if self.backend == "s3": + return self.s3_instance.get_url(file_name=file_name, expire=expiry) diff --git a/classquiz/storage/deta_storage.py b/classquiz/storage/deta_storage.py index 62aaf04..4620f16 100644 --- a/classquiz/storage/deta_storage.py +++ b/classquiz/storage/deta_storage.py @@ -21,7 +21,7 @@ class DetaStorage: """ :param file_name: The name of the file to be downloaded - :return: Either bytes f successfull download or None if failed + :return: Either bytes if successful download or None if failed """ async with ClientSession(headers=self.headers) as session, session.get( f"{self.deta_url}/files/download?name={file_name}" diff --git a/classquiz/storage/s3_storage.py b/classquiz/storage/s3_storage.py new file mode 100644 index 0000000..4f499f0 --- /dev/null +++ b/classquiz/storage/s3_storage.py @@ -0,0 +1,147 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. + +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +import hashlib +import hmac +from datetime import datetime, timedelta +from io import BytesIO +from typing import Tuple + +from aiohttp import ClientSession +import minio +from pydantic import BaseModel +from classquiz.storage.errors import DeletionFailedError, SavingFailedError, DownloadingFailedError + + +class S3Storage: + class _HeaderAndParams(BaseModel): + params: dict[str, str] + headers: dict[str, str] + + def __init__(self, base_url: str, access_key: str, secret_key: str, bucket_name: str, region: str = "us-east-1"): + self.base_url = base_url + self.access_key = access_key + self.secret_key = secret_key + self.bucket_name = bucket_name + self.region = region + self.DATE_FORMAT = "%a, %d %b %Y %H:%M:%S GMT" + self.host = base_url.replace("http://", "").replace("https://", "") + self.client = minio.Minio(self.host, access_key=access_key, secret_key=secret_key) + if not self.client.bucket_exists(self.bucket_name): + self.client.make_bucket(self.bucket_name) + + def _generate_aws_signature_v4(self, method: str, path: str, expiry: int = None) -> Tuple[dict, str]: + path = f"/{self.bucket_name}{path}" + service = "s3" + + # Create a timestamp for the request + t = datetime.utcnow() + amz_date = t.strftime("%Y%m%dT%H%M%SZ") + datestamp = t.strftime("%Y%m%d") + + # Create a canonical request + canonical_uri = path + canonical_querystring = "" + if expiry is not None: + canonical_querystring = f"Expires={expiry}" + canonical_headers = "host:" + self.host + "\n" + "x-amz-date:" + amz_date + "\n" + signed_headers = "host;x-amz-date" + payload_hash = hashlib.sha256("".encode("utf-8")).hexdigest() + canonical_request = ( + method + + "\n" + + canonical_uri + + "\n" + + canonical_querystring + + "\n" + + canonical_headers + + "\n" + + signed_headers + + "\n" + + payload_hash + ) + + # Create a string to sign + algorithm = "AWS4-HMAC-SHA256" + credential_scope = datestamp + "/" + self.region + "/" + service + "/" + "aws4_request" + string_to_sign = ( + algorithm + + "\n" + + amz_date + + "\n" + + credential_scope + + "\n" + + hashlib.sha256(canonical_request.encode("utf-8")).hexdigest() + ) + + # Create a signing key + k_date = hmac.new( + ("AWS4" + self.secret_key).encode("utf-8"), datestamp.encode("utf-8"), hashlib.sha256 + ).digest() + k_region = hmac.new(k_date, self.region.encode("utf-8"), hashlib.sha256).digest() + k_service = hmac.new(k_region, service.encode("utf-8"), hashlib.sha256).digest() + k_signing = hmac.new(k_service, b"aws4_request", hashlib.sha256).digest() + + # Calculate the signature + signature = hmac.new(k_signing, string_to_sign.encode("utf-8"), hashlib.sha256).hexdigest() + + # Add the signature to the request as an Authorization header + authorization_header = ( + algorithm + + " " + + "Credential=" + + self.access_key + + "/" + + credential_scope + + ", " + + "SignedHeaders=" + + signed_headers + + ", " + + "Signature=" + + signature + ) + # if expiry is not None: + # authorization_header += f", Expires={expiry}" + + # Send the request with the authorization header + headers = {"x-amz-date": amz_date, "Authorization": authorization_header} + request_url = self.base_url + path + "?" + canonical_querystring + + return headers, request_url + + async def download(self, file_name: str): + headers, url = self._generate_aws_signature_v4(method="GET", path=f"/{file_name}") + async with ClientSession() as session, session.get(url, headers=headers) as resp: + if resp.status == 200: + return BytesIO(await resp.read()) + elif resp.status == 404: + return None + else: + raise DownloadingFailedError + + async def upload(self, file: bytes, file_name: str, content_type: str | None = "application/octet-stream") -> None: + headers, url = self._generate_aws_signature_v4(method="PUT", path=f"/{file_name}") + async with ClientSession() as session, session.put(url, headers=headers, data=file) as resp: + if resp.status == 200: + return None + else: + print(await resp.text()) + raise SavingFailedError + + async def delete(self, file_names: list[str]) -> None: + for file in file_names: + headers, url = self._generate_aws_signature_v4(method="DELETE", path=f"/{file}") + async with ClientSession() as session, session.delete(url, headers=headers) as resp: + if resp.status == 204: + return None + else: + raise DeletionFailedError + + def get_url(self, expire: int, file_name: str) -> str: + return self.client.presigned_get_object( + object_name=file_name, bucket_name=self.bucket_name, expires=timedelta(seconds=expire) + ) diff --git a/classquiz/tests/test_storage.py b/classquiz/tests/test_storage.py index 24ee75f..03e6c43 100644 --- a/classquiz/tests/test_storage.py +++ b/classquiz/tests/test_storage.py @@ -54,3 +54,21 @@ async def test_deta(): async def test_local(): storage: Storage = Storage(backend="local", storage_path=settings.storage_path, deta_key=None, deta_id=None) await storage_tester(storage) + + +@pytest.mark.asyncio +async def test_minio(): + storage: Storage = Storage( + backend="s3", + access_key="Q3AM3UQ867SPQQA43P2F", + secret_key="zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG", + bucket_name="classquiz", + base_url="https://play.min.io", + deta_key=None, + deta_id=None, + storage_path=None, + ) + await storage_tester(storage) + await storage.upload(file_name="test.txt", file_data=file_contents) + url = await storage.get_url(file_name="test.txt", expiry=20) + assert url is not None From b079f72c2325953a3796c54a428c582387ab45f4 Mon Sep 17 00:00:00 2001 From: Mawoka Date: Wed, 19 Apr 2023 18:37:46 +0200 Subject: [PATCH 008/134] :globe_with_meridians: Added some missing translations --- frontend/src/lib/admin.svelte | 14 ++-- frontend/src/lib/editor.svelte | 7 +- frontend/src/lib/editor/ABCDEditorPart.svelte | 2 +- .../src/lib/editor/OrderEditorPart.svelte | 2 +- frontend/src/lib/editor/TextEditorPart.svelte | 2 +- .../src/lib/editor/VotingEditorPart.svelte | 2 +- frontend/src/lib/editor/card.svelte | 6 ++ frontend/src/lib/editor/settings-card.svelte | 2 +- frontend/src/lib/editor/sidebar.svelte | 24 +++--- .../editor/slides/element_selection.svelte | 14 ++-- frontend/src/lib/i18n/locales/de.json | 14 +++- frontend/src/lib/i18n/locales/en.json | 74 +++++++++++++++++-- frontend/src/lib/navbar.svelte | 4 +- .../src/lib/play/admin/final_results.svelte | 12 ++- .../lib/play/admin/game_not_started.svelte | 7 +- frontend/src/lib/play/admin/results.svelte | 10 ++- frontend/src/routes/+page.svelte | 2 +- .../src/routes/account/settings/+page.svelte | 10 ++- .../account/settings/avatar/+page.svelte | 8 +- .../account/settings/security/+page.svelte | 39 ++++++---- .../settings/security/backup_codes.svelte | 14 ++-- .../settings/security/totp_setup.svelte | 17 +++-- .../[result_id]/general_overview.svelte | 13 +++- .../[result_id]/player_overview.svelte | 2 +- .../src/routes/user/[user_id]/+page.svelte | 8 +- .../src/routes/view/[quiz_id]/+page.svelte | 5 +- 26 files changed, 221 insertions(+), 93 deletions(-) diff --git a/frontend/src/lib/admin.svelte b/frontend/src/lib/admin.svelte index 2e20172..bf9b79b 100644 --- a/frontend/src/lib/admin.svelte +++ b/frontend/src/lib/admin.svelte @@ -132,7 +132,7 @@ {#if selected_question + 1 === quiz_data.questions.length && ((timer_res === '0' && question_results !== null) || quiz_data?.questions?.[selected_question]?.type === QuizQuestionType.SLIDE)} {#if JSON.stringify(final_results) === JSON.stringify([null])} {/if} {:else if timer_res === '0' || selected_question === -1} @@ -142,7 +142,7 @@ set_question_number(selected_question + 1); }} class="admin-button" - >Next Question ({selected_question + 2}) + >{$t('admin_page.next_question', { question: selected_question + 2 })} {/if} {#if question_results === null && selected_question !== -1} @@ -152,11 +152,11 @@ set_question_number(selected_question + 1); }} class="admin-button" - >Next Question ({selected_question + 2}) + >{$t('admin_page.next_question', { question: selected_question + 2 })} {:else} {/if} {/if} @@ -167,11 +167,11 @@ set_question_number(selected_question + 1); }} class="admin-button" - >Next Question ({selected_question + 2}) + >{$t('admin_page.next_question', { question: selected_question + 2 })} {:else} {/if} {:else} @@ -262,7 +262,7 @@
    {:else}
    -

    Enter your answer into the input field!

    +

    {$t('admin_page.enter_answer_into_field')}

    {/if} {/if} diff --git a/frontend/src/lib/editor.svelte b/frontend/src/lib/editor.svelte index a298ebd..3d7da29 100644 --- a/frontend/src/lib/editor.svelte +++ b/frontend/src/lib/editor.svelte @@ -11,6 +11,9 @@ import SettingsCard from '$lib/editor/settings-card.svelte'; import QuizCard from '$lib/editor/card.svelte'; import Spinner from './Spinner.svelte'; + import { getLocalization } from '$lib/i18n'; + + const { t } = getLocalization(); let schemaInvalid = false; let yupErrorMessage = ''; @@ -152,10 +155,10 @@

    {/if} @@ -190,7 +192,7 @@ class:dark:text-black={index === selected_question} > {#if question.question === ''} - No title... + {$t('editor.no_title')} {:else} {@html question.question} {/if} @@ -222,10 +224,11 @@ 'answer' ).isValidSync(answer.answer)} use:tippy={{ - content: answer.answer === '' ? 'Empty...' : answer.answer + content: + answer.answer === '' ? $t('editor.empty') : answer.answer }} >{#if answer.answer === ''} - Empty... + {$t('editor.empty')} {:else} {answer.answer} {/if}{#if answer.answer === ''} - Empty... + {$t('editor.empty')} {:else} {answer.answer} {/if} - Question + {$t('words.question')} - Slide + {$t('words.slide')} = [ { - name: 'Headline', - description: 'A bold text for headlines', + name: $t('editor.slide.headline'), + description: $t('editor.slide.headline_description'), type: ElementTypes.Headline, icon: undefined, shortcut: 'h' }, { - name: 'Text', - description: 'Smaller longer text', + name: $t('editor.slide.text'), + description: $t('editor.slide.text_description'), type: ElementTypes.Text, icon: undefined, shortcut: 't' }, { - name: 'Rectangle', - description: 'Just a rectangle', + name: $t('editor.slide.rectangle'), + description: $t('editor.slide.rectangle_description'), type: ElementTypes.Rectangle, icon: undefined, shortcut: 'r' diff --git a/frontend/src/lib/i18n/locales/de.json b/frontend/src/lib/i18n/locales/de.json index 61c51f8..368a6c9 100644 --- a/frontend/src/lib/i18n/locales/de.json +++ b/frontend/src/lib/i18n/locales/de.json @@ -48,7 +48,8 @@ "community_driven_content": "ClassQuiz hängt von der Community ab, die ClassQuiz mit Spenden, Feature-Requests, Übersetzungen und mehr versorgt! Du kannst auch ein Teil der ClassQuiz-Community werden!", "download_quizzes_content": "Quiz können als einzige Datei heruntergeladen werden und jederzeit importiert werden, sodass du auch einfach auf eine andere Instanz von ClassQuiz umziehen kannst!", "community_driven": "Von der Community betrieben", - "download_quizzes": "Quiz herunterladen" + "download_quizzes": "Quiz herunterladen", + "how_does_classquiz_work": "Wie funktioniert ClassQuiz überhaupt?" }, "overview_page": { "created_at": "Erstellt am", @@ -161,7 +162,8 @@ "score": "Punkte", "results": "Ergebnisse", "note": "Notiz", - "player_plural": "Spieler" + "player_plural": "Spieler", + "slide": "Folie" }, "editor": { "time_in_seconds": "Zeit in Sekunden", @@ -170,7 +172,10 @@ "add_new_question": "Neue Frage hinzufügen", "delete_question": "Frage löschen", "delete_answer": "Antwort löschen", - "not_all_links_imgur_links": "Nicht alle Links sind Imgur-Links!" + "not_all_links_imgur_links": "Nicht alle Links sind Imgur-Links!", + "no_title": "Kein Titel...", + "empty": "Leer...", + "bg_image": "Hintergrundbild" }, "import": { "need_help": "", @@ -279,5 +284,8 @@ "time_taken": "benötigte Zeit", "player_name": "Spielername", "correct_answer_plural": "{{count}} richtige Antworten" + }, + "navbar": { + "donate": "Spenden" } } diff --git a/frontend/src/lib/i18n/locales/en.json b/frontend/src/lib/i18n/locales/en.json index c6ee4d3..f6d8409 100644 --- a/frontend/src/lib/i18n/locales/en.json +++ b/frontend/src/lib/i18n/locales/en.json @@ -48,7 +48,8 @@ "download_quizzes": "Download Quizzes", "download_quizzes_content": "Quizzes can be downloaded as one file and imported at any time. This also lets you move your quizzes to other ClassQuiz instances.", "community_driven": "Community-driven", - "community_driven_content": "ClassQuiz depends on its community for funding, testing ideas, feature requests, translations and more! You can also be a part of the ClassQuiz-community!" + "community_driven_content": "ClassQuiz depends on its community for funding, testing ideas, feature requests, translations and more! You can also be a part of the ClassQuiz-community!", + "how_does_classquiz_work": "How does ClassQuiz even work?" }, "overview_page": { "created_at": "Created at", @@ -161,7 +162,13 @@ "results": "Results", "note": "Note", "player_plural": "Players", - "score": "Score" + "score": "Score", + "slide": "Slide", + "name": "Name", + "point": "Point", + "point_plural": "Points", + "back": "Back", + "finish": "Finish" }, "editor": { "time_in_seconds": "Time in seconds", @@ -170,7 +177,18 @@ "add_new_question": "Add new question", "delete_question": "Delete question", "delete_answer": "Delete answer", - "not_all_links_imgur_links": "Not all links are Imgur-links!" + "not_all_links_imgur_links": "Not all links are Imgur-links!", + "no_title": "No title...", + "empty": "Empty...", + "bg_image": "Background image", + "slide": { + "headline": "Headline", + "headline_description": "A bold text for headlines", + "text": "Text", + "text_description": "Smaller longer text", + "rectangle": "Rectangle", + "rectangle_description": "Just a rectangle" + } }, "import_page": { "need_help": "Need help?", @@ -194,7 +212,11 @@ "start_by_showing_first_question": "Start by showing the first question.", "no_answers": "No answers!", "stop_time": "Stop time", - "save_results": "Save results" + "save_results": "Save results", + "next_question": "Next Question ({{question}})", + "show_results": "Show results", + "stop_time_and_solutions": "Stop time and show solutions", + "enter_answer_into_field": "Enter your answer into the input field!" }, "password_reset_page": { "reset_password": "Reset password" @@ -207,7 +229,9 @@ "last_seen": "Last seen", "check_location": "Check location", "delete_this_session": "Delete this session", - "this_session?": "This session?" + "this_session?": "This session?", + "change_avatar": "Change avatar", + "security_settings": "Security-Settings" }, "explore_page": { "made_by": "Made by", @@ -222,7 +246,12 @@ "1st_place": "1st Place", "2nd_place": "2nd Place", "3rd place": "3rd Place", - "with_out_of": "with {{correct_questions}} out of {{total_question_count}}" + "with_out_of": "with {{correct_questions}} out of {{total_question_count}}", + "final_result_rank": "{{place}}: {{username}} with {{points}} points", + "your_score": "Your score: {{score}}", + "join_description": "Join at {{url}} and enter {{pin}}.", + "join_by_entering_code": "Join by entering the following code", + "points_added": "Points added" }, "editor_page": { "add_an_answer": "Add an answer", @@ -257,7 +286,8 @@ "clothe_color": "Clothing color", "clothe_graphic_type": "Graphic", "thats_you": "That's You!", - "start_over": "Start over" + "start_over": "Start over", + "go_back": "Go back" }, "results_page": { "no_results_so_far": "No results saved so far...", @@ -272,5 +302,35 @@ "correct_answer": "{{count}} correct answer", "correct_answer_plural": "{{count}} correct answers", "time_taken": "Time taken" + }, + "navbar": { + "donate": "Donate" + }, + "security_settings": { + "backup_code": "Backup-Code", + "get_backup_code": "Get Backup-Code", + "activate_2fa": "Activate Two Factor Authentication", + "2fa_activated": "Two Factor authentication is activated", + "2fa_deactivated": "Two Factor authentication is deactivated", + "webauthn": "Webauthn", + "webauthn_available": "Webauthn is available", + "webauthn_unavailable": "Webauthn is not available", + "add_security_key": "Add Security-Key", + "totp": "Totp", + "totp_available": "Totp is available", + "totp_unavailable": "Totp is not available", + "disable_totp": "Disable Totp", + "enable_totp": "Enable Totp", + "backup_codes": { + "your_backup_code": "Your Backup-Code", + "save_somewhere_save": "Save this somewhere safe!", + "download_code": "Download code" + }, + "totp_setup": { + "scan_to_set_up": "Scan this QR-code to set up the code", + "enter_as_secret_if_no_see_code": "Enter this as the secret if you can't scan the QR-code", + "totp_setup": "Totp-Setup", + "do_not_forget_backup_code": "Do not forget to save your recovery-code!" + } } } diff --git a/frontend/src/lib/navbar.svelte b/frontend/src/lib/navbar.svelte index 7e2f403..599b136 100644 --- a/frontend/src/lib/navbar.svelte +++ b/frontend/src/lib/navbar.svelte @@ -109,7 +109,7 @@