From 168a2488e2bbcbdd5198a4f6d1a75f370365fe68 Mon Sep 17 00:00:00 2001 From: Hugh Rundle Date: Mon, 15 Nov 2021 20:59:22 +1100 Subject: [PATCH 01/31] refactor shelf activity on book page - disallow moving from custom shelf to a reading status shelf with shelf_selector - always use shelve_button for moving books from a reading status shelf - redesign shelf information as a list of boxes --- bookwyrm/templates/book/book.html | 21 +++++++++++++++---- .../templates/snippets/shelf_selector.html | 4 ++++ bookwyrm/templatetags/bookwyrm_tags.py | 11 ++++++++++ 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 36241ee26..a1a73135a 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -153,12 +153,25 @@ {# user's relationship to the book #}
+ {% if user_shelfbooks.count > 0 %} +

+ {% trans "You have shelved this edition in:" %} +

+ + {% endif %} {% for shelf in other_edition_shelves %}

{% blocktrans with book_path=shelf.book.local_path shelf_path=shelf.shelf.local_path shelf_name=shelf.shelf.name %}A different edition of this book is on your {{ shelf_name }} shelf.{% endblocktrans %} diff --git a/bookwyrm/templates/snippets/shelf_selector.html b/bookwyrm/templates/snippets/shelf_selector.html index ca5a39f6e..ef5bf5bcd 100644 --- a/bookwyrm/templates/snippets/shelf_selector.html +++ b/bookwyrm/templates/snippets/shelf_selector.html @@ -1,5 +1,7 @@ {% extends 'components/dropdown.html' %} {% load i18n %} +{% load bookwyrm_tags %} + {% block dropdown-trigger %} {% trans "Move book" %} @@ -7,6 +9,7 @@ {% block dropdown-list %} {% for shelf in user_shelves %} +{% if shelf.identifier|is_shelf_type:"custom" %}

+{% endif %} {% endfor %}
  • {% blocktrans with path=shelf.shelf.local_path shelf_name=shelf.shelf.name %}{{ shelf_name }}{% endblocktrans %} - {% if shelf.shelf.identifier|is_shelf_type:"readthrough" %} - {% include 'snippets/shelve_button/shelve_button.html' %} + {% if shelf.shelf.editable %} +
    + {% include 'snippets/shelf_selector.html' with current=shelf.shelf class="is-small" %} +
    {% else %} -
    - {% include 'snippets/shelf_selector.html' with current=shelf.shelf class="is-small" %} -
    + {% include 'snippets/shelve_button/shelve_button.html' %} {% endif %}
  • {% endfor %} diff --git a/bookwyrm/templates/snippets/shelf_selector.html b/bookwyrm/templates/snippets/shelf_selector.html index ef5bf5bcd..e43d8ca1d 100644 --- a/bookwyrm/templates/snippets/shelf_selector.html +++ b/bookwyrm/templates/snippets/shelf_selector.html @@ -9,7 +9,7 @@ {% block dropdown-list %} {% for shelf in user_shelves %} -{% if shelf.identifier|is_shelf_type:"custom" %} +{% if shelf.editable %} +{% else%} +{% with button_class="is-fullwidth is-small shelf-option is-radiusless is-white" %} + +{% endwith %} {% endif %} {% endfor %} @@ -30,4 +65,14 @@ + +{% include 'snippets/reading_modals/want_to_read_modal.html' with book=active_shelf.book controls_text="want_to_read" controls_uid=uuid move_from=current.id %} + +{% include 'snippets/reading_modals/start_reading_modal.html' with book=active_shelf.book controls_text="start_reading" controls_uid=uuid move_from=current.id %} + +{% include 'snippets/reading_modals/finish_reading_modal.html' with book=active_shelf.book controls_text="finish_reading" controls_uid=uuid move_from=current.id readthrough=readthrough %} + +{% include 'snippets/reading_modals/progress_update_modal.html' with book=active_shelf.book controls_text="progress_update" controls_uid=uuid move_from=current.id readthrough=readthrough %} + +{% endwith %} {% endblock %} diff --git a/bookwyrm/views/reading.py b/bookwyrm/views/reading.py index 54427ffb9..a96ccbc09 100644 --- a/bookwyrm/views/reading.py +++ b/bookwyrm/views/reading.py @@ -9,6 +9,7 @@ from django.views import View from django.views.decorators.http import require_POST from bookwyrm import models +from bookwyrm.views.shelf.shelf_actions import unshelve from .status import CreateStatus from .helpers import get_edition, handle_reading_status, is_api_request from .helpers import load_date_in_user_tz_as_utc @@ -85,12 +86,20 @@ class ReadingStatus(View): if request.POST.get("post-status"): # is it a comment? if request.POST.get("content"): + # BUG: there is a problem posting statuses for finishing + # check whether it existed before. return CreateStatus.as_view()(request, "comment") privacy = request.POST.get("privacy") handle_reading_status(request.user, desired_shelf, book, privacy) + if bool(request.POST.get("shelf")): + if current_status_shelfbook is None: + return unshelve(request, referer=referer, book_id=book_id) + return HttpResponse(headers={"forceReload" : "true"}) + if is_api_request(request): return HttpResponse() + return redirect(referer) diff --git a/bookwyrm/views/shelf/shelf_actions.py b/bookwyrm/views/shelf/shelf_actions.py index 702b72c13..8240055e2 100644 --- a/bookwyrm/views/shelf/shelf_actions.py +++ b/bookwyrm/views/shelf/shelf_actions.py @@ -1,6 +1,7 @@ """ shelf views """ from django.db import IntegrityError, transaction from django.contrib.auth.decorators import login_required +from django.http.response import HttpResponse from django.shortcuts import get_object_or_404, redirect from django.views.decorators.http import require_POST @@ -91,13 +92,15 @@ def shelve(request): @login_required @require_POST -def unshelve(request): +def unshelve(request, referer=None, book_id=False): """remove a book from a user's shelf""" - book = get_object_or_404(models.Edition, id=request.POST.get("book")) + id = book_id if book_id else request.POST.get("book") + book = get_object_or_404(models.Edition, id=id) shelf_book = get_object_or_404( models.ShelfBook, book=book, shelf__id=request.POST["shelf"] ) shelf_book.raise_not_deletable(request.user) - shelf_book.delete() + if bool(referer): + return HttpResponse(headers={"forceReload" : "true"}) return redirect(request.headers.get("Referer", "/")) From 6951b523652fb26ab9a435475f83da50447fa87e Mon Sep 17 00:00:00 2001 From: Hugh Rundle Date: Sat, 20 Nov 2021 08:18:43 +1100 Subject: [PATCH 05/31] disallow moving to shelf already used --- bookwyrm/templates/snippets/shelf_selector.html | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/bookwyrm/templates/snippets/shelf_selector.html b/bookwyrm/templates/snippets/shelf_selector.html index eca7a1d0a..34077dc1e 100644 --- a/bookwyrm/templates/snippets/shelf_selector.html +++ b/bookwyrm/templates/snippets/shelf_selector.html @@ -12,13 +12,7 @@ {% with book.id|uuid as uuid %} {% active_shelf book as active_shelf %} {% for shelf in user_shelves %} - {% if shelf.editable %} {% else%} +{% comparison_bool shelf.identifier active_shelf.shelf.identifier as is_current %} {% with button_class="is-fullwidth is-small shelf-option is-radiusless is-white" %}
  • {% blocktrans with path=shelf.shelf.local_path shelf_name=shelf.shelf.name %}{{ shelf_name }}{% endblocktrans %}
    - {% include 'snippets/shelf_selector.html' with current=shelf.shelf class="is-small" %} + {% include 'snippets/shelf_selector.html' with current=shelf.shelf class="is-small" readthrough=readthrough %}
  • {% endfor %} diff --git a/bookwyrm/templates/snippets/shelf_selector.html b/bookwyrm/templates/snippets/shelf_selector.html index 34077dc1e..1a2c46d01 100644 --- a/bookwyrm/templates/snippets/shelf_selector.html +++ b/bookwyrm/templates/snippets/shelf_selector.html @@ -11,6 +11,8 @@ {% block dropdown-list %} {% with book.id|uuid as uuid %} {% active_shelf book as active_shelf %} +{% latest_read_through book request.user as readthrough %} + {% for shelf in user_shelves %} {% if shelf.editable %} @@ -67,7 +69,5 @@ {% include 'snippets/reading_modals/finish_reading_modal.html' with book=active_shelf.book controls_text="finish_reading" controls_uid=uuid move_from=current.id readthrough=readthrough %} -{% include 'snippets/reading_modals/progress_update_modal.html' with book=active_shelf.book controls_text="progress_update" controls_uid=uuid move_from=current.id readthrough=readthrough %} - {% endwith %} {% endblock %} From 41862e854cdc95d1d6a1f8d71700d057c43ec661 Mon Sep 17 00:00:00 2001 From: Hugh Rundle Date: Sat, 20 Nov 2021 13:57:37 +1100 Subject: [PATCH 09/31] move from reading to editable shelf with logic that actually works --- bookwyrm/views/reading.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bookwyrm/views/reading.py b/bookwyrm/views/reading.py index 8e6ef9a1e..c4064d97c 100644 --- a/bookwyrm/views/reading.py +++ b/bookwyrm/views/reading.py @@ -96,7 +96,11 @@ class ReadingStatus(View): if bool(request.POST.get("shelf")): # unshelve the existing shelf this_shelf = request.POST.get("shelf") - if int(this_shelf) not in [1,2,3]: + if ( + bool(current_status_shelfbook) and + int(this_shelf) != int(current_status_shelfbook.shelf.id) and + current_status_shelfbook.shelf.identifier != desired_shelf.identifier + ): return unshelve(request, referer=referer, book_id=book_id) # don't try to unshelve a read status shelf: it has already been deleted. return HttpResponse(headers={"forceReload" : "true"}) From af9768a2e31d4652b8afd5da85ec333a15f942ef Mon Sep 17 00:00:00 2001 From: Hugh Rundle Date: Sat, 20 Nov 2021 14:59:59 +1100 Subject: [PATCH 10/31] force page reload when adding status from move button --- bookwyrm/views/status.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/bookwyrm/views/status.py b/bookwyrm/views/status.py index 8e487bf97..cd8d27049 100644 --- a/bookwyrm/views/status.py +++ b/bookwyrm/views/status.py @@ -117,12 +117,16 @@ class CreateStatus(View): status.save(created=created) - # update a readthorugh, if needed + # update a readthrough, if needed try: edit_readthrough(request) except Http404: pass + # force page reload if this was triggered from 'move' button + if bool(request.POST.get("shelf")): + return HttpResponse(headers={"forceReload" : "true"}) + if is_api_request(request): return HttpResponse() return redirect("/") @@ -157,6 +161,8 @@ def update_progress(request, book_id): # pylint: disable=unused-argument @require_POST def edit_readthrough(request): """can't use the form because the dates are too finnicky""" + # BUG when triggering finish reading with comments and no previous readthroughs + # this will 404 readthrough = get_object_or_404(models.ReadThrough, id=request.POST.get("id")) readthrough.raise_not_editable(request.user) From 12810d8e341a7d00faca4c6179b3055df3b2a604 Mon Sep 17 00:00:00 2001 From: Hugh Rundle Date: Sat, 20 Nov 2021 16:03:46 +1100 Subject: [PATCH 11/31] don't try to update non-existent readthroughs --- bookwyrm/views/reading.py | 2 -- bookwyrm/views/status.py | 9 +++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/bookwyrm/views/reading.py b/bookwyrm/views/reading.py index c4064d97c..04074b3db 100644 --- a/bookwyrm/views/reading.py +++ b/bookwyrm/views/reading.py @@ -86,8 +86,6 @@ class ReadingStatus(View): if request.POST.get("post-status"): # is it a comment? if request.POST.get("content"): - # BUG: there is a problem posting statuses with comments (doesn't force reload) - # there is a DIFFERENT problem *updating* read statuses/comments return CreateStatus.as_view()(request, "comment") privacy = request.POST.get("privacy") handle_reading_status(request.user, desired_shelf, book, privacy) diff --git a/bookwyrm/views/status.py b/bookwyrm/views/status.py index cd8d27049..8488b21e0 100644 --- a/bookwyrm/views/status.py +++ b/bookwyrm/views/status.py @@ -118,10 +118,11 @@ class CreateStatus(View): status.save(created=created) # update a readthrough, if needed - try: - edit_readthrough(request) - except Http404: - pass + if bool(request.POST.get("id")): + try: + edit_readthrough(request) + except Http404: + pass # force page reload if this was triggered from 'move' button if bool(request.POST.get("shelf")): From b273123708c3c2ee4a74d0722edaaba99f0e4eaf Mon Sep 17 00:00:00 2001 From: Hugh Rundle Date: Sat, 20 Nov 2021 16:06:16 +1100 Subject: [PATCH 12/31] code style --- bookwyrm/static/js/status_cache.js | 1 + bookwyrm/templatetags/bookwyrm_tags.py | 6 +++++- bookwyrm/views/reading.py | 13 +++++++------ bookwyrm/views/shelf/shelf_actions.py | 2 +- bookwyrm/views/status.py | 2 +- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/bookwyrm/static/js/status_cache.js b/bookwyrm/static/js/status_cache.js index c59e23ee4..49f1c1295 100644 --- a/bookwyrm/static/js/status_cache.js +++ b/bookwyrm/static/js/status_cache.js @@ -192,6 +192,7 @@ let StatusCache = new class { .forEach(item => BookWyrm.addRemoveClass(item, "is-hidden", false)); // Remove existing disabled states + // BUG: this affects all shelves, not just shelving status shelves button.querySelectorAll("[data-shelf-dropdown-identifier] button") .forEach(item => item.disabled = false); diff --git a/bookwyrm/templatetags/bookwyrm_tags.py b/bookwyrm/templatetags/bookwyrm_tags.py index 425ecc158..9d84d1ff8 100644 --- a/bookwyrm/templatetags/bookwyrm_tags.py +++ b/bookwyrm/templatetags/bookwyrm_tags.py @@ -77,7 +77,11 @@ def related_status(notification): def active_shelf(context, book): """check what shelf a user has a book on, if any""" if hasattr(book, "current_shelves"): - read_shelves = [s for s in book.current_shelves if s.shelf.identifier in models.Shelf.READ_STATUS_IDENTIFIERS] + read_shelves = [ + s + for s in book.current_shelves + if s.shelf.identifier in models.Shelf.READ_STATUS_IDENTIFIERS + ] return read_shelves[0] if len(read_shelves) else {"book": book} shelf = ( diff --git a/bookwyrm/views/reading.py b/bookwyrm/views/reading.py index 04074b3db..334235b34 100644 --- a/bookwyrm/views/reading.py +++ b/bookwyrm/views/reading.py @@ -91,17 +91,18 @@ class ReadingStatus(View): handle_reading_status(request.user, desired_shelf, book, privacy) # if the request includes a "shelf" value we are using the 'move' button - if bool(request.POST.get("shelf")): + if bool(request.POST.get("shelf")): # unshelve the existing shelf this_shelf = request.POST.get("shelf") if ( - bool(current_status_shelfbook) and - int(this_shelf) != int(current_status_shelfbook.shelf.id) and - current_status_shelfbook.shelf.identifier != desired_shelf.identifier - ): + bool(current_status_shelfbook) + and int(this_shelf) != int(current_status_shelfbook.shelf.id) + and current_status_shelfbook.shelf.identifier + != desired_shelf.identifier + ): return unshelve(request, referer=referer, book_id=book_id) # don't try to unshelve a read status shelf: it has already been deleted. - return HttpResponse(headers={"forceReload" : "true"}) + return HttpResponse(headers={"forceReload": "true"}) if is_api_request(request): return HttpResponse() diff --git a/bookwyrm/views/shelf/shelf_actions.py b/bookwyrm/views/shelf/shelf_actions.py index 8240055e2..f431c1fab 100644 --- a/bookwyrm/views/shelf/shelf_actions.py +++ b/bookwyrm/views/shelf/shelf_actions.py @@ -102,5 +102,5 @@ def unshelve(request, referer=None, book_id=False): shelf_book.raise_not_deletable(request.user) shelf_book.delete() if bool(referer): - return HttpResponse(headers={"forceReload" : "true"}) + return HttpResponse(headers={"forceReload": "true"}) return redirect(request.headers.get("Referer", "/")) diff --git a/bookwyrm/views/status.py b/bookwyrm/views/status.py index 8488b21e0..eafe0680e 100644 --- a/bookwyrm/views/status.py +++ b/bookwyrm/views/status.py @@ -126,7 +126,7 @@ class CreateStatus(View): # force page reload if this was triggered from 'move' button if bool(request.POST.get("shelf")): - return HttpResponse(headers={"forceReload" : "true"}) + return HttpResponse(headers={"forceReload": "true"}) if is_api_request(request): return HttpResponse() From 4b6f5c9f5179abc3d000d1424edd7c1af39ac51d Mon Sep 17 00:00:00 2001 From: Hugh Rundle Date: Sat, 20 Nov 2021 19:03:57 +1100 Subject: [PATCH 13/31] remove out of date comment --- bookwyrm/views/status.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/bookwyrm/views/status.py b/bookwyrm/views/status.py index eafe0680e..588dcf6ac 100644 --- a/bookwyrm/views/status.py +++ b/bookwyrm/views/status.py @@ -162,8 +162,6 @@ def update_progress(request, book_id): # pylint: disable=unused-argument @require_POST def edit_readthrough(request): """can't use the form because the dates are too finnicky""" - # BUG when triggering finish reading with comments and no previous readthroughs - # this will 404 readthrough = get_object_or_404(models.ReadThrough, id=request.POST.get("id")) readthrough.raise_not_editable(request.user) From b406a0353301d74cb380411049b67262e4074205 Mon Sep 17 00:00:00 2001 From: Hugh Rundle Date: Sat, 20 Nov 2021 19:04:51 +1100 Subject: [PATCH 14/31] don't persist form state in firefox Fixes shelves not being disabled in dropdowns. See https://stackoverflow.com/questions/5985839/bug-with-firefox-disabled-attribute-of-input-not-resetting-when-refreshing --- .../snippets/shelve_button/shelve_button_dropdown_options.html | 2 +- bookwyrm/templates/snippets/toggle/toggle_button.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html b/bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html index 32319f863..8c1881ce9 100644 --- a/bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html +++ b/bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html @@ -32,7 +32,7 @@ {% elif shelf.editable %} -
    + {% csrf_token %}
    diff --git a/bookwyrm/views/books/edit_book.py b/bookwyrm/views/books/edit_book.py index 1445dc011..0bacd6074 100644 --- a/bookwyrm/views/books/edit_book.py +++ b/bookwyrm/views/books/edit_book.py @@ -43,12 +43,12 @@ class EditBook(View): if not form.is_valid(): return TemplateResponse(request, "book/edit/edit_book.html", data) - add_author = request.POST.get("add_author") + add_author = request.POST.getlist("add_author") # we're adding an author through a free text field if add_author: data["add_author"] = add_author data["author_matches"] = [] - for author in add_author.split(","): + for author in add_author: if not author: continue # check for existing authors From c704c7eb8f485e0776577718142d29e8f150e500 Mon Sep 17 00:00:00 2001 From: Hugh Rundle Date: Thu, 25 Nov 2021 07:38:08 +1100 Subject: [PATCH 18/31] remove from any shelf in all books shelf view - fixes removing book from 'all books' shelf erroring - remove from any shelf item is on when in 'all books' --- .../templates/snippets/shelf_selector.html | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/bookwyrm/templates/snippets/shelf_selector.html b/bookwyrm/templates/snippets/shelf_selector.html index 1a2c46d01..663bd5633 100644 --- a/bookwyrm/templates/snippets/shelf_selector.html +++ b/bookwyrm/templates/snippets/shelf_selector.html @@ -53,15 +53,30 @@ {% endwith %} {% endif %} {% endfor %} - + +{% if shelf.identifier == 'all' %} +{% for shelved_in in book.shelves.all %} + +{% endfor %} +{% else %} + + +{% endif %} {% include 'snippets/reading_modals/want_to_read_modal.html' with book=active_shelf.book controls_text="want_to_read" controls_uid=uuid move_from=current.id %} From b91915d31680b71864ba14cc686442fb58a2c9c1 Mon Sep 17 00:00:00 2001 From: Hugh Rundle Date: Thu, 25 Nov 2021 08:20:34 +1100 Subject: [PATCH 19/31] change shelf var for shelf_selector in book view --- bookwyrm/templates/book/book.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 1eb08001d..713e7abee 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -162,7 +162,7 @@
  • {% blocktrans with path=shelf.shelf.local_path shelf_name=shelf.shelf.name %}{{ shelf_name }}{% endblocktrans %}
    - {% include 'snippets/shelf_selector.html' with current=shelf.shelf class="is-small" readthrough=readthrough %} + {% include 'snippets/shelf_selector.html' with shelf=shelf.shelf class="is-small" readthrough=readthrough %}
  • {% endfor %} From 5b67226571d85d281e3ccedc2710084ffceb2201 Mon Sep 17 00:00:00 2001 From: Hugh Rundle Date: Thu, 25 Nov 2021 19:12:03 +1100 Subject: [PATCH 20/31] forceReload prevents ajax submission ...instead of weird hacky workarounds forcing refreshes later. --- bookwyrm/static/js/status_cache.js | 8 +------- bookwyrm/views/reading.py | 2 -- bookwyrm/views/shelf/shelf_actions.py | 2 -- bookwyrm/views/status.py | 4 ---- 4 files changed, 1 insertion(+), 15 deletions(-) diff --git a/bookwyrm/static/js/status_cache.js b/bookwyrm/static/js/status_cache.js index f179aa7d9..1ec72b3cb 100644 --- a/bookwyrm/static/js/status_cache.js +++ b/bookwyrm/static/js/status_cache.js @@ -74,7 +74,7 @@ let StatusCache = new class { // This allows the form to submit in the old fashioned way if there's a problem - if (!trigger || !form) { + if (!trigger || !form || response.headers.get("forceReload")) { return; } @@ -90,12 +90,6 @@ let StatusCache = new class { trigger.removeAttribute('disabled'); }) .then(response => { - if (response.headers.get("forceReload")) { - BookWyrm.addRemoveClass(form, 'is-processing', true); - trigger.setAttribute('disabled', null); - - return location.reload(); - } if (!response.ok) { throw new Error(); diff --git a/bookwyrm/views/reading.py b/bookwyrm/views/reading.py index 75a45f245..a91fa8e7a 100644 --- a/bookwyrm/views/reading.py +++ b/bookwyrm/views/reading.py @@ -102,8 +102,6 @@ class ReadingStatus(View): != desired_shelf.identifier ): return unshelve(request, referer=referer, book_id=book_id) - # don't try to unshelve a read status shelf: it has already been deleted. - return HttpResponse(headers={"forceReload": "true"}) if is_api_request(request): return HttpResponse() diff --git a/bookwyrm/views/shelf/shelf_actions.py b/bookwyrm/views/shelf/shelf_actions.py index 77053f534..3fff92a6a 100644 --- a/bookwyrm/views/shelf/shelf_actions.py +++ b/bookwyrm/views/shelf/shelf_actions.py @@ -101,6 +101,4 @@ def unshelve(request, referer=None, book_id=False): ) shelf_book.raise_not_deletable(request.user) shelf_book.delete() - if bool(referer): - return HttpResponse(headers={"forceReload": "true"}) return redirect(request.headers.get("Referer", "/")) diff --git a/bookwyrm/views/status.py b/bookwyrm/views/status.py index 144408b50..bb69d30c0 100644 --- a/bookwyrm/views/status.py +++ b/bookwyrm/views/status.py @@ -125,10 +125,6 @@ class CreateStatus(View): except Http404: pass - # force page reload if this was triggered from 'move' button - if bool(request.POST.get("shelf")): - return HttpResponse(headers={"forceReload": "true"}) - if is_api_request(request): return HttpResponse() return redirect("/") From 951eb43aa657d9ced537b078bf14286520b18a66 Mon Sep 17 00:00:00 2001 From: Hugh Rundle Date: Fri, 26 Nov 2021 17:16:26 +1100 Subject: [PATCH 21/31] bypass ajax for shelf_selector statuses --- bookwyrm/static/js/status_cache.js | 3 +-- .../snippets/reading_modals/finish_reading_modal.html | 2 +- .../snippets/reading_modals/start_reading_modal.html | 2 +- .../snippets/reading_modals/want_to_read_modal.html | 2 +- bookwyrm/templates/snippets/shelf_selector.html | 6 +++--- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/bookwyrm/static/js/status_cache.js b/bookwyrm/static/js/status_cache.js index 1ec72b3cb..418b7dee2 100644 --- a/bookwyrm/static/js/status_cache.js +++ b/bookwyrm/static/js/status_cache.js @@ -74,7 +74,7 @@ let StatusCache = new class { // This allows the form to submit in the old fashioned way if there's a problem - if (!trigger || !form || response.headers.get("forceReload")) { + if (!trigger || !form) { return; } @@ -90,7 +90,6 @@ let StatusCache = new class { trigger.removeAttribute('disabled'); }) .then(response => { - if (!response.ok) { throw new Error(); } diff --git a/bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html b/bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html index 79542b29a..a35ed9e0b 100644 --- a/bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html +++ b/bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html @@ -9,7 +9,7 @@ Finish "{{ book_title }}" {% endblock %} {% block modal-form-open %} -
    + {% csrf_token %} diff --git a/bookwyrm/templates/snippets/reading_modals/start_reading_modal.html b/bookwyrm/templates/snippets/reading_modals/start_reading_modal.html index 03ebd9003..423f77ebe 100644 --- a/bookwyrm/templates/snippets/reading_modals/start_reading_modal.html +++ b/bookwyrm/templates/snippets/reading_modals/start_reading_modal.html @@ -9,7 +9,7 @@ Start "{{ book_title }}" {% endblock %} {% block modal-form-open %} - + {% csrf_token %} diff --git a/bookwyrm/templates/snippets/reading_modals/want_to_read_modal.html b/bookwyrm/templates/snippets/reading_modals/want_to_read_modal.html index 2fc2a012d..2fb976bf1 100644 --- a/bookwyrm/templates/snippets/reading_modals/want_to_read_modal.html +++ b/bookwyrm/templates/snippets/reading_modals/want_to_read_modal.html @@ -9,7 +9,7 @@ Want to Read "{{ book_title }}" {% endblock %} {% block modal-form-open %} - + {% csrf_token %} diff --git a/bookwyrm/templates/snippets/shelf_selector.html b/bookwyrm/templates/snippets/shelf_selector.html index 663bd5633..4b32f5a8e 100644 --- a/bookwyrm/templates/snippets/shelf_selector.html +++ b/bookwyrm/templates/snippets/shelf_selector.html @@ -78,11 +78,11 @@ {% endif %} -{% include 'snippets/reading_modals/want_to_read_modal.html' with book=active_shelf.book controls_text="want_to_read" controls_uid=uuid move_from=current.id %} +{% include 'snippets/reading_modals/want_to_read_modal.html' with book=active_shelf.book controls_text="want_to_read" controls_uid=uuid move_from=current.id refresh=True %} -{% include 'snippets/reading_modals/start_reading_modal.html' with book=active_shelf.book controls_text="start_reading" controls_uid=uuid move_from=current.id %} +{% include 'snippets/reading_modals/start_reading_modal.html' with book=active_shelf.book controls_text="start_reading" controls_uid=uuid move_from=current.id refresh=True %} -{% include 'snippets/reading_modals/finish_reading_modal.html' with book=active_shelf.book controls_text="finish_reading" controls_uid=uuid move_from=current.id readthrough=readthrough %} +{% include 'snippets/reading_modals/finish_reading_modal.html' with book=active_shelf.book controls_text="finish_reading" controls_uid=uuid move_from=current.id readthrough=readthrough refresh=True %} {% endwith %} {% endblock %} From a5efc798f8e7a897badc301736443f5f7087affb Mon Sep 17 00:00:00 2001 From: Hugh Rundle Date: Fri, 26 Nov 2021 17:30:27 +1100 Subject: [PATCH 22/31] clean up old vars --- bookwyrm/views/shelf/shelf_actions.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bookwyrm/views/shelf/shelf_actions.py b/bookwyrm/views/shelf/shelf_actions.py index 3fff92a6a..5e7e6c0c9 100644 --- a/bookwyrm/views/shelf/shelf_actions.py +++ b/bookwyrm/views/shelf/shelf_actions.py @@ -1,7 +1,6 @@ """ shelf views """ from django.db import IntegrityError, transaction from django.contrib.auth.decorators import login_required -from django.http.response import HttpResponse from django.shortcuts import get_object_or_404, redirect from django.views.decorators.http import require_POST @@ -92,7 +91,7 @@ def shelve(request): @login_required @require_POST -def unshelve(request, referer=None, book_id=False): +def unshelve(request, book_id=False): """remove a book from a user's shelf""" identity = book_id if book_id else request.POST.get("book") book = get_object_or_404(models.Edition, id=identity) From 1a37903583235ff2b4d0b98767ef3e91ac3ffeb3 Mon Sep 17 00:00:00 2001 From: Hugh Rundle Date: Fri, 26 Nov 2021 17:39:35 +1100 Subject: [PATCH 23/31] remove unnecessary function call arg --- bookwyrm/views/reading.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/views/reading.py b/bookwyrm/views/reading.py index a91fa8e7a..35847558e 100644 --- a/bookwyrm/views/reading.py +++ b/bookwyrm/views/reading.py @@ -101,7 +101,7 @@ class ReadingStatus(View): and current_status_shelfbook.shelf.identifier != desired_shelf.identifier ): - return unshelve(request, referer=referer, book_id=book_id) + return unshelve(request, book_id=book_id) if is_api_request(request): return HttpResponse() From 54cef421e291295cac79062ceec53e145b6e397e Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 28 Nov 2021 07:57:27 -0800 Subject: [PATCH 24/31] Fixes checking if image fields are already set --- bookwyrm/models/fields.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bookwyrm/models/fields.py b/bookwyrm/models/fields.py index 361079906..a28ad0ea2 100644 --- a/bookwyrm/models/fields.py +++ b/bookwyrm/models/fields.py @@ -398,7 +398,11 @@ class ImageField(ActivitypubFieldMixin, models.ImageField): if formatted is None or formatted is MISSING: return False - if not overwrite and hasattr(instance, self.name): + if ( + not overwrite + and hasattr(instance, self.name) + and getattr(instance, self.name) + ): return False getattr(instance, self.name).save(*formatted, save=save) From 7b89014e7baa35cf600559f18cf1588b77d8c44d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 28 Nov 2021 08:24:00 -0800 Subject: [PATCH 25/31] Updates image fields tests --- bookwyrm/tests/models/test_fields.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/bookwyrm/tests/models/test_fields.py b/bookwyrm/tests/models/test_fields.py index 74f4c48bd..6499e96cb 100644 --- a/bookwyrm/tests/models/test_fields.py +++ b/bookwyrm/tests/models/test_fields.py @@ -215,7 +215,7 @@ class ModelFields(TestCase): "rat", "rat@rat.rat", "ratword", local=True, localname="rat" ) public = "https://www.w3.org/ns/activitystreams#Public" - followers = "%s/followers" % user.remote_id + followers = f"{user.remote_id}/followers" instance = fields.PrivacyField() instance.name = "privacy_field" @@ -409,11 +409,10 @@ class ModelFields(TestCase): """loadin' a list of items from Links""" # TODO - @responses.activate @patch("bookwyrm.models.activitypub_mixin.ObjectMixin.broadcast") @patch("bookwyrm.suggested_users.remove_user_task.delay") - def test_image_field(self, *_): - """storing images""" + def test_image_field_to_activity(self, *_): + """serialize an image field to activitypub""" user = User.objects.create_user( "mouse", "mouse@mouse.mouse", "mouseword", local=True, localname="mouse" ) @@ -437,10 +436,22 @@ class ModelFields(TestCase): self.assertEqual(output.name, "") self.assertEqual(output.type, "Document") + @responses.activate + def test_image_field_from_activity(self, *_): + """load an image from activitypub""" + image_file = pathlib.Path(__file__).parent.joinpath( + "../../static/images/default_avi.jpg" + ) + image = Image.open(image_file) + output = BytesIO() + image.save(output, format=image.format) + + instance = fields.ImageField() + responses.add( responses.GET, "http://www.example.com/image.jpg", - body=user.avatar.file.read(), + body=image.tobytes(), status=200, ) loaded_image = instance.field_from_activity("http://www.example.com/image.jpg") From a7ee8fea247935556a1f21705c1bc485d9cf4682 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 28 Nov 2021 08:49:54 -0800 Subject: [PATCH 26/31] Adds test for setting model image field --- bookwyrm/tests/models/test_fields.py | 29 +++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/bookwyrm/tests/models/test_fields.py b/bookwyrm/tests/models/test_fields.py index 6499e96cb..278272d87 100644 --- a/bookwyrm/tests/models/test_fields.py +++ b/bookwyrm/tests/models/test_fields.py @@ -19,7 +19,7 @@ from django.utils import timezone from bookwyrm import activitypub from bookwyrm.activitypub.base_activity import ActivityObject -from bookwyrm.models import fields, User, Status +from bookwyrm.models import fields, User, Status, Edition from bookwyrm.models.base_model import BookWyrmModel from bookwyrm.models.activitypub_mixin import ActivitypubMixin from bookwyrm.settings import DOMAIN @@ -458,6 +458,33 @@ class ModelFields(TestCase): self.assertIsInstance(loaded_image, list) self.assertIsInstance(loaded_image[1], ContentFile) + @responses.activate + def test_image_field_set_field_from_activity(self, *_): + """update a model instance from an activitypub object""" + image_file = pathlib.Path(__file__).parent.joinpath( + "../../static/images/default_avi.jpg" + ) + image = Image.open(image_file) + output = BytesIO() + image.save(output, format=image.format) + + instance = fields.ImageField(activitypub_field="cover", name="cover") + + responses.add( + responses.GET, + "http://www.example.com/image.jpg", + body=image.tobytes(), + status=200, + ) + book = Edition.objects.create(title="hello") + + MockActivity = namedtuple("MockActivity", ("cover")) + mock_activity = MockActivity("http://www.example.com/image.jpg") + + instance.set_field_from_activity(book, mock_activity) + self.assertIsNotNone(book.cover.name) + self.assertEqual(book.cover.size, 43200) + def test_datetime_field(self, *_): """this one is pretty simple, it just has to use isoformat""" instance = fields.DateTimeField() From 3a7f070a798760301cc6c50f6e48338e29094bf7 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 28 Nov 2021 08:50:29 -0800 Subject: [PATCH 27/31] Typo fix --- bookwyrm/models/fields.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/models/fields.py b/bookwyrm/models/fields.py index a28ad0ea2..7d14f88f9 100644 --- a/bookwyrm/models/fields.py +++ b/bookwyrm/models/fields.py @@ -296,7 +296,7 @@ class ManyToManyField(ActivitypubFieldMixin, models.ManyToManyField): super().__init__(*args, **kwargs) def set_field_from_activity(self, instance, data, overwrite=True): - """helper function for assinging a value to the field""" + """helper function for assigning a value to the field""" if not overwrite and getattr(instance, self.name).exists(): return False From 3f09b4bc8a44db937c2cfbe02f53b78010fba801 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 28 Nov 2021 09:23:13 -0800 Subject: [PATCH 28/31] More tests --- bookwyrm/tests/models/test_fields.py | 100 +++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/bookwyrm/tests/models/test_fields.py b/bookwyrm/tests/models/test_fields.py index 278272d87..8028a305e 100644 --- a/bookwyrm/tests/models/test_fields.py +++ b/bookwyrm/tests/models/test_fields.py @@ -485,6 +485,106 @@ class ModelFields(TestCase): self.assertIsNotNone(book.cover.name) self.assertEqual(book.cover.size, 43200) + @responses.activate + def test_image_field_set_field_from_activity_no_overwrite_no_cover(self, *_): + """update a model instance from an activitypub object""" + image_file = pathlib.Path(__file__).parent.joinpath( + "../../static/images/default_avi.jpg" + ) + image = Image.open(image_file) + output = BytesIO() + image.save(output, format=image.format) + + instance = fields.ImageField(activitypub_field="cover", name="cover") + + responses.add( + responses.GET, + "http://www.example.com/image.jpg", + body=image.tobytes(), + status=200, + ) + book = Edition.objects.create(title="hello") + + MockActivity = namedtuple("MockActivity", ("cover")) + mock_activity = MockActivity("http://www.example.com/image.jpg") + + instance.set_field_from_activity(book, mock_activity, overwrite=False) + self.assertIsNotNone(book.cover.name) + self.assertEqual(book.cover.size, 43200) + + @responses.activate + def test_image_field_set_field_from_activity_no_overwrite_with_cover(self, *_): + """update a model instance from an activitypub object""" + image_file = pathlib.Path(__file__).parent.joinpath( + "../../static/images/default_avi.jpg" + ) + image = Image.open(image_file) + output = BytesIO() + image.save(output, format=image.format) + + another_image_file = pathlib.Path(__file__).parent.joinpath( + "../../static/images/logo.png" + ) + another_image = Image.open(another_image_file) + another_output = BytesIO() + another_image.save(another_output, format=another_image.format) + + instance = fields.ImageField(activitypub_field="cover", name="cover") + + responses.add( + responses.GET, + "http://www.example.com/image.jpg", + body=another_image.tobytes(), + status=200, + ) + book = Edition.objects.create(title="hello") + book.cover.save("test.jpg", ContentFile(output.getvalue())) + self.assertEqual(book.cover.size, 2136) + + MockActivity = namedtuple("MockActivity", ("cover")) + mock_activity = MockActivity("http://www.example.com/image.jpg") + + instance.set_field_from_activity(book, mock_activity, overwrite=False) + # same cover as before + self.assertEqual(book.cover.size, 2136) + + @responses.activate + def test_image_field_set_field_from_activity_with_overwrite_with_cover(self, *_): + """update a model instance from an activitypub object""" + image_file = pathlib.Path(__file__).parent.joinpath( + "../../static/images/default_avi.jpg" + ) + image = Image.open(image_file) + output = BytesIO() + image.save(output, format=image.format) + book = Edition.objects.create(title="hello") + book.cover.save("test.jpg", ContentFile(output.getvalue())) + self.assertEqual(book.cover.size, 2136) + + another_image_file = pathlib.Path(__file__).parent.joinpath( + "../../static/images/logo.png" + ) + another_image = Image.open(another_image_file) + another_output = BytesIO() + another_image.save(another_output, format=another_image.format) + + instance = fields.ImageField(activitypub_field="cover", name="cover") + + responses.add( + responses.GET, + "http://www.example.com/image.jpg", + body=another_image.tobytes(), + status=200, + ) + + MockActivity = namedtuple("MockActivity", ("cover")) + mock_activity = MockActivity("http://www.example.com/image.jpg") + + instance.set_field_from_activity(book, mock_activity, overwrite=True) + # new cover + self.assertIsNotNone(book.cover.name) + self.assertEqual(book.cover.size, 376800) + def test_datetime_field(self, *_): """this one is pretty simple, it just has to use isoformat""" instance = fields.DateTimeField() From 66e414be3ca8b4de8426d3acc49608a7bd614fae Mon Sep 17 00:00:00 2001 From: Chad Nelson Date: Tue, 30 Nov 2021 17:21:28 -0500 Subject: [PATCH 29/31] Standardize JS, use button, & filter empty authors --- bookwyrm/static/js/bookwyrm.js | 11 ++++++++++- bookwyrm/templates/book/edit/edit_book_form.html | 2 +- bookwyrm/views/books/edit_book.py | 4 ++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/bookwyrm/static/js/bookwyrm.js b/bookwyrm/static/js/bookwyrm.js index bf5efb465..e18087eeb 100644 --- a/bookwyrm/static/js/bookwyrm.js +++ b/bookwyrm/static/js/bookwyrm.js @@ -45,6 +45,13 @@ let BookWyrm = new class { 'change', this.disableIfTooLarge.bind(this) )); + + document.querySelectorAll('[data-duplicate]') + .forEach(node => node.addEventListener( + 'click', + this.duplicateInput.bind(this) + + )) } /** @@ -369,7 +376,9 @@ let BookWyrm = new class { } } - duplicateInput (input_id ) { + duplicateInput (event ) { + const trigger = event.currentTarget; + const input_id = trigger.dataset['duplicate'] const orig = document.getElementById(input_id); const parent = orig.parentNode; const new_count = parent.querySelectorAll("input").length + 1 diff --git a/bookwyrm/templates/book/edit/edit_book_form.html b/bookwyrm/templates/book/edit/edit_book_form.html index 841a3c53c..25d24e43d 100644 --- a/bookwyrm/templates/book/edit/edit_book_form.html +++ b/bookwyrm/templates/book/edit/edit_book_form.html @@ -128,7 +128,7 @@ {% endfor %} - {% trans "Add Another Author" %} + diff --git a/bookwyrm/views/books/edit_book.py b/bookwyrm/views/books/edit_book.py index 0bacd6074..917271fcb 100644 --- a/bookwyrm/views/books/edit_book.py +++ b/bookwyrm/views/books/edit_book.py @@ -43,8 +43,8 @@ class EditBook(View): if not form.is_valid(): return TemplateResponse(request, "book/edit/edit_book.html", data) - add_author = request.POST.getlist("add_author") - # we're adding an author through a free text field + # filter out empty author fields + add_author = [author for author in request.POST.getlist("add_author") if author] if add_author: data["add_author"] = add_author data["author_matches"] = [] From 91997b6f4c5874dfe53bea15df4f23fcdbaad814 Mon Sep 17 00:00:00 2001 From: Chad Nelson Date: Tue, 30 Nov 2021 17:42:31 -0500 Subject: [PATCH 30/31] Linting after merge conflict --- bookwyrm/views/books/edit_book.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/views/books/edit_book.py b/bookwyrm/views/books/edit_book.py index 930becac2..755c25b4c 100644 --- a/bookwyrm/views/books/edit_book.py +++ b/bookwyrm/views/books/edit_book.py @@ -57,7 +57,7 @@ class EditBook(View): data["add_author"] = add_author data["author_matches"] = [] data["isni_matches"] = [] - + for author in add_author: if not author: continue From 0794f1a28642a85ef4bbf382823d7c34fff5e2cc Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 2 Dec 2021 10:28:13 -0800 Subject: [PATCH 31/31] Updates locales --- bw-dev | 1 + locale/en_US/LC_MESSAGES/django.po | 92 +++++++++++++++++---------- locale/fr_FR/LC_MESSAGES/django.mo | Bin 44850 -> 65763 bytes locale/lt_LT/LC_MESSAGES/django.mo | Bin 65147 -> 65121 bytes locale/lt_LT/LC_MESSAGES/django.po | 22 +++---- locale/zh_Hans/LC_MESSAGES/django.mo | Bin 44096 -> 59480 bytes locale/zh_Hans/LC_MESSAGES/django.po | 66 +++++++++---------- 7 files changed, 103 insertions(+), 78 deletions(-) diff --git a/bw-dev b/bw-dev index 75c69662b..cfe8747fb 100755 --- a/bw-dev +++ b/bw-dev @@ -118,6 +118,7 @@ case "$CMD" in git checkout l10n_main locale/pt_BR git checkout l10n_main locale/zh_Hans git checkout l10n_main locale/zh_Hant + runweb django-admin makemessages --no-wrap --ignore=venv -l en_US $@ runweb django-admin compilemessages --ignore venv ;; build) diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index f5df1265d..5080502f5 100644 --- a/locale/en_US/LC_MESSAGES/django.po +++ b/locale/en_US/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-17 18:03+0000\n" +"POT-Creation-Date: 2021-12-02 18:24+0000\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -227,47 +227,51 @@ msgstr "" msgid "Something went wrong! Sorry about that." msgstr "" -#: bookwyrm/templates/author/author.html:17 #: bookwyrm/templates/author/author.html:18 +#: bookwyrm/templates/author/author.html:19 msgid "Edit Author" msgstr "" -#: bookwyrm/templates/author/author.html:34 +#: bookwyrm/templates/author/author.html:35 #: bookwyrm/templates/author/edit_author.html:43 msgid "Aliases:" msgstr "" -#: bookwyrm/templates/author/author.html:45 +#: bookwyrm/templates/author/author.html:46 msgid "Born:" msgstr "" -#: bookwyrm/templates/author/author.html:52 +#: bookwyrm/templates/author/author.html:53 msgid "Died:" msgstr "" -#: bookwyrm/templates/author/author.html:61 +#: bookwyrm/templates/author/author.html:62 msgid "Wikipedia" msgstr "" -#: bookwyrm/templates/author/author.html:69 +#: bookwyrm/templates/author/author.html:70 +msgid "View ISNI record" +msgstr "" + +#: bookwyrm/templates/author/author.html:78 #: bookwyrm/templates/book/book.html:94 msgid "View on OpenLibrary" msgstr "" -#: bookwyrm/templates/author/author.html:77 +#: bookwyrm/templates/author/author.html:86 #: bookwyrm/templates/book/book.html:97 msgid "View on Inventaire" msgstr "" -#: bookwyrm/templates/author/author.html:85 +#: bookwyrm/templates/author/author.html:94 msgid "View on LibraryThing" msgstr "" -#: bookwyrm/templates/author/author.html:93 +#: bookwyrm/templates/author/author.html:102 msgid "View on Goodreads" msgstr "" -#: bookwyrm/templates/author/author.html:108 +#: bookwyrm/templates/author/author.html:117 #, python-format msgid "Books by %(name)s" msgstr "" @@ -277,17 +281,17 @@ msgid "Edit Author:" msgstr "" #: bookwyrm/templates/author/edit_author.html:13 -#: bookwyrm/templates/book/edit/edit_book.html:18 +#: bookwyrm/templates/book/edit/edit_book.html:19 msgid "Added:" msgstr "" #: bookwyrm/templates/author/edit_author.html:14 -#: bookwyrm/templates/book/edit/edit_book.html:21 +#: bookwyrm/templates/book/edit/edit_book.html:22 msgid "Updated:" msgstr "" #: bookwyrm/templates/author/edit_author.html:16 -#: bookwyrm/templates/book/edit/edit_book.html:25 +#: bookwyrm/templates/book/edit/edit_book.html:26 msgid "Last edited by:" msgstr "" @@ -347,7 +351,7 @@ msgstr "" #: bookwyrm/templates/author/edit_author.html:118 #: bookwyrm/templates/book/book.html:140 -#: bookwyrm/templates/book/edit/edit_book.html:110 +#: bookwyrm/templates/book/edit/edit_book.html:121 #: bookwyrm/templates/book/readthrough.html:76 #: bookwyrm/templates/groups/form.html:24 #: bookwyrm/templates/lists/bookmark_button.html:15 @@ -366,8 +370,8 @@ msgstr "" #: bookwyrm/templates/author/edit_author.html:119 #: bookwyrm/templates/book/book.html:141 bookwyrm/templates/book/book.html:190 #: bookwyrm/templates/book/cover_modal.html:32 -#: bookwyrm/templates/book/edit/edit_book.html:112 -#: bookwyrm/templates/book/edit/edit_book.html:115 +#: bookwyrm/templates/book/edit/edit_book.html:123 +#: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/readthrough.html:77 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:17 @@ -513,56 +517,60 @@ msgstr "" msgid "Load cover from url:" msgstr "" -#: bookwyrm/templates/book/edit/edit_book.html:5 -#: bookwyrm/templates/book/edit/edit_book.html:11 +#: bookwyrm/templates/book/edit/edit_book.html:6 +#: bookwyrm/templates/book/edit/edit_book.html:12 #, python-format msgid "Edit \"%(book_title)s\"" msgstr "" -#: bookwyrm/templates/book/edit/edit_book.html:5 -#: bookwyrm/templates/book/edit/edit_book.html:13 +#: bookwyrm/templates/book/edit/edit_book.html:6 +#: bookwyrm/templates/book/edit/edit_book.html:14 msgid "Add Book" msgstr "" -#: bookwyrm/templates/book/edit/edit_book.html:47 +#: bookwyrm/templates/book/edit/edit_book.html:48 msgid "Confirm Book Info" msgstr "" -#: bookwyrm/templates/book/edit/edit_book.html:55 +#: bookwyrm/templates/book/edit/edit_book.html:56 #, python-format -msgid "Is \"%(name)s\" an existing author?" +msgid "Is \"%(name)s\" one of these authors?" msgstr "" -#: bookwyrm/templates/book/edit/edit_book.html:64 -#, python-format -msgid "Author of %(book_title)s" +#: bookwyrm/templates/book/edit/edit_book.html:67 +#: bookwyrm/templates/book/edit/edit_book.html:69 +msgid "Author of " msgstr "" -#: bookwyrm/templates/book/edit/edit_book.html:68 +#: bookwyrm/templates/book/edit/edit_book.html:69 +msgid "Find more information at isni.org" +msgstr "" + +#: bookwyrm/templates/book/edit/edit_book.html:79 msgid "This is a new author" msgstr "" -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:86 #, python-format msgid "Creating a new author: %(name)s" msgstr "" -#: bookwyrm/templates/book/edit/edit_book.html:82 +#: bookwyrm/templates/book/edit/edit_book.html:93 msgid "Is this an edition of an existing work?" msgstr "" -#: bookwyrm/templates/book/edit/edit_book.html:90 +#: bookwyrm/templates/book/edit/edit_book.html:101 msgid "This is a new work" msgstr "" -#: bookwyrm/templates/book/edit/edit_book.html:97 +#: bookwyrm/templates/book/edit/edit_book.html:108 #: bookwyrm/templates/groups/members.html:16 #: bookwyrm/templates/landing/password_reset.html:30 #: bookwyrm/templates/snippets/remove_from_group_button.html:16 msgid "Confirm" msgstr "" -#: bookwyrm/templates/book/edit/edit_book.html:99 +#: bookwyrm/templates/book/edit/edit_book.html:110 #: bookwyrm/templates/feed/status.html:9 msgid "Back" msgstr "" @@ -1016,6 +1024,22 @@ msgstr "" msgid "Learn more about %(site_name)s:" msgstr "" +#: bookwyrm/templates/email/moderation_report/html_content.html:6 +#: bookwyrm/templates/email/moderation_report/text_content.html:5 +#, python-format +msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation. " +msgstr "" + +#: bookwyrm/templates/email/moderation_report/html_content.html:9 +#: bookwyrm/templates/email/moderation_report/text_content.html:7 +msgid "View report" +msgstr "" + +#: bookwyrm/templates/email/moderation_report/subject.html:2 +#, python-format +msgid "New report for %(site_name)s" +msgstr "" + #: bookwyrm/templates/email/password_reset/html_content.html:6 #: bookwyrm/templates/email/password_reset/text_content.html:4 #, python-format @@ -3842,7 +3866,7 @@ msgstr "" msgid "File exceeds maximum size: 10MB" msgstr "" -#: bookwyrm/templatetags/utilities.py:31 +#: bookwyrm/templatetags/utilities.py:34 #, python-format msgid "%(title)s: %(subtitle)s" msgstr "" diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo index 4cdcbf8ea2a3ffdeed740317a055f435e5954b7c..cc69e82cf8477c385d869a23d3e81c5947773963 100644 GIT binary patch literal 65763 zcmca7#4?qEfq}t>nSnuufq~(VBm+Yz3j@O)V~{8VgMljpgBAk=gP|(}gD3+7LyRi} zgA)S-Ly;>3gAD@%!&X-Y20aD_hEJ{x3}Flm42o_H4Dk#M3>9t+4AKk?3^&{u7>pPg z7{0hc%u#n|U=U+qUufkDTEfq|ca zfx*Xvfk7N(uLlEz0s{j>i3bCN4+8_kR1XFQ5e5c^M^O3i9t;e!3=9nXo(v2j3=9mq zo(v3X3=9lSo)Gbso)GoNJsB937#JAtcrq|3GB7aw_k{RM(TjmWl7WH2+zVoFpcey! z2?GN|q89@L7Xt&sG^qGOF9rrx1_p+WUJML;3=9m{y&(R4=EcCE%)r3F&;kZ_g@WMD95U|=u}WMI%_U|`4&WMJ?Ig&&mvG!PO_{6P#1tPBhcW5KM=&gz{$YCa54xI?w5lg;rbXV{s~I|34+7}TQEew zU@!xN00RSqTrfnvelPU$5h=T9&szV$*N=_oOTfk6lqZy}KM+7$wE@9Gdp z`0WURxc68H#Gb1m3=G)}3=B6zAnDOH6k=X_C`A3NP>8!%gfcLIGU|p<28Klp3=D2z z5cja{r;&0Ayh&u$rA?7NFGcZUnFfh1=L(GeV(rMug3@o7d42QVCI2_{M zPN@26;ShhX4~MvCKUDqMaEQH^!Xe>#4{F{MsJb`dkaX}X9O7S|2#7t>5s-LOh=9bW zVFUw%6)3$$K+6eJ#&Lg^h*3=I7Y3=F5C=0rzB+?N~;v9~xHVqZ%%q#W#x zhWK-BG{irfqapcoS2V=m=b|C@-;RdF$4jXA*Jwz1F~vaKDHsD$uN(tWX8`5f#6ZmR zjDf^MYz(A4pAiE|m&aou?l6vpghy~J#JuQONOEKW-v^lF|s(x-FB%anLLc(oNBE&yu6CvSo zB@yDTyNM8gJx_$h%lkw~JTfIg_~Jdc_DT@u87Zb=aJ!BFvxB#1i-k|6e! zB|+?|PlAMVCzPI>1PQ;5Ns#os4Qk%CB#1j7CqdH9t0YLd&6EuBk8(1^T%%-&zpRrX z;qQ|S(U+7AaZhG4B;4wfA@R}&FGI!eL(P2$)yI+o@xMq4 zBwS=tAnwplftYWR0`Z?$3M8K5QXuImGX>)Aawxwo1rk0}pytd^bD#ZO0 zq4ca&h`Sc2GB9{BFfgo4g}CEWDkL6$LivJe5OIk#NchXALF_k3gV<-A25IMbr$NFc zDGlPTk~By@Z%Bj0%bYZb{cF-7;kp&7ZZA~)Bvjp{G)VkDf|~aOY7bXBBwQuZA@-=J zL)2NOL)_(`4slOHIwYL(pmYUPUsF279~09d?wOGe38xk55clj&ht$(Y(-|1l85kIz zL*@B1AmOi)0Wn`Q1L6Jtgt)6L6B3^-nUHkZl?n0R zyi7=Ydoxu28q~ZyQ2j45A>r~plYv2wfq~&)CL}y$vmoZFWLCm$yVqh=_ z^&_$%>7gqNQg2Pqg6Kb%1@X_hEJ!+dkOl4EWI@7DG8CM>?^G;+#?0*WSKV?JW<9{~9{hT?F@ZisZgp+a(BwP)1An|RM194|W z4#d8!97y=r=0L)CN)9Ak7UwW9=z{tOIS}`L$bp3G&m2g8k;#SVH_3&V=bp>JpbzSQ zb6p<9 zpKW=Nc>;gzQu7~muLe0Bc0O=>*DS)`^TLC1z_zNNSSQSFt?NSKwzbBLq zD}6^TL|&@okB>z^9@v9s0gB8stBTAsR-g; z?IMUfY>OcNcQ1m(vtJP;eMA*8FsLvvFyt0N;&)OJ#Qb$dkaWMV2onA$q5985&A(Oz z@z;H*_!Fr8uZtk={9MGqU=8a37DLq86+`^*Tnq{404P7M7@|JA7-DZ#F~lETQ29y4 zkno)k)wi=4;*aA{{y8ZB4pjeRDE~8*|Em}hzFZ{`TD}D0ACnS@IaVc*e!3%6KD7jr zPpV2F;kT*;;+{PvkZ?Ux0!bfdOCbH{7bTE#U#Juk&KjkV{kQ)gP4224C0=rWe{^emO;Y(M;XMw9OaPwFI5iVTbD!J;ad&~ zzo>GE{`_)CKC6bxuP=xAZ%;WSeovP}?7az9|F#_Bo}cBAbo&pgUZn!!e&Y&=J=PTv z_j^<@Fyw;9dnzE|vI|Ndu7LRC3{>Bx3P?J>RRJjn-a^g!R{@C+?n($PS_uhn`AUfU z9V;R6=35DIPjV&19i5dB_fM>Z_-B44#Qt?qbGBDP(&NEONWFZ!l7T^+fq{X!3R3>+ zS3%4Ps)E=XRRwWZN);qLORFH^-ChML*QZxO>fd!$kocz1R5aWBGv#2KUt`_Y6B!b zv>PD)HE)2VWA_G#e|?~IXagi%;-LC7pmYILUqu5XKXgFV&uM^!!%`@J4^;nADF1u| zB>Zkb^*@7(e}kI)A1cq@$iQ%vfq_A^5#pcQjgWD{XN?g3PEC;b34qeEO%VTQH9_24 z-vseTXA>m-PJ)VWZGwc${w7Gc9BqQ6_cKuSU!e5gCP=zwYlg(LL^H%3btvDf8IqnN zn<4h*H$&Xj(hSizsTmSaOQ7=Gn<3$JrWq3M51{JaG(+6^uNe~m>@AS=uG#|epHBY zNO`fT12VpSuLI&f{!WNHR68N%k!dHy{^(9fK3LNU377AkkaC~93*v8!E=at)c0s}` z0LqW)Vqhp@U|>k^f~1FAP;s+vi2oeBA@Swk4bd0Z4RJ?SH^jXS-4OE^bVJ6^*LFkF z0aFjeT+SYd|7&_6;c~JE5`JHLAmRV3hk?NtRR8xv`WXSe5dQpLNcg<%Wnf@pU|>+_ zgN)BA_d(J@XdlF!j6O(sQPB%GZ385o=y z7#Mo{A@*H_^5rKmFgP+WFeFcan74ES1A{jM1H-xr5dZ(00PzpoL$7PL4DT5k7&xax%GsYYAmysYOi1`T%!GtT z|4ar3PX-2t+cOy$N*Nd!RA(_TOk`kSm^};9e$<@}vDb4pB;4v|L)t;>XG6?6F&mO! z#OFZby=)F7y|0)9iSKiBAob3@IgtGQa}FfD73MeyF6!ij$cq#b0u0+K&mRzTu2 zd<7()@}c5wQ2tCPf5QrhzYni~#P5w2kox@F3P^kiuY{yG^_7r(9J3PQpNy3dcQ&tt zxU+jDq+FZ065`&CD*qw7%dmn$Le`w0~nTm>0lP+rBrV8+0}5WNbL z{wA%0*tcU9r2N0U3S#f4Rgm!gwF+V`^J)lRbTuUY32%ut zknq!6!@w{TG{3iof#Ec$KfDIw-g#>w;ka%s#J~I3Li}@jEyO*y)SO-z3wGI+a z*6Seg7wvbey;j5+6K4&v`EQ1LVCApW_(4&uJ&Q2t*i&AJ|95AS-2 zJ#yWtPy!rcSP_gfEfXUcj=y;i&)k`InR^(${+V3+|ar#3*`cXk6LpI_Mkao^hw zknm&J2;p;Xgp{u`8zK2!Ya_&+z8fL#58ViHPwqxY_&08Zm^&G&Zq`PKyBBSQq_52z zA>nyqBP5)!K>1HLLgM4YMo4+|Ya^t*Ron!jtv5l^W#}e|eDNlTyJu~JlrNh%F)(Zg z&3kWxxNpK{Ncx?z84})GH$%+7vKf-D?rny|ljs(Rdlj}o{Gq-D;$G`5knr_^@{_he z++PgkcR=ZxPEP&gNcg;fs{6Mc65e7v7#MmO7#NIq zK+HR^1LB{{J0R)m@eWA*yx9Rs2VZtT!kb|yq+cSq6XHJaoe=rZoe=ejJ0bCvxf2o| zB|9PE)x8sVL8m;+{89bN=syl+RqdAnr2T1*xa)cR}Jg zaTmnDWxF8hZR#$FeS4tvxm^(R9zgk@p?uce5cf&!hREwfX{X(g@Ck*=7eU24cSFK^ z&TdG%X~%9zJpS4ZDeoBeK!KIhC{{E_dwz&e-9)bOxgqS z--bPq@Y%Ts5{?)5K+@BlJ&^k9^&UvMCbAbIZ?zZF|8m_6vBzsKBwoVyLfnzC7vj&d zy%2x)?uE2N7VL%O%Zqy<_P*K+$-kfXLfWsq`ylDgVjo1_XCEZIL-#?#Cu<+XzIG^o z@;->WH|&Fi!-;(m`))ziz1;_~@8>>G1i1|JHA?aWqlz(79Bpfg8huHgJKP0@F4?xNd;R6u!r4B&Sq45DoJHh1uB%UT7 zfP~Y`0}%5!9DvlLhYmo(_d8VIp97F^;XMdZr+5&e-}oRzzx6>#y&7~7(rzd^2+?1E z5E5Q3Pw6wT#W@Z`%uzcGahLvKh3W?XuqY(3IjzYp?`cX(a*?JUW&Vi#4cbqv2arc9xkn-X0 zQAj;2a|~i{?lDL@m~addUJH*w!hJK8K6wmc&i!K$dp;k7#G~MGhuE=M8C!9@r~#k-;EmYjx!->K6O^B$dsgx|N*koLRs8A$lYoPqH3 z&OqAJ%g;c}KYa$G@5vcR{{3+V;ve0!kodAZ3-M3rSx7t-oQ1?w{aHx-uQ2nZsJkLS$O(>L~a}E+u73Ubh>%W?y^n`PeaG7@w62I%uLBeAXls*F0 zf94#d9=>r7lKxZAL&9g(d5HSW=OOjq?(-1$KR*vCADJ&eHAOE}ri3hREkbLF>rM)jh;w9)ZB;UkA={%@>9aO&cGQ`}8mm&UL zbQ$8lW0xV}`S3Et{%@Bd;m>>p!sodH;Y(hD_+RM?q#V$=0&%zQ6^Q@LuRzuzMqYu8 zhU4!J$FHm(n*CFFflGh>WAmutFT>Gy>)UATjhpt1~(YLNc z{K0nv;vR_`5dSOQfRsx*P;s9d5ch@NU|?7ZT7P!~((V+w32~p_O^7+sHzDzodJ__U z**78SvK-2vd=nDC^KU}z+j0|P?%taa|6aQZ@&AjPkaA1%7DS!SEl4<--h!x0yak!R zE4~Hs*Lo;@{1zmf?%#r>>kqde@ym4^;vU7@5OZ{IL&7EUHpIUrw;}OVe;eYDskb5H zNAqt(%oDu>(XVy~B5!mDQeN5If%wP!4kWx1p!|kAkaRNj4#fR)??A@)m)(K*>*XCt zzWs9t;vVI@ko4$(7m`lmp>*+Gi2nAwkZ_)G7m~i`-i4II`|m>X@teDl{HSyf;=X`; z5cfshgM>roJxIQ7z6S}91@|ES-+m8b|0SsUfA=8nI5*y{m*Qehdl6#>Wf{j~Eyj z<~(L#uw`IisDA>nfA14Wd_8yq8AoG!3Q6yAP`dmnB)?2}3i0o>r;u=402N>H6k^W0 zrx1HCK82KbZ=OQj|M4j#zWzLgq#yog5P!-)gT$9Hl<)Zr;*Qv7kaSW143b{^ob`)C8``{p zxMSH1NP5}z0^-htFCgjf$_t44*DoOE{dxgumvFp<eD~LPyzJj>p%qvJc?#3%fdinMW;vTctkbLU)8saYh*O2gyd<`+L@-<}qsP8qz zUiCK+byja6{&#r;@o&%@NWO}C0~sgHeghf5-}(kpu5-R+VA#vRz!35lGHx#Pj)9?) zfq`MdJ4ia=dJn0ubl*eLZR&eSzTEMif#Dbf1H&^Yf9(fIe!Kkv((d5?2x)iee1xRm z(2ooZIiU4dA0g?S;S(g@{60b2#i^el`EAZ8NP1cM2@*bAp!@@$ApSl5iGiV!fq^0A zGeq69&k+B8{0s?qrY{ixi+zElCzUS{f7nCClfFRa4GO+M($U2)ka6rAUm)QT_!Tl= zGv_Nr{`^;nJ=eZM#-|^Cg@m8wHwfMP4dVWX-yrP*iSLm5M*2HMzt49_ehmH&iMPn_ zka*4e4hgUF?~r&~{vFc3-}oKUk9qJNGJjzB12SIP@B=a~e*6cdJW>4#p|gHM%v=8x zvj1eqPe?fM|AMUVRsIFpFVP95U;l#W^ZgBJPfq#`k-zmDQqI}@fzUJmK-Lp|`vWo0 z{4XS2z5hbWtH{3)e>MJv#9RAch&!f0`E&n5+O4bpLj3jgF9X9o1_lO^e~@_H{0}l7 zy8j;}yyX5v^!xvZjORxDhxA{X{zJm&_J4@Fr~erkS{OiShY`I0V>SaLcpt=C21f8c zihT@>;C1IG7#JBCAzOIB>-(pGCf`8w?Ticzj*JYTX?^g%jx+{He1|eHFyt~ZFid1* zVCZ0i{E?3e1qa4AsIQ3fiaw_M}41ybRih1=@QA^IUpk@LfJ=|7#KvD7#Iwh89+m+;JsKOOprN^XeI`RYS7#V69YpcRJ|@E1H*A9 z28KycK4`4y0mwiG28KdVTtnF)ij@gcMuFJZ85kIXq3(DOrLTb`7$EhNDiZ_4bkP1R zMo2r6iHU*XDI)_zKNADPDn>H&kl0NO3=E4wYgC|O-x(Pg{xdQ#ltB3)_1ugM4D&&0 z5`;nX*dRd$28OdBeT)nYl~A>ywMLxG3=9s8kon1TObiSfP`M{iJs=9S_Yp)NU}RwE zg1Q;R|G>n+umsAF2F;U0^$IXDFuVlK|1mQ#@Gvnj_%ksu%wb?)aDd9+V}$gx6d57) z?O_H6hBKh`8=&+FGMIsZ!5UOIF%4F)%Qk05L#&<)HR~xS%!FPZ<~(;-G3v7#SFn zk>u+@WgsZuL*@T5F)-|7WMDYU$iQI2$iUzOD(@H=7_KrgFa&`x$WYKeSkT^0keyI{ zO^gf-@=Od2TbLLa`k`W=bu8-{7#QT485mZ9=HQ@i2N}@-b%P2M1H%R=+m(@lVF4op z!*)gnhVx7e4DL(}3`ZCk7y_Z@f%I`PLE6>IP_qn}ApOt@j0_A$j0_Cjpn8*ufq{pS zfkBIrfq|8of#DPbWUpi~69dBv1_p+9P}_%rf#EGEe=#sH+ydFp%)p?{#K2$$VlzP6 z)*$kApinVWCP?20#8m;MYp7W@j0_BAjF5IHXfGs4eitJHLl)FcyP@j#gTe$P3B_Wd z@(b$5MyQ(qObiS&m>3uqFhJJ7g)lNONH9bC2%S(hTcP@Af#Mg+PGe$V5MpLv$YFx? zPc%VgIwJ$aFGdE24-5RhPgK~OmgWxru$ zVAu^+)5^raaDoZ4|HlL>R>8!;P|n1_@Qjgx;UfbBLo?LPb3kd6iGjg@nSo(8BLl;4 zP`wP*Gns*bL64Dvp$JrmF)=V40JZrT85len85lSi85j&085qo&85ou`Li$xdnIQch z&|X`R85~Ru3~Lz}7?v?IFdSxLVA#mSz;GAjM$nuX0|P@ABLl-VMh1o+Mh1pVP#YMe ziGhLP9n?+`*NmBg!IYVSp^gEvmSiU*qz?*`JITPnu#JI%A&H5B;R`6f7#J8{FfcH@ zXM*(WE-^7Md14Ach4H8Hrs4oC&^F!IMLGA|mmx+Pl10w^&O{n-{s6VBl z=`4qlfk6?}-erW0AMi3UFx+8cU|0xRy9;%*C&(>K3=Doyz5*j;tN>)>Jg8VC69a=I zD4s!UU7&V^LFu`S3=GdfYY9Q+FKA6869a=eR3FHUKu{YN)K&ns;~5wj9)koyd(=UF z2B;b4j0_As07);$iQ$1s(vk~y$EG%Ko>)ge%} z1v3M~X(mWt5bA6ObtVRe*$fN}-=S(i;-IzBAR4q+Ux$%_;UcI`XJTN8gu1O7)RzFY zhZz|d{GehW_5VR*5>RvO7$9RF=FAKX$3c=%Tnm*4aleAfF$M;Pp9~BP)u6Twl36LB zej-#Y3nQdonhh$W85tN{7#SG2m>C$Xq3Hr-7U+D4KcKS>m>3w0nHU%Xm>3w+85tO+ zLd~>fVqka+O7Bbz47^Z%d7%CgNHY@t2DK9;6bfaVfyz3lIpWL=4BtTY4g+Ltba~VKlpghOO!0?Wdfgy>3 zfx(%HfkBZOGL8W1l!MOGxCJ%K4%F_0x&h?wEes3{4GfSuGfmK$9MEtA$$|FQs6qML zm>3wsL1i9D0yJL5z`!8M%)s!Pfq|iok%57QnSo&qC_ghZF#H9@7m^(yE&D)aB&d%E zvL96bK;?gc=GYh+81{m~myv;NLLS|lBW=X0-QEFjnYHehmztVVtdN_SSDKikkXTSqlwX#ZgU@V`25jon@{4j4OEimh6jU_|64O(Q zHH#I%G=r)JM6M(?1s(@U`T5y6B|xE&k(iSfUzAvqnU}6vtWaE%2#R$~L6Fj%#Ju!U zsEsf-gQ`YuX-R2f4#*j>bfZw2UkXh`SmlecDu{G_E{3TgR83aT2Fsfk6J#h^HVYA8xg&nzwh1x9|JLT0f- za!!76Y6=5pI2WWAC8y?Wi6^E)~Y|1iAQsbdcFHTJ?O3q+V)hNj<$w}2Lwo*{lC@xKc z@)%S#K&c+8HY2fEAuk^qL8(O`8_{Gzfu&%RsE|>Vnr5p6@_$K&X0ei;ss=~~p1AVU z6jU`p0SXrZd8pV%KhX{psz`=rf@1=bK0vXMm{+L)l18;#y%-)V3Qqa?*%-25;~7*n z$`W%*K{1>O@(3t)%Mx=kQxu9)bMs45<1;}~hC>O+Qcy53z@lFv2%0e5^AmG0MFWcR z(~DAziy1UjHIQOm6T~k{Ez3+Thx;AE#Vu2;$)Mq1P?DLSmzbl;pb?Omo(j#vnjop5 z)a3l!+|<03)D(rxGzIju2rBC|88pH&Q_G6C`GB_%f6eZ>rXM+5mT2z!@q>x{vP?DLO3UWYlVrem`-392qiqTbO7Q@0EU0JZFpA~~6I6zc2iV^KA2FK*&)PfQym6`%(6c;Pxq?V=T zSb=z;&J%-UGN|%|QpI4pEEP&AfYViOeqKoiR0O22B(p5Dq>{lgB?W{P97{_w@{5YC zz#LE$2+k-5vs_Y(lZ!IJjR-K`GXR!uz+6zOg(ytUFH0=~i>2h}CT8Y=nVEUTC5d^- zsbCH$s&i9wlTwR{6~O|a5CesHD#V16e1)9M;u4TlYKlTqC33m|1v^p>0C7RV4oUwI z9bhkj+Y*U63YmFn`CtK13TJRk$pt$oH!}|s4X48KNJ-;Fzb7T9KSuR8RtOjyh_Es?Ok;mzQ6fmz)Z! zicvVl432pvnYzyTMFshwnux(MuM&hoxhO3yGZ|tY*n5a{0P$ctxX)u^V4_fzT3nEy zSDdO)o{^fTP*PM0YA%-Kg9?+>;$j6*L%blds07qb0hL9G1qC^o$%&w3tOv3yKQC1w zIWZ5E%D`nJxX1@v2}vAzl`s{>rRnLZ#U&6`Its<5Nm;4M;4%(e0KvMv42}f_Ih6`& znK>n(u7@MIC!7irEy^zgxh+uvY7(f>1eaw6sYSVod8v6NIh9~{fZPdH14^0s`QV}u zYzwF?E=vV@D@7r(xHvyKGqEHURJIktJAf&PC8@&r7#MZCODD)r&!a3@R7w6+%FD3Mln} zDuTqky!;YS30<0(lAo8Vrx22_P*9YgoSK@Vqfn5Onpm8w0BV*&i+ys#5JaY?KzOMs3ZcayZ-M1N>7r5rTwOv{Lqtl8 ztr)R$j3qYwRMWHw|4^$I@A`>z=1W7T83Q48u3Tc@Y zNLurY5$)>YlFFP^Tczauoctmy1!ZF+bK{g`Yb9v+I-{hdpx8=ZUsVHAR6{!2NR*q(i(&O6xP6fcD)UlPK^X;JO)5m@mxA+fa(-S(QD#zUNh+w`g#@)i zW^r+8DtL4O-o$}9C_S?zqclk`IX_oFH@~zvRktWLwJcR1l&s1ti*l9h+%ro&N|Qj& z(*wJ&7(yz9Wag&kWagzpxk;4@sv6LgR4h67DKw=0x$<2WBQQDR<{EUCMYC=#<+@0Q$g_u8gT#(+9ei&+Ks88a=0`v zwW1(38I+2lL!zMJ(PBN27fVv}Kw*{#q7}*$i}FANz#w;mT6R!A#4o9N;6N?SNddLW z6~OVEsF0gjlAHl9Qb0~+a0WM4oQqNuOHvsilmbev2o-ZL$}cT|Dewf3F2i`B1_F#7 zoRON72IC|upy*1>Q*eYdqhSitkqrfxQc&AKbqU-UaNrjd<)>xlz?_%@t~!!SK~*z) z0}0k}My(hU?Vy%Ys2o%T;IaYisNBT7#B@lB2TLbPsv2OQBJ_c|kZcJ`0uZNxVm=Yv z4M+r651?^Gh#CfGh)+Q@sN0lN2^%_Na7irANXkzvN?~vTHP}I6WCdYD+U{UZs)A!m zN-9`MDyU*iEhvHW5E9VI0=jU001mQJ-ODbp}wkRxp`hUoZl7r~xMZfLSTVR{7J=G*zOdFf8Xr<)BBe@1f&?XN zkW-=E2#Cha{5+_U`9+lsE}6y2;B=N*4CVE(+s6z;{yEr$qxL5(&6#yv*%}6PL zOa;q=c?CtO;GTbSYB7ULesU?O;SDZ>8C>#HixvFxOB7ry3NnjQ8C)QJCkUmG1Zr`)1m-|WKrj=Wz#t~TiZ8G@Qg08;hm>{@CU__jtS2)+uNc%q zMD+%W6jD@{=NDzeyM;=s8el$jL{|x1#z3k}FsT4;sDTnY1B9Ol833_@auKlv5wK!# z&4XkuI0GbrsWUjCxGq*HXp*XWD)k?w8z}Jbv z4b(hJE6PmGODP6%KwftPb(}LWQyNShN8?@zsvp)bf^xx*00j(U_>jRZvj|k2mL`FM zIu#NJRt#?7Nn$9a;DB7y!32XKGrz@9KBPh_$w4u1a8s!kvK<#%pOE*6+rxL0a z)V_d7fT#Kx-175FQj0+CI#3gY!7aZiJs&)VRiprGdD(+Ra}!GxQc}U?706D|SezAu zTTx=(;pK^$#R?j3MX7no8JY}k;4sapWN=T+NlnjJ&~Q)8$xO~n%+q9WPt5}jb)_o! zrIsr|8y)WXpn?;ec0t(^QPsHT=cj;jR4g)0Lf=LBX z;R-KNAwqtMxv3y6`K1L4(196HnGR|#f@}l#Q&V&E%b=4Oh)y_Idojd#@WdaYAZ74K zEJ}f-RFA|mNM{!0J_XbaZO`D5np42wkqN2*ic)nLJTg;K;q7ZM2bzIA@^e!eKm?+Z z?->B9*+C6jq%4gPv|{iKcJc!g3Wf#{o`Rt4FFr*xWstqa1FHOoxEzZc#2Thj46oD%R$VeGfA-ME`vI`)?45-7FP&w!*y%p4? z)D$SAn87m-G#&t%cl68y4I7lDGI-`C=ai;^S{R^NN01^2zqlYjGbgo3Au%VlsDuGl z$S8n@BEdt8a1n6d1P@@&XSZHQK2!N_qI1i+-B(q!C$YFh0TNZ< z_8(LhG`9dQ<*XQdQWJ~v6mmi77G7tdhx=&_aHUp^9q2OPXl3D~|g1bPOplS~+Q;=T_9`^-H7DGr-Hv*|t@_|>N zkTJ~Cq8uv*uwYSYacNEoXcQwqS0TS7Beh5&Ik6-$CqKP3wV1&tKRGc6LPDEbKKaSn zsVSiT1Zbd*!6!dmAu|t3fl3kRFin0DxEKXx&0;;Ubbe_Gh=wT6S18U+%mKS0J>QDK zH!(9$Auq8kGacM4RLD)uD`oIa%m$aAMWDP1>f$J*KpUZ;wkOCgh;uKAY@f#!r0AqhquIv)nA@IV^#K*PfzMoA)QhK9ixJ{tsM=7Z{H@Q_L| zk`Qdv5=p4Iw74KOuNc(I_XXt)NKyvpY0wY|16U9=eE^-N0?R;#uB;%E`QX_QkTsyO z3+NgeUr;p(@&*H>oby9oeFZ6#89?IVerdWK#ZiP7Aqu|7D2nZ;9@>C z1*8I+$sw!Tis2%eC7G$k3YDoPieMq6L4DAIy3#zbUXYWpbHSq_N~#)#rKv@gn#D>W zLy%NMhD<>D71TuoD*}~`U!cKn4?W_yMvKC$$LNnt~<|kd3ghTO>Dv zCsRRbzAO{eefP^(D98sjx-t`U;LVh@{L(y7Dk}oH36#&{ksSsZT?ZLo1n#Xv7uJD; z4ic46>+~RMz{>@pve421*?eT9A+3_sV(5|>NCbf#0O@9eCk4Un15ow{H&HN!xD3>2N(BoRr-IT`Nh-)AC7`)1Ka>Fl ze`gX9{YgI zO@WIy@Yoi(F2W)ON^T68;wfOU%wkY6sNj;CmzkQv5Rg$>oSB@MqYzM(Uyxb^DqI)> zauPvf7C0l9At1k?G$*kLRCJ?GUkBtDm6WEJ9$rogifwGsXMgd57aRz9? zupW{=@O%gkIZ$&GYAr~k6+<9s*&2kjVh9QjhJ<|(Xrw#{(y|Lm)dh{`GX$mT7N_Q= zK(acOdfLSnHM187Yom;fmP z^>E=F&}vVRJZRJvngxO&g*v2HQ_KM2f?6M-`SnzWpwzUY)Zz?=Af&~$C>-cATWH%K zSsBPM&?GWL5NM?#Xe=rtvj8LrTIR_R1YYf_0IRaV{4$Vz;65^Z#tEdXEER2l0xAez z4Tz+&Ag7Wc2(sE7LMbSNmb`+NfyZa2Kvva)@-U=J0#%A(G)OtP&94A&=OZtnMHm2T z$U_ZDO@TJCQ$hX%nEMpiYumQJV?Nl|;RM_Z4Bp9GwE>JfL zJcjLungg0N z0FPubKsnIP2Z);nU+};X3@YMMAae}4kU0j37^FQ8VwW%krxqlFrsWiJOLIyx3vyCH z4K&a+H+ZQSXwWsWSdSq%wFuN?&x1C?AY3bua9L`R0(ktGAvhIe8fb|*sN@4zEgAXc zpnVyY;NS!|pw)A7Kr@?}#Tl^CR8W};TVW1aVp39+n4Ar2RDt`C;ISQrl8mDK()0|_ z>Nikp2ecmnq?Qz2Fi!I|lK3ZVrI!Jw@`@KL7V?92j43lh|tWeCnsD=AMbN`*75 z7=rV2LF0R%@F@W=PXL7wC`*H7AVU}BpppCXqWrvcMTOw}qM}N8Co!=^j{z*A2w8dq zNgUugcF?NMynKb6{JiwkB2c=>Oo6KnPX(h78UXD47}AmA0Lkk)GoR5>guLB?mQ z^OLglpxbl6HBT*68Q2XarNybmP=VB9@Z>AV8IT2F#SFovNx7LNAPPJcWW^9%nw*?k zT&xIZD4?-go zwbT@J8Bps#xHLC6v8WPcK>?`7MJulI^AwOO^x{&mns`u!2kMTLBo?Kome?xAC*>sO zWrOz0z*K;}4V}~shUfxUnFxEpDnMM&UTGA0fkH7PBNbd&A>bby2DUXbnkTKG?!yg^bjqRE46<^o$aP zy!>)Sg^;331;|PrP|1U+mO!R}7A-;t#SunjDu80Sd1!$ zxT+Xbrlf&qvp~fTxRnF46y!Om#d-|5mg?z(*6KlIp>Y8!NwBOBM@(pg=TyP@MH9RN z9(g?i16>K%6=K?Z2GY`~Q%g+Iitbk^+z@-s*&l9Zpf+n%l6g>s# zL`r!+Xsu07W;S@mbP3X=1zM{g-1aR&EM?PC0FMWNW`GouN=r)e^Ay0t0ifW7tUCZp zL7fNLX$bX7X0ZbDnh{7K!39Ah@DL$T^8(~C#IRawZb3;UL=rL*1X-qlw0a$-g{Tf+ zd7fVc8Z!c=dQfW#>JD&tgDe0WtH%IZhgJ+~prkNBR`!8OD~6DK@X{5Ako=Ow90&13T&qx zY?6Z^G!K$w;S97ML}(tQx?%{;%gM~m1TB*Ru|Nw786bUB=m;8&2U{Nk<)>Id8O02t z1)w=`$XvA*Luhd-()cE1Jp**nYjR>KXiyi@R!Pp!E6xOsh?EwCvK83#pgK6GQlTUj z)RRms%FL5!9qihAiF7NX$zqh9^?6iIBz+Xbrb# z0AywlyxJGGL?tN)oPraKqF+J zrUPizB4|0I9%w2EvUL!effPJKe0@O9^-V0wPRTFN16xxBncM-@mY}tzprIJhz(2?Z zMX+gQ2&XtRJ+HI?QMrPZmw;NsAQq^*2v!GTfNX&cJA=#0%)I3MBG8%{xDv3(ii*Mf zVkn1*9$r{#5oiR-iUGVyFfk_w&Hz_rRjHcA2oX?tz_@uS3Md5y@_Ijr4oHI=v;qfg zHYD+bwsnE)9H=>vq5<6U0A)&uPFUpv;pOKkz^BOJBA$7$nL@Y_bcQMfG(!a!^e;%w zgGxZepv_aTlR%A9&?q%Hg2FP3Gm~;str)@+A=_*~0~#28LNr;NtuL4%poSI$Xe_pv zAv`rF88j0Pr9ovRNxY(ubNEJQvg-fkfmIp{%t;Z3K`VQ zf|RI<1qGlbvnBZo8K89lpfVZMG6>HAuVjFhN8y>-nFXmSnTZT=7PO%fo?nz*%m5}~ zHZp*g6@xqoZa9L<39wT^UWN8+z)KM`OF)}?!7H&fixF$`Q$TSA=>L)f|Mzq0SZN+wZfocALJ%yPnRHt;>x^|#0rE`PzDE= zi{RA-@B|5(w@rkFdMcu=2b-iVFE7_ihb`~`l_UC)aRYrw!dFs2YXT}1rRLZw<>iA$ z=TeK5>>wj#`mPn=wk4=A0}TLyCalri0gYpXgYyeYbV0qu#1im^4bYY;P)`l44XH^A zYk5Eydcg)ni}gVEz=IdGV=TW&0a`GF%>YFjD73&mK~QT8Yy-H30G7vN2h1B_<5R$E z;=m~kWD2-D51kVOr4}@4n61#JT_w184NgR$!U^Jguvy^#321Y7S!xO*ew2`01#V2i z=ggr?U6EQ|N|1?6up_}n=H_>$x%p7ECsd3OAElpz(k8d^OlkMr64|}^#R_12&y^3l?VK!0k|&w zs&Ix1q`U$(Y>|DgUItp&l8CY$7M7YpBe02x6D{x_IuHrka}FDLfp+o0Vn}JFv?xcj zSji5OX+b#yG!6wm!XX8m06?`qxV!=da}ly3kn{`@1}$|chA^QXffTgh1)-${;3&>O zDnwK@VE%#Er69W@4X)h8O3;3wBBUb#O7fx0AJEqmfW3pyO1SxCnhnZ)P@jQD%2M-6 zpgdSIwt{#Yyzd$+g`SlmDj>xpsDQ)R^al0?M822-)W!p?28ZMbaKeHNESKaffKwni zdn=HX;TgcCN-6^+7lG<_q$B|HB2sAq=7Rg+kbW9?>o6$Gf%82m%c0l}5iX9Pnm9*h&qU74u#A12PWMMo0lyZlF<3 z=!#Wvd?1dC0Go~!Vh}zeM=+op1(KrFi~`8qFk}ZdxaEKpv=A4-3S7+Q0N6#Kk_8gR zMUd73N+u^{gc8_{oYXYvOcq!@i6&&i)^>u6JcwIB#SX}2;4ml0Q1BWNXyFGMnjobF zz=p3y^YOy8*XxB()ejYT|Kx1`?9s{WKM?D({TG)U}a(pEj zX@(LR)}$FqT$qz)CQ{ggn{S{_1L*uKFwFoW;U^)X@<648szwQDoGu=utXQ)ctN=tp zj=Nxh?s;Ya%>xuOfP)0383`)CkqRde7h0TyW(bK>YQ+Fm3p$kuQSc!O81%*iXnq$q zUjpim=fMwGqn1I%P$y-UFhI{;0+k#{Wguuk1j*kZE~wmv_+7miIk7^b2d)^x1y_@h z#6a+v8i=6`kb!*$@YyDyUV9?6YJ!h^Lb^oYUM9G2l?Ym44Q^|L*2qA5I^e}@ps7&J zVg@4AgN_-5pBlyh9w$gmfzhN@yTy>XBhZvy3TQ_?xHLoxQBcx>2NHTiDbWtxSOP@? zxXJ~!3Q?*9kN}cyFc%RaN(`_FVyMon1&u}*Gdy3{@MQ1gCp*?Yo7S$N5uBM@kOSJf zpQ7NLk(mcxtMzpjN3IeZn z(e*7(&rH#EDoroe4av7s;0o~91ud%p4JPWkB$lLFDHs_T8R{Au>KYj-7+P8xn{$Dd zyX%I4PIJjgECKCm_XX_`R|o>_5Ld7PZx;ve7I!GhEKV&g(926LvEza*qSp;cP0Y1Y zfNZ{ji&`n96><4``nn<IJx8&X-2Y6V^-q+gJen3-n{8o?+kPA#zw4RO=8 zK&S&bDlN50*EKIW9~6yN3KmJ3C0qeHrA3K3x^DSJxy4orc?Do@v8|D{0)%O+k*8p% zV5n)$6`|`~lwY2bnWqa4JS#+qVaVxvx>zZgm|GedTOw(M`4sFYgdVrdoK!0X{b*21 z0!09HgSH-wAFBZBGw6fYN~G$i=Ea8w>-#vz`?>}PJG#3D>!)NT=B4NB733pX1u_%t z2t!j-V=k1#ITMre^YRX_)JWCDAq+ZT50U-A%E8BwfW%?N7g%1iSRo}fH!&|IRUt(k z+*$#5(9n;@L?|mJqz*J)$t+GRNi8ip zw7n=ZITee$kkk}I6k(VIE`tuQ%sIRgRJ$qUsV9O)c@zpt6%MZ|DN2P-x*T2!I@=H> zbWk-GE99x?=YiKdVd@1RH;G5HLZU)aYB6Xg(nVMfpm zAQ#{=333i8vQd!fJYo+O&B-h)0);U|7w8B;ScHLPKmm(-g6QFuC7?}845}Jf#i844 zQXe&}2UVP~vqeFbJ@WCQ;PeSj&I*O4sS0KJrNs)xrI}@^RVb&7B9s;5R)^FbN2n)J zIX2@VCAvc1qlTG@3W=r3rFjY|hgYU$DuC8EfliSrKpvseWAIVW%!9AwQ8>H+z7yz)`QdXz&*5upxmfIobp(_naP0mOyO3p|{9Wq3mN(x$qhd7lK zR4T!0Jb(P)h?Y1aUX0 zSp&*ENJi$Rf|5}Q==7Z8{JcESj;FGsR8WbhfV`_!Ar-XD9@;YT0c8OUB}hk;f>Hn| z3PJuU%>#{Yf)=gDXQn`w9HoNX06U`;Rjoo^ey&0aXeCl^K?!)}T4oApJ3j7Y1X|M! zo=eHh&jabin$|!kmLjDZZ0D3F7iE@Y7M7;slLMVP>Xw*Xnp2Wkl9`6{9Miq;Yb88r~z4!2s+*>19U)Y3OFr+Ry2`x zwrNT#@*$OwG=lYP)59wvO(yXA3}ij%!(@pHMTb`wfXNK(Mp*+geZ2AKCC>Zk@3lyC5Klkl!CSlfe*X` zhd82B3U)ap#e){1fw^RQBrhLi6H+n(8%77l4)dqS!!vCLJnxTJpRyu zc8rk};ZK~znhRU14ocAspzP)dYHFl{&R9wX_d^*%^H3(AP+|^N=qZ5CKs~$?RBAy^ zfdbV!sS4nVQUScC4^%UPs(DaJ2X7M~r)$vM1HQvh^%z2-N1uYsh8(E{?m8$Wf*Kiz zS1P3DmE~6+UI{8ub3pYz_!Lywp{PZPB_)Z;8HZP3g8wM zWTYDA)ZF|MP_6(?Sb@&7DoRAQ1!4+x9~{&ohJeJPoYbmE4HNS~t;!Tg>k{PlJW%H( z5o?nJsdoa32c)L^qlTG~#(POoA}F^a91GgOe|TkPUS>&VBDl{2sJ1@y>Nkj7Mn z)S{x)(jtZ2d{D8Km!Uy&kNiB)(ilAkXHaU%1vfKO4zJ8Qya2j50}>UbpjZR7KR^mgpnE_-?HT-P9fLjn zK&^O&!wsMX9tHWupm;!;IR_n<3Of6#2+9CA=!+TrGRsmEOCe3agBGPj zPEgIy10S23p9eWtH4V&5D^^HORmjcHgb0>_yAWWRGElfPIA-OSmVgdIh0vfw4HObf zK^;XT*}LIg!T5t@QM1E9iHxJ*a}rL7{+ zX-iO*MIg%|i+xg&gg{XTIh6q}m;#EuQc#dpfOp}7+N+94vc;g0ZAcpy+8TsQ9$o-S zC!p~ss2zt_DikE59Mz7ukb)Ql?rwmNYDmim^#uwFpxtIra|arpkZ^z=_X=6!osy~m z$>i|kUQQ0ess#=mBrv0mBTBG^+0Zb*ho-c z(czT{ZH}cS`JlltNMjc|ngZ$TAPuOXszT};7J~|-)CzEc0?JbuGwPs2rNC$V=H=z* zfwqZ)4v&4*FcDl47A0qbSGtyJlz>(Nf`Sozifm>wD4Uk0=7HA9!Tpa&!3z0FC7{!W ziV_t-NgmP!E>2Ydoh+N0rvTc2Qwi3po|v3`cqM4f=-~wldFqhG6{(;ObxuwyD0!7+ zrh=TEqmFXItly)CnFzI+3I(8g6*LYDs+B-%EaCA=v`QV&ftb0O#fS<6Jc5!0u601? z%;tc)IFMKXok9!h z6Qua?$|6YliQ0))03F8*K8`lEC=uLi25sOd)=_}Afd|T zlGI{d$e_pJ-Jq}mjez8UdQYH5tVNl*sUS~*TDPEXV@fLi(`oG$oWW@wltAS7L3_{%@t`f=AbI#U zP)D#~DD?yMpj&W36_i?%Us}Wfp+HfTlL$Wk2b8?QU0v`I+o0W>Aa%$JV0scuD`2Ck z#h^ij#1hbX3ZR{zW7q^1SjB#=0?$N`;*3w8`>bROjRyhLzFCPV5!r<{DyUOfgd zeRw74l+yxG(nI3m!(ycAN_g4Wa* zr7D1$9iYJw(4ns2BWd9+J7^}%0wtf6)PhpbjXK~o2g&i^45^SSZQprsgPs4k}31 zQwRe!4GTb}Llvl20iUItS_DdUX`osUT+0_h2QfgAk_0}qMxiV-5z%6XttBPtY+Z09 zfLl1Fi8-Kl4aoG|RCw74kp~IF6LCOdQAuKYY7wYm3uY+fq(Ww|OBno65)0T@d8rDZ z72sv5Rp23SND~>f@9j~;dVA2JOMbKk-!KDmxZimT(t7TY`8V24#kOR7Ssj&3$ zs*+R&x74EC)FLni8q)-y%?qk>Kw~PPqoL3R!08WqKrbkKLCF~00M0CeBy*5lXe`;g7PC|kQ%gk927vX@)UH6EohS&BoRW35%5VNgk@5zK!J%I0$`_x z!HPxb-e`Eq2&+zE#)I1Cpy55Ri@^>6>jzDAB_@N8wZm*8fpQu6JRF#!Dg{U!fzJbm zG@HP)ADPLipaco)aH?ZTZ=kLq(&Q87>A=v!rwY^Ro!(ut$ zpeP|EsQ^1qxKsghVp=hHi9aY#At@Ksb_N+$1Ud0O1$5B?xK;s07P$G&;0(&UkoLB7 z(czUy{Q^+q26QYtr~w6$0(l<1-V=1(FGwx8kV0yy!Ign(=wk4}#c*Ztt}+8$733IV zB*UNuFOmxIY9AyOgbjwJ0?2}Iuu-7SVQLBJf(~$71l;yQ6hDYnsOaNjaLs640mNtz zs8ax$-T?J>q3Xd^2rRWJK@7#E1=I>k2fGSg7ue?rZD1~%Rp5LA?jDxrfvTsn)ErP{ zkJK^%Wg__W3FwF^uvMuHKB>u|E*7||P0lX`?eYSh*ahlrg0@8#r7*ZS3kh`Caq;1m@E$WL(dVUQrhrcNhgT2q zGjJjGIcN?lv9v@1w8yld0Nhq&0BuDDvp^XH(y%}k14lzDvKX|bgDjK^-ba<02E8-_ zwA~kK0l24!$O$OcK?ZJ-%t;2dd_gxefHE|!$BNK`O&VM^AuEBb;!9PqM==-Fp#%37 zv54np7J~kk#Oz!`i@u#UPh}_L>z#8eT{_7m@wYGCJZM=AgqXK}QkggN{ZHO3g|I zjjVty%`Yu0$}D1l?z&O{A8k`u3Mt~Pz!g5I50DDmalzo1pQ`|w;(?AL1SA$E<{n;A z0vg3gQHMw+ri0F3Mn0W67!*XQpp%)wxdeI=b1JAcn+)nUfU*ntz-Exf+{Dbh)I$qE z2fKlrG!R3zx1U_{VR4NxMr0Rk;(-nhuyMp^S z433a-Dae>6IKWYoAE=lH>42O%jZ_q;W#&N(cF@tdd0?HcdGPb6K_j#|pl!)1rQnrG z>5%jf?;g2A25})uQb9v-;Cuo(V4eYXFg4tU9QDI1%MP#1gO~z6ni`Vs!KYM%nP4{@ z?t~7#6)U8G8eKWi(HF1^aAyqC2m=*xh!IEFbUSQuOL9gcsDqWtaJVx$BQ+UpvRh(l z1?)^~h``~MDd1Wae&TDfLK;jgwHVw&hqlO(#2MT&bHFusVlwEaSWpKBH2Rzdt91{r zgbdW@Br1STY6cIefVMq@tW+>Gc+{}oH=p5fXGtRH0P13B!xJ+{g3`z-g^b04?R3sLyb`gs7%UW& zpPQJc06BuYurw8NK6WbdT?QZzKpHvViUPFkq7>SQ015b{f?83zN#I%uCIK2I18rA^ z4G4l7wTSVz6nLi`ln|1^qaEPJ2h?`xDcz~X3ZR8fh>8}eYXaJin3<9a>M4QdqreS? zoKnI`7u+0j1nG1F&5D68_sh=%HEeVkd=ra7<3T9>bA%XdSimtkxil4AMdX3b4nohd zpbc-35*6B?1#kX`4k>}}i~|ktfe#pfob3%e@*5l(pfkV~42|JzFe5k<(wzjYe@TRm zJwQgr53dB3kVP0%W#E}P&}<}f_ge>I40LEF6MPVOkwS7RblwVfHh2+(C+M_kaJg8l z09JN*Wh&^nZ=|EaQ;VR-aHm2#l;GF{MJ8x}F{n)f*~JTLvBBdSa`p{4w}9$$q~R@w zpu;PR^K&4@0Vr|6`_teBlAyB`AZs;=9f|>-51*t`cmzRQEhFaif<{{7Wxg1`Z zREo`I;0S>Da0IW}frc9R zF!EFd=-K3m2|1{9p*JBgfQ}?D$^}~sUU~)&J(wh@l?WY}fgK_Mb~H+D4Vh1Z$)jd& zR5`F-SeqH_4$#~K9?Rf$99XAkUJ3YM^PE)B_yf2cO3MUIeIQORfT{x>a9+fKQlKLh zY$2f8Sg`eput8vyrLrK?5vi2HwYUT{hXbBTL25R_M#CY+0&LU|T!q0V?jaMk;8Fo@ z2q=6JlmCwzW|roGmSPowTF>D5{=~czuny;(M9^9DE~N$ec_lguF8QGOI?$p^m(rrd zJkWW3pgl?{MW8|Jto+RMywoa0*E<;0ghJ}tkcnM{7-%L%Aw?Z71!}RuHROU@+>kaFs1^lB zk!zkpabg*0;so3^gSRqaV`aDxV+V~_p-g6jTAX^I41;VShAIWnVep_qFG!IBI#HP+ zur#v-Jk|$qaD%Hb==m1l^Uc7HMLn6lG%+s|RDr_gszGxCX^CZ^iABh?EI3<2OLPTf zS)WYM@x0)97f_}`>LMIo30fWsABq4McwnnxC&5A*(~y(gA=9xa>motJ!bPC7)N(*e zt3b18py3t;=!ie4f)5Sy0UPKHYGZ<3SgcTVcqQm;=fo0dlcyBi`AbGW>mAl=0WFCy ztpGJJL6ci$pxa|XlTe3OG6aLiKk`5~l@)=eeKJ7fAZeMYRgk$d@Jtk>M23vjLnrdU zqxIlnLGVd{pr%AJXz?d#02VX^oR?YwI&RA+KRqAh)|AprP|g6IQlFj=_Ka_89=P;H zIw!uMC^IiPvmh}?0pt)+q=2dkP!ka1JCtrGXaz?JWZgPwUJG2>f;N+arXoPIMxeew zq+<;o>V-Pf< zAQpq>5x|4lWrtT5!3XZ(@y_4}8YNEzc?#Ta0Qb$n+ChDh#JrMJ2IyilXgd&e22`Fp zXl)Rve+S!D0PAnVRU_&^$T3N92}H>a&a0q03R0hgGMpmZGRP1MWSR;ze*|^}WF`_O z2vLhF1{rRHju?Pi!IhezTIJAg+=`JVtzh*lipBuY5_M3i11syGMnMcj0o&pfaaa9IhPCvXl9Q^?EDgN*otPWy*$^2o~s9YUR01UeK8!2;(U)WiS% zN^=jdEXr2^T>=1>KHLE6?tnIVC|H3O`hfavAR4@~4YZWA806(V&{=e#vIy25Do8B> z9jgk;{ROECiDjVnC}@QtxQ&%k1YSFjxHks0KSY7JSxV5dgk;b{8IXzKK1XVvLUQJ# zhKVVu#l`uhpe$qs9YaVhg=|Rzg(0XD2diN7OBISzOEN(#L_j?sa8U#rHp~O9*@KVD zGx(PlfJ{?l@CRq7R1jSR+7bY2o`Y`^NCA!eg4z-Afr7NuJn$kFW=FuI z#;B{7AoCiKstmk%2ty6>bOub_;gz7K66joul1#`7C|Dx_9Bc|jscEIfpwbC+Z$VM! z;gu!eH6@_i48YmKCo{FQf`PbH2))k$w9Fb*$D_2o8K8F-pk8SJ5d>ZBmINw%GC>Q3 zH5puU!8Ibd#DX5K4_hbz?#RJr%}SvSXUJLosYQ@JDQL78WBd|)Yi{G^7I` zr-n?2B28qvl@@~*xn|@Sff^YK1x1Hfra{J2q1|}~D6IgxuK+alw-V&QR8WHyWrmLd zbQMAgXlxG@lY5M1Z^$? z%^bk4NdToQBsSPw41Q@+P9~OX6ArIL+^7W&LAU^@dj>iM0HhUk^?_zF^v(om!xrs2 z1;`{UXs8l0*a~(Bc=iCcqSP6>4Tb^604s6JDXmZl3JwO{(UMvOCP9NVkd`)sD`+t~ zsD}b7eBj-1P*8%)p2Sk{x_U4hG++r@x0P6uSq9z}i&SHRmob7CG-ZPOMX8_-b?`y@ z+{C=XQpoBxP{9Ujxh5xqrlB%H<##ctvselmV?}HlMCF0K0bTM_1ZvTN4rqdmw>SG$@x`l9>kKgKuL3jl_V~5EX-lxeyx<86cw)kU28Y&|7{HXv7daV2Hd1RiPL( z!H^8PVjEOugO>jyc6KqqrUc=)HGuA4ElJEPIkX*g@f&0XGiW9hBnBEe09Ov6RdL`- z0yc^P7eE~$4}#Yvh>-@+gk*jmXcz)?%s6P!34Go-w9Slmc>^fiP&=+LO&Fu`5D93) zgO3m3=~00X(=I87w_u8q-GRyhIRix&B%pwCZv&q zNy{t-El4d!2&EP?I72oMgVxqU_Ys3)9~98g`C_;V(Bdp`dlGcp3{)3fOb5h*4Jv?A zEoh`A50vo0tF(}mLt8+gJ5azY6k!ek&FR2ev88#SJ{gj6ki!EQK*v#lqPqyT=a~V% zkrkS)Pdh;d zA>etjG!M4Q0=n`8E(7UTm%%DUaE^qQ3BjNl*dox{&z#cY%v8|Oe_3JQkf^K`OL7(2yv2 zm0?~!XqF8WoZwgm4S#_**MY(J`Y2o-cY zL{SN71^{$98>nYf0^XMbt|*c0FGkFUfU0-cn%JP!f}Bi*#TLf#pB1}!ixzt4gNoO)>ECaOH3t~@lYH0=d9uIKK z6jINl4e28X9B7maG^E4;x+)EHT_?ZKB$`qS{)6#_8hbo0vt4;-S>#j8iWN}9snxC z7(zgO9B|t;A3V5@Sg(aH0~*kUFXnOtulWZhRp=ZUD4Z3cLy*a-;ENQIs}Ln5DR2#g zcNGJyahw94{evcGaH3Bt1&ykK*3yF7gCL7QK7k}Nm=&P%86pB2N6AgiO9pjxa#Eqw zoUj4H3TS#OX7GV6EeEeQ0i{cD(Uh5ccqM~xW-+MwyFdXnqyfs|(6OGBR0UkOia=Zl zZBjukErzTr18rUiF3n0UDTZZc&?3#^M-3B8GE1P#!kvl|%Roc)iVSd;f)6M+Bd_~` zyA;}D0c~`FFC;5Eyt1^oI1`*!VcitaZ6)A!VxR^?DU^jYi2%NF1e{}FEYR3L(iAa7 z52Q^AYJC)g#(=<91cS;D$P5}NBSDWXhKze5H9kRMnqO2x;)NrjK|YXjvlwg(Y+waC z?+La)1Qc|H6hVfyL1Rkb1>2zF0^UR`16?Ev8KHyCE;0n?QuZ)y=}=xDv7 zLKt|b5Ok0bv|kpqQUN?fpiq>0czJ0m=vre)5de=Ma77H+R0S#}VZ8_(`$-r)a}{dD@cm-OEVHPOHx4_bBc-x^tw|)OG7~0JP|#1@Z~3krKwfm&I5Su zOeyFFl;liZ=zu3A4dkYlfEJ$|h8AZzpn-SL0tV0&KEgCTa4G~9Iq8`t;B_>mXlvF% z%Ra$#UwNQm_tG-ZtO;m2JE-G@Pd8|oA~8J`6uj^eRB%k8Ouc|^>IJQ^gN&zxS8sr} zvZCyQ2c_o2E3r*(feLAq?i0l8h?O8P+YxC36n|h#{ooC`wERq1;{!A-1ukPCJI26e z4rss|w2T;X1q)PL3Fw?h(5xMFUKG>LsD}X_djOZ;@cDC?wnPPZza$k@QiB&Bf~V7<9R^2)N=Px1 z3XWvN^eAXj8oX&3v@j1;VSwx2Vu%7zrv~lD7r23tW*|6IFo2gkgD*OPOfi6_H$fFD zS`tKF?FkyILpca25p?MfVu`yiWLqq#Dh9^_O63eH&cXBep!Pmup(t1(cqbur8h|$$-mJ(5BXW&=uZQkl07w zqYSC8Kr=3S3_jpncA)Drtr$YV$qzKp4IZCU2VDk?SZW2WIl%=5XekS*l?K{Q1-cMI zPXUzBia=Ksf?AKDITLU}rI4czxnQOgwATW0$BZNBid4{gSWqJxnz$hM(}L17e32zo z20SsF1L{y9kIBJ%qHtBYNTwm}mIZ|<$~Xz);u-K#t5Q%6QcwbFDudgHpe>`ICLxFh zCj#hN3=o^}b))FJ6~MjY640%_U>3+1ph5<6DGg{X4oD8%j{?`FNIj_35(Si@RHTZd zSRoO-{T#N>4Aut+bu8dJ72x(k^D49y0Hrdd-curcFE(Nr9BLeREErVpC#OP0K-D7r z))0gcVkHzikn)?XTL8B$0>lh)kj>Qb1C8cGlpqoeGEN}(@ zMIroZ2+;f@LtrULZ!x?<171!RSPD85AJS}5FNK^NkO|rwlai`X3_Sr4lz}08fuT$G zL4^pYrw-ZDp#wcl50c8^n`@Gb4zE1CQcuALGy{?ky6*H40eI&=tU0IvS@V^a zpO*|0&jW2sJlvoFYGHu-n9#x*arF&?1rGV6lS)CS!ZAQ;1&Gb5(3RBSHYKQqUIgm( zfL6DG=AS@KeDE+uD)J>b$O8rNLswFZ^&s=9pcWr!EC$@}Md?E*fc6f+Te0wVW@;5^ zyaX~rl?oakLFz;x%mmHMLP||g{Zp(^kONxu3R*Y^DK){xd1@YP2sp0<)NU>YU!0Sw z0J=p7)uW2dZ7+z zDIO@vK-#O&WCF^iV7H*U9@G^Fj|72^QGqrMDizW)(@Q~PI-nCQKzSbApaZYG%z>W0 z16$NqmXC6NGHmM<=+asEHYRX_Ov}uHT)qQdZVz3c44r2!0u{)RDh_sT5m*L(R3tI( z0JTPu`iO9sfJ+WgkU$buo;o;zLMo-?e9*Ri*uEhJMW_-`dli&Qz^7J%uCXu41h2IO z1uAH85`KCmd=E9)Q(%K(eYld$qQfge1EwkP_41_M+5t8a)FT5M3w8>8KogWRz-wTk z%Yz_?BSA}bkSmE?E)FiaY%=Xo3NIV|Ogng=6F$KJ8WsRuWdrUSz}7*41|31`BEaqe zM_FDbc+eI)@T-7Q%chnlqsu3rSz*p}bUI6XfAk>39vq;^Hy!;aQsxNSn4ORf{?V_$F0FRx4Tccow;K%{n z4DPLi7m*BB|r&W%5~$91W;KFUU?2}!XO7JQOAXX0~<01sj7i|YA7fR zflPy)wE$We1G`^{0WzF{l>Jby76OMGNI$rP2H!ITG7Xe#Ate+;SbnhrWHJ}bglstn zRVpAGL6amJO|ALvjVE76j!NYP$dwO5kc46poN8u>`cX0u+LvP)5#*pao0C3dztJ z5SR+kzzBLd2McqgX+4bdmcSN56%;chDnKqVI=m9PS{GNo$bqf*MmZcFJgtMYZUn+d zjHf8UuQP(|I|3bRhO*ko1GO$o8j} zD1dIY0CmH#-Dw2c;+o1pjG|%&aApG+!k~H-K8gU9faF4~G7O-G1f++E#DoSoQZ__C z%@iqJfUU(bb`AB~aZ%H8Y_}ikfCZhTOs4OG#w_t6QMF?cI>8jvzZKKx;%mbC{sb7n;Qku)>WY5xzGPd7Kcp(co@6co!nHe1kV{ zL6vN373h*CQ2!G&CJL!Wq2jQ0pWqdS&?X1y&_+<62WKAC)D0FwO5PAYa{5jLZQ9KP z9Wewtjsa=P57ClA3M`0zL})?y2=hRJ47&Ih5>DU)o#724@{NHWkqDZuLqG6=Ow(bz zaUi7v*cYS+Tp?&H3%uYX%MkcYNZG`svx)YOo8tRf*1FoA{*M;g7_XO zUMMI)KxHgw#tSy8ms?;&9Twf{gH2^f$LJ^;0xNI%dT zS}}oEYY|(EDOfSUm7}(t5T!UqdkM5j8?>7?C$Tafv`G$pjT7_^1u7d?%mA8^fjW@^ zap=1O>e<8KxGIL%WMD4%0CaGB0dWd=X>n>1TouMTWcXkws2z#Wgu9-Gt;d3;Fwj9p zphKHMQw8u2IA{O?JmCS#n+&iiIml3@ss{Lq5b#YYkoF()Z3+a`f~Wl8y)H;=F8T0E zP$ioWYRM2jizObZ5vUy{9o8CpSnT4cq*U3|}P6h^s^VX0czX|2Pgwmg(>i=3ZFz_)j zFmTy0Fw}E1Ffd5kFfbT0FfgdvKwKDZ!@wZGz`zh^1Mx||4aA~S8;Hgx8;B1k+CUsK z%LZccJR69`E1>FkK+QdB0}1-?Hjt>&vSnZp0)>n%Lp|6B!L|$xyr4L;g;TZqMPY#|Q+1~vFERG)wy1A_zu1A~zrM7=kZ4z^=pU}0cj zh_+KmBCNMBCG}uE76m(!<5M*Fr5O;v^H60)h(}(hH93T#M za)9_a!U5vYcn63>^P%c%q3XM!>Lx(dO?QAeXt@IT@_9}Wb5}z7+nm4_GaLl->lql%J3)MW%L(F;mrw;?oggk|c7_Ar6=cRlmd;;=qm0kPzAF%)r18%K!VF85k@;`PLZ{ z1spCATF3>WLB<6V$0{xm3r(Q36I49F1(KQ*Tp(#9)dk|QmK{JyF)CP><;n4Tz81i zRzWqahZ?vSN*{BF1o?S)1_loX28OHd5D&=T-aY&{I z#H01)9*{)R2^E;?0SSra9+2vEy9dNa7oqemsQhCOh|fPm4dnEM_)OdrVz8PgMBc&^ z;s8HSh{f@q5D(`<)YmhVdqOO1^MnN9G*3vGKhKkaL7jnt;eaP3+r99Fgv?*4K}=o{ zhY5H=^hXvyiF!(VrFl_SzrJZ^P23Bu~%T>K0 zE;sRpSmfpn(dg|BN$ufK@d@4#gQr6EE%1i;Y`r%mYW8|V;{LEV#NpSyAq|!{Ph(Z2Pg`rS>q7THtbRPx=a|Q;68XriUZt;OQ z{Gbn{;JNGr37Pj$`UjL|^o11BT)q%OpNjBVUL?{!lu`7ZQY-z7U5L`$BwJ z=?e*&c3+5vJx~MZ`9eZ)qc6lG2YeYAbQu^J?)yR3gXG&JKZpyP{UD9c8GaC-9rlA*a35;WKd3qme@Mv5`a>M7>JP~U+WruS8~H;# z=m1sc>kn~AsDC}gh4KCj3|XMInLngbxePUkDFEVQjsQs6&Km$pY-$0JRBaXj(eEAr zu`nP2VsLl>#NxyNh|lu_AZelzs%~lkBzMiJhZ?*MYSH-sh)b_P>4yQ3me0EYNQfu~ zLVRi#2(j2M5EAt6fe?p<1wvZ8X;5`NPjiFyWx#laAlZViU`WN$E}mOB;6jA}9osc(X$wJ}rmRZ6T0?Y-$L^{OutS^Y=s5p9q2G|0^L341J&=4`E=? zVPIg$3WaEx4yEUZLV|XAC?pZB35EFVKq$xu3=GGi^vzI6(7q0ZIOsj zAmYkl5cBlI7#Qk7T_ck)h|8nGAQoqaK@2JkgEYhI!WbBG85kIv!XQ5Q0HuFI)iZ@d zasyX5M4xmxB&0N;v{5)DQQCw<%ufmj$2~(mwl+bVNcr1{0wgUPnTra9d#35-=IzI;D(+a4%rWlBiyJ8@Ta28bEI*7V@ zhV4*+gHVO1p!{1<10Kgfg77ueK|i5>EF|cj$3lYgS1iP5{BaQd z%5e|}n8rcM3A;FmLsR1*Ay*U!DbT9o7#KuB_5YMOhy|uOL33^ z2jzJ1kO@O%JOe`<0|Uddcu3vAngB`d7737ni--hBuDP558G`wr0P%=HBE(#`L`ZfF zOJraG)jte1iI7BdHWA_zi6lrtq>}`3d1MkKEu=x|!XyTUB2WV)3DV?x4;A-LhIk|_ z8Inj-k|7osBty(;ONK{NM&HqU|?W)3l$ej zgE&w=tsXMiq@4z#8`2aybzMOQVJOuJVE*kAr>7egv9mVLWslEiXb5vR0Q#HbP>dX zWnl4o28KyRkVG=O2x8!hB1n|%gVINfAW?Cq2omR4iXcILs|b=^pF-u|7eN{t--{rX zl5{a7?dTLkqRJl14=;v?6|ZTfx!$kq+0^5|0PNx7TA?S zd>UB_39`geh{h}^zorz@B5EyVU~pq#U|3%Y39)abkdWXhgE&O24B{}gGDsRSEraNb zE`x+jYZ=6&)5;j?!Gp=G${;S^S_a8pd&(d|cef1E-v3Yr@d#DS~J>mk`=7gU2}1p~tj&}dc##6gEEATB*s0SS?N z6%YqJuYi;XzbYWPfuj=QAni(sLyapT`n)S4AsAl?F|QD+uA&m+z=rxtNF_3{5)#+T zDj`9*3CcfI39;~8B_xO+RzkAt>qhj3gV#pJ5>;uKCXfU<@YLx%Xq6H4wI{f@QtCg3sgL`8lo?&nt{QFfq|i}8j`Pf zSA+94!|Q5@gXL==A)r|U2^s4eNa_!+0Y^bSLskvMhm{Zkh8`$Ay9Q#xDky(n4aC5+ zHIPJgy#|tx|3VFxtc9pItc9c**IG!_q|`!kS9>kQo+Y)A5Z+!3iqd)phU2x6pubQH z@#&pf1_nz|Wl;;UP`wT!Z&(KjLfblsk6h~@>ci_GX(6KyVsKd<$Y2JBwmL}Lu)hux zk{jzF4m(x{iK3?>P7RWY16Bp_;5}$ z149M_1H)3NdcGD&(2KP|vYAc`M4fR9#A2Hki1|_VEs*@12bJh(fw*v43#3Ti0TsX8 z!T_Gd`Uo{hycOawg;t2eG+H5P!M+s|lF_Y@5UGHQPiTeI8EaZ0A$O(~;(+?6t&rO9 zXDh@)wl;`H#WsjfE!!X+2iG=81EQ-9V$hy8NLskl28o(yZ4muG+aNv^X=h+a0!_WN zL!+V{V%~ywh{bE#!MUNH;XpeBLm+6ds2x&L8FoOTAglutgy|g+4YeH*gC}+{FxY}B zpAJakeA@vDu}>Y45Mb$q1hqmZB3*sQ{E=Zfsvx@;dtF;6wzP$^Q>aTV|LX4ps zqEDe4QeJ3wGcag@^1pdEB#x*-Oi=!V4k?QTdMK870j2g+yd zf#{d(f#`GTf%r6{2huWX?SX{UKB)YK9_akvlO9OWedvKWgr^r0BI>=6AT#TQL`8fr zWa_1~7m}Se^g=qFmwF*_3mU}$%?0!HLHNpjkdV{wgZS7IO1t+#JQ&)?P!FE@OzVUA zEDx%&tdD`A2Q=W&2T6SV{g9vw>4&I`?T57OQu`qepV$v6V%PRVEIb6I&-6nqy4DYA zS3K{Bc!XmDB-hAIfEJmi6Ch=>^#q84NfRIz)lGneNZSO6j~7mWbj1!&fMnaBP<6r+ zA!$c?A|z@wCPK2I<3vaZ#Z81H#vUj=c_Ji)X4OxGB(h~tdK*;1v563upPdM4RNk8i zaR}2Sh)-oFK`bPc z?PQ2U+b2V!Zo*`6NYyj!nGC5ku0joBn*#Bf#1x1@s#75KxY-m)0Tej}lApVw>K0Fd zbY3@1fn>MeQy?LwHWi}I5lTl+g)~eGr$QXGbSlU}^$ZN_r$VyH4zK_N!_%n@3`-dp z7~V~Vv;(G0gE;8iG>FFA(;y-7bQ&bBe4GX{h=GB3IwT~-rbDu;#&n3dHB{UMDjqf+ zl6EquGcbsO@_+Mmh=H@FLxN`6bchcwO@|bnZ>K|2?T_gY2k^~cU?^o^V33#r38B6j z5dHIKK(g)X8IS^J*9=Hnxite4HScFY9Q1t##2$v33=H+4wHZ1yA#r5`r2}R{6sF9C z_&j$eB!sGFLQ?gLUYgwWbq z(E9(tEQmo@XF+^=e-At5mvBCb3e;v=oukPtAM4bksB8`22%oel9& z?QBR0OoYlWgYq{(`A28hLlm5!4ao&hW*qmgv&MN4 zi}ufhvp4X8|OHY8F5eXBSl8(ghHM zw=94}&4~pNi_b&lA3^nfTmZ=({}(_UEVvMCUp<55LP(IQE`(SVv=HL6q=gU-ISU~{ zT(=MslZ>SI=B$xfGZ0jY3Bu0{lA3}j|ndVTg0HWh=IYLfq_A95yYOnMId`X z<9~}F*`;F<#G)08AO`ORD_~%_un6MwTZ4eeLK5fArI5;qa~T7J1}Oh)ErXHe?BlZ>(jZA*4oRG|mP4XwIh5YC9MWmsyPScck%56BYz0LA#tKO8c)SAQfiEi{ zQOC3r!k1miz)%lbk)*v6GQ4KA5)y~0D!AIAp>>dKR=5tLv1=V<#A5O~$e`2Sbr6?}t%oE^h4l;!jG)zU3=9lHObiTVj0_C> z86kQ66eGlUvl$r}mNPW0@EjE-^4L zd|_l@u!UN-1tbB*K~TMi85tPr)0h|-oEaGy9)UWJjF81hT#O71DNv2upo){A`~)UQ zYCpihz+lM8z_1%C@6W`*@CV8^U}9jfhO(h{GJJtDK&2|Eb}eCKU|0tl{{x9k7#KD{*%KK+`46;;kr9&OKQJ;dJOeEv1g%_z zDmn+M2N)O_HiMR1fJQo?;^!F|7^)c<7<{0PUBJk|;Ku|hWG*u>FxW!X?PP=u%Yz*L zpAj;631as$Ffc3z*>4TvLGdQgGCZipt&9u|EQ|~cilBIcifw|@^B5QyUNAB+*fTOP zyau%e7#SF{nHU(pLFKKP7#Ng5d{6YCdQQCTMCN#Fb)VV5o0oWMI%_WMH@h z)d-S6#s?V~7>+{aj2Rdh{xCr5_REY647rR94Ec1c2;GBBhwL5g2> zP;OviU|7Y-z!1j7z%Yf8f#Dr!bcKO|!HJQfp23|Fk~h6U8kiUuZZj}2ut6;ZIpjWw z0Et0q6KHUAF)=VWGBGe@GBPlDf)X$zWCBZ+iGd-25z=aoVPs&iK{AUK%C=#ERLil9 z(4mwlP-35!Av>SkbI zV1%+kOKU%Z%6J9_hBpih45^?5$Hc%e5h@SU4q6)oVuL0d`WYA)j)OQ13=HN>3=DUn z?6shDHJO2dAsIB8#0cp;xl{+59L3E(xA0|{}>q#FsxvN^efCjYCz)) zjF3?>kXh{v3=Bn#3=H0&{J$3z0*nj{!Hf(Ht&9u|>lqmsLZF(snHU&S85tO!GD0dC z(5N@afSC*o41tUc3~xXM6x4Fi+F{UQQ_zHU3sekL9fKw@Kzf*&AhjWg4a1V4{C|Lv zfng>i1H(~J)d`bfU|?WpWMJ3>TG7P7z|hOcz|h3Nz%T_W51I+lWny5EVq{>r2NeS? zVisbA3`#79I$#$g1H%m{y9eZBC_9A#(rc3r2fnhJGE?{I}SPC@=Bz1z3fgz5Of#C@Q1H&#*X$g(0_0UD^ zAT^JSgn;rtNCOBTL$ah3B*4JHAjbrm zlmc->LCbO(85rh4)mbqyF!+IrT__*a@?m6RU{GXYV33E36@oM}KpH7fCU|AFIaEFz zRR4cxWMDWAl`UsvU~pq(VDN>yn1_*pA%Ka2A%=;8L75RU$e0XDlu-3HObiSgp@waT z(gh3*45t|x7^0XM7?yz67DL5BS~wXQ7-X0j8167Y8l&~$P>WWBmRT?|FereEVW=3=G#m zH5U^Dg9;M^Lp(I}Kn`MovQ3#77!E=`qy`lO$uEJ5f!IG77#J>qJOqmWyNnDB(oo5h z3=9mbLB%c;WVGWiBLl-ikPavYZJlUkU|@L402v{h4iyJcpt2-`k%1ux)DUH2VBi5c zl97R-A8NKN69a=L)IrM_7#PezN+>V3@!NnHL7BHG*0U>Ta!JWMFv7$iQ$2 z)Fy;F0Hg+lZ9!A(j0_B$LDex6WYH2gBLhPMBLl-q(A+Xqy$6&Aw?A(|IU6-YB^Hw+^K!(#>phPez340cSAuDv@*4isk~8iZ>Y7#MP(J_Ye%IFbo6 zLJs1C)`@~vyPpAZ7#J89F)%R5GchnsXJla50TsIn${C;r3j+hgR#1pQ#bMN0P-rkR zFhqjNnnF+|1IqWHq83zbLRD#l>T)RC4m2amz`#(;2w7(F6B+_LKvBWKz+k~RSkZc0&N+GNYP{K;qIgeJSj%TF$i&z<};US_gp zg6!nlg!swN6O<;4B&tt#PmGzoIZ>KBFGT_5Sq9gsgoz99-5q)CTE+RpIZQOYKj$uXKq1$Q3=SaMJ1`o{LGvjh0HvK zf};HNqSWGIJ*djml*uR3EGG-6r%!H47v@w5N-Zo+EiNgZyeEB1v{z|v0Vv)|GExNBP}sACp9HLIlnZoM6*~Svm`aQSfM;4 zGdV*6A_dZs33i~~Wd98H$sHN)^(awoqn~J}$KaEiSd^!bn_rZwkcgQatU&T*sS1e- zMTsSudFc#3nMp;7MU^EPnR)37*{PLQ3_h9JsbB&W4ke|<3_h88AO~jVrKDD97F#LU z6qgj`=cU`JYRHykmgJ;r7Tf4Ug%px16;w46OG`5Hi!>*PW=@^_GjrkOi&?sprL#FF z$7YLj=NBnB=jZ08=9Lsr-jp3LP_9srSX^A5UzB3S;FnraGC4d)bMo|@RKC3YlGI{Q zh?ixiq^4}{$kkw+yfg2oT2V@BkwQ`>LqKABYOxhV095^h<>zM?PhMA$JlU?9rezxu!u|ASW|7vm`ZzAv6z^ zf>Ki^KW#8!0}EPBc5Kp{+|ndAd2dtx$z9FSlRq}AOg3)On4H*RF67$ka6Vp?5LsAoStrUFoON&z#f>KknGnlvydH6~(&+ zarsW(IlY!$(N@7w)0%5C|4i}8{4u3L*d~VM2&AoFw87Di<7oTi9UqL4* zH8~@(C_S}GAtzCxATd2vp&-As2*k-vEh#BVRXDsrAuGSM=uyLZ#mVLKjW#nac+a?* zap?)h$x6#Br4KiNl6*mau|i6!LUL+JNh+cwpS9d~^0(#nlY3U^O+LFqbn>R{!jpwp z7ESJ5={xz&%IA|mtx zWa&K`lfC!IPQJ89g*PuhPXUs34zDbpEWG#SWU+mAw_Z<0|6r5OEl3D~(oRkQTS#bV^q>SRjD?vp@W`15CD5z44 zan%KRAh%W~=9MTElqwuv1xia0XB}QytT%bfQM1YH$5fb$ON%DY&Cn4>O*`PKVe-0D zV)94{3LHj0iJ8U4;HXbk$jdL8yz!XC0dk=aDj}5xsUQ~> zrGnHXXQVQOfLdTEak}~aEoVkPm&B4(NOH@{FD;oIe8l`?tnD`|E|kegGBCSN$9G+F+&`egst z_LJ4$Xiv_5vud*3yHAsi-2(meUeexI^7ANl0KI9cM0rf{)Ba#3bUCa6^e ztzsA^8_t!SeEuuj=G|Xo8F@hQo2URODkjVSGMJq9O>MI6Z|lkD{-{s3{T<3tl3J9T znRj^QGXg3{RIaFr+dtFt{vdU;yz~EoWdzVPIh3T*1H~!N9D3GjVhjun%22-5Y6b>21_lNvs5;Np5DS7C)8@2e(4$nXBs|3f4k3>|G6Uz=hQe41x>{3=dZ`Fi0{mFnnIkz#z`Rz`(l( zVzKHP1_nb01_qlo3=Ev05Q2(VtbsVNe+|Uk>1!Am z!oa}rxPA=-10Mqe!waay_cag~vaE#|AhDK#L5qQbL1QfggDwLDL-1ONgBsUD)XiSY zz@P*Q`n3!U+zbp1m!R~$wGeY(t%W$~=UN7aWKh(tV_;ANg~&Pv23rOOhWeg$5Q|Q& zgBWmY9RtHm1_p*_>lhd|GcYhTtcO@+vH=pr9vc`KxEL51{5L?NCTar%gA@Y;L-Ga& z1_cHNhPn+54AKk?4D+G#yEi~W=*R|0+@IUPz#z}Sz;I;)IEv~SzHET_fPEtag9rly zgVsg{23ZCM2K$W=2gPoL1X<=rh=pZP@%oJrhj&BeXG6tTY=l^}Wg{fYc5Q@2<)w`b z456UJxsib(ih+T_Y7+y4C__C1!_-X-49gf87*=nB_%LWQ#KOqU5DU_v{Ibmu2R3hp z1nCSYf5B#m54UcHgw+1ckf6T|=uZRYN7PhEs(UZb_*ovk8goE;009t&lU!T#S9D#Vp|~&-nA8yoeyn= z=)1j@fuSChy}oW`V31*8VEDHc;uGm@kRVju1~E{38^lNUP`=+bNRTFNgZQKbD&GpF zr$Fh&P<5N2>W*xKgy7X}3=HNB3=FTfG1N2YFfcGEZD(Le0wt>LkhHLAJH#PZw?iCo ze>)_EK5vIu_zx=1zXK9Q$~zzqG=}n>b}%sTGB7X%?SMpS!VXBtr9;K*q3U{f)I)-H z?hc5Bdv`!AJiY^B(QPRI%??mvVPIg`2~M>PVo+LhCnSH{?1Y#Ty%Sa1 z4QqEYFeEZCFr3^82?6b0kf?U3-vzPIXBR{wVHd>3rBHs&E(QiC1_p+SyC89RWfvrE z+=236?t(b{<1R=D{oVyBpxAapLPT~qB&u|FLqf!EH^d`8yCLS)C+&u4$l49bUX8mU z*{^Fi#NZXXAwJv$)p&6?B*>rdhJ?^}D9y14Vv*z?h`9D1h{tU9Kte14N+(0*%OL!E zhW0&>R5=SGz_1xgAKL@5_~sr422%zGh97$%L8iACB5t)8VnO6yh>vpjLPDl_FT|%4 z_Ci8n-d>1<*6xKw&Az=54_?~~a#%eB!xyLq_I(fyqWeG+3=As!AQqVKgOqUI`ye5b zwht0?1yK2leUPB<*$0Wj>H8oKS_4&gXdeTEIs*g4seKTKecA_!Vut+;4053S&%Pg` zKy5!HX#Ms>6vRRKsrw;`sdPUiTlVjVIBY6ZekD|V=YEL8_V0&8W36?f}FC_YXiE`s@HCWPTlhv=jIbLLBOHkfEMIl!1Z4=ODy~Ne3bMzXqyc{y~UA z%MU_AX5B%EL-rknIPCmEh(m54gv9Avs5ti_NcAdy2oe%9P+Ij6Bn0&iF)+9>Fff=L zs)zWv`Vgc9Y&`@?1B(tp;&kI7NYT3I5X7Rphaf(B4^_{67$UE57$Wa@7~+uN!;nN> zco} z9O9wkZKaQrv}gAJ%favTy@f+rw8mpK8kK;r~N-0B1* zZe33>FxY`wJSV_DU|4hl(nQ;K0^-nzCm;@gc>)q5KTklSQ1~Ro0h%Wn7+gRNkdq7y zJfQqve-ctK^qhoPJnJMR@hm$DNgMm2^tF?aAbooh5@lScAPz7)1u@v`6vX1_QxJz_ zpMvNwJ_QN#u2YcIKmQa1g9ZZw!_rd>4E3P4+qqMaAbANj@XskoE)X~kX}8NmX}{AD z3u;e8+WEbwAwE2E8WK|XPD3pEaGHU^ih+TF^$f&Zhcgg|2cLn+7o35Z(|U%X9^9&( zdIn<9;WG>jMhpxLch5lLQs68kS7@At_$cfwBq-y~g5r*Wq2w$i?i<#3{?ya3>VKbFxZ0%qH_!k%nS?+J?9_>PdEoj zwX@DaEIx1!;?QeQ`48tH`hJ~bVDJIO>3K+0w4aAKXvTSn&ljJEIOxE6h{fm5L&}Zo z_2(fChacw|7!(;87$h!0d~S6C61PDYAVHgU0pjwC3lIm@L)9(407(mbFF+jp@&d%- z&ley;|L+1MKDHRQKxhXqE71)#2n*G3=GN)3=Hm`z}MuhdE&RdIpB=mmwCPxC}A)@?}UR^Z=@X`3l4*f>$6uk%ZDpS0Dy!UxDbi zy#n!}#}%;87-FtKqOugKzV`|wq^4bgMA?EX3=A@${D0;OBxqkk4G_Ny@qzYLh=a_p zLaJSts}Oa`S0NTpyb7^+@l}X}*Ik7ed=aYt?^Q?$$y|fb#@8Te% z`2r|^E0llW1|$Tp-hkM5?*>CX1E_!g@dl(sV!R2F(7Fk6i0w^?c;HP)fl+l65&~T} zAtA5>s{Ry|zIziAw;!PTxo<%nD1Qr*Mzn50(uDUdh=XHpLHqwHw;(<)xdrJa*WH3x z@Ca(a7pR8+w;&EoN zR1noOFxpJ`Wx+FnBUBFfcuYM1{{o z28K-x3=BCBp;7h-5`xB$AVKf?2r_Dx@(5Cg?05umz_~{Z4BVjnfA2G}84L5@Jgp zLqdApV+MwL(D>c4#}Er|J%+^5W2nWip%(v#8YuDv;!uSrki@9_gn{8Q0|SEtlrQoW z(#utU3UPSnQ%Fe6eF{;({wX9X4n2iL>4T>X^^oztr;vQj_za>!{~0)OFgQMgILPA} zB#{L?gE+Jns;=!B#Ah>}L436783Tg>sH^o15@NrfL83_DIVi3f7!006vTMk5NLt8# zUJt3Y+MYvPw&*#ezCHj|c=tIZ|9*K6afs*(NVbuE!N8yo8ZmtVad62CNYJ*ufJDiJ z7Z82(UqGVfzzYV3HUt8}#p7|2usJfq{Yh4J0ID-Y_uKF)%O`zJWOW z!y8B~W+?yQ zJ4m9t@Q#6@7&L*p`W~Wg!+VH5``&{cR?l$mJ;b2L?;&yX={=-5&G`Wmv?d=Q zK6Lv4iGtN17#JED7#KExU|^U8>cf3xU}y#nDu0B8p!X+8&<1^iSRC^SGVZti6Qq3L z{S3+0S)Umg7(wHIOFu&r&GOF>jW<3+QtKlq{q-}%V2&@)-s=~Lyvr9zNQHlaSkV3j z(iXh?g@M6=fq_BxD+7Z!0|P_cR|bYa1_p*zUm;QY=PSe>=Wh%Q5up6<`wfyBmwkhD zl@5MmVDJZx+kJ-&qo;j`SiJW;Bq~0AhZHFGKOhEA{sD2o(;tv#x%E$o1B-q_g1q%7 zq~MzT6Jqh!pO9?4|0e@OJ!tg$%uh(Ry7m*24e$Si_>A`#14A++1B2}^h{lD#85p8L zBc;C~^6Y;g`po}8qR`}j$p@C2Z!TQkE+ZVAT2z)=l$ozkT#{Il zSzMBtoj5u6h}LG~Bi?L03I(Y}NB5Pb=A@ToZk~F|fsr*kv8beU^Oe&vY%D&hnJJsi zFIh0MlvI`^ZZ5g($jsqbaCBc;Vov(zeb;o^H-Eaz%*Gy^lUPuaSiG6}i4GTYWl7@X Vg;`>g&vx=owp=K`x%3^I000KmvCaSh delta 6487 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 diff --git a/locale/lt_LT/LC_MESSAGES/django.po b/locale/lt_LT/LC_MESSAGES/django.po index 16110b069..d2ec32981 100644 --- a/locale/lt_LT/LC_MESSAGES/django.po +++ b/locale/lt_LT/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-11-17 18:03+0000\n" -"PO-Revision-Date: 2021-11-22 08:50\n" +"PO-Revision-Date: 2021-11-29 13:53\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Lithuanian\n" "Language: lt\n" @@ -591,7 +591,7 @@ msgstr "Kalbos:" #: bookwyrm/templates/book/edit/edit_book_form.html:74 msgid "Publication" -msgstr "Paskelbimas" +msgstr "Leidimas" #: bookwyrm/templates/book/edit/edit_book_form.html:77 msgid "Publisher:" @@ -930,7 +930,7 @@ msgstr "%(username)s įvertino %(username)s reviewed %(book_title)s" -msgstr "%(username)s peržiūrėjo %(book_title)s" +msgstr "%(username)s apžvelgė %(book_title)s" #: bookwyrm/templates/discover/card-header.html:31 #, python-format @@ -1114,7 +1114,7 @@ msgstr "Šiuo metu skaitoma" #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 #: bookwyrm/templates/user/books_header.html:8 msgid "Read" -msgstr "Perskaičiau" +msgstr "Perskaityta" #: bookwyrm/templates/feed/suggested_users.html:5 #: bookwyrm/templates/get_started/users.html:6 @@ -1483,7 +1483,7 @@ msgstr "Lentyna" #: bookwyrm/templates/import/manual_review.html:13 #: bookwyrm/templates/snippets/create_status.html:17 msgid "Review" -msgstr "Peržiūra" +msgstr "Apžvalga" #: bookwyrm/templates/import/import_status.html:119 msgid "Book" @@ -1513,7 +1513,7 @@ msgstr "Importuota" #: bookwyrm/templates/import/import_status.html:182 msgid "Needs manual review" -msgstr "Reikalingas manualus atsiliepimas" +msgstr "Reikalinga peržvelgti" #: bookwyrm/templates/import/import_status.html:195 msgid "Retry" @@ -2416,7 +2416,7 @@ msgstr[3] "%(display_count)s prašymai pakviesti" #: bookwyrm/templates/settings/dashboard/dashboard.html:65 msgid "Instance Activity" -msgstr "Pavyzdinė veikla" +msgstr "Serverio statistika" #: bookwyrm/templates/settings/dashboard/dashboard.html:83 msgid "Interval:" @@ -2436,7 +2436,7 @@ msgstr "Naudotojo prisijungimo veikla" #: bookwyrm/templates/settings/dashboard/dashboard.html:112 msgid "Status activity" -msgstr "Būsenos veikla" +msgstr "Būsenos" #: bookwyrm/templates/settings/dashboard/dashboard.html:118 msgid "Works created" @@ -3467,7 +3467,7 @@ msgstr "%(percent)s%% baigta!" #: bookwyrm/templates/snippets/goal_progress.html:12 #, python-format msgid "You've read %(read_count)s of %(goal_count)s books." -msgstr "Perskaitėte %(read_count)s iš %(goal_count)s knygų." +msgstr "Perskaityta %(read_count)s iš %(goal_count)s knygų." #: bookwyrm/templates/snippets/goal_progress.html:14 #, python-format @@ -3504,7 +3504,7 @@ msgstr "Viešas" #: bookwyrm/templates/snippets/privacy_select.html:14 #: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 msgid "Unlisted" -msgstr "Nėra sąraše" +msgstr "Slaptas" #: bookwyrm/templates/snippets/privacy-icons.html:12 msgid "Followers-only" @@ -3873,7 +3873,7 @@ msgstr[3] "%(mutuals_display)s sekėjai, kuriuos sekate jūs" #: bookwyrm/templates/user/user_preview.html:38 msgid "No followers you follow" -msgstr "Jūs nieko nesekate" +msgstr "Jūs kartu nieko nesekate" #: bookwyrm/templates/widgets/clearable_file_input_with_warning.html:28 msgid "File exceeds maximum size: 10MB" diff --git a/locale/zh_Hans/LC_MESSAGES/django.mo b/locale/zh_Hans/LC_MESSAGES/django.mo index 1d1227f8092b70c68bb692fb532759090142aa83..3e559018804034a297286bed7c8c6828714c49c4 100644 GIT binary patch literal 59480 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�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 AMF0Q* delta 16954 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 diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index 1b86621df..e52dfc4f5 100644 --- a/locale/zh_Hans/LC_MESSAGES/django.po +++ b/locale/zh_Hans/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-11-17 18:03+0000\n" -"PO-Revision-Date: 2021-11-17 18:42\n" +"PO-Revision-Date: 2021-11-29 09:31\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Simplified\n" "Language: zh\n" @@ -184,7 +184,7 @@ msgstr "Español(西班牙语)" #: bookwyrm/settings.py:168 msgid "Galego (Galician)" -msgstr "" +msgstr "Galego(加利西亚语)" #: bookwyrm/settings.py:169 msgid "Français (French)" @@ -192,11 +192,11 @@ msgstr "Français(法语)" #: bookwyrm/settings.py:170 msgid "Lietuvių (Lithuanian)" -msgstr "" +msgstr "Lietuvių(立陶宛语)" #: bookwyrm/settings.py:171 msgid "Português - Brasil (Brazilian Portuguese)" -msgstr "葡萄牙语-巴西(巴西的葡语)" +msgstr "Português - Brasil(巴西葡萄牙语)" #: bookwyrm/settings.py:172 msgid "简体中文 (Simplified Chinese)" @@ -906,12 +906,12 @@ msgstr "%(username)s 想要阅读 %(username)s finished reading %(book_title)s" -msgstr "" +msgstr "%(username)s 完成了 %(book_title)s 的阅读" #: bookwyrm/templates/discover/card-header.html:18 #, python-format msgid "%(username)s started reading %(book_title)s" -msgstr "" +msgstr "%(username)s 开始阅读 %(book_title)s" #: bookwyrm/templates/discover/card-header.html:23 #, python-format @@ -1395,11 +1395,11 @@ msgstr "导入状态" #: bookwyrm/templates/import/import_status.html:13 #: bookwyrm/templates/import/import_status.html:27 msgid "Retry Status" -msgstr "" +msgstr "重试状态" #: bookwyrm/templates/import/import_status.html:22 msgid "Imports" -msgstr "" +msgstr "导入" #: bookwyrm/templates/import/import_status.html:39 msgid "Import started:" @@ -1407,36 +1407,36 @@ msgstr "导入开始:" #: bookwyrm/templates/import/import_status.html:48 msgid "In progress" -msgstr "" +msgstr "正在进行" #: bookwyrm/templates/import/import_status.html:50 msgid "Refresh" -msgstr "" +msgstr "刷新" #: bookwyrm/templates/import/import_status.html:71 #, python-format msgid "%(display_counter)s item needs manual approval." msgid_plural "%(display_counter)s items need manual approval." -msgstr[0] "" +msgstr[0] "%(display_counter)s 项需要手动批准。" #: bookwyrm/templates/import/import_status.html:76 #: bookwyrm/templates/import/manual_review.html:8 msgid "Review items" -msgstr "" +msgstr "审阅项目" #: bookwyrm/templates/import/import_status.html:82 #, python-format msgid "%(display_counter)s item failed to import." msgid_plural "%(display_counter)s items failed to import." -msgstr[0] "" +msgstr[0] "%(display_counter)s 项导入失败。" #: bookwyrm/templates/import/import_status.html:88 msgid "View and troubleshoot failed items" -msgstr "" +msgstr "查看并排查失败项目" #: bookwyrm/templates/import/import_status.html:100 msgid "Row" -msgstr "" +msgstr "行" #: bookwyrm/templates/import/import_status.html:103 #: bookwyrm/templates/shelf/shelf.html:141 @@ -1446,7 +1446,7 @@ msgstr "标题" #: bookwyrm/templates/import/import_status.html:106 msgid "ISBN" -msgstr "" +msgstr "ISBN" #: bookwyrm/templates/import/import_status.html:109 #: bookwyrm/templates/shelf/shelf.html:142 @@ -1456,7 +1456,7 @@ msgstr "作者" #: bookwyrm/templates/import/import_status.html:112 msgid "Shelf" -msgstr "" +msgstr "书架" #: bookwyrm/templates/import/import_status.html:115 #: bookwyrm/templates/import/manual_review.html:13 @@ -1480,11 +1480,11 @@ msgstr "状态" #: bookwyrm/templates/import/import_status.html:130 msgid "Import preview unavailable." -msgstr "" +msgstr "导入预览不可用。" #: bookwyrm/templates/import/import_status.html:162 msgid "View imported review" -msgstr "" +msgstr "查看已导入的书评" #: bookwyrm/templates/import/import_status.html:176 msgid "Imported" @@ -1492,28 +1492,28 @@ msgstr "已导入" #: bookwyrm/templates/import/import_status.html:182 msgid "Needs manual review" -msgstr "" +msgstr "需要手动批准" #: bookwyrm/templates/import/import_status.html:195 msgid "Retry" -msgstr "" +msgstr "重试" #: bookwyrm/templates/import/import_status.html:213 msgid "This import is in an old format that is no longer supported. If you would like to troubleshoot missing items from this import, click the button below to update the import format." -msgstr "" +msgstr "此导入所用格式已不再受支持。 如果您想要在此次导入中排查缺失的项目,请点击下面的按钮来更新导入格式。" #: bookwyrm/templates/import/import_status.html:215 msgid "Update import" -msgstr "" +msgstr "更新导入" #: bookwyrm/templates/import/manual_review.html:5 #: bookwyrm/templates/import/troubleshoot.html:4 msgid "Import Troubleshooting" -msgstr "" +msgstr "导入排查" #: bookwyrm/templates/import/manual_review.html:21 msgid "Approving a suggestion will permanently add the suggested book to your shelves and associate your reading dates, reviews, and ratings with that book." -msgstr "" +msgstr "批准建议后,被提议的书将会永久添加到您的书架上并与您的阅读日期、书评、评分联系起来。" #: bookwyrm/templates/import/manual_review.html:58 #: bookwyrm/templates/lists/curate.html:57 @@ -1522,7 +1522,7 @@ msgstr "批准" #: bookwyrm/templates/import/manual_review.html:66 msgid "Reject" -msgstr "" +msgstr "驳回" #: bookwyrm/templates/import/tooltip.html:6 msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." @@ -1530,31 +1530,31 @@ msgstr "您可以从 open an issue if you are seeing unexpected failed items." -msgstr "" +msgstr "如果您看到意外失败的项目,请联系您的管理员或 发起一个 issue。" #: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230 #, python-format