From 87b2c52f3d32d32187cf318a39078acf58041ab8 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 14 Nov 2018 18:02:04 +0100 Subject: Reorganize treatment actions - add a direct to treatements --- archaeological_finds/forms_treatments.py | 58 +++++++++++----------- archaeological_finds/ishtar_menu.py | 46 ++++++++--------- .../migrations/0039_auto_20181113_1600.py | 37 ++++++++++++++ archaeological_finds/models_treatments.py | 4 ++ .../templates/ishtar/sheet_treatment.html | 2 +- archaeological_finds/views.py | 11 ++-- archaeological_finds/wizards.py | 23 +++++++++ archaeological_warehouse/forms.py | 5 +- archaeological_warehouse/wizards.py | 9 ++++ 9 files changed, 136 insertions(+), 59 deletions(-) create mode 100644 archaeological_finds/migrations/0039_auto_20181113_1600.py diff --git a/archaeological_finds/forms_treatments.py b/archaeological_finds/forms_treatments.py index 7ada0f4bc..248b1ef7d 100644 --- a/archaeological_finds/forms_treatments.py +++ b/archaeological_finds/forms_treatments.py @@ -94,20 +94,21 @@ class BaseTreatmentForm(CustomForm, ManageOldType): file_upload = True need_user_for_initialization = True - label = forms.CharField(label=_(u"Label"), - max_length=200, required=False) - other_reference = forms.CharField( - label=_(u"Other ref."), max_length=200, required=False) - year = forms.IntegerField(label=_("Year"), - initial=lambda: datetime.datetime.now().year, - validators=[validators.MinValueValidator(1000), - validators.MaxValueValidator(2100)]) - treatment_type = forms.MultipleChoiceField( + treatment_type = widgets.Select2MultipleField( label=_(u"Treatment type"), choices=[], widget=widgets.CheckboxSelectMultiple) treatment_state = forms.ChoiceField(label=_(u"State"), choices=[], required=False) - target_is_basket = forms.NullBooleanField(label=_(u"Target")) + year = forms.IntegerField(label=_("Year"), + initial=lambda: datetime.datetime.now().year, + validators=[validators.MinValueValidator(1000), + validators.MaxValueValidator(2100)]) + location = forms.IntegerField( + label=_(u"Location"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-warehouse'), associated_model=Warehouse, + new=True), + validators=[valid_id(Warehouse)]) person = forms.IntegerField( label=_(u"Responsible"), widget=widgets.JQueryAutoComplete( @@ -120,30 +121,29 @@ class BaseTreatmentForm(CustomForm, ManageOldType): reverse_lazy('autocomplete-organization'), associated_model=Organization, new=True), validators=[valid_id(Organization)], required=False) - location = forms.IntegerField( - label=_(u"Location"), - widget=widgets.JQueryAutoComplete( - reverse_lazy('autocomplete-warehouse'), associated_model=Warehouse, - new=True), - validators=[valid_id(Warehouse)]) + label = forms.CharField(label=_(u"Label"), + max_length=200, required=False) + other_reference = forms.CharField( + label=_(u"Other ref."), max_length=200, required=False) + # target_is_basket = forms.NullBooleanField(label=_(u"Target")) + # external_id = forms.CharField( + # label=_(u"External ref."), max_length=200, required=False) + start_date = forms.DateField(label=_(u"Start date"), required=False, + widget=DatePicker, initial=datetime.date.today) + end_date = forms.DateField(label=_(u"Closing date"), required=False, + widget=DatePicker) container = forms.IntegerField( label=_(u"Container (relevant for packaging)"), widget=widgets.JQueryAutoComplete( reverse_lazy('autocomplete-container'), associated_model=Container, new=True), validators=[valid_id(Container)], required=False) - external_id = forms.CharField( - label=_(u"External ref."), max_length=200, required=False) goal = forms.CharField(label=_(u"Goal"), widget=forms.Textarea, required=False) description = forms.CharField(label=_(u"Description"), widget=forms.Textarea, required=False) comment = forms.CharField(label=_(u"Comment"), widget=forms.Textarea, required=False) - start_date = forms.DateField(label=_(u"Start date"), required=False, - widget=DatePicker) - end_date = forms.DateField(label=_(u"Closing date"), required=False, - widget=DatePicker) estimated_cost = forms.FloatField(label=_(u"Estimated cost ({currency})"), required=False) quoted_cost = forms.FloatField(label=_(u"Quoted cost ({currency})"), @@ -155,9 +155,10 @@ class BaseTreatmentForm(CustomForm, ManageOldType): TYPES = [ FieldType('treatment_state', models.TreatmentState), - FieldType('treatment_type', models.TreatmentType, is_multiple=True, - extra_args={'dct': {'upstream_is_many': False, - 'downstream_is_many': False}}) + FieldType( + 'treatment_type', models.TreatmentType, is_multiple=True, + extra_args={'dct': {'upstream_is_many': False, + 'downstream_is_many': False}}) ] def __init__(self, *args, **kwargs): @@ -176,8 +177,8 @@ class BaseTreatmentForm(CustomForm, ManageOldType): self.fields['person'].initial = person.pk if person.attached_to: self.fields['organization'].initial = person.attached_to.pk - self.fields['target_is_basket'].widget.choices = \ - ((False, _(u"Single find")), (True, _(u"Basket"))) + # self.fields['target_is_basket'].widget.choices = \ + # ((False, _(u"Single find")), (True, _(u"Basket"))) # TODO """ self.fields['basket'].required = False @@ -198,6 +199,7 @@ class BaseTreatmentForm(CustomForm, ManageOldType): if not packaging: logger.warning("No 'packaging' treatment type defined") return + if data.get('container', None) \ and str(packaging.pk) not in data.get('treatment_type', []): raise forms.ValidationError( @@ -240,7 +242,7 @@ class TreatmentModifyForm(BaseTreatmentForm): fields[key] = value if key == 'year': fields['index'] = idx - fields.pop('target_is_basket') + # fields.pop('target_is_basket') self.fields = fields def clean(self, *args, **kwargs): diff --git a/archaeological_finds/ishtar_menu.py b/archaeological_finds/ishtar_menu.py index afd624b74..19d300fbc 100644 --- a/archaeological_finds/ishtar_menu.py +++ b/archaeological_finds/ishtar_menu.py @@ -148,31 +148,27 @@ MENU_SECTIONS = [ profile_restriction='warehouse', css='menu-warehouse', childs=[ - SectionItem( - 'find_treatments', _(u"Simple treatments"), - childs=[ - MenuItem('treatment_search', - _(u"Search"), - model=models.Treatment, - access_controls=['view_treatment', - 'view_own_treatment']), - MenuItem('treatment_creation', - _(u"Creation"), - model=models.Treatment, - access_controls=['change_treatment', - 'change_own_treatment']), - MenuItem('treatment_modification', - _(u"Modification"), - model=models.Treatment, - access_controls=['change_treatment', - 'change_own_treatment']), - MenuItem('treatment_deletion', - _(u"Deletion"), - model=models.Treatment, - access_controls=['change_treatment', - 'change_own_treatment']), - ]), - SectionItem( + MenuItem('treatment_search', + _(u"Search"), + model=models.Treatment, + access_controls=['view_treatment', + 'view_own_treatment']), + MenuItem('treatment_creation', + _(u"Simple treatment - creation"), + model=models.Treatment, + access_controls=['change_treatment', + 'change_own_treatment']), + MenuItem('treatment_modification', + _(u"Modification"), + model=models.Treatment, + access_controls=['change_treatment', + 'change_own_treatment']), + MenuItem('treatment_deletion', + _(u"Deletion"), + model=models.Treatment, + access_controls=['change_treatment', + 'change_own_treatment']), + SectionItem( 'admin_act_treatments', _(u"Administrative act"), childs=[ MenuItem('treatment_admacttreatment_search', diff --git a/archaeological_finds/migrations/0039_auto_20181113_1600.py b/archaeological_finds/migrations/0039_auto_20181113_1600.py new file mode 100644 index 000000000..08877d66b --- /dev/null +++ b/archaeological_finds/migrations/0039_auto_20181113_1600.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-11-13 16:00 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion +import virtualtime + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_finds', '0038_auto_20181112_1625'), + ] + + operations = [ + migrations.AddField( + model_name='historicaltreatment', + name='creation_date', + field=models.DateTimeField(default=virtualtime.virtual_datetime.now), + ), + migrations.AddField( + model_name='historicaltreatment', + name='find', + field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='archaeological_finds.Find'), + ), + migrations.AddField( + model_name='treatment', + name='creation_date', + field=models.DateTimeField(default=virtualtime.virtual_datetime.now), + ), + migrations.AddField( + model_name='treatment', + name='find', + field=models.ForeignKey(blank=True, help_text='Related find for non-destructive treatment', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='treatments', to='archaeological_finds.Find', verbose_name='Find'), + ), + ] diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index 6a57a77f5..0bf3cad38 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -147,6 +147,10 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, goal = models.TextField(_(u"Goal"), blank=True, null=True) start_date = models.DateField(_(u"Start date"), blank=True, null=True) end_date = models.DateField(_(u"Closing date"), blank=True, null=True) + creation_date = models.DateTimeField(default=datetime.datetime.now) + find = models.ForeignKey( + "Find", verbose_name=_(u"Find"), related_name='treatments', blank=True, + null=True, help_text=_(u"Related find for non-destructive treatment")) container = models.ForeignKey(Container, verbose_name=_(u"Container"), blank=True, null=True) estimated_cost = models.FloatField(_(u"Estimated cost"), diff --git a/archaeological_finds/templates/ishtar/sheet_treatment.html b/archaeological_finds/templates/ishtar/sheet_treatment.html index 1a3bb931f..e9c9c0758 100644 --- a/archaeological_finds/templates/ishtar/sheet_treatment.html +++ b/archaeological_finds/templates/ishtar/sheet_treatment.html @@ -1,7 +1,7 @@ {% extends "ishtar/sheet.html" %} {% load i18n window_field from_dict link_to_window window_tables window_ope_tables window_header humanize %} -{% block head_title %}{% trans "Treatment" %} - {{ item.label|default:"" }}{% endblock %} +{% block head_title %}{% trans "Treatment" %} - {{ item|default:"" }}{% endblock %} {% block toolbar %} {% window_nav item window_id 'show-treatment' 'treatment_modify' 'show-historized-treatment' 'revert-treatment' previous next 1 %} diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index c340639c5..c4dbe0d3d 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -405,10 +405,10 @@ get_downstreamtreatment = get_item( 'downtreatment') treatment_wizard_steps = [ + ('selecfind-treatment_creation', UpstreamFindFormSelection), ('file-treatment_creation', TreatmentFormFileChoice), ('basetreatment-treatment_creation', BaseTreatmentForm), - ('selecfind-treatment_creation', UpstreamFindFormSelection), - ('selecbasket-treatment_creation', SelectFindBasketForm), + # ('selecbasket-treatment_creation', SelectFindBasketForm), # ('resultfind-treatment_creation', ResultFindForm), # ('resultfinds-treatment_creation', ResultFindFormSet), ('final-treatment_creation', FinalForm) @@ -420,8 +420,7 @@ treatment_search_wizard = TreatmentSearch.as_view([ label=_(u"Treatment search"), url_name='treatment_search',) -treatment_creation_wizard = TreatmentWizard.as_view( - treatment_wizard_steps, +""" condition_dict={ 'selecfind-treatment_creation': check_value('basetreatment-treatment_creation', @@ -438,6 +437,10 @@ treatment_creation_wizard = TreatmentWizard.as_view( # 'treatment_type', models.TreatmentType, # 'upstream_is_many') }, +""" + +treatment_creation_wizard = TreatmentWizard.as_view( + treatment_wizard_steps, label=_(u"New treatment"), url_name='treatment_creation',) diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py index 0e0fe80e1..e90fa745c 100644 --- a/archaeological_finds/wizards.py +++ b/archaeological_finds/wizards.py @@ -119,6 +119,29 @@ class TreatmentWizard(Wizard): kwargs['user'] = self.request.user return kwargs + def get_current_find(self): + step = self.steps.current + if not step: + return + find_form_key = 'selecfind-treatment_creation' + find_id = self.session_get_value(find_form_key, "resulting_pk") + try: + return models.Find.objects.get(pk=int(find_id)) + except(TypeError, ValueError, ObjectDoesNotExist): + pass + + def get_form_initial(self, step, data=None): + initial = super(TreatmentWizard, self).get_form_initial(step) + if step != 'basetreatment-treatment_creation': + return initial + find = self.get_current_find() + if not find or not find.container: + return initial + if not initial: + initial = {} + initial['location'] = find.container.location.pk + return initial + def get_extra_model(self, dct, form_list): """ Get items concerned by the treatment diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py index 954c01918..2dc963ca0 100644 --- a/archaeological_warehouse/forms.py +++ b/archaeological_warehouse/forms.py @@ -18,6 +18,7 @@ # See the file COPYING for details. from collections import OrderedDict +import datetime from django import forms from django.conf import settings @@ -294,7 +295,9 @@ class BasePackagingForm(SelectFindBasketForm): associated_model=Person, new=True), validators=[valid_id(Person)]) start_date = forms.DateField( - label=_(u"Date"), required=False, widget=DatePicker) + label=_(u"Date"), required=False, widget=DatePicker, + initial=datetime.date.today + ) class FindPackagingFormSelection(FindMultipleFormSelection): diff --git a/archaeological_warehouse/wizards.py b/archaeological_warehouse/wizards.py index 41c5c5945..8ee2c2972 100644 --- a/archaeological_warehouse/wizards.py +++ b/archaeological_warehouse/wizards.py @@ -38,6 +38,15 @@ class ContainerSearch(SearchWizard): class PackagingWizard(TreatmentWizard): basket_step = 'base-packaging' + def get_form_initial(self, step, data=None): + initial = super(PackagingWizard, self).get_form_initial(step) + user = self.request.user + if step != 'base-packaging' or not getattr(user, 'ishtaruser', None) \ + or not user.ishtaruser.person: + return initial + initial['person'] = user.ishtaruser.person.pk + return initial + def save_model(self, dct, m2m, whole_associated_models, form_list, return_object): dct = self.get_extra_model(dct, form_list) -- cgit v1.2.3 From 458b534bb4dd9918cd1236ac505730102b7951bd Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 15 Nov 2018 17:39:37 +0100 Subject: Treatments: manage treatment without find duplication --- .../migrations/0039_auto_20181113_1600.py | 37 ----------------- .../migrations/0039_auto_20181115_1649.py | 36 +++++++++++++++++ archaeological_finds/models_finds.py | 1 + archaeological_finds/models_treatments.py | 46 ++++++++++++++-------- .../templates/ishtar/sheet_find.html | 39 ++++++++++++++++-- .../templates/ishtar/sheet_treatment.html | 5 +++ 6 files changed, 108 insertions(+), 56 deletions(-) delete mode 100644 archaeological_finds/migrations/0039_auto_20181113_1600.py create mode 100644 archaeological_finds/migrations/0039_auto_20181115_1649.py diff --git a/archaeological_finds/migrations/0039_auto_20181113_1600.py b/archaeological_finds/migrations/0039_auto_20181113_1600.py deleted file mode 100644 index 08877d66b..000000000 --- a/archaeological_finds/migrations/0039_auto_20181113_1600.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.10 on 2018-11-13 16:00 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion -import virtualtime - - -class Migration(migrations.Migration): - - dependencies = [ - ('archaeological_finds', '0038_auto_20181112_1625'), - ] - - operations = [ - migrations.AddField( - model_name='historicaltreatment', - name='creation_date', - field=models.DateTimeField(default=virtualtime.virtual_datetime.now), - ), - migrations.AddField( - model_name='historicaltreatment', - name='find', - field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='archaeological_finds.Find'), - ), - migrations.AddField( - model_name='treatment', - name='creation_date', - field=models.DateTimeField(default=virtualtime.virtual_datetime.now), - ), - migrations.AddField( - model_name='treatment', - name='find', - field=models.ForeignKey(blank=True, help_text='Related find for non-destructive treatment', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='treatments', to='archaeological_finds.Find', verbose_name='Find'), - ), - ] diff --git a/archaeological_finds/migrations/0039_auto_20181115_1649.py b/archaeological_finds/migrations/0039_auto_20181115_1649.py new file mode 100644 index 000000000..3752c173c --- /dev/null +++ b/archaeological_finds/migrations/0039_auto_20181115_1649.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-11-15 16:49 +from __future__ import unicode_literals + +from django.db import migrations, models +import virtualtime + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_finds', '0038_auto_20181112_1625'), + ] + + operations = [ + migrations.AddField( + model_name='historicaltreatment', + name='creation_date', + field=models.DateTimeField(default=virtualtime.virtual_datetime.now), + ), + migrations.AddField( + model_name='treatment', + name='creation_date', + field=models.DateTimeField(default=virtualtime.virtual_datetime.now), + ), + migrations.AddField( + model_name='treatment', + name='finds', + field=models.ManyToManyField(blank=True, help_text='Related finds for non-destructive treatment', related_name='treatments', to='archaeological_finds.Find', verbose_name='Finds'), + ), + migrations.AddField( + model_name='treatmenttype', + name='destructive', + field=models.BooleanField(default=False, verbose_name='Destructive'), + ), + ] diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index e53ad6e6d..3483113d7 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -91,6 +91,7 @@ post_delete.connect(post_save_cache, sender=ConservatoryState) class TreatmentType(HierarchicalType): order = models.IntegerField(_(u"Order"), default=10) virtual = models.BooleanField(_(u"Virtual")) + destructive = models.BooleanField(_(u"Destructive"), default=False) upstream_is_many = models.BooleanField( _(u"Upstream is many"), default=False, help_text=_( diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index 0bf3cad38..61d4ce5be 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -148,9 +148,9 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, start_date = models.DateField(_(u"Start date"), blank=True, null=True) end_date = models.DateField(_(u"Closing date"), blank=True, null=True) creation_date = models.DateTimeField(default=datetime.datetime.now) - find = models.ForeignKey( - "Find", verbose_name=_(u"Find"), related_name='treatments', blank=True, - null=True, help_text=_(u"Related find for non-destructive treatment")) + finds = models.ManyToManyField( + "Find", verbose_name=_(u"Finds"), related_name='treatments', blank=True, + help_text=_(u"Related finds for non-destructive treatment")) container = models.ForeignKey(Container, verbose_name=_(u"Container"), blank=True, null=True) estimated_cost = models.FloatField(_(u"Estimated cost"), @@ -181,6 +181,7 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, ("change_own_treatment", u"Can change own Treatment"), ("delete_own_treatment", u"Can delete own Treatment"), ) + ordering = ("start_date", ) def __unicode__(self): if self.cached_label: @@ -193,6 +194,10 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, def short_class_name(self): return _(u"TREATMENT") + @property + def limited_finds(self): + return self.finds.all()[:15] + def natural_key(self): return (self.external_id, ) @@ -300,21 +305,30 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, updated = [] if hasattr(items, "items"): items = items.items.all() + + tps = list(self.treatment_types.all()) + has_destructive_tp = bool([tp for tp in tps if tp.destructive]) for item in items: - new = item.duplicate(user) - item.downstream_treatment = self - item.save() - new.upstream_treatment = self - for k in extra_args_for_new: - setattr(new, k, extra_args_for_new[k]) - new.save() - updated.append(new.pk) - # update baskets - for basket in \ - FindBasket.objects.filter(items__pk=item.pk).all(): - basket.items.remove(item) - basket.items.add(new) + if not has_destructive_tp: + self.finds.add(item) + else: + new = item.duplicate(user) + item.downstream_treatment = self + item.save() + new.upstream_treatment = self + for k in extra_args_for_new: + setattr(new, k, extra_args_for_new[k]) + new.save() + updated.append(new.pk) + # update baskets + for basket in \ + FindBasket.objects.filter(items__pk=item.pk).all(): + basket.items.remove(item) + basket.items.add(new) + # manage containers + if not self.container: + return for find in Find.objects.filter(upstream_treatment=self).all(): if find.container != self.container: find.container = self.container diff --git a/archaeological_finds/templates/ishtar/sheet_find.html b/archaeological_finds/templates/ishtar/sheet_find.html index 021ea5652..a3ad9fca5 100644 --- a/archaeological_finds/templates/ishtar/sheet_find.html +++ b/archaeological_finds/templates/ishtar/sheet_find.html @@ -167,8 +167,41 @@ {% endif %} -{% if item.upstream_treatment or item.downstream_treatment %} +{% if item.upstream_treatment or item.downstream_treatment or item.treatments.count %}

{% trans "Treatments"%}

+ + + + + + + + + + + + + + {% for treatment in item.treatments.all %} + + + + + + + + + + + + + {% endfor %} +
 {% trans "Year - index" %}{% trans "Label" %}{% trans "Type" %}{% trans "State" %}{% trans "Related finds (max. 15 displayed)" %}{% trans "Doer" %}{% trans "Container" %}{% trans "Start date" %}{% trans "End date" %}
+ + + + {{ treatment.year }} - {{treatment.index}}{{ treatment.label|default_if_none:"-" }}{{ treatment.treatment_types_lbl }}{{ treatment.treatment_state|default_if_none:"-" }}{% for it in treatment.limited_finds %}{{it}} {{it|link_to_window}}{% endfor %}{{ treatment.person|default_if_none:"-" }}{{ treatment.container|default_if_none:"-" }}{{ treatment.start_date|default_if_none:"-" }}{{ treatment.end_date|default_if_none:"-" }}
{% if item.upstream_treatment %}

{% trans "Upstream treatment" %}

@@ -197,7 +230,7 @@ {{ treatment.label|default_if_none:"-" }} {{ treatment.treatment_types_lbl }} {{ treatment.treatment_state|default_if_none:"-" }} - {% for item in items %}{{item}} {{ item|link_to_window}}{% endfor %} + {% for it in items %}{{it}} {{it|link_to_window}}{% endfor %} {{ treatment.person|default_if_none:"-" }} {{ treatment.container|default_if_none:"-" }} {{ treatment.start_date|default_if_none:"-" }} @@ -235,7 +268,7 @@ {{ treatment.label|default_if_none:"-" }} {{ treatment.treatment_types_lbl }} {{ treatment.treatment_state|default_if_none:"-" }} - {% for item in items %}{{item}} {{ item|link_to_window}}{% endfor %} + {% for it in items %}{{it}} {{ it|link_to_window}}{% endfor %} {{ treatment.person|default_if_none:"" }} {{ treatment.container|default_if_none:"-" }} {{ treatment.start_date|default_if_none:"" }} diff --git a/archaeological_finds/templates/ishtar/sheet_treatment.html b/archaeological_finds/templates/ishtar/sheet_treatment.html index e9c9c0758..94569b5f6 100644 --- a/archaeological_finds/templates/ishtar/sheet_treatment.html +++ b/archaeological_finds/templates/ishtar/sheet_treatment.html @@ -53,6 +53,11 @@ {% include "ishtar/blocks/sheet_json.html" %} +{% trans "Related finds" as finds %} +{% if item.finds.count %} +{% dynamic_table_document finds 'finds_for_treatment' 'treatments' item.pk 'TABLE_COLS_FOR_OPE' output %} +{% endif %} + {% trans "Upstream finds" as finds %} {% if item.upstream.count %} {% dynamic_table_document finds 'finds_for_treatment' 'downstream_treatment' item.pk 'TABLE_COLS_FOR_OPE' output %} -- cgit v1.2.3 From 23b96d0b21f17a941de45f4d54688b4accfc53a0 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 16 Nov 2018 12:12:18 +0100 Subject: Datatable: JS to disable submit button when multiple or none is selected --- archaeological_finds/forms.py | 2 +- ishtar_common/static/js/ishtar.js | 12 ++++++++++++ ishtar_common/templates/base.html | 1 + ishtar_common/templates/blocks/DataTables.html | 16 ++++++++++++---- ishtar_common/widgets.py | 1 - 5 files changed, 26 insertions(+), 6 deletions(-) diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 5ca8618d5..663ab3663 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -725,7 +725,7 @@ class FindFormSelection(CustomFormSearch): label="", required=False, widget=widgets.DataTable( reverse_lazy('get-find'), - FindSelect, models.Find, + FindSelect, models.Find, source_full=reverse_lazy('get-find-full')), validators=[valid_id(models.Find)]) diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js index ff8e43b54..e4e80d681 100644 --- a/ishtar_common/static/js/ishtar.js +++ b/ishtar_common/static/js/ishtar.js @@ -70,6 +70,7 @@ var datatables_static_default = { var activate_all_search_msg = "Searches in the shortcut menu deals with all items."; var activate_own_search_msg = "Searches in the shortcut menu deals with only your items."; var added_message = " items added."; +var select_only_one_msg = "Select only one item."; var search_pinned_msg = ""; var advanced_menu = false; @@ -956,3 +957,14 @@ var qa_action_register = function(url) { ); }); }; + +var dt_single_enable_disable_submit_button = function(e, dt, type, indexes){ + var rows = dt.rows( { selected: true } ).count(); + if (rows == 1) { + $("#validation-bar #submit_form").prop('title', ""); + $("#validation-bar #submit_form").prop('disabled', false); + } else { + $("#validation-bar #submit_form").prop('title', select_only_one_msg); + $("#validation-bar #submit_form").prop('disabled', true); + } +}; diff --git a/ishtar_common/templates/base.html b/ishtar_common/templates/base.html index 652df14b3..add4f1d6c 100644 --- a/ishtar_common/templates/base.html +++ b/ishtar_common/templates/base.html @@ -44,6 +44,7 @@ var activate_own_search_msg = "{% trans 'Searches in the shortcut menu deal with only your items.' %}"; var search_pinned_msg = "{% trans 'Search pinned' %}"; var added_message = "{% trans " items added." %}"; + var select_only_one_msg = {% trans "Select only one item." %}; var YES = "{% trans 'yes' %}"; var NO = "{% trans 'no' %}"; var autorefresh_message_start = "{% trans 'Autorefresh start. The form is disabled.' %}"; diff --git a/ishtar_common/templates/blocks/DataTables.html b/ishtar_common/templates/blocks/DataTables.html index b5f669963..e1966787b 100644 --- a/ishtar_common/templates/blocks/DataTables.html +++ b/ishtar_common/templates/blocks/DataTables.html @@ -152,7 +152,7 @@ jQuery(document).ready(function(){ } }, "select": { - "style": {% if multiple_select %}'multi'{% else %}'single'{% endif %} + "style": {% if multiple_select or quick_actions %}'multi'{% else %}'single'{% endif %} }, {% if multiple_select or quick_actions %}"buttons": [ {% for url, title, icon, target in quick_actions %} @@ -170,7 +170,7 @@ jQuery(document).ready(function(){ } }, {% if not forloop.last %},{% endif %} - {% endfor %}{% if multiple_select %}{% if quick_actions%},{% endif %} + {% endfor %}{% if quick_actions%},{% endif %} { extend: 'selectAll', text: '', @@ -181,7 +181,6 @@ jQuery(document).ready(function(){ text: '', titleAttr: "{% trans 'Deselect' %}" } - {% endif %} ], "dom": 'lBtip', {% else %} @@ -192,7 +191,11 @@ jQuery(document).ready(function(){ { "data": "link", "orderable": false },{% for col in extra_cols %} { "data": "{{col}}", "defaultContent": "-", "render": $.fn.dataTable.render.ellipsis( 70, true ) }{% if not forloop.last %},{% endif %}{% endfor %} - ] + ], + "initComplete": function(settings, json) { + var api = new $.fn.dataTable.Api(settings); + dt_single_enable_disable_submit_button(null, api); + } }; if (!debug) $.fn.dataTable.ext.errMode = 'none'; @@ -201,6 +204,11 @@ jQuery(document).ready(function(){ if (datatables_i18n) datatable_options['language'] = datatables_i18n; datatable_{{sname}} = jQuery("#grid_{{name}}").DataTable(datatable_options); + {% if not multiple_select %} + datatable_{{sname}}.on('select', dt_single_enable_disable_submit_button); + datatable_{{sname}}.on('deselect', dt_single_enable_disable_submit_button); + {% endif %} + {% if multiple %} jQuery("#add_button_{{name}}").click(function (){ var mygrid = jQuery("#grid_{{name}}"); diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index 7d9e06926..3fd48fa0d 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -1055,7 +1055,6 @@ class DataTable(Select2Media, forms.RadioSelect): if hasattr(self.associated_model, "QUICK_ACTIONS"): dct['quick_actions'] = \ self.associated_model.get_quick_actions(user=self.user) - self.multiple_select = True source = unicode(self.source) dct.update({'name': name, 'col_names': col_names, -- cgit v1.2.3 From 948d624874bee030a03d63c114a5040113ef694c Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 16 Nov 2018 17:53:13 +0100 Subject: Bootstrap compilation --- ishtar_common/static/bootstrap/bootstrap.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ishtar_common/static/bootstrap/bootstrap.css b/ishtar_common/static/bootstrap/bootstrap.css index c6407564d..377461d9c 100644 --- a/ishtar_common/static/bootstrap/bootstrap.css +++ b/ishtar_common/static/bootstrap/bootstrap.css @@ -3,4 +3,4 @@ * Copyright 2011-2018 The Bootstrap Authors * Copyright 2011-2018 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */:root{--blue: #007bff;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #dc3545;--orange: #fd7e14;--yellow: #ffc107;--green: #28a745;--teal: #20c997;--cyan: #17a2b8;--white: #fff;--gray: #6c757d;--gray-dark: #343a40;--primary: #007bff;--secondary: #6c757d;--success: #28a745;--info: #17a2b8;--warning: #ffc107;--danger: #dc3545;--light: #f8f9fa;--dark: #343a40;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#6f3b93;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#542c6f;text-decoration:none}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:monospace, monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm,.col-sm-auto,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md,.col-md-auto,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg,.col-lg-auto,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:none}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:none}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:none}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:none}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:none}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:rgba(0,0,0,0)}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>th,.table-success>td{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark th,.table-dark td,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.form-control-plaintext.form-control-lg,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}select.form-control-sm:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control-lg:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled ~ .form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,0.8);border-radius:.2rem}.was-validated .form-control:valid,.form-control.is-valid,.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745}.was-validated .form-control:valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .form-control:valid ~ .valid-feedback,.was-validated .form-control:valid ~ .valid-tooltip,.form-control.is-valid ~ .valid-feedback,.form-control.is-valid ~ .valid-tooltip,.was-validated .custom-select:valid ~ .valid-feedback,.was-validated .custom-select:valid ~ .valid-tooltip,.custom-select.is-valid ~ .valid-feedback,.custom-select.is-valid ~ .valid-tooltip{display:block}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#28a745}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#28a745}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{background-color:#71dd8a}.was-validated .custom-control-input:valid ~ .valid-feedback,.was-validated .custom-control-input:valid ~ .valid-tooltip,.custom-control-input.is-valid ~ .valid-feedback,.custom-control-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{background-color:#34ce57}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid ~ .custom-file-label::before,.custom-file-input.is-valid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:valid ~ .valid-feedback,.was-validated .custom-file-input:valid ~ .valid-tooltip,.custom-file-input.is-valid ~ .valid-feedback,.custom-file-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,0.8);border-radius:.2rem}.was-validated .form-control:invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .form-control:invalid ~ .invalid-feedback,.was-validated .form-control:invalid ~ .invalid-tooltip,.form-control.is-invalid ~ .invalid-feedback,.form-control.is-invalid ~ .invalid-tooltip,.was-validated .custom-select:invalid ~ .invalid-feedback,.was-validated .custom-select:invalid ~ .invalid-tooltip,.custom-select.is-invalid ~ .invalid-feedback,.custom-select.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#dc3545}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{background-color:#efa2a9}.was-validated .custom-control-input:invalid ~ .invalid-feedback,.was-validated .custom-control-input:invalid ~ .invalid-tooltip,.custom-control-input.is-invalid ~ .invalid-feedback,.custom-control-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{background-color:#e4606d}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid ~ .custom-file-label::before,.custom-file-input.is-invalid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:invalid ~ .invalid-feedback,.was-validated .custom-file-input:invalid ~ .invalid-tooltip,.custom-file-input.is-invalid ~ .invalid-feedback,.custom-file-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled):active,.btn:not(:disabled):not(.disabled).active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary:focus,.btn-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-link{font-weight:400;color:#6f3b93;background-color:transparent}.btn-link:hover{color:#542c6f;text-decoration:none;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:none;border-color:transparent;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;transition:opacity 0.15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height 0.35s ease}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:0 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file:focus{z-index:3}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,0.25)}.custom-control-input:active ~ .custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled ~ .custom-control-label{color:#6c757d}.custom-control-input:disabled ~ .custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(128,189,255,0.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.custom-file-input:focus ~ .custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en) ~ .custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,0.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0,0,0,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#6f3b93;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#542c6f;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:hover,.badge-info[href]:focus{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:hover,.badge-light[href]:focus{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width 0.6s ease}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:hover,.list-group-item:focus{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.close:focus{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -25%)}.modal.show .modal-dialog{transform:translate(0, 0)}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:.5rem}.bs-popover-top .arrow,.bs-popover-auto[x-placement^="top"] .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{border-width:.5rem .5rem 0}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before{bottom:0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:.5rem}.bs-popover-right .arrow,.bs-popover-auto[x-placement^="right"] .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{border-width:.5rem .5rem .5rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before{left:0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{left:1px;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:.5rem}.bs-popover-bottom .arrow,.bs-popover-auto[x-placement^="bottom"] .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{border-width:0 .5rem .5rem .5rem}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before{top:0;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:.5rem}.bs-popover-left .arrow,.bs-popover-auto[x-placement^="left"] .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{border-width:.5rem 0 .5rem .5rem}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before{right:0;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;align-items:center;width:100%;transition:transform 0.6s ease;backface-visibility:hidden;perspective:1000px}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translate3d(0, 0, 0)}}.carousel-item-next,.active.carousel-item-right{transform:translateX(100%)}@supports (transform-style: preserve-3d){.carousel-item-next,.active.carousel-item-right{transform:translate3d(100%, 0, 0)}}.carousel-item-prev,.active.carousel-item-left{transform:translateX(-100%)}@supports (transform-style: preserve-3d){.carousel-item-prev,.active.carousel-item-left{transform:translate3d(-100%, 0, 0)}}.carousel-fade .carousel-item{opacity:0;transition-duration:.6s;transition-property:opacity}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{opacity:0}.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translate3d(0, 0, 0)}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,0.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-primary{background-color:#007bff !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#0062cc !important}.bg-secondary{background-color:#6c757d !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62 !important}.bg-success{background-color:#28a745 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34 !important}.bg-info{background-color:#17a2b8 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#ffc107 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00 !important}.bg-danger{background-color:#dc3545 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130 !important}.bg-light{background-color:#f8f9fa !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#343a40 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#007bff !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#28a745 !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#343a40 !important}.border-white{border-color:#fff !important}.rounded{border-radius:.25rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-right{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-left{border-top-left-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-circle{border-radius:50% !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.85714%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-fill{flex:1 1 auto !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-sm-fill{flex:1 1 auto !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-md-fill{flex:1 1 auto !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-lg-fill{flex:1 1 auto !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-xl-fill{flex:1 1 auto !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media (min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;clip-path:none}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:.25rem !important}.mt-sm-1,.my-sm-1{margin-top:.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:.25rem !important}.m-sm-2{margin:.5rem !important}.mt-sm-2,.my-sm-2{margin-top:.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:.25rem !important}.pt-sm-1,.py-sm-1{padding-top:.25rem !important}.pr-sm-1,.px-sm-1{padding-right:.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem !important}.pl-sm-1,.px-sm-1{padding-left:.25rem !important}.p-sm-2{padding:.5rem !important}.pt-sm-2,.py-sm-2{padding-top:.5rem !important}.pr-sm-2,.px-sm-2{padding-right:.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem !important}.pl-sm-2,.px-sm-2{padding-left:.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:.25rem !important}.mt-md-1,.my-md-1{margin-top:.25rem !important}.mr-md-1,.mx-md-1{margin-right:.25rem !important}.mb-md-1,.my-md-1{margin-bottom:.25rem !important}.ml-md-1,.mx-md-1{margin-left:.25rem !important}.m-md-2{margin:.5rem !important}.mt-md-2,.my-md-2{margin-top:.5rem !important}.mr-md-2,.mx-md-2{margin-right:.5rem !important}.mb-md-2,.my-md-2{margin-bottom:.5rem !important}.ml-md-2,.mx-md-2{margin-left:.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:.25rem !important}.pt-md-1,.py-md-1{padding-top:.25rem !important}.pr-md-1,.px-md-1{padding-right:.25rem !important}.pb-md-1,.py-md-1{padding-bottom:.25rem !important}.pl-md-1,.px-md-1{padding-left:.25rem !important}.p-md-2{padding:.5rem !important}.pt-md-2,.py-md-2{padding-top:.5rem !important}.pr-md-2,.px-md-2{padding-right:.5rem !important}.pb-md-2,.py-md-2{padding-bottom:.5rem !important}.pl-md-2,.px-md-2{padding-left:.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:.25rem !important}.mt-lg-1,.my-lg-1{margin-top:.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:.25rem !important}.m-lg-2{margin:.5rem !important}.mt-lg-2,.my-lg-2{margin-top:.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:.25rem !important}.pt-lg-1,.py-lg-1{padding-top:.25rem !important}.pr-lg-1,.px-lg-1{padding-right:.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem !important}.pl-lg-1,.px-lg-1{padding-left:.25rem !important}.p-lg-2{padding:.5rem !important}.pt-lg-2,.py-lg-2{padding-top:.5rem !important}.pr-lg-2,.px-lg-2{padding-right:.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem !important}.pl-lg-2,.px-lg-2{padding-left:.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:.25rem !important}.mt-xl-1,.my-xl-1{margin-top:.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:.25rem !important}.m-xl-2{margin:.5rem !important}.mt-xl-2,.my-xl-2{margin-top:.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:.25rem !important}.pt-xl-1,.py-xl-1{padding-top:.25rem !important}.pr-xl-1,.px-xl-1{padding-right:.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem !important}.pl-xl-1,.px-xl-1{padding-left:.25rem !important}.p-xl-2{padding:.5rem !important}.pt-xl-2,.py-xl-2{padding-top:.5rem !important}.pr-xl-2,.px-xl-2{padding-right:.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem !important}.pl-xl-2,.px-xl-2{padding-left:.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-justify{text-align:justify !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media (min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#007bff !important}a.text-primary:hover,a.text-primary:focus{color:#0062cc !important}.text-secondary{color:#6c757d !important}a.text-secondary:hover,a.text-secondary:focus{color:#545b62 !important}.text-success{color:#28a745 !important}a.text-success:hover,a.text-success:focus{color:#1e7e34 !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#117a8b !important}.text-warning{color:#ffc107 !important}a.text-warning:hover,a.text-warning:focus{color:#d39e00 !important}.text-danger{color:#dc3545 !important}a.text-danger:hover,a.text-danger:focus{color:#bd2130 !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#dae0e5 !important}.text-dark{color:#343a40 !important}a.text-dark:hover,a.text-dark:focus{color:#1d2124 !important}.text-muted{color:#6c757d !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}.switch{font-size:1rem;position:relative}.switch input{position:absolute;height:1px;width:1px;background:none;border:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;padding:0}.switch input+label{position:relative;min-width:calc(calc(2.375rem * .8) * 2);border-radius:calc(2.375rem * .8);height:calc(2.375rem * .8);line-height:calc(2.375rem * .8);display:inline-block;cursor:pointer;outline:none;user-select:none;vertical-align:middle;text-indent:calc(calc(calc(2.375rem * .8) * 2) + .5rem)}.switch input+label::before,.switch input+label::after{content:'';position:absolute;top:0;left:0;width:calc(calc(2.375rem * .8) * 2);bottom:0;display:block}.switch input+label::before{right:0;background-color:#dee2e6;border-radius:calc(2.375rem * .8);transition:0.2s all}.switch input+label::after{top:2px;left:2px;width:calc(calc(2.375rem * .8) - calc(2px * 2));height:calc(calc(2.375rem * .8) - calc(2px * 2));border-radius:50%;background-color:#fff;transition:0.2s all}.switch input:checked+label::before{background-color:#08d}.switch input:checked+label::after{margin-left:calc(2.375rem * .8)}.switch input:focus+label::before{outline:none;box-shadow:0 0 0 .2rem rgba(0,136,221,0.25)}.switch input:disabled+label{color:#868e96;cursor:not-allowed}.switch input:disabled+label::before{background-color:#e9ecef}.switch.switch-sm{font-size:.875rem}.switch.switch-sm input+label{min-width:calc(calc(1.9375rem * .8) * 2);height:calc(1.9375rem * .8);line-height:calc(1.9375rem * .8);text-indent:calc(calc(calc(1.9375rem * .8) * 2) + .5rem)}.switch.switch-sm input+label::before{width:calc(calc(1.9375rem * .8) * 2)}.switch.switch-sm input+label::after{width:calc(calc(1.9375rem * .8) - calc(2px * 2));height:calc(calc(1.9375rem * .8) - calc(2px * 2))}.switch.switch-sm input:checked+label::after{margin-left:calc(1.9375rem * .8)}.switch.switch-lg{font-size:1.25rem}.switch.switch-lg input+label{min-width:calc(calc(3rem * .8) * 2);height:calc(3rem * .8);line-height:calc(3rem * .8);text-indent:calc(calc(calc(3rem * .8) * 2) + .5rem)}.switch.switch-lg input+label::before{width:calc(calc(3rem * .8) * 2)}.switch.switch-lg input+label::after{width:calc(calc(3rem * .8) - calc(2px * 2));height:calc(calc(3rem * .8) - calc(2px * 2))}.switch.switch-lg input:checked+label::after{margin-left:calc(3rem * .8)}.switch+.switch{margin-left:1rem}.switch.danger input:checked+label::before{background-color:#dc3545}.switch.danger input:focus+label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}html{font-size:0.8em;background-color:#f8f9fa}body{background-color:transparent;position:relative}label{margin-bottom:.2rem;min-height:1.5rem}.form-group span label{display:inline-block}.form-group label{display:block}.form-group li label{display:inline-block}.form-group li .form-control{width:auto}.form-group li input[type="radio"].form-control,.form-group li input[type="checkbox"].form-control{display:inline}pre{white-space:pre-wrap}.raw-description{white-space:pre-line}.form-control.small-input,.input-group>.form-control.small-input{width:110px;flex:none}.input-group>input[type=checkbox]{margin:0.5em 1em}.form-row.odd{background-color:#e9ecef}.form-row-modal{padding:0.5rem 2rem}.field-tip{position:absolute;right:10px;top:5px;opacity:0.7}.form-group .select2-container--default .select2-selection--multiple{border:1px solid #ced4da}.page-link.imported-page{color:#aa8fda}.page-link.imported-page.current-page,.page-link.current-page{color:black;font-weight:bold}#modal-advanced-search .modal-header{flex-wrap:wrap;padding-bottom:0}#modal-advanced-search .modal-header .alert-secondary{background-color:#fff}.modal-header,.modal-footer{background-color:#e9ecef}.modal-body.body-scroll{max-height:calc(100vh - 200px);overflow-y:auto}.modal-dialog.full{width:98%;height:98%;max-width:none;padding:1%}.modal-dialog.full .display.dataTable{width:100% !important}.modal-dialog.full .modal-content{height:auto;min-height:100%;border-radius:0}.table{background-color:white}.input-progress.form-control:focus,.input-progress{background-color:#dee2e6}.card-header,.input-progress,.table-striped tbody tr:nth-of-type(2n+1),.dt-bootstrap4 table.dataTable.stripe tbody tr.odd,.dt-bootstrap4 table.dataTable.display tbody tr.odd{background-color:#e9ecef}.dropdown-item:hover,.dropdown-item:focus,.dt-bootstrap4 table.dataTable.hover tbody tr:hover,.dt-bootstrap4 table.dataTable.display tbody tr:hover{background-color:#f6f6f6;background-color:#dee2e6}table.dataTable{font-size:0.8em}.table-modal-lg table.dataTable{font-size:1em}div.dt-buttons{float:right}.dt-button{color:#fff;background-color:#007bff;border-color:#007bff;display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;border:1px solid transparent;color:#fff;background-color:#6c757d;border-color:#6c757d;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.dt-button:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.dt-button:focus,.dt-button.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.disabled,.dt-button:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.dt-button:not(:disabled):not(.disabled):active,.dt-button:not(:disabled):not(.disabled).active,.show>.dt-button.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.dt-button:not(:disabled):not(.disabled):active:focus,.dt-button:not(:disabled):not(.disabled).active:focus,.show>.dt-button.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.dt-button.btn-success:focus,.dt-button.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.btn-success.disabled,.dt-button.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:not(:disabled):not(.disabled):active,.dt-button.btn-success:not(:disabled):not(.disabled).active,.show>.dt-button.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.dt-button.btn-success:not(:disabled):not(.disabled):active:focus,.dt-button.btn-success:not(:disabled):not(.disabled).active:focus,.show>.dt-button.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.disabled{background-color:#f8f9fa;border-color:#f8f9fa;color:#adb5bd;cursor:not-allowed}.small-button{padding:0.1em 0.2em}.previous-value{margin:0.4em 0;display:block}h3,.h3{font-size:1.5rem}h4,.h4{font-size:1.1rem}textarea{height:90px}.sheet h4{color:#6c757d}#bookmark-list .input-link{width:100%;padding-right:5px}#window-fixed-menu{background-color:#e9ecef;position:fixed;right:0;margin-top:100px;z-index:50;width:200px}#window-fixed-menu-list li{padding-bottom:0.5em}#window-fixed-menu-list li a.nav-link{background-color:white}#window-fixed-menu-list li a.nav-link.active{background-color:#007bff}#window-menu-title{font-size:1.3em}#window-menu-control{font-size:0.6em;padding-top:0.2em}#window-fixed-menu.hidden{transform:rotate(270deg);transform-origin:right bottom 0}#window-fixed-menu.hidden i.fa-times{transform:rotate(45deg);transform-origin:10px 10px 0;padding-left:0.1em}.form h4,.form h3,.collapse-form .card-header,#window h3{background-color:#ced4da}.collapse-form .card,.collapse-form .card-header{border-radius:0;border:0 solid}.collapse-form .card-header{padding:0;text-align:center}.collapse-form .card-header h4{margin-bottom:0}.collapse-form .card-header .btn.btn-link{color:#212529;width:100%}.collapse-form .card-body{border:1px solid #ced4da}.collapse-form .fa-expand,.collapse-form .collapsed .fa-compress{display:none}.collapse-form .collapsed .fa-expand,.collapse-form .fa-compress{display:inline-block}.clean-table h4,.form h4,.form h3,.collapse-form .card-header h4 .btn,.sheet h4,.sheet h3,.sheet h2{text-align:center;text-shadow:2px 2px 2px rgba(150,150,150,0.7)}.sheet .subsection{background-color:#e9ecef}.sheet .row.toolbar{padding:0.5em 0.75em}.sheet .row{padding:0 0.75em;margin:0}.clean-table h4{margin-top:1em}.container{margin-top:1em;margin-bottom:8em}.bg-dark{background-color:#432776 !important}.navbar{padding:0 0.5rem}.navbar-dark .navbar-nav.action-menu .nav-link{color:#ffe484;border:1px solid #ffe484;border-radius:4px;margin:0.2em;padding:0.3em 0.6em}.navbar-dark .navbar-nav.action-menu .d-none .nav-link{border:0px solid transparent}.navbar-dark .navbar-nav.action-menu .d-none .nav-link:hover{background-color:transparent;color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link:hover{background-color:#ffe484;color:#343a40}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle::after{color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle:hover::after{color:#343a40}#context-menu,#reminder,.confirm-message,div#validation-bar{background-color:#6f42c1;color:rgba(255,255,255,0.8)}#reminder{padding:0.6em 1em 0.1em 1em}#alert-list{padding:0.6em 0}#alert-list a{font-size:1.1rem}.confirm-message{text-align:center;margin:0;padding:0.5rem;font-weight:bold}.is-invalid input{border-color:#f99}.errorlist{color:#900}#shortcut-menu{width:700px;padding:1em}#context-menu a.nav-link{color:rgba(255,255,255,0.8);padding:0.8rem 0.5rem 0.7rem 0.5rem}#context-menu .breadcrumb{margin-bottom:0;background-color:transparent}#current_items{width:100%}div#foot{background-color:#432776;color:rgba(255,255,255,0.5)}div#foot a{color:#ddd}div#foot a:hover{color:#fff}.breadcrumb button{border:0 transparent;background-color:transparent}.breadcrumb a:hover{text-decoration:none}.breadcrumb button:hover{cursor:pointer;color:#0062cc}.input-group.date input{border:1px solid #dee2e6;border-radius:.25rem;padding:.375rem .75rem;font-size:1rem;line-height:1.5}.input-group.date .input-group-text:hover{cursor:pointer}.input-group>ul{padding:0.5em;border:1px solid #dee2e6;border-radius:.25rem;margin:0;list-style:none}.help-text{max-height:250px;overflow:auto}.input-link{color:#6c757d}.input-link.disabled{color:#adb5bd}.input-link:hover{color:#343a40;cursor:pointer}.input-link.disabled:hover{color:#adb5bd;cursor:not-allowed}.input-sep{background-color:#fff;padding:0.3rem}.search_button{display:none}.lightgallery-captions{display:none}.lightgallery-subimage{display:inline-block;width:80px;padding:0.2em}.lightgallery-subimage img{width:100%}.lg .lg-sub-html{text-align:left}.lg .lg-sub-html .close{color:#fff}.lg .lg-sub-html .close:hover{opacity:0.9}#basket-manage #foot_pk{display:none}#basket-manage #grid_pk_meta_wrapper{width:50%;float:left;padding-bottom:80px}#basket-add-button{width:8%;float:left;margin:20vh 1% 0 1%}#basket-content-wrapper{width:40%;float:left}#basket-content{text-align:left;overflow:auto;max-height:60vh}.ui-widget-content{border:1px solid #dee2e6;background-color:#fff}.ui-menu-item{padding:0.2em 0.4em;border:1px solid #fff}.ui-menu-item:hover{color:#6f3b93;border:1px solid #6f3b93;cursor:pointer}.ui-autocomplete{font-size:0.7em;z-index:10000 !important;width:350px;border:5px solid #dee2e6;outline:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px} + */:root{--blue: #007bff;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #dc3545;--orange: #fd7e14;--yellow: #ffc107;--green: #28a745;--teal: #20c997;--cyan: #17a2b8;--white: #fff;--gray: #6c757d;--gray-dark: #343a40;--primary: #007bff;--secondary: #6c757d;--success: #28a745;--info: #17a2b8;--warning: #ffc107;--danger: #dc3545;--light: #f8f9fa;--dark: #343a40;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#6f3b93;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#542c6f;text-decoration:none}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:monospace, monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm,.col-sm-auto,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md,.col-md-auto,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg,.col-lg-auto,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:none}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:none}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:none}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:none}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:none}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:rgba(0,0,0,0)}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>th,.table-success>td{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark th,.table-dark td,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.form-control-plaintext.form-control-lg,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}select.form-control-sm:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control-lg:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled ~ .form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,0.8);border-radius:.2rem}.was-validated .form-control:valid,.form-control.is-valid,.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745}.was-validated .form-control:valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .form-control:valid ~ .valid-feedback,.was-validated .form-control:valid ~ .valid-tooltip,.form-control.is-valid ~ .valid-feedback,.form-control.is-valid ~ .valid-tooltip,.was-validated .custom-select:valid ~ .valid-feedback,.was-validated .custom-select:valid ~ .valid-tooltip,.custom-select.is-valid ~ .valid-feedback,.custom-select.is-valid ~ .valid-tooltip{display:block}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#28a745}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#28a745}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{background-color:#71dd8a}.was-validated .custom-control-input:valid ~ .valid-feedback,.was-validated .custom-control-input:valid ~ .valid-tooltip,.custom-control-input.is-valid ~ .valid-feedback,.custom-control-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{background-color:#34ce57}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid ~ .custom-file-label::before,.custom-file-input.is-valid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:valid ~ .valid-feedback,.was-validated .custom-file-input:valid ~ .valid-tooltip,.custom-file-input.is-valid ~ .valid-feedback,.custom-file-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,0.8);border-radius:.2rem}.was-validated .form-control:invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .form-control:invalid ~ .invalid-feedback,.was-validated .form-control:invalid ~ .invalid-tooltip,.form-control.is-invalid ~ .invalid-feedback,.form-control.is-invalid ~ .invalid-tooltip,.was-validated .custom-select:invalid ~ .invalid-feedback,.was-validated .custom-select:invalid ~ .invalid-tooltip,.custom-select.is-invalid ~ .invalid-feedback,.custom-select.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#dc3545}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{background-color:#efa2a9}.was-validated .custom-control-input:invalid ~ .invalid-feedback,.was-validated .custom-control-input:invalid ~ .invalid-tooltip,.custom-control-input.is-invalid ~ .invalid-feedback,.custom-control-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{background-color:#e4606d}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid ~ .custom-file-label::before,.custom-file-input.is-invalid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:invalid ~ .invalid-feedback,.was-validated .custom-file-input:invalid ~ .invalid-tooltip,.custom-file-input.is-invalid ~ .invalid-feedback,.custom-file-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled):active,.btn:not(:disabled):not(.disabled).active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary:focus,.btn-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-link{font-weight:400;color:#6f3b93;background-color:transparent}.btn-link:hover{color:#542c6f;text-decoration:none;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:none;border-color:transparent;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;transition:opacity 0.15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height 0.35s ease}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:0 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file:focus{z-index:3}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,0.25)}.custom-control-input:active ~ .custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled ~ .custom-control-label{color:#6c757d}.custom-control-input:disabled ~ .custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(128,189,255,0.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.custom-file-input:focus ~ .custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en) ~ .custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,0.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0,0,0,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#6f3b93;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#542c6f;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:hover,.badge-info[href]:focus{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:hover,.badge-light[href]:focus{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width 0.6s ease}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:hover,.list-group-item:focus{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.close:focus{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -25%)}.modal.show .modal-dialog{transform:translate(0, 0)}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:.5rem}.bs-popover-top .arrow,.bs-popover-auto[x-placement^="top"] .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{border-width:.5rem .5rem 0}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before{bottom:0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:.5rem}.bs-popover-right .arrow,.bs-popover-auto[x-placement^="right"] .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{border-width:.5rem .5rem .5rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before{left:0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{left:1px;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:.5rem}.bs-popover-bottom .arrow,.bs-popover-auto[x-placement^="bottom"] .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{border-width:0 .5rem .5rem .5rem}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before{top:0;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:.5rem}.bs-popover-left .arrow,.bs-popover-auto[x-placement^="left"] .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{border-width:.5rem 0 .5rem .5rem}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before{right:0;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;align-items:center;width:100%;transition:transform 0.6s ease;backface-visibility:hidden;perspective:1000px}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translate3d(0, 0, 0)}}.carousel-item-next,.active.carousel-item-right{transform:translateX(100%)}@supports (transform-style: preserve-3d){.carousel-item-next,.active.carousel-item-right{transform:translate3d(100%, 0, 0)}}.carousel-item-prev,.active.carousel-item-left{transform:translateX(-100%)}@supports (transform-style: preserve-3d){.carousel-item-prev,.active.carousel-item-left{transform:translate3d(-100%, 0, 0)}}.carousel-fade .carousel-item{opacity:0;transition-duration:.6s;transition-property:opacity}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{opacity:0}.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translate3d(0, 0, 0)}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,0.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-primary{background-color:#007bff !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#0062cc !important}.bg-secondary{background-color:#6c757d !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62 !important}.bg-success{background-color:#28a745 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34 !important}.bg-info{background-color:#17a2b8 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#ffc107 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00 !important}.bg-danger{background-color:#dc3545 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130 !important}.bg-light{background-color:#f8f9fa !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#343a40 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#007bff !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#28a745 !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#343a40 !important}.border-white{border-color:#fff !important}.rounded{border-radius:.25rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-right{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-left{border-top-left-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-circle{border-radius:50% !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.85714%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-fill{flex:1 1 auto !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-sm-fill{flex:1 1 auto !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-md-fill{flex:1 1 auto !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-lg-fill{flex:1 1 auto !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-xl-fill{flex:1 1 auto !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media (min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;clip-path:none}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:.25rem !important}.mt-sm-1,.my-sm-1{margin-top:.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:.25rem !important}.m-sm-2{margin:.5rem !important}.mt-sm-2,.my-sm-2{margin-top:.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:.25rem !important}.pt-sm-1,.py-sm-1{padding-top:.25rem !important}.pr-sm-1,.px-sm-1{padding-right:.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem !important}.pl-sm-1,.px-sm-1{padding-left:.25rem !important}.p-sm-2{padding:.5rem !important}.pt-sm-2,.py-sm-2{padding-top:.5rem !important}.pr-sm-2,.px-sm-2{padding-right:.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem !important}.pl-sm-2,.px-sm-2{padding-left:.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:.25rem !important}.mt-md-1,.my-md-1{margin-top:.25rem !important}.mr-md-1,.mx-md-1{margin-right:.25rem !important}.mb-md-1,.my-md-1{margin-bottom:.25rem !important}.ml-md-1,.mx-md-1{margin-left:.25rem !important}.m-md-2{margin:.5rem !important}.mt-md-2,.my-md-2{margin-top:.5rem !important}.mr-md-2,.mx-md-2{margin-right:.5rem !important}.mb-md-2,.my-md-2{margin-bottom:.5rem !important}.ml-md-2,.mx-md-2{margin-left:.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:.25rem !important}.pt-md-1,.py-md-1{padding-top:.25rem !important}.pr-md-1,.px-md-1{padding-right:.25rem !important}.pb-md-1,.py-md-1{padding-bottom:.25rem !important}.pl-md-1,.px-md-1{padding-left:.25rem !important}.p-md-2{padding:.5rem !important}.pt-md-2,.py-md-2{padding-top:.5rem !important}.pr-md-2,.px-md-2{padding-right:.5rem !important}.pb-md-2,.py-md-2{padding-bottom:.5rem !important}.pl-md-2,.px-md-2{padding-left:.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:.25rem !important}.mt-lg-1,.my-lg-1{margin-top:.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:.25rem !important}.m-lg-2{margin:.5rem !important}.mt-lg-2,.my-lg-2{margin-top:.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:.25rem !important}.pt-lg-1,.py-lg-1{padding-top:.25rem !important}.pr-lg-1,.px-lg-1{padding-right:.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem !important}.pl-lg-1,.px-lg-1{padding-left:.25rem !important}.p-lg-2{padding:.5rem !important}.pt-lg-2,.py-lg-2{padding-top:.5rem !important}.pr-lg-2,.px-lg-2{padding-right:.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem !important}.pl-lg-2,.px-lg-2{padding-left:.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:.25rem !important}.mt-xl-1,.my-xl-1{margin-top:.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:.25rem !important}.m-xl-2{margin:.5rem !important}.mt-xl-2,.my-xl-2{margin-top:.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:.25rem !important}.pt-xl-1,.py-xl-1{padding-top:.25rem !important}.pr-xl-1,.px-xl-1{padding-right:.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem !important}.pl-xl-1,.px-xl-1{padding-left:.25rem !important}.p-xl-2{padding:.5rem !important}.pt-xl-2,.py-xl-2{padding-top:.5rem !important}.pr-xl-2,.px-xl-2{padding-right:.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem !important}.pl-xl-2,.px-xl-2{padding-left:.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-justify{text-align:justify !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media (min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#007bff !important}a.text-primary:hover,a.text-primary:focus{color:#0062cc !important}.text-secondary{color:#6c757d !important}a.text-secondary:hover,a.text-secondary:focus{color:#545b62 !important}.text-success{color:#28a745 !important}a.text-success:hover,a.text-success:focus{color:#1e7e34 !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#117a8b !important}.text-warning{color:#ffc107 !important}a.text-warning:hover,a.text-warning:focus{color:#d39e00 !important}.text-danger{color:#dc3545 !important}a.text-danger:hover,a.text-danger:focus{color:#bd2130 !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#dae0e5 !important}.text-dark{color:#343a40 !important}a.text-dark:hover,a.text-dark:focus{color:#1d2124 !important}.text-muted{color:#6c757d !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}.switch{font-size:1rem;position:relative}.switch input{position:absolute;height:1px;width:1px;background:none;border:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;padding:0}.switch input+label{position:relative;min-width:calc(calc(2.375rem * .8) * 2);border-radius:calc(2.375rem * .8);height:calc(2.375rem * .8);line-height:calc(2.375rem * .8);display:inline-block;cursor:pointer;outline:none;user-select:none;vertical-align:middle;text-indent:calc(calc(calc(2.375rem * .8) * 2) + .5rem)}.switch input+label::before,.switch input+label::after{content:'';position:absolute;top:0;left:0;width:calc(calc(2.375rem * .8) * 2);bottom:0;display:block}.switch input+label::before{right:0;background-color:#dee2e6;border-radius:calc(2.375rem * .8);transition:0.2s all}.switch input+label::after{top:2px;left:2px;width:calc(calc(2.375rem * .8) - calc(2px * 2));height:calc(calc(2.375rem * .8) - calc(2px * 2));border-radius:50%;background-color:#fff;transition:0.2s all}.switch input:checked+label::before{background-color:#08d}.switch input:checked+label::after{margin-left:calc(2.375rem * .8)}.switch input:focus+label::before{outline:none;box-shadow:0 0 0 .2rem rgba(0,136,221,0.25)}.switch input:disabled+label{color:#868e96;cursor:not-allowed}.switch input:disabled+label::before{background-color:#e9ecef}.switch.switch-sm{font-size:.875rem}.switch.switch-sm input+label{min-width:calc(calc(1.9375rem * .8) * 2);height:calc(1.9375rem * .8);line-height:calc(1.9375rem * .8);text-indent:calc(calc(calc(1.9375rem * .8) * 2) + .5rem)}.switch.switch-sm input+label::before{width:calc(calc(1.9375rem * .8) * 2)}.switch.switch-sm input+label::after{width:calc(calc(1.9375rem * .8) - calc(2px * 2));height:calc(calc(1.9375rem * .8) - calc(2px * 2))}.switch.switch-sm input:checked+label::after{margin-left:calc(1.9375rem * .8)}.switch.switch-lg{font-size:1.25rem}.switch.switch-lg input+label{min-width:calc(calc(3rem * .8) * 2);height:calc(3rem * .8);line-height:calc(3rem * .8);text-indent:calc(calc(calc(3rem * .8) * 2) + .5rem)}.switch.switch-lg input+label::before{width:calc(calc(3rem * .8) * 2)}.switch.switch-lg input+label::after{width:calc(calc(3rem * .8) - calc(2px * 2));height:calc(calc(3rem * .8) - calc(2px * 2))}.switch.switch-lg input:checked+label::after{margin-left:calc(3rem * .8)}.switch+.switch{margin-left:1rem}.switch.danger input:checked+label::before{background-color:#dc3545}.switch.danger input:focus+label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}html{font-size:0.8em;background-color:#f8f9fa}body{background-color:transparent;position:relative}label{margin-bottom:.2rem;min-height:1.5rem}.form-group span label{display:inline-block}.form-group label{display:block}.form-group li label{display:inline-block}.form-group li .form-control{width:auto}.form-group li input[type="radio"].form-control,.form-group li input[type="checkbox"].form-control{display:inline}pre{white-space:pre-wrap}.raw-description{white-space:pre-line}.form-control.small-input,.input-group>.form-control.small-input{width:110px;flex:none}.input-group>input[type=checkbox]{margin:0.5em 1em}.form-row.odd{background-color:#e9ecef}.form-row-modal{padding:0.5rem 2rem}.field-tip{position:absolute;right:10px;top:5px;opacity:0.7}.form-group .select2-container--default .select2-selection--multiple{border:1px solid #ced4da}.page-link.imported-page{color:#aa8fda}.page-link.imported-page.current-page,.page-link.current-page{color:black;font-weight:bold}#modal-advanced-search .modal-header{flex-wrap:wrap;padding-bottom:0}#modal-advanced-search .modal-header .alert-secondary{background-color:#fff}.modal-header,.modal-footer{background-color:#e9ecef}.modal-body.body-scroll{max-height:calc(100vh - 200px);overflow-y:auto}.modal-dialog.full{width:98%;height:98%;max-width:none;padding:1%}.modal-dialog.full .display.dataTable{width:100% !important}.modal-dialog.full .modal-content{height:auto;min-height:100%;border-radius:0}.table{background-color:white}.input-progress.form-control:focus,.input-progress{background-color:#dee2e6}.card-header,.input-progress,.table-striped tbody tr:nth-of-type(2n+1),.dt-bootstrap4 table.dataTable.stripe tbody tr.odd,.dt-bootstrap4 table.dataTable.display tbody tr.odd{background-color:#e9ecef}.dropdown-item:hover,.dropdown-item:focus,.dt-bootstrap4 table.dataTable.hover tbody tr:hover,.dt-bootstrap4 table.dataTable.display tbody tr:hover{background-color:#f6f6f6;background-color:#dee2e6}table.dataTable{font-size:0.8em}.table-modal-lg table.dataTable{font-size:1em}div.dt-buttons{float:right}.dt-button{color:#fff;background-color:#007bff;border-color:#007bff;display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;border:1px solid transparent;color:#fff;background-color:#6c757d;border-color:#6c757d;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.dt-button:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.dt-button:focus,.dt-button.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.disabled,.dt-button:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.dt-button:not(:disabled):not(.disabled):active,.dt-button:not(:disabled):not(.disabled).active,.show>.dt-button.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.dt-button:not(:disabled):not(.disabled):active:focus,.dt-button:not(:disabled):not(.disabled).active:focus,.show>.dt-button.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.dt-button.btn-success:focus,.dt-button.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.btn-success.disabled,.dt-button.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:not(:disabled):not(.disabled):active,.dt-button.btn-success:not(:disabled):not(.disabled).active,.show>.dt-button.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.dt-button.btn-success:not(:disabled):not(.disabled):active:focus,.dt-button.btn-success:not(:disabled):not(.disabled).active:focus,.show>.dt-button.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.disabled{background-color:#f8f9fa;border-color:#f8f9fa;color:#adb5bd;cursor:not-allowed}.small-button{padding:0.1em 0.2em}.previous-value{margin:0.4em 0;display:block}h3,.h3{font-size:1.5rem}h4,.h4{font-size:1.1rem}textarea{height:90px}.sheet h4{color:#6c757d}#bookmark-list .input-link{width:100%;padding-right:5px}#window-fixed-menu{background-color:#e9ecef;position:fixed;right:0;margin-top:100px;z-index:50;width:200px}#window-fixed-menu-list li{padding-bottom:0.5em}#window-fixed-menu-list li a.nav-link{background-color:white}#window-fixed-menu-list li a.nav-link.active{background-color:#007bff}#window-menu-title{font-size:1.3em}#window-menu-control{font-size:0.6em;padding-top:0.2em}#window-fixed-menu.hidden{transform:rotate(270deg);transform-origin:right bottom 0}#window-fixed-menu.hidden i.fa-times{transform:rotate(45deg);transform-origin:10px 10px 0;padding-left:0.1em}.form h4,.form h3,.collapse-form .card-header,#window h3{background-color:#ced4da}.collapse-form .card,.collapse-form .card-header{border-radius:0;border:0 solid}.collapse-form .card-header{padding:0;text-align:center}.collapse-form .card-header h4{margin-bottom:0}.collapse-form .card-header .btn.btn-link{color:#212529;width:100%}.collapse-form .card-body{border:1px solid #ced4da}.collapse-form .fa-expand,.collapse-form .collapsed .fa-compress{display:none}.collapse-form .collapsed .fa-expand,.collapse-form .fa-compress{display:inline-block}.clean-table h4,.form h4,.form h3,.collapse-form .card-header h4 .btn,.sheet h4,.sheet h3,.sheet h2{text-align:center;text-shadow:2px 2px 2px rgba(150,150,150,0.7)}.sheet .subsection{background-color:#e9ecef}.sheet .row.toolbar{padding:0.5em 0.75em}.sheet .row{padding:0 0.75em;margin:0}.clean-table h4{margin-top:1em}.container{margin-top:1em;margin-bottom:8em}.bg-dark{background-color:#432776 !important}.navbar{padding:0 0.5rem}.navbar-dark .navbar-nav.action-menu .nav-link{color:#ffe484;border:1px solid #ffe484;border-radius:4px;margin:0.2em;padding:0.3em 0.6em}.navbar-dark .navbar-nav.action-menu .d-none .nav-link{border:0px solid transparent}.navbar-dark .navbar-nav.action-menu .d-none .nav-link:hover{background-color:transparent;color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link:hover{background-color:#ffe484;color:#343a40}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle::after{color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle:hover::after{color:#343a40}#context-menu,#reminder,.confirm-message,div#validation-bar{background-color:#6f42c1;color:rgba(255,255,255,0.8)}#reminder{padding:0.6em 1em 0.1em 1em}#alert-list{padding:0.6em 0}#alert-list a{font-size:1.1rem}.confirm-message{text-align:center;margin:0;padding:0.5rem;font-weight:bold}.is-invalid input{border-color:#f99}.errorlist{color:#900}#shortcut-menu{width:700px;padding:1em}#context-menu a.nav-link{color:rgba(255,255,255,0.8);padding:0.8rem 0.5rem 0.7rem 0.5rem}#context-menu .breadcrumb{margin-bottom:0;background-color:transparent}#current_items{width:100%}div#foot{background-color:#432776;color:rgba(255,255,255,0.5)}div#foot a{color:#ddd}div#foot a:hover{color:#fff}.breadcrumb button{border:0 transparent;background-color:transparent}.breadcrumb a:hover{text-decoration:none}.breadcrumb button:hover{cursor:pointer;color:#0062cc}.input-group.date input{border:1px solid #dee2e6;border-radius:.25rem;padding:.375rem .75rem;font-size:1rem;line-height:1.5}.input-group.date .input-group-text:hover{cursor:pointer}.input-group>ul{padding:0.5em;border:1px solid #dee2e6;border-radius:.25rem;margin:0;list-style:none}ul.compact{padding:0;margin:0}.help-text{max-height:250px;overflow:auto}.input-link{color:#6c757d}.input-link.disabled{color:#adb5bd}.input-link:hover{color:#343a40;cursor:pointer}.input-link.disabled:hover{color:#adb5bd;cursor:not-allowed}.input-sep{background-color:#fff;padding:0.3rem}.search_button{display:none}.lightgallery-captions{display:none}.lightgallery-subimage{display:inline-block;width:80px;padding:0.2em}.lightgallery-subimage img{width:100%}.lg .lg-sub-html{text-align:left}.lg .lg-sub-html .close{color:#fff}.lg .lg-sub-html .close:hover{opacity:0.9}#basket-manage #foot_pk{display:none}#basket-manage #grid_pk_meta_wrapper{width:50%;float:left;padding-bottom:80px}#basket-add-button{width:8%;float:left;margin:20vh 1% 0 1%}#basket-content-wrapper{width:40%;float:left}#basket-content{text-align:left;overflow:auto;max-height:60vh}.ui-widget-content{border:1px solid #dee2e6;background-color:#fff}.ui-menu-item{padding:0.2em 0.4em;border:1px solid #fff}.ui-menu-item:hover{color:#6f3b93;border:1px solid #6f3b93;cursor:pointer}.ui-autocomplete{font-size:0.7em;z-index:10000 !important;width:350px;border:5px solid #dee2e6;outline:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px} -- cgit v1.2.3 From cfcbb04a4c2eb4cd587f34826f2ce69ff6025312 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 16 Nov 2018 17:55:00 +0100 Subject: Wizard: display selected on final wizard panel --- archaeological_finds/forms.py | 16 +++++++++++-- archaeological_finds/models_treatments.py | 2 +- archaeological_finds/wizards.py | 20 +++++++++++----- ishtar_common/forms.py | 32 ++++++++++++++++++++++++++ ishtar_common/static/js/ishtar.js | 11 +++++++++ ishtar_common/templates/blocks/DataTables.html | 6 ++++- ishtar_common/widgets.py | 2 +- ishtar_common/wizards.py | 2 +- scss/custom.scss | 5 ++++ 9 files changed, 84 insertions(+), 12 deletions(-) diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 663ab3663..4df6629e1 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -53,7 +53,8 @@ from bootstrap_datepicker.widgets import DatePicker from ishtar_common import widgets from ishtar_common.forms import CustomForm, CustomFormSearch, FormSet, \ FloatField, reverse_lazy, TableSelect, get_now, FinalForm, \ - ManageOldType, FieldType, IshtarForm, FormHeader, QAForm, HistorySelect + ManageOldType, FieldType, IshtarForm, FormHeader, QAForm, HistorySelect, \ + PkWizardSearch from ishtar_common.forms_common import get_town_field from ishtar_common.models import valid_id, valid_ids, get_current_profile, \ SpatialReferenceSystem, Area, OperationType @@ -910,8 +911,19 @@ class FindDeletionForm(FinalForm): confirm_end_msg = _(u"Would you like to delete this find?") -class UpstreamFindFormSelection(FindFormSelection): +class UpstreamFindFormSelection(PkWizardSearch, FindFormSelection): form_label = _(u"Upstream find") + current_model = models.Find + pk_key = 'resulting_pk' + + pk = forms.CharField( + label="", required=False, + widget=widgets.DataTable( + reverse_lazy('get-find'), + FindSelect, current_model, + multiple_select=True, + source_full=reverse_lazy('get-find-full')), + validators=[valid_ids(current_model)]) def __init__(self, *args, **kwargs): super(UpstreamFindFormSelection, self).__init__(*args, **kwargs) diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index 61d4ce5be..160e9d32d 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -68,7 +68,7 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, "upstream_cached_label": _(u"Upstream find"), "treatment_types__label": _(u"Type"), "treatment_state__label": _(u"State"), - 'person__cached_label': _(u"Responsible"), + "person__cached_label": _(u"Responsible"), } # extra keys than can be passed to save method EXTRA_SAVED_KEYS = ('items', 'user') diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py index e90fa745c..3314759d1 100644 --- a/archaeological_finds/wizards.py +++ b/archaeological_finds/wizards.py @@ -119,14 +119,17 @@ class TreatmentWizard(Wizard): kwargs['user'] = self.request.user return kwargs - def get_current_find(self): + def get_current_finds(self): step = self.steps.current if not step: return find_form_key = 'selecfind-treatment_creation' - find_id = self.session_get_value(find_form_key, "resulting_pk") + find_ids = self.session_get_value(find_form_key, "resulting_pk") try: - return models.Find.objects.get(pk=int(find_id)) + return [ + models.Find.objects.get(pk=int(find_id.strip())) + for find_id in find_ids.split(u',') + ] except(TypeError, ValueError, ObjectDoesNotExist): pass @@ -134,12 +137,17 @@ class TreatmentWizard(Wizard): initial = super(TreatmentWizard, self).get_form_initial(step) if step != 'basetreatment-treatment_creation': return initial - find = self.get_current_find() - if not find or not find.container: + finds = self.get_current_finds() + if not finds: + return initial + locations = [find.container.location.pk for find in finds + if find.container] + # no location or multiple locations + if not locations or len(set(locations)) != 1: return initial if not initial: initial = {} - initial['location'] = find.container.location.pk + initial['location'] = locations[0] return initial def get_extra_model(self, dct, form_list): diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index 20c65971e..63551ede2 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -341,6 +341,38 @@ class CustomForm(BSForm): return sorted(customs, key=lambda x: x[1]) +class PkWizardSearch(object): + current_model = None + pk_key = None + + @classmethod + def get_formated_datas(cls, cleaned_datas): + if not cls.current_model or not cls.pk_key: + return [] + items = [] + for data in cleaned_datas: + if not data or cls.pk_key not in data or not data[cls.pk_key]: + continue + pks = data[cls.pk_key] + for pk in unicode(pks).split(u','): + if not pk: + continue + try: + items.append( + unicode(cls.current_model.objects.get(pk=int(pk))) + ) + except (cls.current_model.DoesNotExist, ValueError): + continue + return [ + (u"", + mark_safe( + u"
  • " + u"
  • ".join(items) + + u"
" + )) + ] + + + class CustomFormSearch(forms.Form): need_user_for_initialization = True diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js index e4e80d681..ea0ccc516 100644 --- a/ishtar_common/static/js/ishtar.js +++ b/ishtar_common/static/js/ishtar.js @@ -968,3 +968,14 @@ var dt_single_enable_disable_submit_button = function(e, dt, type, indexes){ $("#validation-bar #submit_form").prop('disabled', true); } }; + +var dt_multi_enable_disable_submit_button = function(e, dt, type, indexes){ + var rows = dt.rows( { selected: true } ).count(); + if (rows >= 1) { + $("#validation-bar #submit_form").prop('title', ""); + $("#validation-bar #submit_form").prop('disabled', false); + } else { + $("#validation-bar #submit_form").prop('title', select_only_one_msg); + $("#validation-bar #submit_form").prop('disabled', true); + } +}; diff --git a/ishtar_common/templates/blocks/DataTables.html b/ishtar_common/templates/blocks/DataTables.html index e1966787b..096650115 100644 --- a/ishtar_common/templates/blocks/DataTables.html +++ b/ishtar_common/templates/blocks/DataTables.html @@ -194,7 +194,8 @@ jQuery(document).ready(function(){ ], "initComplete": function(settings, json) { var api = new $.fn.dataTable.Api(settings); - dt_single_enable_disable_submit_button(null, api); + {% if not multiple_select %}dt_single_enable_disable_submit_button(null, api); + {% else %}dt_multi_enable_disable_submit_button(null, api);{% endif %} } }; @@ -207,6 +208,9 @@ jQuery(document).ready(function(){ {% if not multiple_select %} datatable_{{sname}}.on('select', dt_single_enable_disable_submit_button); datatable_{{sname}}.on('deselect', dt_single_enable_disable_submit_button); + {% else %} + datatable_{{sname}}.on('select', dt_multi_enable_disable_submit_button); + datatable_{{sname}}.on('deselect', dt_multi_enable_disable_submit_button); {% endif %} {% if multiple %} diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index 3fd48fa0d..f668ee534 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -927,7 +927,7 @@ class DataTable(Select2Media, forms.RadioSelect): :param new: :param new_message: :param source_full: url to get full listing - :param multiple_select: + :param multiple_select: select multiple is available :param sortname: column name (model attribute) to use to sort :param col_prefix: prefix to remove to col_names """ diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index a439cc014..7fd19f721 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -1181,7 +1181,7 @@ class Wizard(IshtarWizard): return vals def get_current_object(self): - """Get the current object for an instancied wizard""" + """Get the current object for an instanced wizard""" current_obj = None for key in self.main_item_select_keys: main_form_key = key + self.url_name diff --git a/scss/custom.scss b/scss/custom.scss index 788220466..f0168d469 100644 --- a/scss/custom.scss +++ b/scss/custom.scss @@ -477,6 +477,11 @@ div#foot a:hover { list-style: none; } +ul.compact{ + padding: 0; + margin: 0; +} + .help-text{ max-height: 250px; overflow: auto; -- cgit v1.2.3 From cce8c95c54c6d29d94a9e82acc9d54dcb4c20500 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 16 Nov 2018 18:02:29 +0100 Subject: Treatment: fix save with multiple items --- archaeological_finds/wizards.py | 19 ++++++++++++------- ishtar_common/forms.py | 1 - 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py index 3314759d1..8a7a3a513 100644 --- a/archaeological_finds/wizards.py +++ b/archaeological_finds/wizards.py @@ -156,19 +156,24 @@ class TreatmentWizard(Wizard): """ dct = super(TreatmentWizard, self).get_extra_model(dct, form_list) if 'resulting_pk' in dct: - try: - find = models.Find.objects.get(pk=dct.pop('resulting_pk')) - if 'own' in self.current_right \ - and not find.is_own(dct['history_modifier']): + dct['items'] = [] + pks = dct.pop('resulting_pk').split(u',') + for pk in pks: + try: + find = models.Find.objects.get(pk=pk) + dct['items'].append(find) + except models.Find.DoesNotExist: raise PermissionDenied - dct['items'] = [find] - except models.Find.DoesNotExist: - raise PermissionDenied if 'basket' in dct: basket = dct.pop('basket') if basket.user.pk != dct['history_modifier'].pk: raise PermissionDenied dct['items'] = list(basket.items.all()) + + for find in dct['items']: + if 'own' in self.current_right \ + and not find.is_own(dct['history_modifier']): + raise PermissionDenied return dct diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index 63551ede2..0c93016b1 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -372,7 +372,6 @@ class PkWizardSearch(object): ] - class CustomFormSearch(forms.Form): need_user_for_initialization = True -- cgit v1.2.3 From 6d1beb3e0bda4786d5577a8c1498042b96421fa0 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 16 Nov 2018 19:07:13 +0100 Subject: Treatment n->1: base forms --- archaeological_finds/forms.py | 98 ++++++++++++++++++++++++- archaeological_finds/forms_treatments.py | 14 ++++ archaeological_finds/ishtar_menu.py | 19 +++-- archaeological_finds/urls.py | 5 +- archaeological_finds/views.py | 16 +++- ishtar_common/templates/blocks/action_list.html | 4 +- 6 files changed, 143 insertions(+), 13 deletions(-) diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 4df6629e1..a221247e0 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -43,7 +43,7 @@ from archaeological_finds.forms_treatments import TreatmentSelect, \ AdministrativeActTreatmentFileForm, \ AdministrativeActTreatmentFileFormSelection, \ AdministrativeActTreatmentFileModifForm, \ - DashboardForm as DashboardTreatmentForm, \ + DashboardForm as DashboardTreatmentForm, N1TreatmentForm,\ DashboardTreatmentFileForm, QAFindTreatmentForm from archaeological_operations.models import Period, ArchaeologicalSite, \ RelationType as OpeRelationType @@ -82,7 +82,8 @@ __all__ = [ 'FindDeletionForm', 'UpstreamFindFormSelection', 'NewFindBasketForm', 'SelectFindBasketForm', 'DeleteFindBasketForm', 'FindBasketAddItemForm', 'QAFindFormSingle', 'QAFindFormMulti', 'QAFindBasketForm', - 'QAFindTreatmentForm' + 'QAFindTreatmentForm', + 'N1TreatmentForm', 'ResultingFindForm' ] logger = logging.getLogger(__name__) @@ -319,6 +320,99 @@ class FindForm(CustomForm, ManageOldType): return self.cleaned_data +class ResultingFindForm(CustomForm, ManageOldType): + file_upload = True + form_label = _("Resulting find") + form_admin_name = _(u"Treatment n-1 - 030 - General") + form_slug = "treatmentn1-030-general" + + base_models = ['object_type', 'material_type', 'communicabilitie'] + associated_models = { + 'material_type': models.MaterialType, + 'object_type': models.ObjectType, + 'communicabilitie': models.CommunicabilityType, + 'material_type_quality': models.MaterialTypeQualityType, + 'object_type_quality': models.ObjectTypeQualityType, + 'checked_type': models.CheckedType, + } + HEADERS = {} + HEADERS['label'] = FormHeader(_(u"Identification")) + + label = forms.CharField( + label=_(u"Free ID"), + validators=[validators.MaxLengthValidator(60)]) + denomination = forms.CharField(label=_(u"Denomination"), required=False) + previous_id = forms.CharField(label=_("Previous ID"), required=False) + museum_id = forms.CharField(label=_(u"Museum ID"), required=False) + seal_number = forms.CharField(label=_(u"Seal number"), required=False) + mark = forms.CharField(label=_(u"Mark"), required=False) + + HEADERS['description'] = FormHeader(_(u"Description")) + description = forms.CharField(label=_(u"Description"), + widget=forms.Textarea, required=False) + is_complete = forms.NullBooleanField(label=_(u"Is complete?"), + required=False) + material_type = widgets.Select2MultipleField( + label=_(u"Material types"), required=False + ) + material_type_quality = forms.ChoiceField( + label=_(u"Material type quality"), required=False, choices=[]) + object_type = widgets.Select2MultipleField( + label=_(u"Object types"), required=False, + ) + object_type_quality = forms.ChoiceField( + label=_(u"Object type quality"), required=False, choices=[]) + find_number = forms.IntegerField(label=_(u"Find number"), required=False) + min_number_of_individuals = forms.IntegerField( + label=_(u"Minimum number of individuals (MNI)"), required=False) + + decoration = forms.CharField(label=_(u"Decoration"), widget=forms.Textarea, + required=False) + inscription = forms.CharField(label=_(u"Inscription"), + widget=forms.Textarea, required=False) + manufacturing_place = forms.CharField( + label=_(u"Manufacturing place"), required=False) + communicabilitie = widgets.Select2MultipleField( + label=_(u"Communicability"), required=False + ) + comment = forms.CharField(label=_(u"Comment"), required=False, + widget=forms.Textarea) + dating_comment = forms.CharField( + label=_(u"Comment on dating"), required=False, widget=forms.Textarea) + + HEADERS['length'] = FormHeader(_(u"Dimensions")) + length = FloatField(label=_(u"Length (cm)"), required=False) + width = FloatField(label=_(u"Width (cm)"), required=False) + height = FloatField(label=_(u"Height (cm)"), required=False) + diameter = FloatField(label=_(u"Diameter (cm)"), required=False) + thickness = FloatField(label=_(u"Thickness (cm)"), required=False) + volume = FloatField(label=_(u"Volume (l)"), required=False) + weight = FloatField(label=_(u"Weight (g)"), required=False) + clutter_long_side = FloatField( + label=_(u"Clutter long side (cm)"), required=False) + clutter_short_side = FloatField( + label=_(u"Clutter short side (cm)"), required=False) + clutter_height = FloatField( + label=_(u"Clutter height (cm)"), required=False) + dimensions_comment = forms.CharField( + label=_(u"Dimensions comment"), required=False, widget=forms.Textarea) + + HEADERS['checked_type'] = FormHeader(_(u"Sheet")) + checked_type = forms.ChoiceField(label=_(u"Check"), required=False) + check_date = forms.DateField( + initial=get_now, label=_(u"Check date"), widget=DatePicker) + + TYPES = [ + FieldType('material_type', models.MaterialType, is_multiple=True), + FieldType('material_type_quality', models.MaterialTypeQualityType), + FieldType('object_type', models.ObjectType, is_multiple=True), + FieldType('object_type_quality', models.ObjectTypeQualityType), + FieldType('communicabilitie', models.CommunicabilityType, + is_multiple=True), + FieldType('checked_type', models.CheckedType, is_multiple=True), + ] + + class QAFindFormMulti(QAForm): form_admin_name = _(u"Find - Quick action - Modify") form_slug = "find-quickaction-modify" diff --git a/archaeological_finds/forms_treatments.py b/archaeological_finds/forms_treatments.py index 248b1ef7d..99a685825 100644 --- a/archaeological_finds/forms_treatments.py +++ b/archaeological_finds/forms_treatments.py @@ -230,6 +230,20 @@ class BaseTreatmentForm(CustomForm, ManageOldType): """ +class N1TreatmentForm(BaseTreatmentForm): + form_label = _(u"Base treatment") + form_admin_name = _(u"Treatment n-1 - 020 - General") + form_slug = "treatmentn1-020-general" + + TYPES = [ + FieldType('treatment_state', models.TreatmentState), + FieldType( + 'treatment_type', models.TreatmentType, is_multiple=True, + extra_args={'dct': {'upstream_is_many': True, + 'downstream_is_many': False}}) + ] + + class TreatmentModifyForm(BaseTreatmentForm): index = forms.IntegerField(_(u"Index")) id = forms.IntegerField(' ', widget=forms.HiddenInput, required=False) diff --git a/archaeological_finds/ishtar_menu.py b/archaeological_finds/ishtar_menu.py index 19d300fbc..cd7ed19b7 100644 --- a/archaeological_finds/ishtar_menu.py +++ b/archaeological_finds/ishtar_menu.py @@ -153,11 +153,20 @@ MENU_SECTIONS = [ model=models.Treatment, access_controls=['view_treatment', 'view_own_treatment']), - MenuItem('treatment_creation', - _(u"Simple treatment - creation"), - model=models.Treatment, - access_controls=['change_treatment', - 'change_own_treatment']), + MenuItem( + 'treatment_creation', + _(u"Treatment " + u"1 1 " + u"- creation"), + model=models.Treatment, + access_controls=['change_find', 'change_own_find']), + MenuItem( + 'treatment_creation_n1', + _(u"Treatment " + u"n 1 " + u"- creation"), + model=models.Treatment, + access_controls=['change_find', 'change_own_find']), MenuItem('treatment_modification', _(u"Modification"), model=models.Treatment, diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py index 588c8d520..b9f4d8b6c 100644 --- a/archaeological_finds/urls.py +++ b/archaeological_finds/urls.py @@ -100,10 +100,13 @@ urlpatterns = [ views.QAFindTreatmentFormView.as_view()), name='find-qa-packaging'), - url(r'^treatment_creation/(?P.+)?$', check_rights(['change_find', 'change_own_find'])( views.treatment_creation_wizard), name='treatment_creation'), + url(r'^treatment_creation_n1/(?P.+)?$', + check_rights(['change_find', 'change_own_find'])( + views.treatment_creation_n1_wizard), name='treatment_creation_n1'), + url(r'^treatment_modification/(?P.+)?$', check_rights(['change_find', 'change_own_find'])( views.treatment_modification_wizard), diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index c4dbe0d3d..789c420de 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -408,9 +408,6 @@ treatment_wizard_steps = [ ('selecfind-treatment_creation', UpstreamFindFormSelection), ('file-treatment_creation', TreatmentFormFileChoice), ('basetreatment-treatment_creation', BaseTreatmentForm), - # ('selecbasket-treatment_creation', SelectFindBasketForm), - # ('resultfind-treatment_creation', ResultFindForm), - # ('resultfinds-treatment_creation', ResultFindFormSet), ('final-treatment_creation', FinalForm) ] @@ -444,6 +441,19 @@ treatment_creation_wizard = TreatmentWizard.as_view( label=_(u"New treatment"), url_name='treatment_creation',) +treatment_n1_wizard_steps = [ + ('selecfind-treatment_creation_n1', UpstreamFindFormSelection), + ('file-treatment_creation_n1', TreatmentFormFileChoice), + ('basetreatment-treatment_creation_n1', N1TreatmentForm), + ('resultingfind-treatment_creation_n1', ResultingFindForm), + ('final-treatment_creation_n1', FinalForm) +] + +treatment_creation_n1_wizard = TreatmentWizard.as_view( + treatment_n1_wizard_steps, + label=_(u"New treatment"), + url_name='treatment_creation_n1',) + treatment_modification_wizard = TreatmentModificationWizard.as_view( [('selec-treatment_modification', TreatmentFormSelection), ('file-treatment_modification', TreatmentFormFileChoice), diff --git a/ishtar_common/templates/blocks/action_list.html b/ishtar_common/templates/blocks/action_list.html index 50a6554c4..384082ad4 100644 --- a/ishtar_common/templates/blocks/action_list.html +++ b/ishtar_common/templates/blocks/action_list.html @@ -1,12 +1,12 @@ -- cgit v1.2.3 From 9eb08d29098fa558a0fa2a4d6236d2dfba207b81 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Sun, 18 Nov 2018 15:20:51 +0100 Subject: Treatment n<->1: manage saving --- archaeological_finds/forms.py | 111 +++++++++++----------- archaeological_finds/models_treatments.py | 74 ++++++++++++++- archaeological_finds/views.py | 2 +- archaeological_finds/wizards.py | 147 +++++++++++++++++++++++++++--- 4 files changed, 264 insertions(+), 70 deletions(-) diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index a221247e0..958b1896c 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -326,90 +326,93 @@ class ResultingFindForm(CustomForm, ManageOldType): form_admin_name = _(u"Treatment n-1 - 030 - General") form_slug = "treatmentn1-030-general" - base_models = ['object_type', 'material_type', 'communicabilitie'] associated_models = { - 'material_type': models.MaterialType, - 'object_type': models.ObjectType, - 'communicabilitie': models.CommunicabilityType, - 'material_type_quality': models.MaterialTypeQualityType, - 'object_type_quality': models.ObjectTypeQualityType, - 'checked_type': models.CheckedType, + 'resulting_material_type': models.MaterialType, + 'resulting_object_type': models.ObjectType, + 'resulting_communicabilitie': models.CommunicabilityType, + 'resulting_material_type_quality': models.MaterialTypeQualityType, + 'resulting_object_type_quality': models.ObjectTypeQualityType, + 'resulting_checked_type': models.CheckedType, } HEADERS = {} - HEADERS['label'] = FormHeader(_(u"Identification")) + HEADERS['resulting_label'] = FormHeader(_(u"Identification")) - label = forms.CharField( + resulting_label = forms.CharField( label=_(u"Free ID"), validators=[validators.MaxLengthValidator(60)]) - denomination = forms.CharField(label=_(u"Denomination"), required=False) - previous_id = forms.CharField(label=_("Previous ID"), required=False) - museum_id = forms.CharField(label=_(u"Museum ID"), required=False) - seal_number = forms.CharField(label=_(u"Seal number"), required=False) - mark = forms.CharField(label=_(u"Mark"), required=False) + resulting_denomination = forms.CharField(label=_(u"Denomination"), + required=False) - HEADERS['description'] = FormHeader(_(u"Description")) - description = forms.CharField(label=_(u"Description"), - widget=forms.Textarea, required=False) - is_complete = forms.NullBooleanField(label=_(u"Is complete?"), - required=False) - material_type = widgets.Select2MultipleField( + HEADERS['resulting_description'] = FormHeader(_(u"Description")) + resulting_description = forms.CharField( + label=_(u"Description"), widget=forms.Textarea, required=False) + resulting_is_complete = forms.NullBooleanField( + label=_(u"Is complete?"), required=False) + resulting_material_type = widgets.Select2MultipleField( label=_(u"Material types"), required=False ) - material_type_quality = forms.ChoiceField( + resulting_material_type_quality = forms.ChoiceField( label=_(u"Material type quality"), required=False, choices=[]) - object_type = widgets.Select2MultipleField( + resulting_object_type = widgets.Select2MultipleField( label=_(u"Object types"), required=False, ) - object_type_quality = forms.ChoiceField( + resulting_object_type_quality = forms.ChoiceField( label=_(u"Object type quality"), required=False, choices=[]) - find_number = forms.IntegerField(label=_(u"Find number"), required=False) - min_number_of_individuals = forms.IntegerField( + resulting_find_number = forms.IntegerField( + label=_(u"Find number"), required=False) + resulting_min_number_of_individuals = forms.IntegerField( label=_(u"Minimum number of individuals (MNI)"), required=False) - decoration = forms.CharField(label=_(u"Decoration"), widget=forms.Textarea, - required=False) - inscription = forms.CharField(label=_(u"Inscription"), - widget=forms.Textarea, required=False) - manufacturing_place = forms.CharField( + resulting_decoration = forms.CharField( + label=_(u"Decoration"), widget=forms.Textarea, required=False) + resulting_inscription = forms.CharField( + label=_(u"Inscription"), widget=forms.Textarea, required=False) + resulting_manufacturing_place = forms.CharField( label=_(u"Manufacturing place"), required=False) - communicabilitie = widgets.Select2MultipleField( + resulting_communicabilitie = widgets.Select2MultipleField( label=_(u"Communicability"), required=False ) - comment = forms.CharField(label=_(u"Comment"), required=False, + resulting_comment = forms.CharField(label=_(u"Comment"), required=False, widget=forms.Textarea) - dating_comment = forms.CharField( + resulting_dating_comment = forms.CharField( label=_(u"Comment on dating"), required=False, widget=forms.Textarea) - HEADERS['length'] = FormHeader(_(u"Dimensions")) - length = FloatField(label=_(u"Length (cm)"), required=False) - width = FloatField(label=_(u"Width (cm)"), required=False) - height = FloatField(label=_(u"Height (cm)"), required=False) - diameter = FloatField(label=_(u"Diameter (cm)"), required=False) - thickness = FloatField(label=_(u"Thickness (cm)"), required=False) - volume = FloatField(label=_(u"Volume (l)"), required=False) - weight = FloatField(label=_(u"Weight (g)"), required=False) - clutter_long_side = FloatField( + HEADERS['resulting_length'] = FormHeader(_(u"Dimensions")) + resulting_length = FloatField(label=_(u"Length (cm)"), required=False) + resulting_width = FloatField(label=_(u"Width (cm)"), required=False) + resulting_height = FloatField(label=_(u"Height (cm)"), required=False) + resulting_diameter = FloatField(label=_(u"Diameter (cm)"), required=False) + resulting_thickness = FloatField(label=_(u"Thickness (cm)"), required=False) + resulting_volume = FloatField(label=_(u"Volume (l)"), required=False) + resulting_weight = FloatField(label=_(u"Weight (g)"), required=False) + resulting_clutter_long_side = FloatField( label=_(u"Clutter long side (cm)"), required=False) - clutter_short_side = FloatField( + resulting_clutter_short_side = FloatField( label=_(u"Clutter short side (cm)"), required=False) - clutter_height = FloatField( + resulting_clutter_height = FloatField( label=_(u"Clutter height (cm)"), required=False) - dimensions_comment = forms.CharField( + resulting_dimensions_comment = forms.CharField( label=_(u"Dimensions comment"), required=False, widget=forms.Textarea) - HEADERS['checked_type'] = FormHeader(_(u"Sheet")) - checked_type = forms.ChoiceField(label=_(u"Check"), required=False) - check_date = forms.DateField( + HEADERS['resulting_checked_type'] = FormHeader(_(u"Sheet")) + resulting_checked_type = forms.ChoiceField(label=_(u"Check"), + required=False) + resulting_check_date = forms.DateField( initial=get_now, label=_(u"Check date"), widget=DatePicker) TYPES = [ - FieldType('material_type', models.MaterialType, is_multiple=True), - FieldType('material_type_quality', models.MaterialTypeQualityType), - FieldType('object_type', models.ObjectType, is_multiple=True), - FieldType('object_type_quality', models.ObjectTypeQualityType), - FieldType('communicabilitie', models.CommunicabilityType, + FieldType('resulting_material_type', models.MaterialType, + is_multiple=True), + FieldType('resulting_material_type_quality', + models.MaterialTypeQualityType), + FieldType('resulting_object_type', models.ObjectType, + is_multiple=True), + FieldType('resulting_object_type_quality', + models.ObjectTypeQualityType), + FieldType('resulting_communicabilitie', models.CommunicabilityType, + is_multiple=True), + FieldType('resulting_checked_type', models.CheckedType, is_multiple=True), - FieldType('checked_type', models.CheckedType, is_multiple=True), ] diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index 160e9d32d..4e2eb0faf 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -71,7 +71,7 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, "person__cached_label": _(u"Responsible"), } # extra keys than can be passed to save method - EXTRA_SAVED_KEYS = ('items', 'user') + EXTRA_SAVED_KEYS = ('items', 'user', 'resulting_find', 'upstream_items') # alternative names of fields for searches ALT_NAMES = { @@ -292,10 +292,73 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, if q.count(): self.index = q.all().aggregate(Max('index'))['index__max'] + 1 + def _create_resulting_find(self, resulting_find, upstream_items): + m2m = {} + base_fields = [f.name for f in Find._meta.get_fields()] + for k in resulting_find.keys(): + # if not in base fields should be a m2m + if k not in base_fields: + values = resulting_find.pop(k) + if values: + m2m[k + "s"] = values + + resulting_find['history_modifier'] = self.history_modifier + new_find = Find.objects.create(**resulting_find) + + for k in m2m: + m2m_field = getattr(new_find, k) + try: + for value in m2m[k]: + m2m_field.add(value) + except TypeError: + m2m_field.add(m2m[k]) + + dating_keys = ["period", "start_date", "end_date", "dating_type", + "quality", "precise_dating"] + current_datings = [] + current_base_finds = [] + for upstream_item in upstream_items: + # datings are not explicitly part of the resulting_find + # need to reassociate with no duplicate + for dating in upstream_item.datings.all(): + current_dating = [] + for key in dating_keys: + value = getattr(dating, key) + if hasattr(value, 'pk'): + value = value.pk + current_dating.append(value) + current_dating = tuple(current_dating) + if current_dating in current_datings: + # do not add similar dating + continue + current_datings.append(current_dating) + dating.pk = None # duplicate + dating.save() + new_find.datings.add(dating) + + # associate base finds + for base_find in upstream_item.base_finds.all(): + if base_find.pk in current_base_finds: + continue + current_base_finds.append(base_find.pk) + new_find.base_finds.add(base_find) + + upstream_item.downstream_treatment = self + upstream_item.history_modifier = self.history_modifier + upstream_item.save() + new_find.upstream_treatment = self + new_find.skip_history_when_saving = True + new_find.save() + def save(self, *args, **kwargs): - items, user, extra_args_for_new = [], None, [] + items, user, extra_args_for_new, resulting_find = [], None, [], None + upstream_items = [] if "items" in kwargs: items = kwargs.pop('items') + if "resulting_find" in kwargs: + resulting_find = kwargs.pop('resulting_find') + if "upstream_items" in kwargs: + upstream_items = kwargs.pop('upstream_items') if "user" in kwargs: user = kwargs.pop('user') if "extra_args_for_new" in kwargs: @@ -303,8 +366,15 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, self.pre_save() super(Treatment, self).save(*args, **kwargs) updated = [] + # baskets if hasattr(items, "items"): items = items.items.all() + if hasattr(upstream_items, "items"): + upstream_items = upstream_items.items.all() + + if upstream_items and resulting_find: + self._create_resulting_find(resulting_find, upstream_items) + return tps = list(self.treatment_types.all()) has_destructive_tp = bool([tp for tp in tps if tp.destructive]) diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index 789c420de..d6924257f 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -449,7 +449,7 @@ treatment_n1_wizard_steps = [ ('final-treatment_creation_n1', FinalForm) ] -treatment_creation_n1_wizard = TreatmentWizard.as_view( +treatment_creation_n1_wizard = TreatmentN1Wizard.as_view( treatment_n1_wizard_steps, label=_(u"New treatment"), url_name='treatment_creation_n1',) diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py index 8a7a3a513..3043d22aa 100644 --- a/archaeological_finds/wizards.py +++ b/archaeological_finds/wizards.py @@ -106,24 +106,16 @@ class TreatmentSearch(SearchWizard): model = models.Treatment -class TreatmentWizard(Wizard): +class TreatmentBase(Wizard): model = models.Treatment wizard_done_window = reverse_lazy('show-treatment') - basket_step = 'basetreatment-treatment_creation' - saved_args = {"items": []} - - def get_form_kwargs(self, step, **kwargs): - kwargs = super(TreatmentWizard, self).get_form_kwargs(step, **kwargs) - if self.basket_step not in step: - return kwargs - kwargs['user'] = self.request.user - return kwargs + base_url = "" def get_current_finds(self): step = self.steps.current if not step: return - find_form_key = 'selecfind-treatment_creation' + find_form_key = 'selecfind-' + self.base_url find_ids = self.session_get_value(find_form_key, "resulting_pk") try: return [ @@ -134,8 +126,9 @@ class TreatmentWizard(Wizard): pass def get_form_initial(self, step, data=None): - initial = super(TreatmentWizard, self).get_form_initial(step) - if step != 'basetreatment-treatment_creation': + initial = super(TreatmentBase, self).get_form_initial(step) + base_step = 'basetreatment-' + self.base_url + if step != base_step: return initial finds = self.get_current_finds() if not finds: @@ -150,6 +143,19 @@ class TreatmentWizard(Wizard): initial['location'] = locations[0] return initial + +class TreatmentWizard(TreatmentBase): + basket_step = 'basetreatment-treatment_creation' + saved_args = {"items": []} + base_url = 'treatment_creation' + + def get_form_kwargs(self, step, **kwargs): + kwargs = super(TreatmentWizard, self).get_form_kwargs(step, **kwargs) + if self.basket_step not in step: + return kwargs + kwargs['user'] = self.request.user + return kwargs + def get_extra_model(self, dct, form_list): """ Get items concerned by the treatment @@ -181,6 +187,121 @@ class TreatmentModificationWizard(TreatmentWizard): modification = True +class TreatmentN1Wizard(TreatmentBase): + saved_args = {"upstream_items": [], "resulting_find": None} + base_url = 'treatment_creation_n1' + + def _update_simple_initial_from_finds(self, initial, find, k): + r_k = "resulting_" + k + if getattr(find, k) and r_k in initial: + # pop k when value is inconsistent between finds + if initial[r_k] and initial[r_k] != getattr(find, k).pk: + initial.pop(r_k) + else: + initial[r_k] = getattr(find, k).pk + return initial + + def _update_multi_initial_from_finds(self, initial, find, k): + r_k = "resulting_" + k + for value in getattr(find, k + 's').all(): + if value.pk not in initial[r_k]: + initial[r_k].append(value.pk) + return initial + + def _update_num_initial_from_finds(self, initial, find, k): + r_k = "resulting_" + k + if not getattr(find, k): + return initial + if initial[r_k] is None: + initial[r_k] = 0 + initial[r_k] += getattr(find, k) + return initial + + def _update_char_initial_from_finds(self, initial, find, k, sep=' ; '): + r_k = "resulting_" + k + if not getattr(find, k): + return initial + if not initial[r_k]: + initial[r_k] = getattr(find, k) + else: + initial[r_k] += sep + getattr(find, k) + return initial + + def get_form_initial(self, step, data=None): + initial = super(TreatmentN1Wizard, self).get_form_initial(step) + if step != 'resultingfind-treatment_creation_n1': + return initial + finds = self.get_current_finds() + if not finds: + return initial + simple_key = ['material_type_quality'] + multi_key = ['material_type', 'object_type', 'communicabilitie'] + numeric_key = ['find_number', 'min_number_of_individuals'] + desc_key = ['decoration', 'inscription', 'comment', 'dating_comment'] + char_key = ['manufacturing_place'] + + for k in simple_key + numeric_key + desc_key + char_key: + initial["resulting_" + k] = None + for k in multi_key: + initial["resulting_" + k] = [] + + for find in finds: + for k in simple_key: + initial = self._update_simple_initial_from_finds( + initial, find, k) + for k in multi_key: + initial = self._update_multi_initial_from_finds( + initial, find, k) + for k in numeric_key: + initial = self._update_num_initial_from_finds( + initial, find, k) + for k in char_key: + initial = self._update_char_initial_from_finds( + initial, find, k, sep=' ; ') + for k in desc_key: + initial = self._update_char_initial_from_finds( + initial, find, k, sep='\n') + + for k in initial.keys(): + if initial[k] is None: + initial.pop(k) + return initial + + def get_extra_model(self, dct, form_list): + """ + Get items concerned by the treatment + """ + dct = super(TreatmentN1Wizard, self).get_extra_model(dct, form_list) + if 'resulting_pk' not in dct: + return dct + + dct['upstream_items'] = [] + # manage upstream items + pks = dct.pop('resulting_pk') + if hasattr(pks, 'split'): + pks = pks.split(u',') # unicode or string + for pk in pks: + try: + find = models.Find.objects.get(pk=pk) + dct['upstream_items'].append(find) + except models.Find.DoesNotExist: + raise PermissionDenied + + for find in dct['upstream_items']: + if 'own' in self.current_right \ + and not find.is_own(dct['history_modifier']): + raise PermissionDenied + + # extract data of the new find + dct['resulting_find'] = {} + for k in dct.keys(): + if k.startswith('resulting_') and k != "resulting_find": + dct['resulting_find'][ + k[len('resulting_'):] + ] = dct.pop(k) + return dct + + class TreatmentDeletionWizard(DeletionWizard): model = models.Treatment fields = ['label', 'other_reference', 'year', 'index', -- cgit v1.2.3 From 4c8aa9d4dc641b6c9c2bbce7b35f0373f12c2e51 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Sun, 18 Nov 2018 16:55:51 +0100 Subject: treatment n<->1: add documents --- archaeological_finds/models_treatments.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index 4e2eb0faf..c7b888c0d 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -317,6 +317,7 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, "quality", "precise_dating"] current_datings = [] current_base_finds = [] + current_documents = [] for upstream_item in upstream_items: # datings are not explicitly part of the resulting_find # need to reassociate with no duplicate @@ -343,6 +344,13 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, current_base_finds.append(base_find.pk) new_find.base_finds.add(base_find) + # documents + for document in upstream_item.documents.all(): + if document.pk in current_documents: + continue + current_documents.append(document.pk) + new_find.documents.add(document) + upstream_item.downstream_treatment = self upstream_item.history_modifier = self.history_modifier upstream_item.save() -- cgit v1.2.3 From a543baecc5ba8ad42ca68b35a4abcf86a8acd33a Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 19 Nov 2018 10:13:39 +0100 Subject: Bootstrap compilation --- ishtar_common/static/bootstrap/bootstrap.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ishtar_common/static/bootstrap/bootstrap.css b/ishtar_common/static/bootstrap/bootstrap.css index 377461d9c..fe9026694 100644 --- a/ishtar_common/static/bootstrap/bootstrap.css +++ b/ishtar_common/static/bootstrap/bootstrap.css @@ -3,4 +3,4 @@ * Copyright 2011-2018 The Bootstrap Authors * Copyright 2011-2018 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */:root{--blue: #007bff;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #dc3545;--orange: #fd7e14;--yellow: #ffc107;--green: #28a745;--teal: #20c997;--cyan: #17a2b8;--white: #fff;--gray: #6c757d;--gray-dark: #343a40;--primary: #007bff;--secondary: #6c757d;--success: #28a745;--info: #17a2b8;--warning: #ffc107;--danger: #dc3545;--light: #f8f9fa;--dark: #343a40;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#6f3b93;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#542c6f;text-decoration:none}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:monospace, monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm,.col-sm-auto,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md,.col-md-auto,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg,.col-lg-auto,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:none}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:none}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:none}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:none}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:none}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:rgba(0,0,0,0)}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>th,.table-success>td{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark th,.table-dark td,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.form-control-plaintext.form-control-lg,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}select.form-control-sm:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control-lg:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled ~ .form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,0.8);border-radius:.2rem}.was-validated .form-control:valid,.form-control.is-valid,.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745}.was-validated .form-control:valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .form-control:valid ~ .valid-feedback,.was-validated .form-control:valid ~ .valid-tooltip,.form-control.is-valid ~ .valid-feedback,.form-control.is-valid ~ .valid-tooltip,.was-validated .custom-select:valid ~ .valid-feedback,.was-validated .custom-select:valid ~ .valid-tooltip,.custom-select.is-valid ~ .valid-feedback,.custom-select.is-valid ~ .valid-tooltip{display:block}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#28a745}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#28a745}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{background-color:#71dd8a}.was-validated .custom-control-input:valid ~ .valid-feedback,.was-validated .custom-control-input:valid ~ .valid-tooltip,.custom-control-input.is-valid ~ .valid-feedback,.custom-control-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{background-color:#34ce57}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid ~ .custom-file-label::before,.custom-file-input.is-valid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:valid ~ .valid-feedback,.was-validated .custom-file-input:valid ~ .valid-tooltip,.custom-file-input.is-valid ~ .valid-feedback,.custom-file-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,0.8);border-radius:.2rem}.was-validated .form-control:invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .form-control:invalid ~ .invalid-feedback,.was-validated .form-control:invalid ~ .invalid-tooltip,.form-control.is-invalid ~ .invalid-feedback,.form-control.is-invalid ~ .invalid-tooltip,.was-validated .custom-select:invalid ~ .invalid-feedback,.was-validated .custom-select:invalid ~ .invalid-tooltip,.custom-select.is-invalid ~ .invalid-feedback,.custom-select.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#dc3545}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{background-color:#efa2a9}.was-validated .custom-control-input:invalid ~ .invalid-feedback,.was-validated .custom-control-input:invalid ~ .invalid-tooltip,.custom-control-input.is-invalid ~ .invalid-feedback,.custom-control-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{background-color:#e4606d}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid ~ .custom-file-label::before,.custom-file-input.is-invalid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:invalid ~ .invalid-feedback,.was-validated .custom-file-input:invalid ~ .invalid-tooltip,.custom-file-input.is-invalid ~ .invalid-feedback,.custom-file-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled):active,.btn:not(:disabled):not(.disabled).active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary:focus,.btn-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-link{font-weight:400;color:#6f3b93;background-color:transparent}.btn-link:hover{color:#542c6f;text-decoration:none;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:none;border-color:transparent;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;transition:opacity 0.15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height 0.35s ease}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:0 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file:focus{z-index:3}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,0.25)}.custom-control-input:active ~ .custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled ~ .custom-control-label{color:#6c757d}.custom-control-input:disabled ~ .custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(128,189,255,0.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.custom-file-input:focus ~ .custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en) ~ .custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,0.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0,0,0,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#6f3b93;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#542c6f;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:hover,.badge-info[href]:focus{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:hover,.badge-light[href]:focus{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width 0.6s ease}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:hover,.list-group-item:focus{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.close:focus{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -25%)}.modal.show .modal-dialog{transform:translate(0, 0)}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:.5rem}.bs-popover-top .arrow,.bs-popover-auto[x-placement^="top"] .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{border-width:.5rem .5rem 0}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before{bottom:0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:.5rem}.bs-popover-right .arrow,.bs-popover-auto[x-placement^="right"] .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{border-width:.5rem .5rem .5rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before{left:0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{left:1px;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:.5rem}.bs-popover-bottom .arrow,.bs-popover-auto[x-placement^="bottom"] .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{border-width:0 .5rem .5rem .5rem}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before{top:0;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:.5rem}.bs-popover-left .arrow,.bs-popover-auto[x-placement^="left"] .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{border-width:.5rem 0 .5rem .5rem}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before{right:0;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;align-items:center;width:100%;transition:transform 0.6s ease;backface-visibility:hidden;perspective:1000px}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translate3d(0, 0, 0)}}.carousel-item-next,.active.carousel-item-right{transform:translateX(100%)}@supports (transform-style: preserve-3d){.carousel-item-next,.active.carousel-item-right{transform:translate3d(100%, 0, 0)}}.carousel-item-prev,.active.carousel-item-left{transform:translateX(-100%)}@supports (transform-style: preserve-3d){.carousel-item-prev,.active.carousel-item-left{transform:translate3d(-100%, 0, 0)}}.carousel-fade .carousel-item{opacity:0;transition-duration:.6s;transition-property:opacity}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{opacity:0}.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translate3d(0, 0, 0)}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,0.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-primary{background-color:#007bff !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#0062cc !important}.bg-secondary{background-color:#6c757d !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62 !important}.bg-success{background-color:#28a745 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34 !important}.bg-info{background-color:#17a2b8 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#ffc107 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00 !important}.bg-danger{background-color:#dc3545 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130 !important}.bg-light{background-color:#f8f9fa !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#343a40 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#007bff !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#28a745 !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#343a40 !important}.border-white{border-color:#fff !important}.rounded{border-radius:.25rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-right{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-left{border-top-left-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-circle{border-radius:50% !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.85714%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-fill{flex:1 1 auto !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-sm-fill{flex:1 1 auto !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-md-fill{flex:1 1 auto !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-lg-fill{flex:1 1 auto !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-xl-fill{flex:1 1 auto !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media (min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;clip-path:none}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:.25rem !important}.mt-sm-1,.my-sm-1{margin-top:.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:.25rem !important}.m-sm-2{margin:.5rem !important}.mt-sm-2,.my-sm-2{margin-top:.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:.25rem !important}.pt-sm-1,.py-sm-1{padding-top:.25rem !important}.pr-sm-1,.px-sm-1{padding-right:.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem !important}.pl-sm-1,.px-sm-1{padding-left:.25rem !important}.p-sm-2{padding:.5rem !important}.pt-sm-2,.py-sm-2{padding-top:.5rem !important}.pr-sm-2,.px-sm-2{padding-right:.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem !important}.pl-sm-2,.px-sm-2{padding-left:.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:.25rem !important}.mt-md-1,.my-md-1{margin-top:.25rem !important}.mr-md-1,.mx-md-1{margin-right:.25rem !important}.mb-md-1,.my-md-1{margin-bottom:.25rem !important}.ml-md-1,.mx-md-1{margin-left:.25rem !important}.m-md-2{margin:.5rem !important}.mt-md-2,.my-md-2{margin-top:.5rem !important}.mr-md-2,.mx-md-2{margin-right:.5rem !important}.mb-md-2,.my-md-2{margin-bottom:.5rem !important}.ml-md-2,.mx-md-2{margin-left:.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:.25rem !important}.pt-md-1,.py-md-1{padding-top:.25rem !important}.pr-md-1,.px-md-1{padding-right:.25rem !important}.pb-md-1,.py-md-1{padding-bottom:.25rem !important}.pl-md-1,.px-md-1{padding-left:.25rem !important}.p-md-2{padding:.5rem !important}.pt-md-2,.py-md-2{padding-top:.5rem !important}.pr-md-2,.px-md-2{padding-right:.5rem !important}.pb-md-2,.py-md-2{padding-bottom:.5rem !important}.pl-md-2,.px-md-2{padding-left:.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:.25rem !important}.mt-lg-1,.my-lg-1{margin-top:.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:.25rem !important}.m-lg-2{margin:.5rem !important}.mt-lg-2,.my-lg-2{margin-top:.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:.25rem !important}.pt-lg-1,.py-lg-1{padding-top:.25rem !important}.pr-lg-1,.px-lg-1{padding-right:.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem !important}.pl-lg-1,.px-lg-1{padding-left:.25rem !important}.p-lg-2{padding:.5rem !important}.pt-lg-2,.py-lg-2{padding-top:.5rem !important}.pr-lg-2,.px-lg-2{padding-right:.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem !important}.pl-lg-2,.px-lg-2{padding-left:.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:.25rem !important}.mt-xl-1,.my-xl-1{margin-top:.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:.25rem !important}.m-xl-2{margin:.5rem !important}.mt-xl-2,.my-xl-2{margin-top:.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:.25rem !important}.pt-xl-1,.py-xl-1{padding-top:.25rem !important}.pr-xl-1,.px-xl-1{padding-right:.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem !important}.pl-xl-1,.px-xl-1{padding-left:.25rem !important}.p-xl-2{padding:.5rem !important}.pt-xl-2,.py-xl-2{padding-top:.5rem !important}.pr-xl-2,.px-xl-2{padding-right:.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem !important}.pl-xl-2,.px-xl-2{padding-left:.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-justify{text-align:justify !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media (min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#007bff !important}a.text-primary:hover,a.text-primary:focus{color:#0062cc !important}.text-secondary{color:#6c757d !important}a.text-secondary:hover,a.text-secondary:focus{color:#545b62 !important}.text-success{color:#28a745 !important}a.text-success:hover,a.text-success:focus{color:#1e7e34 !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#117a8b !important}.text-warning{color:#ffc107 !important}a.text-warning:hover,a.text-warning:focus{color:#d39e00 !important}.text-danger{color:#dc3545 !important}a.text-danger:hover,a.text-danger:focus{color:#bd2130 !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#dae0e5 !important}.text-dark{color:#343a40 !important}a.text-dark:hover,a.text-dark:focus{color:#1d2124 !important}.text-muted{color:#6c757d !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}.switch{font-size:1rem;position:relative}.switch input{position:absolute;height:1px;width:1px;background:none;border:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;padding:0}.switch input+label{position:relative;min-width:calc(calc(2.375rem * .8) * 2);border-radius:calc(2.375rem * .8);height:calc(2.375rem * .8);line-height:calc(2.375rem * .8);display:inline-block;cursor:pointer;outline:none;user-select:none;vertical-align:middle;text-indent:calc(calc(calc(2.375rem * .8) * 2) + .5rem)}.switch input+label::before,.switch input+label::after{content:'';position:absolute;top:0;left:0;width:calc(calc(2.375rem * .8) * 2);bottom:0;display:block}.switch input+label::before{right:0;background-color:#dee2e6;border-radius:calc(2.375rem * .8);transition:0.2s all}.switch input+label::after{top:2px;left:2px;width:calc(calc(2.375rem * .8) - calc(2px * 2));height:calc(calc(2.375rem * .8) - calc(2px * 2));border-radius:50%;background-color:#fff;transition:0.2s all}.switch input:checked+label::before{background-color:#08d}.switch input:checked+label::after{margin-left:calc(2.375rem * .8)}.switch input:focus+label::before{outline:none;box-shadow:0 0 0 .2rem rgba(0,136,221,0.25)}.switch input:disabled+label{color:#868e96;cursor:not-allowed}.switch input:disabled+label::before{background-color:#e9ecef}.switch.switch-sm{font-size:.875rem}.switch.switch-sm input+label{min-width:calc(calc(1.9375rem * .8) * 2);height:calc(1.9375rem * .8);line-height:calc(1.9375rem * .8);text-indent:calc(calc(calc(1.9375rem * .8) * 2) + .5rem)}.switch.switch-sm input+label::before{width:calc(calc(1.9375rem * .8) * 2)}.switch.switch-sm input+label::after{width:calc(calc(1.9375rem * .8) - calc(2px * 2));height:calc(calc(1.9375rem * .8) - calc(2px * 2))}.switch.switch-sm input:checked+label::after{margin-left:calc(1.9375rem * .8)}.switch.switch-lg{font-size:1.25rem}.switch.switch-lg input+label{min-width:calc(calc(3rem * .8) * 2);height:calc(3rem * .8);line-height:calc(3rem * .8);text-indent:calc(calc(calc(3rem * .8) * 2) + .5rem)}.switch.switch-lg input+label::before{width:calc(calc(3rem * .8) * 2)}.switch.switch-lg input+label::after{width:calc(calc(3rem * .8) - calc(2px * 2));height:calc(calc(3rem * .8) - calc(2px * 2))}.switch.switch-lg input:checked+label::after{margin-left:calc(3rem * .8)}.switch+.switch{margin-left:1rem}.switch.danger input:checked+label::before{background-color:#dc3545}.switch.danger input:focus+label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}html{font-size:0.8em;background-color:#f8f9fa}body{background-color:transparent;position:relative}label{margin-bottom:.2rem;min-height:1.5rem}.form-group span label{display:inline-block}.form-group label{display:block}.form-group li label{display:inline-block}.form-group li .form-control{width:auto}.form-group li input[type="radio"].form-control,.form-group li input[type="checkbox"].form-control{display:inline}pre{white-space:pre-wrap}.raw-description{white-space:pre-line}.form-control.small-input,.input-group>.form-control.small-input{width:110px;flex:none}.input-group>input[type=checkbox]{margin:0.5em 1em}.form-row.odd{background-color:#e9ecef}.form-row-modal{padding:0.5rem 2rem}.field-tip{position:absolute;right:10px;top:5px;opacity:0.7}.form-group .select2-container--default .select2-selection--multiple{border:1px solid #ced4da}.page-link.imported-page{color:#aa8fda}.page-link.imported-page.current-page,.page-link.current-page{color:black;font-weight:bold}#modal-advanced-search .modal-header{flex-wrap:wrap;padding-bottom:0}#modal-advanced-search .modal-header .alert-secondary{background-color:#fff}.modal-header,.modal-footer{background-color:#e9ecef}.modal-body.body-scroll{max-height:calc(100vh - 200px);overflow-y:auto}.modal-dialog.full{width:98%;height:98%;max-width:none;padding:1%}.modal-dialog.full .display.dataTable{width:100% !important}.modal-dialog.full .modal-content{height:auto;min-height:100%;border-radius:0}.table{background-color:white}.input-progress.form-control:focus,.input-progress{background-color:#dee2e6}.card-header,.input-progress,.table-striped tbody tr:nth-of-type(2n+1),.dt-bootstrap4 table.dataTable.stripe tbody tr.odd,.dt-bootstrap4 table.dataTable.display tbody tr.odd{background-color:#e9ecef}.dropdown-item:hover,.dropdown-item:focus,.dt-bootstrap4 table.dataTable.hover tbody tr:hover,.dt-bootstrap4 table.dataTable.display tbody tr:hover{background-color:#f6f6f6;background-color:#dee2e6}table.dataTable{font-size:0.8em}.table-modal-lg table.dataTable{font-size:1em}div.dt-buttons{float:right}.dt-button{color:#fff;background-color:#007bff;border-color:#007bff;display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;border:1px solid transparent;color:#fff;background-color:#6c757d;border-color:#6c757d;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.dt-button:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.dt-button:focus,.dt-button.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.disabled,.dt-button:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.dt-button:not(:disabled):not(.disabled):active,.dt-button:not(:disabled):not(.disabled).active,.show>.dt-button.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.dt-button:not(:disabled):not(.disabled):active:focus,.dt-button:not(:disabled):not(.disabled).active:focus,.show>.dt-button.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.dt-button.btn-success:focus,.dt-button.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.btn-success.disabled,.dt-button.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:not(:disabled):not(.disabled):active,.dt-button.btn-success:not(:disabled):not(.disabled).active,.show>.dt-button.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.dt-button.btn-success:not(:disabled):not(.disabled):active:focus,.dt-button.btn-success:not(:disabled):not(.disabled).active:focus,.show>.dt-button.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.disabled{background-color:#f8f9fa;border-color:#f8f9fa;color:#adb5bd;cursor:not-allowed}.small-button{padding:0.1em 0.2em}.previous-value{margin:0.4em 0;display:block}h3,.h3{font-size:1.5rem}h4,.h4{font-size:1.1rem}textarea{height:90px}.sheet h4{color:#6c757d}#bookmark-list .input-link{width:100%;padding-right:5px}#window-fixed-menu{background-color:#e9ecef;position:fixed;right:0;margin-top:100px;z-index:50;width:200px}#window-fixed-menu-list li{padding-bottom:0.5em}#window-fixed-menu-list li a.nav-link{background-color:white}#window-fixed-menu-list li a.nav-link.active{background-color:#007bff}#window-menu-title{font-size:1.3em}#window-menu-control{font-size:0.6em;padding-top:0.2em}#window-fixed-menu.hidden{transform:rotate(270deg);transform-origin:right bottom 0}#window-fixed-menu.hidden i.fa-times{transform:rotate(45deg);transform-origin:10px 10px 0;padding-left:0.1em}.form h4,.form h3,.collapse-form .card-header,#window h3{background-color:#ced4da}.collapse-form .card,.collapse-form .card-header{border-radius:0;border:0 solid}.collapse-form .card-header{padding:0;text-align:center}.collapse-form .card-header h4{margin-bottom:0}.collapse-form .card-header .btn.btn-link{color:#212529;width:100%}.collapse-form .card-body{border:1px solid #ced4da}.collapse-form .fa-expand,.collapse-form .collapsed .fa-compress{display:none}.collapse-form .collapsed .fa-expand,.collapse-form .fa-compress{display:inline-block}.clean-table h4,.form h4,.form h3,.collapse-form .card-header h4 .btn,.sheet h4,.sheet h3,.sheet h2{text-align:center;text-shadow:2px 2px 2px rgba(150,150,150,0.7)}.sheet .subsection{background-color:#e9ecef}.sheet .row.toolbar{padding:0.5em 0.75em}.sheet .row{padding:0 0.75em;margin:0}.clean-table h4{margin-top:1em}.container{margin-top:1em;margin-bottom:8em}.bg-dark{background-color:#432776 !important}.navbar{padding:0 0.5rem}.navbar-dark .navbar-nav.action-menu .nav-link{color:#ffe484;border:1px solid #ffe484;border-radius:4px;margin:0.2em;padding:0.3em 0.6em}.navbar-dark .navbar-nav.action-menu .d-none .nav-link{border:0px solid transparent}.navbar-dark .navbar-nav.action-menu .d-none .nav-link:hover{background-color:transparent;color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link:hover{background-color:#ffe484;color:#343a40}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle::after{color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle:hover::after{color:#343a40}#context-menu,#reminder,.confirm-message,div#validation-bar{background-color:#6f42c1;color:rgba(255,255,255,0.8)}#reminder{padding:0.6em 1em 0.1em 1em}#alert-list{padding:0.6em 0}#alert-list a{font-size:1.1rem}.confirm-message{text-align:center;margin:0;padding:0.5rem;font-weight:bold}.is-invalid input{border-color:#f99}.errorlist{color:#900}#shortcut-menu{width:700px;padding:1em}#context-menu a.nav-link{color:rgba(255,255,255,0.8);padding:0.8rem 0.5rem 0.7rem 0.5rem}#context-menu .breadcrumb{margin-bottom:0;background-color:transparent}#current_items{width:100%}div#foot{background-color:#432776;color:rgba(255,255,255,0.5)}div#foot a{color:#ddd}div#foot a:hover{color:#fff}.breadcrumb button{border:0 transparent;background-color:transparent}.breadcrumb a:hover{text-decoration:none}.breadcrumb button:hover{cursor:pointer;color:#0062cc}.input-group.date input{border:1px solid #dee2e6;border-radius:.25rem;padding:.375rem .75rem;font-size:1rem;line-height:1.5}.input-group.date .input-group-text:hover{cursor:pointer}.input-group>ul{padding:0.5em;border:1px solid #dee2e6;border-radius:.25rem;margin:0;list-style:none}ul.compact{padding:0;margin:0}.help-text{max-height:250px;overflow:auto}.input-link{color:#6c757d}.input-link.disabled{color:#adb5bd}.input-link:hover{color:#343a40;cursor:pointer}.input-link.disabled:hover{color:#adb5bd;cursor:not-allowed}.input-sep{background-color:#fff;padding:0.3rem}.search_button{display:none}.lightgallery-captions{display:none}.lightgallery-subimage{display:inline-block;width:80px;padding:0.2em}.lightgallery-subimage img{width:100%}.lg .lg-sub-html{text-align:left}.lg .lg-sub-html .close{color:#fff}.lg .lg-sub-html .close:hover{opacity:0.9}#basket-manage #foot_pk{display:none}#basket-manage #grid_pk_meta_wrapper{width:50%;float:left;padding-bottom:80px}#basket-add-button{width:8%;float:left;margin:20vh 1% 0 1%}#basket-content-wrapper{width:40%;float:left}#basket-content{text-align:left;overflow:auto;max-height:60vh}.ui-widget-content{border:1px solid #dee2e6;background-color:#fff}.ui-menu-item{padding:0.2em 0.4em;border:1px solid #fff}.ui-menu-item:hover{color:#6f3b93;border:1px solid #6f3b93;cursor:pointer}.ui-autocomplete{font-size:0.7em;z-index:10000 !important;width:350px;border:5px solid #dee2e6;outline:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px} + */:root{--blue: #007bff;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #dc3545;--orange: #fd7e14;--yellow: #ffc107;--green: #28a745;--teal: #20c997;--cyan: #17a2b8;--white: #fff;--gray: #6c757d;--gray-dark: #343a40;--primary: #007bff;--secondary: #6c757d;--success: #28a745;--info: #17a2b8;--warning: #ffc107;--danger: #dc3545;--light: #f8f9fa;--dark: #343a40;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#6f3b93;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#542c6f;text-decoration:none}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:monospace, monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm,.col-sm-auto,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md,.col-md-auto,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg,.col-lg-auto,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:none}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:none}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:none}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:none}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:none}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:rgba(0,0,0,0)}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>th,.table-success>td{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark th,.table-dark td,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.form-control-plaintext.form-control-lg,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}select.form-control-sm:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control-lg:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled ~ .form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,0.8);border-radius:.2rem}.was-validated .form-control:valid,.form-control.is-valid,.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745}.was-validated .form-control:valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .form-control:valid ~ .valid-feedback,.was-validated .form-control:valid ~ .valid-tooltip,.form-control.is-valid ~ .valid-feedback,.form-control.is-valid ~ .valid-tooltip,.was-validated .custom-select:valid ~ .valid-feedback,.was-validated .custom-select:valid ~ .valid-tooltip,.custom-select.is-valid ~ .valid-feedback,.custom-select.is-valid ~ .valid-tooltip{display:block}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#28a745}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#28a745}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{background-color:#71dd8a}.was-validated .custom-control-input:valid ~ .valid-feedback,.was-validated .custom-control-input:valid ~ .valid-tooltip,.custom-control-input.is-valid ~ .valid-feedback,.custom-control-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{background-color:#34ce57}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid ~ .custom-file-label::before,.custom-file-input.is-valid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:valid ~ .valid-feedback,.was-validated .custom-file-input:valid ~ .valid-tooltip,.custom-file-input.is-valid ~ .valid-feedback,.custom-file-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,0.8);border-radius:.2rem}.was-validated .form-control:invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .form-control:invalid ~ .invalid-feedback,.was-validated .form-control:invalid ~ .invalid-tooltip,.form-control.is-invalid ~ .invalid-feedback,.form-control.is-invalid ~ .invalid-tooltip,.was-validated .custom-select:invalid ~ .invalid-feedback,.was-validated .custom-select:invalid ~ .invalid-tooltip,.custom-select.is-invalid ~ .invalid-feedback,.custom-select.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#dc3545}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{background-color:#efa2a9}.was-validated .custom-control-input:invalid ~ .invalid-feedback,.was-validated .custom-control-input:invalid ~ .invalid-tooltip,.custom-control-input.is-invalid ~ .invalid-feedback,.custom-control-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{background-color:#e4606d}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid ~ .custom-file-label::before,.custom-file-input.is-invalid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:invalid ~ .invalid-feedback,.was-validated .custom-file-input:invalid ~ .invalid-tooltip,.custom-file-input.is-invalid ~ .invalid-feedback,.custom-file-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled):active,.btn:not(:disabled):not(.disabled).active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary:focus,.btn-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-link{font-weight:400;color:#6f3b93;background-color:transparent}.btn-link:hover{color:#542c6f;text-decoration:none;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:none;border-color:transparent;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;transition:opacity 0.15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height 0.35s ease}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:0 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file:focus{z-index:3}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,0.25)}.custom-control-input:active ~ .custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled ~ .custom-control-label{color:#6c757d}.custom-control-input:disabled ~ .custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(128,189,255,0.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.custom-file-input:focus ~ .custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en) ~ .custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,0.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0,0,0,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#6f3b93;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#542c6f;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:hover,.badge-info[href]:focus{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:hover,.badge-light[href]:focus{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width 0.6s ease}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:hover,.list-group-item:focus{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.close:focus{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -25%)}.modal.show .modal-dialog{transform:translate(0, 0)}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:.5rem}.bs-popover-top .arrow,.bs-popover-auto[x-placement^="top"] .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{border-width:.5rem .5rem 0}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before{bottom:0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:.5rem}.bs-popover-right .arrow,.bs-popover-auto[x-placement^="right"] .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{border-width:.5rem .5rem .5rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before{left:0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{left:1px;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:.5rem}.bs-popover-bottom .arrow,.bs-popover-auto[x-placement^="bottom"] .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{border-width:0 .5rem .5rem .5rem}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before{top:0;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:.5rem}.bs-popover-left .arrow,.bs-popover-auto[x-placement^="left"] .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{border-width:.5rem 0 .5rem .5rem}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before{right:0;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;align-items:center;width:100%;transition:transform 0.6s ease;backface-visibility:hidden;perspective:1000px}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translate3d(0, 0, 0)}}.carousel-item-next,.active.carousel-item-right{transform:translateX(100%)}@supports (transform-style: preserve-3d){.carousel-item-next,.active.carousel-item-right{transform:translate3d(100%, 0, 0)}}.carousel-item-prev,.active.carousel-item-left{transform:translateX(-100%)}@supports (transform-style: preserve-3d){.carousel-item-prev,.active.carousel-item-left{transform:translate3d(-100%, 0, 0)}}.carousel-fade .carousel-item{opacity:0;transition-duration:.6s;transition-property:opacity}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{opacity:0}.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translate3d(0, 0, 0)}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,0.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-primary{background-color:#007bff !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#0062cc !important}.bg-secondary{background-color:#6c757d !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62 !important}.bg-success{background-color:#28a745 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34 !important}.bg-info{background-color:#17a2b8 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#ffc107 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00 !important}.bg-danger{background-color:#dc3545 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130 !important}.bg-light{background-color:#f8f9fa !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#343a40 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#007bff !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#28a745 !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#343a40 !important}.border-white{border-color:#fff !important}.rounded{border-radius:.25rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-right{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-left{border-top-left-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-circle{border-radius:50% !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.85714%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-fill{flex:1 1 auto !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-sm-fill{flex:1 1 auto !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-md-fill{flex:1 1 auto !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-lg-fill{flex:1 1 auto !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-xl-fill{flex:1 1 auto !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media (min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;clip-path:none}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:.25rem !important}.mt-sm-1,.my-sm-1{margin-top:.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:.25rem !important}.m-sm-2{margin:.5rem !important}.mt-sm-2,.my-sm-2{margin-top:.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:.25rem !important}.pt-sm-1,.py-sm-1{padding-top:.25rem !important}.pr-sm-1,.px-sm-1{padding-right:.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem !important}.pl-sm-1,.px-sm-1{padding-left:.25rem !important}.p-sm-2{padding:.5rem !important}.pt-sm-2,.py-sm-2{padding-top:.5rem !important}.pr-sm-2,.px-sm-2{padding-right:.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem !important}.pl-sm-2,.px-sm-2{padding-left:.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:.25rem !important}.mt-md-1,.my-md-1{margin-top:.25rem !important}.mr-md-1,.mx-md-1{margin-right:.25rem !important}.mb-md-1,.my-md-1{margin-bottom:.25rem !important}.ml-md-1,.mx-md-1{margin-left:.25rem !important}.m-md-2{margin:.5rem !important}.mt-md-2,.my-md-2{margin-top:.5rem !important}.mr-md-2,.mx-md-2{margin-right:.5rem !important}.mb-md-2,.my-md-2{margin-bottom:.5rem !important}.ml-md-2,.mx-md-2{margin-left:.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:.25rem !important}.pt-md-1,.py-md-1{padding-top:.25rem !important}.pr-md-1,.px-md-1{padding-right:.25rem !important}.pb-md-1,.py-md-1{padding-bottom:.25rem !important}.pl-md-1,.px-md-1{padding-left:.25rem !important}.p-md-2{padding:.5rem !important}.pt-md-2,.py-md-2{padding-top:.5rem !important}.pr-md-2,.px-md-2{padding-right:.5rem !important}.pb-md-2,.py-md-2{padding-bottom:.5rem !important}.pl-md-2,.px-md-2{padding-left:.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:.25rem !important}.mt-lg-1,.my-lg-1{margin-top:.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:.25rem !important}.m-lg-2{margin:.5rem !important}.mt-lg-2,.my-lg-2{margin-top:.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:.25rem !important}.pt-lg-1,.py-lg-1{padding-top:.25rem !important}.pr-lg-1,.px-lg-1{padding-right:.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem !important}.pl-lg-1,.px-lg-1{padding-left:.25rem !important}.p-lg-2{padding:.5rem !important}.pt-lg-2,.py-lg-2{padding-top:.5rem !important}.pr-lg-2,.px-lg-2{padding-right:.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem !important}.pl-lg-2,.px-lg-2{padding-left:.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:.25rem !important}.mt-xl-1,.my-xl-1{margin-top:.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:.25rem !important}.m-xl-2{margin:.5rem !important}.mt-xl-2,.my-xl-2{margin-top:.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:.25rem !important}.pt-xl-1,.py-xl-1{padding-top:.25rem !important}.pr-xl-1,.px-xl-1{padding-right:.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem !important}.pl-xl-1,.px-xl-1{padding-left:.25rem !important}.p-xl-2{padding:.5rem !important}.pt-xl-2,.py-xl-2{padding-top:.5rem !important}.pr-xl-2,.px-xl-2{padding-right:.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem !important}.pl-xl-2,.px-xl-2{padding-left:.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-justify{text-align:justify !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media (min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#007bff !important}a.text-primary:hover,a.text-primary:focus{color:#0062cc !important}.text-secondary{color:#6c757d !important}a.text-secondary:hover,a.text-secondary:focus{color:#545b62 !important}.text-success{color:#28a745 !important}a.text-success:hover,a.text-success:focus{color:#1e7e34 !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#117a8b !important}.text-warning{color:#ffc107 !important}a.text-warning:hover,a.text-warning:focus{color:#d39e00 !important}.text-danger{color:#dc3545 !important}a.text-danger:hover,a.text-danger:focus{color:#bd2130 !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#dae0e5 !important}.text-dark{color:#343a40 !important}a.text-dark:hover,a.text-dark:focus{color:#1d2124 !important}.text-muted{color:#6c757d !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}.switch{font-size:1rem;position:relative}.switch input{position:absolute;height:1px;width:1px;background:none;border:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;padding:0}.switch input+label{position:relative;min-width:calc(calc(2.375rem * .8) * 2);border-radius:calc(2.375rem * .8);height:calc(2.375rem * .8);line-height:calc(2.375rem * .8);display:inline-block;cursor:pointer;outline:none;user-select:none;vertical-align:middle;text-indent:calc(calc(calc(2.375rem * .8) * 2) + .5rem)}.switch input+label::before,.switch input+label::after{content:'';position:absolute;top:0;left:0;width:calc(calc(2.375rem * .8) * 2);bottom:0;display:block}.switch input+label::before{right:0;background-color:#dee2e6;border-radius:calc(2.375rem * .8);transition:0.2s all}.switch input+label::after{top:2px;left:2px;width:calc(calc(2.375rem * .8) - calc(2px * 2));height:calc(calc(2.375rem * .8) - calc(2px * 2));border-radius:50%;background-color:#fff;transition:0.2s all}.switch input:checked+label::before{background-color:#08d}.switch input:checked+label::after{margin-left:calc(2.375rem * .8)}.switch input:focus+label::before{outline:none;box-shadow:0 0 0 .2rem rgba(0,136,221,0.25)}.switch input:disabled+label{color:#868e96;cursor:not-allowed}.switch input:disabled+label::before{background-color:#e9ecef}.switch.switch-sm{font-size:.875rem}.switch.switch-sm input+label{min-width:calc(calc(1.9375rem * .8) * 2);height:calc(1.9375rem * .8);line-height:calc(1.9375rem * .8);text-indent:calc(calc(calc(1.9375rem * .8) * 2) + .5rem)}.switch.switch-sm input+label::before{width:calc(calc(1.9375rem * .8) * 2)}.switch.switch-sm input+label::after{width:calc(calc(1.9375rem * .8) - calc(2px * 2));height:calc(calc(1.9375rem * .8) - calc(2px * 2))}.switch.switch-sm input:checked+label::after{margin-left:calc(1.9375rem * .8)}.switch.switch-lg{font-size:1.25rem}.switch.switch-lg input+label{min-width:calc(calc(3rem * .8) * 2);height:calc(3rem * .8);line-height:calc(3rem * .8);text-indent:calc(calc(calc(3rem * .8) * 2) + .5rem)}.switch.switch-lg input+label::before{width:calc(calc(3rem * .8) * 2)}.switch.switch-lg input+label::after{width:calc(calc(3rem * .8) - calc(2px * 2));height:calc(calc(3rem * .8) - calc(2px * 2))}.switch.switch-lg input:checked+label::after{margin-left:calc(3rem * .8)}.switch+.switch{margin-left:1rem}.switch.danger input:checked+label::before{background-color:#dc3545}.switch.danger input:focus+label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}html{font-size:0.8em;background-color:#f8f9fa}body{background-color:transparent;position:relative}label{margin-bottom:.2rem;min-height:1.5rem}.form-group span label{display:inline-block}.form-group label{display:block}.form-group li label{display:inline-block}.form-group li .form-control{width:auto}.form-group li input[type="radio"].form-control,.form-group li input[type="checkbox"].form-control{display:inline}pre{white-space:pre-wrap}.raw-description{white-space:pre-line}.form-control.small-input,.input-group>.form-control.small-input{width:110px;flex:none}.input-group>input[type=checkbox]{margin:0.5em 1em}.form-row.odd{background-color:#e9ecef}.form-row-modal{padding:0.5rem 2rem}.field-tip{position:absolute;right:10px;top:5px;opacity:0.7}.form-group .select2-container--default .select2-selection--multiple{border:1px solid #ced4da}.page-link.imported-page{color:#aa8fda}.page-link.imported-page.current-page,.page-link.current-page{color:black;font-weight:bold}#modal-advanced-search .modal-header{flex-wrap:wrap;padding-bottom:0}#modal-advanced-search .modal-header .alert-secondary{background-color:#fff}.modal-header,.modal-footer{background-color:#e9ecef}.modal-body.body-scroll{max-height:calc(100vh - 200px);overflow-y:auto}.modal-dialog.full{width:98%;height:98%;max-width:none;padding:1%}.modal-dialog.full .display.dataTable{width:100% !important}.modal-dialog.full .modal-content{height:auto;min-height:100%;border-radius:0}.table{background-color:white}.tab-content{padding-top:1em}.input-progress.form-control:focus,.input-progress{background-color:#dee2e6}.card-header,.input-progress,.table-striped tbody tr:nth-of-type(2n+1),.dt-bootstrap4 table.dataTable.stripe tbody tr.odd,.dt-bootstrap4 table.dataTable.display tbody tr.odd{background-color:#e9ecef}.dropdown-item:hover,.dropdown-item:focus,.dt-bootstrap4 table.dataTable.hover tbody tr:hover,.dt-bootstrap4 table.dataTable.display tbody tr:hover{background-color:#f6f6f6;background-color:#dee2e6}table.dataTable{font-size:0.8em}.table-modal-lg table.dataTable{font-size:1em}div.dt-buttons{float:right}.dt-button{color:#fff;background-color:#007bff;border-color:#007bff;display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;border:1px solid transparent;color:#fff;background-color:#6c757d;border-color:#6c757d;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.dt-button:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.dt-button:focus,.dt-button.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.disabled,.dt-button:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.dt-button:not(:disabled):not(.disabled):active,.dt-button:not(:disabled):not(.disabled).active,.show>.dt-button.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.dt-button:not(:disabled):not(.disabled):active:focus,.dt-button:not(:disabled):not(.disabled).active:focus,.show>.dt-button.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.dt-button.btn-success:focus,.dt-button.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.btn-success.disabled,.dt-button.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:not(:disabled):not(.disabled):active,.dt-button.btn-success:not(:disabled):not(.disabled).active,.show>.dt-button.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.dt-button.btn-success:not(:disabled):not(.disabled):active:focus,.dt-button.btn-success:not(:disabled):not(.disabled).active:focus,.show>.dt-button.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.disabled{background-color:#f8f9fa;border-color:#f8f9fa;color:#adb5bd;cursor:not-allowed}.small-button{padding:0.1em 0.2em}.previous-value{margin:0.4em 0;display:block}h3,.h3{font-size:1.5rem}h4,.h4{font-size:1.1rem}textarea{height:90px}.sheet h4{color:#6c757d}#bookmark-list .input-link{width:100%;padding-right:5px}#window-fixed-menu{background-color:#e9ecef;position:fixed;right:0;margin-top:100px;z-index:50;width:200px}#window-fixed-menu-list li{padding-bottom:0.5em}#window-fixed-menu-list li a.nav-link{background-color:white}#window-fixed-menu-list li a.nav-link.active{background-color:#007bff}#window-menu-title{font-size:1.3em}#window-menu-control{font-size:0.6em;padding-top:0.2em}#window-fixed-menu.hidden{transform:rotate(270deg);transform-origin:right bottom 0}#window-fixed-menu.hidden i.fa-times{transform:rotate(45deg);transform-origin:10px 10px 0;padding-left:0.1em}.form h4,.form h3,.collapse-form .card-header,#window h3{background-color:#ced4da}.collapse-form .card,.collapse-form .card-header{border-radius:0;border:0 solid}.collapse-form .card-header{padding:0;text-align:center}.collapse-form .card-header h4{margin-bottom:0}.collapse-form .card-header .btn.btn-link{color:#212529;width:100%}.collapse-form .card-body{border:1px solid #ced4da}.collapse-form .fa-expand,.collapse-form .collapsed .fa-compress{display:none}.collapse-form .collapsed .fa-expand,.collapse-form .fa-compress{display:inline-block}.clean-table h4,.form h4,.form h3,.collapse-form .card-header h4 .btn,.sheet h4,.sheet h3,.sheet h2{text-align:center;text-shadow:2px 2px 2px rgba(150,150,150,0.7)}.sheet .subsection{background-color:#e9ecef}.sheet .row.toolbar{padding:0.5em 0.75em}.sheet .row{padding:0 0.75em;margin:0}.clean-table h4{margin-top:1em}.container{margin-top:1em;margin-bottom:8em}.bg-dark{background-color:#432776 !important}.navbar{padding:0 0.5rem}.navbar-dark .navbar-nav.action-menu .nav-link{color:#ffe484;border:1px solid #ffe484;border-radius:4px;margin:0.2em;padding:0.3em 0.6em}.navbar-dark .navbar-nav.action-menu .d-none .nav-link{border:0px solid transparent}.navbar-dark .navbar-nav.action-menu .d-none .nav-link:hover{background-color:transparent;color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link:hover{background-color:#ffe484;color:#343a40}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle::after{color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle:hover::after{color:#343a40}#context-menu,#reminder,.confirm-message,div#validation-bar{background-color:#6f42c1;color:rgba(255,255,255,0.8)}#reminder{padding:0.6em 1em 0.1em 1em}#alert-list{padding:0.6em 0}#alert-list a{font-size:1.1rem}.confirm-message{text-align:center;margin:0;padding:0.5rem;font-weight:bold}.is-invalid input{border-color:#f99}.errorlist{color:#900}#shortcut-menu{width:700px;padding:1em}#context-menu a.nav-link{color:rgba(255,255,255,0.8);padding:0.8rem 0.5rem 0.7rem 0.5rem}#context-menu .breadcrumb{margin-bottom:0;background-color:transparent}#current_items{width:100%}div#foot{background-color:#432776;color:rgba(255,255,255,0.5)}div#foot a{color:#ddd}div#foot a:hover{color:#fff}.breadcrumb button{border:0 transparent;background-color:transparent}.breadcrumb a:hover{text-decoration:none}.breadcrumb button:hover{cursor:pointer;color:#0062cc}.input-group.date input{border:1px solid #dee2e6;border-radius:.25rem;padding:.375rem .75rem;font-size:1rem;line-height:1.5}.input-group.date .input-group-text:hover{cursor:pointer}.input-group>ul{padding:0.5em;border:1px solid #dee2e6;border-radius:.25rem;margin:0;list-style:none}ul.compact{padding:0;margin:0}.help-text{max-height:250px;overflow:auto}.input-link{color:#6c757d}.input-link.disabled{color:#adb5bd}.input-link:hover{color:#343a40;cursor:pointer}.input-link.disabled:hover{color:#adb5bd;cursor:not-allowed}.input-sep{background-color:#fff;padding:0.3rem}.search_button{display:none}.lightgallery-captions{display:none}.lightgallery-subimage{display:inline-block;width:80px;padding:0.2em}.lightgallery-subimage img{width:100%}.lg .lg-sub-html{text-align:left}.lg .lg-sub-html .close{color:#fff}.lg .lg-sub-html .close:hover{opacity:0.9}#basket-manage #foot_pk{display:none}#basket-manage #grid_pk_meta_wrapper{width:50%;float:left;padding-bottom:80px}#basket-add-button{width:8%;float:left;margin:20vh 1% 0 1%}#basket-content-wrapper{width:40%;float:left}#basket-content{text-align:left;overflow:auto;max-height:60vh}.ui-widget-content{border:1px solid #dee2e6;background-color:#fff}.ui-menu-item{padding:0.2em 0.4em;border:1px solid #fff}.ui-menu-item:hover{color:#6f3b93;border:1px solid #6f3b93;cursor:pointer}.ui-autocomplete{font-size:0.7em;z-index:10000 !important;width:350px;border:5px solid #dee2e6;outline:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px} -- cgit v1.2.3 From cdf6dea9e0c9cf099c7ee9594390a0ed6ce55107 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 19 Nov 2018 10:15:39 +0100 Subject: Sheet find: use tabs and pills --- .../templates/ishtar/sheet_basefind.html | 14 +- .../templates/ishtar/sheet_find.html | 595 ++++++++++++--------- .../templates/ishtar/blocks/sheet_json.html | 2 + scss/custom.scss | 5 + 4 files changed, 351 insertions(+), 265 deletions(-) diff --git a/archaeological_finds/templates/ishtar/sheet_basefind.html b/archaeological_finds/templates/ishtar/sheet_basefind.html index c20ca66ee..7ea16fecb 100644 --- a/archaeological_finds/templates/ishtar/sheet_basefind.html +++ b/archaeological_finds/templates/ishtar/sheet_basefind.html @@ -1,6 +1,10 @@ {% load i18n window_field from_dict link_to_window window_tables window_header humanize %} -

{{base_find.complete_id }}

-

{{base_find.short_id }}

+
+

{{ base_find.complete_id }}

+ {% if base_find.complete_id != base_find.short_id %} +

{{ base_find.short_id }}

+ {% endif %} {% if base_find.external_id %}

@@ -77,11 +81,5 @@ {% endwith %}{% endwith %} {% endif %}

- -{% if first %} - -
-{% endif %} -{% if forloop.counter0 %}
{% endif %} diff --git a/archaeological_finds/templates/ishtar/sheet_find.html b/archaeological_finds/templates/ishtar/sheet_find.html index a3ad9fca5..4d6fe568c 100644 --- a/archaeological_finds/templates/ishtar/sheet_find.html +++ b/archaeological_finds/templates/ishtar/sheet_find.html @@ -15,276 +15,357 @@
{% endif %} + -{% with nb_image=item.images.count %} -{% if nb_image %} -
-
- {% include "ishtar/blocks/window_image.html" %} -
-
-
-{% endif %} +
-

{% trans "Associated base finds"%}

+
+ {% with nb_image=item.images.count %} + {% if nb_image %} +
+
+ {% include "ishtar/blocks/window_image.html" %} +
+
+
+ {% endif %} -
- {% for base_find in item.base_finds.all %} - {% with first=forloop.first|add:nb_image %} - {% include "ishtar/sheet_basefind.html" %} - {% endwith %} - {% endfor %} -
-{% endwith %} + -

{% trans "Identification" %}

+
+ {% for base_find in item.base_finds.all %} + {% with first=forloop.first|add:nb_image %} + {% include "ishtar/sheet_basefind.html" %} + {% endwith %} + {% endfor %} +
+ {% if nb_image %} +
+ {% endif %} + {% endwith %} +
-
- {% include "ishtar/blocks/sheet_external_id.html" %} -
+
+

{% trans "Identification" %}

-
- {% field_flex "Denomination" item.denomination %} - {% field_flex "Free ID" item.label %} - {% field_flex "Previous ID" item.previous_id %} - {% field_flex "Excavation ID" item.excavation_ids %} - {% field_flex "Museum ID" item.museum_id %} - {% field_flex "Seal number" item.seal_number %} - {% trans "Administrative index" as admin_index_label %} - {% field_flex admin_index_label item.administrative_index %} - {% field_flex_full "Mark" item.mark "
" "
" %} -
+
+ {% include "ishtar/blocks/sheet_external_id.html" %} +
-

{% trans "Description" %}

-
- {% field_flex_full "Description" item.description "
" "
" %} - {% field_flex "Is complete?" item.is_complete %} - {% field_flex_multiple "Material types" item.material_types %} - {% field_flex "Material type quality" item.material_type_quality %} - {% field_flex_multiple "Object types" item.object_types %} - {% field_flex "Object type quality" item.object_type_quality %} - {% field_flex "Find number" item.find_number %} - {% field_flex "Minimum number of individuals (MNI)" item.min_number_of_individuals %} - {% field_flex_full "Decoration" item.decoration "
" "
" %} - {% field_flex_full "Inscription" item.inscription "
" "
" %} - {% field_flex "Manufacturing place" item.manufacturing_place %} - {% field_flex_multiple "Communicability" item.communicabilities %} - {% field_flex_full "Comment" item.comment "
" "
" %} -
+
+ {% field_flex "Denomination" item.denomination %} + {% field_flex "Free ID" item.label %} + {% field_flex "Previous ID" item.previous_id %} + {% field_flex "Excavation ID" item.excavation_ids %} + {% field_flex "Museum ID" item.museum_id %} + {% field_flex "Seal number" item.seal_number %} + {% trans "Administrative index" as admin_index_label %} + {% field_flex admin_index_label item.administrative_index %} + {% field_flex_full "Mark" item.mark "
" "
" %} +
-{% if item.length or item.width or item.height or item.diameter or item.thickness or item.volume or item.weight_string or item.dimensions_comment or item.clutter_long_side or item.clutter_short_side or item.clutter_height %} -

{% trans "Dimensions" %}

-
- {% field_flex "Length (cm)" item.length %} - {% field_flex "Width (cm)" item.width %} - {% field_flex "Height (cm)" item.height %} - {% field_flex "Diameter (cm)" item.diameter %} - {% field_flex "Thickness (cm)" item.thickness %} - {% field_flex "Volume (l)" item.volume %} - {% trans "Weight (g)" as weight_label %} - {% field_flex weight_label item.weight_string %} - {% field_flex "Clutter long side (cm)" item.clutter_long_side %} - {% field_flex "Clutter short side (cm)" item.clutter_short_side %} - {% field_flex "Clutter height (cm)" item.clutter_height %} - {% field_flex_full "Dimensions comment" item.dimensions_comment "
" "
" %} -
-{% endif %} +

{% trans "Description" %}

+
+ {% field_flex_full "Description" item.description "
" "
" %} + {% field_flex "Is complete?" item.is_complete %} + {% field_flex_multiple "Material types" item.material_types %} + {% field_flex "Material type quality" item.material_type_quality %} + {% field_flex_multiple "Object types" item.object_types %} + {% field_flex "Object type quality" item.object_type_quality %} + {% field_flex "Find number" item.find_number %} + {% field_flex "Minimum number of individuals (MNI)" item.min_number_of_individuals %} + {% field_flex_full "Decoration" item.decoration "
" "
" %} + {% field_flex_full "Inscription" item.inscription "
" "
" %} + {% field_flex "Manufacturing place" item.manufacturing_place %} + {% field_flex_multiple "Communicability" item.communicabilities %} + {% field_flex_full "Comment" item.comment "
" "
" %} +
-

{% trans "Sheet" %}

-
- {% trans "Checked" as checked_label %} - {% field_flex checked_label item.checked_type %} - {% field_flex "Check date" item.check_date %} - {% include "ishtar/blocks/sheet_creation_section.html" %} -
+ {% if item.length or item.width or item.height or item.diameter or item.thickness or item.volume or item.weight_string or item.dimensions_comment or item.clutter_long_side or item.clutter_short_side or item.clutter_height %} +

{% trans "Dimensions" %}

+
+ {% field_flex "Length (cm)" item.length %} + {% field_flex "Width (cm)" item.width %} + {% field_flex "Height (cm)" item.height %} + {% field_flex "Diameter (cm)" item.diameter %} + {% field_flex "Thickness (cm)" item.thickness %} + {% field_flex "Volume (l)" item.volume %} + {% trans "Weight (g)" as weight_label %} + {% field_flex weight_label item.weight_string %} + {% field_flex "Clutter long side (cm)" item.clutter_long_side %} + {% field_flex "Clutter short side (cm)" item.clutter_short_side %} + {% field_flex "Clutter height (cm)" item.clutter_height %} + {% field_flex_full "Dimensions comment" item.dimensions_comment "
" "
" %} +
+ {% endif %} -{% if item.integrities.count or item.remarkabilities.count or item.conservatory_state or item.conservatory_comment or item.alterations.count or item.alteration_causes.count or item.preservation_to_considers.count or item.appraisal_date or item.treatment_emergency or item.insurance_value or item.estimated_value %} -

{% trans "Preservation" %}

-
- {% field_flex_multiple "Integrity / interest" item.integrities %} - {% field_flex_multiple "Remarkability" item.remarkabilities %} - {% field_flex "Conservatory state" item.conservatory_state %} - {% field_flex_multiple "Alteration" item.alterations %} - {% field_flex_multiple "Alteration cause" item.alteration_causes %} - {% field_flex_multiple "Recommended treatments" item.preservation_to_considers %} - {% field_flex "Treatment emergency" item.treatment_emergency %} - {% field_flex "Estimated value" item.estimated_value|default_if_none:''|intcomma '' ' '|add:CURRENCY %} - {% field_flex "Insurance value" item.insurance_value|default_if_none:''|intcomma '' ' '|add:CURRENCY %} - {% field_flex "Appraisal date" item.appraisal_date %} - {% field_flex_full "Conservatory comment" item.conservatory_comment "
" "
" %} -
-{% endif %} +

{% trans "Sheet" %}

+
+ {% trans "Checked" as checked_label %} + {% field_flex checked_label item.checked_type %} + {% field_flex "Check date" item.check_date %} + {% include "ishtar/blocks/sheet_creation_section.html" %} +
+
+
+ {% if item.integrities.count or item.remarkabilities.count or item.conservatory_state or item.conservatory_comment or item.alterations.count or item.alteration_causes.count or item.preservation_to_considers.count or item.appraisal_date or item.treatment_emergency or item.insurance_value or item.estimated_value %} +

{% trans "Preservation" %}

+
+ {% field_flex_multiple "Integrity / interest" item.integrities %} + {% field_flex_multiple "Remarkability" item.remarkabilities %} + {% field_flex "Conservatory state" item.conservatory_state %} + {% field_flex_multiple "Alteration" item.alterations %} + {% field_flex_multiple "Alteration cause" item.alteration_causes %} + {% field_flex_multiple "Recommended treatments" item.preservation_to_considers %} + {% field_flex "Treatment emergency" item.treatment_emergency %} + {% field_flex "Estimated value" item.estimated_value|default_if_none:''|intcomma '' ' '|add:CURRENCY %} + {% field_flex "Insurance value" item.insurance_value|default_if_none:''|intcomma '' ' '|add:CURRENCY %} + {% field_flex "Appraisal date" item.appraisal_date %} + {% field_flex_full "Conservatory comment" item.conservatory_comment "
" "
" %} +
+ {% endif %} -{% if item.dating or item.dating_comment %} -

{% trans "Dating" %}

-{% if item.datings.count %} - - - - - - - - - -{% for dating in item.datings.all %} - - - - - - - - -{% endfor %} -
{% trans "Period" %}{% trans "Start date" %}{% trans "End date" %}{% trans "Dating type" %}{% trans "Quality" %}{% trans "Precise dating" %}
- {{dating.period}} - - {{dating.start_date|default_if_none:"-"}} - - {{dating.end_date|default_if_none:"-"}} - - {{dating.dating_type|default_if_none:"-"}} - - {{dating.quality|default_if_none:"-"}} - - {{dating.precise_dating|default_if_none:"-"}} -
-{% endif %} - {% field_flex_full "Comment on dating" item.dating_comment "
" "
" %} -{% endif %} + {% if item.datings.count or item.dating_comment %} +

{% trans "Dating" %}

+ {% if item.datings.count %} + + + + + + + + + + {% for dating in item.datings.all %} + + + + + + + + + {% endfor %} +
{% trans "Period" %}{% trans "Start date" %}{% trans "End date" %}{% trans "Dating type" %}{% trans "Quality" %}{% trans "Precise dating" %}
+ {{dating.period}} + + {{dating.start_date|default_if_none:"-"}} + + {{dating.end_date|default_if_none:"-"}} + + {{dating.dating_type|default_if_none:"-"}} + + {{dating.quality|default_if_none:"-"}} + + {{dating.precise_dating|default_if_none:"-"}} +
+ {% endif %} + {% field_flex_full "Comment on dating" item.dating_comment "
" "
" %} + {% endif %} +
+
+ {% if item.container %} +

{% trans "Warehouse"%}

+
+ {% field_flex_detail "Container" item.container %} + {% field_flex "Container ID" item.container.cached_location %} + {% field_flex_detail "Responsible warehouse" item.container.responsible %} + {% field_flex_detail "Location (warehouse)" item.container.location %} + {% field_flex "Precise localisation" item.container.cached_division %} +
+ {% endif %} + {% if item.upstream_treatment or item.downstream_treatment or item.treatments.count %} + {% if item.treatments.all %} +

{% trans "Treatments"%}

+ + + + + + + + + + + + + + {% for treatment in item.treatments.all %} + + + + + + + + + + + + + {% endfor %} +
 {% trans "Year - index" %}{% trans "Label" %}{% trans "Type" %}{% trans "State" %}{% trans "Related finds (max. 15 displayed)" %}{% trans "Doer" %}{% trans "Container" %}{% trans "Start date" %}{% trans "End date" %}
+ + + + {{ treatment.year }} - {{treatment.index}}{{ treatment.label|default_if_none:"-" }}{{ treatment.treatment_types_lbl }}{{ treatment.treatment_state|default_if_none:"-" }}{% for it in treatment.limited_finds %}{{it}} {{it|link_to_window}}{% endfor %}{{ treatment.person|default_if_none:"-" }}{{ treatment.container|default_if_none:"-" }}{{ treatment.start_date|default_if_none:"-" }}{{ treatment.end_date|default_if_none:"-" }}
+ {% endif %} -{% include "ishtar/blocks/sheet_json.html" %} + {% if item.upstream_treatment %} +

{% trans "Upstream treatment" %}

+ + + + + + + + + + + + + + {% for items, treatment in item.limited_upstream_treatments %} + + + + + + + + + + + + + {% endfor %} +
 {% trans "Year - index" %}{% trans "Label" %}{% trans "Type" %}{% trans "State" %}{% trans "Related finds (max. 15 displayed)" %}{% trans "Doer" %}{% trans "Container" %}{% trans "Start date" %}{% trans "End date" %}
+ + + + {{ treatment.year }} - {{treatment.index}}{{ treatment.label|default_if_none:"-" }}{{ treatment.treatment_types_lbl }}{{ treatment.treatment_state|default_if_none:"-" }}{% for it in items %}{{it}} {{it|link_to_window}}{% endfor %}{{ treatment.person|default_if_none:"-" }}{{ treatment.container|default_if_none:"-" }}{{ treatment.start_date|default_if_none:"-" }}{{ treatment.end_date|default_if_none:"-" }}
+

{% trans "CSV" %} ({{ENCODING}})

+ {% endif %} -{% if item.container %} -

{% trans "Warehouse"%}

-
- {% field_flex_detail "Container" item.container %} - {% field_flex "Container ID" item.container.cached_location %} - {% field_flex_detail "Responsible warehouse" item.container.responsible %} - {% field_flex_detail "Location (warehouse)" item.container.location %} - {% field_flex "Precise localisation" item.container.cached_division %} -
-{% endif %} + {% if item.downstream_treatment %} +

{% trans "Downstream treatment" %}

+ + + + + + + + + + + + + + {% for items, treatment in item.limited_downstream_treatments %} + + + + + + + + + + + + + {% endfor %} +
 {% trans "Year - index" %}{% trans "Label" %}{% trans "Type" %}{% trans "State" %}{% trans "Related finds (max. 15 displayed)" %}{% trans "Doer" %}{% trans "Container" %}{% trans "Start date" %}{% trans "End date" %}
+ + + + {{ treatment.year }} - {{treatment.index}}{{ treatment.label|default_if_none:"-" }}{{ treatment.treatment_types_lbl }}{{ treatment.treatment_state|default_if_none:"-" }}{% for it in items %}{{it}} {{ it|link_to_window}}{% endfor %}{{ treatment.person|default_if_none:"" }}{{ treatment.container|default_if_none:"-" }}{{ treatment.start_date|default_if_none:"" }}{{ treatment.end_date|default_if_none:"" }}
-{% if item.upstream_treatment or item.downstream_treatment or item.treatments.count %} -

{% trans "Treatments"%}

- - - - - - - - - - - - - - {% for treatment in item.treatments.all %} - - - - - - - - - - - - - {% endfor %} -
 {% trans "Year - index" %}{% trans "Label" %}{% trans "Type" %}{% trans "State" %}{% trans "Related finds (max. 15 displayed)" %}{% trans "Doer" %}{% trans "Container" %}{% trans "Start date" %}{% trans "End date" %}
- - - - {{ treatment.year }} - {{treatment.index}}{{ treatment.label|default_if_none:"-" }}{{ treatment.treatment_types_lbl }}{{ treatment.treatment_state|default_if_none:"-" }}{% for it in treatment.limited_finds %}{{it}} {{it|link_to_window}}{% endfor %}{{ treatment.person|default_if_none:"-" }}{{ treatment.container|default_if_none:"-" }}{{ treatment.start_date|default_if_none:"-" }}{{ treatment.end_date|default_if_none:"-" }}
- -{% if item.upstream_treatment %} -

{% trans "Upstream treatment" %}

- - - - - - - - - - - - - - {% for items, treatment in item.limited_upstream_treatments %} - - - - - - - - - - - - - {% endfor %} -
 {% trans "Year - index" %}{% trans "Label" %}{% trans "Type" %}{% trans "State" %}{% trans "Related finds (max. 15 displayed)" %}{% trans "Doer" %}{% trans "Container" %}{% trans "Start date" %}{% trans "End date" %}
- - - - {{ treatment.year }} - {{treatment.index}}{{ treatment.label|default_if_none:"-" }}{{ treatment.treatment_types_lbl }}{{ treatment.treatment_state|default_if_none:"-" }}{% for it in items %}{{it}} {{it|link_to_window}}{% endfor %}{{ treatment.person|default_if_none:"-" }}{{ treatment.container|default_if_none:"-" }}{{ treatment.start_date|default_if_none:"-" }}{{ treatment.end_date|default_if_none:"-" }}
-

{% trans "CSV" %} ({{ENCODING}})

-{% endif %} - -{% if item.downstream_treatment %} -

{% trans "Downstream treatment" %}

- - - - - - - - - - - - - - {% for items, treatment in item.limited_downstream_treatments %} - - - - - - - - - - - - - {% endfor %} -
 {% trans "Year - index" %}{% trans "Label" %}{% trans "Type" %}{% trans "State" %}{% trans "Related finds (max. 15 displayed)" %}{% trans "Doer" %}{% trans "Container" %}{% trans "Start date" %}{% trans "End date" %}
- - - - {{ treatment.year }} - {{treatment.index}}{{ treatment.label|default_if_none:"-" }}{{ treatment.treatment_types_lbl }}{{ treatment.treatment_state|default_if_none:"-" }}{% for it in items %}{{it}} {{ it|link_to_window}}{% endfor %}{{ treatment.person|default_if_none:"" }}{{ treatment.container|default_if_none:"-" }}{{ treatment.start_date|default_if_none:"" }}{{ treatment.end_date|default_if_none:"" }}
- -

{% trans "CSV" %} ({{ENCODING}})

-{% endif %} - -{% endif %} - -{% trans "Associated documents" as finds_docs %} -{% if item.documents.count %} -{% dynamic_table_document finds_docs 'documents' 'finds' item.pk '' output %} -{% endif %} +

{% trans "CSV" %} ({{ENCODING}})

+ {% endif %} + {% endif %} +
+ {% if item.documents.count %} +
+ {% trans "Associated documents" as finds_docs %} + {% dynamic_table_document finds_docs 'documents' 'finds' item.pk '' output %} +
+ {% endif %} +
+ {% include "ishtar/blocks/sheet_json.html" %} +
+
{% endblock %} + diff --git a/ishtar_common/templates/ishtar/blocks/sheet_json.html b/ishtar_common/templates/ishtar/blocks/sheet_json.html index 8927eb057..df9340c6f 100644 --- a/ishtar_common/templates/ishtar/blocks/sheet_json.html +++ b/ishtar_common/templates/ishtar/blocks/sheet_json.html @@ -5,5 +5,7 @@ {% if forloop.first %}
{% endif %} {% field_flex label value %} {% if forloop.last %}
{% endif %} +{% empty %} +{% trans "No data" %} {% endfor %} {% endfor %} diff --git a/scss/custom.scss b/scss/custom.scss index f0168d469..09074de0b 100644 --- a/scss/custom.scss +++ b/scss/custom.scss @@ -136,6 +136,11 @@ pre { background-color: white; } + +.tab-content{ + padding-top: 1em; +} + .input-progress.form-control:focus, .input-progress{ background-color: $gray-300; -- cgit v1.2.3 From c8791afe348c41aedcba9abbc3014e5db9c875f8 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 19 Nov 2018 10:17:06 +0100 Subject: Treatment n<->1: copy and merge data --- archaeological_finds/models_treatments.py | 7 ++++++- ishtar_common/utils.py | 10 ++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index c7b888c0d..d92c98235 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -34,7 +34,8 @@ from ishtar_common.models import Document, GeneralType, \ ImageModel, BaseHistorizedItem, OwnPerms, HistoricalRecords, Person, \ Organization, ValueGetter, post_save_cache, ShortMenuItem, \ DashboardFormItem, ExternalIdManager -from ishtar_common.utils import cached_label_changed, get_current_year +from ishtar_common.utils import cached_label_changed, get_current_year, \ + update_data class TreatmentState(GeneralType): @@ -351,6 +352,10 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, current_documents.append(document.pk) new_find.documents.add(document) + # data + new_find.data = update_data(new_find.data, upstream_item.data, + merge=True) + upstream_item.downstream_treatment = self upstream_item.history_modifier = self.history_modifier upstream_item.save() diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index 4f968af31..ff67fc470 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -145,18 +145,24 @@ def check_model_access_control(request, model, available_perms=None): return allowed, own -def update_data(data_1, data_2): +def update_data(data_1, data_2, merge=False): """ Update a data directory taking account of key detail """ res = {} if not isinstance(data_1, dict) or not isinstance(data_2, dict): + if data_2 and not data_1: + return data_2 + if not merge: + return data_1 + if data_2 and data_2 != data_1: + return data_1 + u" ; " + data_2 return data_1 for k in data_1: if k not in data_2: res[k] = data_1[k] else: - res[k] = update_data(data_1[k], data_2[k]) + res[k] = update_data(data_1[k], data_2[k], merge=merge) for k in data_2: if k not in data_1: res[k] = data_2[k] -- cgit v1.2.3 From 35a8c73721c83e24494dd59e35bdbf76cf990f2b Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 19 Nov 2018 13:40:35 +0100 Subject: Find wizard: manage a simplified form for find with many base finds --- archaeological_finds/forms.py | 166 ++++++++++++++------- archaeological_finds/models_finds.py | 9 ++ .../templates/ishtar/wizard/wizard_simplefind.html | 13 ++ archaeological_finds/views.py | 26 +++- archaeological_finds/wizards.py | 16 +- 5 files changed, 172 insertions(+), 58 deletions(-) create mode 100644 archaeological_finds/templates/ishtar/wizard/wizard_simplefind.html diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 958b1896c..970b35f92 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -72,11 +72,12 @@ __all__ = [ 'AdministrativeActTreatmentFormSelection', 'AdministrativeActTreatmentFileModifForm', 'DashboardTreatmentForm', 'DashboardTreatmentFileForm', - 'RecordFormSelection', 'FindForm', 'DateForm', 'DatingFormSet', - 'PreservationForm', 'FindBasketFormSelection', 'FindBasketForm', - 'FindSelect', 'FindFormSelection', 'FindFormSelectionWarehouseModule', - 'MultipleFindFormSelection', 'MultipleFindFormSelectionWarehouseModule', - 'FindMultipleFormSelection', 'check_form', 'check_exist', 'check_not_exist', + 'RecordFormSelection', 'FindForm', 'SimpleFindForm', 'DateForm', + 'DatingFormSet', 'PreservationForm', 'FindBasketFormSelection', + 'FindBasketForm', 'FindSelect', 'FindFormSelection', + 'FindFormSelectionWarehouseModule', 'MultipleFindFormSelection', + 'MultipleFindFormSelectionWarehouseModule', 'FindMultipleFormSelection', + 'check_form', 'check_exist', 'check_not_exist', 'check_value', 'check_type_field', 'check_type_not_field', 'check_treatment', 'ResultFindForm', 'ResultFindFormSet', 'FindDeletionForm', 'UpstreamFindFormSelection', 'NewFindBasketForm', @@ -123,23 +124,33 @@ class RecordFormSelection(CustomForm, forms.Form): cr.operation.pk) -class FindForm(CustomForm, ManageOldType): +class BaseFindForm(CustomForm, ManageOldType): + """ + Base find form with no field related to base_find + """ file_upload = True form_label = _("Find") - form_admin_name = _(u"Find - 020 - General") - form_slug = "find-020-general" - base_models = ['get_first_base_find', 'object_type', 'material_type', - 'communicabilitie'] + form_admin_name = _(u"Simple find - 020 - General") + form_slug = "simplefind-020-general" + base_models = ['object_type', 'material_type', 'communicabilitie'] associated_models = { 'material_type': models.MaterialType, 'object_type': models.ObjectType, 'communicabilitie': models.CommunicabilityType, - 'get_first_base_find__batch': models.BatchType, - 'get_first_base_find__spatial_reference_system': SpatialReferenceSystem, 'material_type_quality': models.MaterialTypeQualityType, 'object_type_quality': models.ObjectTypeQualityType, 'checked_type': models.CheckedType, } + field_order = [ + 'label', 'denomination', 'previous_id', 'museum_id', 'seal_number', + 'mark', 'description', 'is_complete', 'material_type', + 'material_type_quality', 'object_type', 'object_type_quality', + 'find_number', 'min_number_of_individuals', 'inscription', + 'manufacturing_place', 'communicabilitie', 'comment', 'dating_comment', + 'length', 'width', 'height', 'diameter', 'thickness', 'volume', + 'weight', 'clutter_long_side', 'clutter_short_side', 'clutter_height', + 'dimensions_comment', 'checked_type', 'check_date' + ] HEADERS = {} HEADERS['label'] = FormHeader(_(u"Identification")) @@ -148,8 +159,6 @@ class FindForm(CustomForm, ManageOldType): validators=[validators.MaxLengthValidator(60)]) denomination = forms.CharField(label=_(u"Denomination"), required=False) previous_id = forms.CharField(label=_("Previous ID"), required=False) - get_first_base_find__excavation_id = forms.CharField( - label=_(u"Excavation ID"), required=False) museum_id = forms.CharField(label=_(u"Museum ID"), required=False) seal_number = forms.CharField(label=_(u"Seal number"), required=False) mark = forms.CharField(label=_(u"Mark"), required=False) @@ -157,14 +166,6 @@ class FindForm(CustomForm, ManageOldType): HEADERS['description'] = FormHeader(_(u"Description")) description = forms.CharField(label=_(u"Description"), widget=forms.Textarea, required=False) - get_first_base_find__discovery_date = forms.DateField( - label=_(u"Discovery date (exact or TPQ)"), widget=DatePicker, - required=False) - get_first_base_find__discovery_date_taq = forms.DateField( - label=_(u"Discovery date (TAQ)"), widget=DatePicker, required=False) - get_first_base_find__batch = forms.ChoiceField( - label=_(u"Batch/object"), choices=[], - required=False) is_complete = forms.NullBooleanField(label=_(u"Is complete?"), required=False) material_type = widgets.Select2MultipleField( @@ -212,8 +213,86 @@ class FindForm(CustomForm, ManageOldType): dimensions_comment = forms.CharField( label=_(u"Dimensions comment"), required=False, widget=forms.Textarea) - HEADERS['get_first_base_find__x'] = FormHeader( - _(u"Coordinates")) + HEADERS['checked_type'] = FormHeader(_(u"Sheet")) + checked_type = forms.ChoiceField(label=_(u"Check"), required=False) + check_date = forms.DateField( + initial=get_now, label=_(u"Check date"), widget=DatePicker) + + TYPES = [ + FieldType('material_type', models.MaterialType, is_multiple=True), + FieldType('material_type_quality', models.MaterialTypeQualityType), + FieldType('object_type', models.ObjectType, is_multiple=True), + FieldType('object_type_quality', models.ObjectTypeQualityType), + FieldType('communicabilitie', models.CommunicabilityType, + is_multiple=True), + FieldType('checked_type', models.CheckedType, is_multiple=True), + ] + + def __init__(self, *args, **kwargs): + context_record = kwargs.pop('context_record') + super(BaseFindForm, self).__init__(*args, **kwargs) + if not context_record or \ + not context_record.operation.operation_type.judiciary: + self.fields.pop('seal_number') + + def clean(self): + clutter_long_side = self.cleaned_data.get('clutter_long_side', None) + clutter_short_side = self.cleaned_data.get('clutter_short_side', None) + + if clutter_long_side and clutter_short_side and \ + clutter_short_side > clutter_long_side: + raise forms.ValidationError( + unicode(_( + u"Clutter: short side cannot be bigger than the long side." + )) + ) + return self.cleaned_data + + +class FindForm(BaseFindForm): + file_upload = True + form_label = _("Find") + form_admin_name = _(u"Find - 020 - General") + form_slug = "find-020-general" + base_models = ['get_first_base_find'] + BaseFindForm.base_models + associated_models = BaseFindForm.associated_models.copy() + associated_models.update({ + 'get_first_base_find__batch': models.BatchType, + 'get_first_base_find__spatial_reference_system': SpatialReferenceSystem, + }) + field_order = [ + 'label', 'denomination', 'previous_id', + 'get_first_base_find__excavation_id', 'museum_id', 'seal_number', + 'mark', 'description', 'get_first_base_find__discovery_date', + 'get_first_base_find__discovery_date_taq', 'get_first_base_find__batch', + 'is_complete', 'material_type', 'material_type_quality', 'object_type', + 'object_type_quality', 'find_number', 'min_number_of_individuals', + 'inscription', 'manufacturing_place', 'communicabilitie', 'comment', + 'dating_comment', 'length', 'width', 'height', 'diameter', 'thickness', + 'volume', 'weight', 'clutter_long_side', 'clutter_short_side', + 'clutter_height', 'dimensions_comment', 'get_first_base_find__x', + 'get_first_base_find__estimated_error_x', 'get_first_base_find__y', + 'get_first_base_find__estimated_error_y', 'get_first_base_find__z', + 'get_first_base_find__estimated_error_z', + 'get_first_base_find__spatial_reference_system', + 'get_first_base_find__topographic_localisation', 'checked_type', + 'check_date', + ] + + HEADERS = BaseFindForm.HEADERS.copy() + get_first_base_find__excavation_id = forms.CharField( + label=_(u"Excavation ID"), required=False) + + get_first_base_find__discovery_date = forms.DateField( + label=_(u"Discovery date (exact or TPQ)"), widget=DatePicker, + required=False) + get_first_base_find__discovery_date_taq = forms.DateField( + label=_(u"Discovery date (TAQ)"), widget=DatePicker, required=False) + get_first_base_find__batch = forms.ChoiceField( + label=_(u"Batch/object"), choices=[], + required=False) + + HEADERS['get_first_base_find__x'] = FormHeader(_(u"Coordinates")) get_first_base_find__x = forms.FloatField(label=_(u"X"), required=False) get_first_base_find__estimated_error_x = \ forms.FloatField(label=_(u"Estimated error for X"), required=False) @@ -231,22 +310,10 @@ class FindForm(CustomForm, ManageOldType): required=False, max_length=120 ) - HEADERS['checked_type'] = FormHeader(_(u"Sheet")) - checked_type = forms.ChoiceField(label=_(u"Check"), required=False) - check_date = forms.DateField( - initial=get_now, label=_(u"Check date"), widget=DatePicker) - - TYPES = [ - FieldType('material_type', models.MaterialType, is_multiple=True), - FieldType('material_type_quality', models.MaterialTypeQualityType), - FieldType('object_type', models.ObjectType, is_multiple=True), - FieldType('object_type_quality', models.ObjectTypeQualityType), - FieldType('communicabilitie', models.CommunicabilityType, - is_multiple=True), + TYPES = BaseFindForm.TYPES + [ FieldType('get_first_base_find__batch', models.BatchType), FieldType('get_first_base_find__spatial_reference_system', SpatialReferenceSystem), - FieldType('checked_type', models.CheckedType, is_multiple=True), ] PROFILE_FILTER = { 'mapping': [ @@ -258,14 +325,8 @@ class FindForm(CustomForm, ManageOldType): ], } - def __init__(self, *args, **kwargs): - context_record = kwargs.pop('context_record') - super(FindForm, self).__init__(*args, **kwargs) - if not context_record or \ - not context_record.operation.operation_type.judiciary: - self.fields.pop('seal_number') - def clean(self): + self.cleaned_data = super(FindForm, self).clean() taq = self.cleaned_data.get('get_first_base_find__discovery_date_taq', None) tpq = self.cleaned_data.get('get_first_base_find__discovery_date', @@ -282,17 +343,6 @@ class FindForm(CustomForm, ManageOldType): unicode(_(u"Discovery date: TAQ date must be older than TPQ " u"date."))) - clutter_long_side = self.cleaned_data.get('clutter_long_side', None) - clutter_short_side = self.cleaned_data.get('clutter_short_side', None) - - if clutter_long_side and clutter_short_side and \ - clutter_short_side > clutter_long_side: - raise forms.ValidationError( - unicode(_( - u"Clutter: short side cannot be bigger than the long side." - )) - ) - if not get_current_profile().mapping: return self.cleaned_data x = self.cleaned_data.get('get_first_base_find__x', None) @@ -320,6 +370,12 @@ class FindForm(CustomForm, ManageOldType): return self.cleaned_data +class SimpleFindForm(BaseFindForm): + def __init__(self, *args, **kwargs): + self.base_finds = kwargs.pop('base_finds') + super(SimpleFindForm, self).__init__(*args, **kwargs) + + class ResultingFindForm(CustomForm, ManageOldType): file_upload = True form_label = _("Resulting find") diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 3483113d7..1fb4f6132 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -327,6 +327,15 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, OwnPerms): finds = self.find.filter().order_by("-order").all() return finds and finds[0] + def get_main_find(self): + """ + Get the last find which is not related to many base_find + """ + for find in self.find.order_by('-pk'): + if find.base_finds.count() == 1: + return find + return + def generate_index(self): """ Generate index based on operation or context record (based on diff --git a/archaeological_finds/templates/ishtar/wizard/wizard_simplefind.html b/archaeological_finds/templates/ishtar/wizard/wizard_simplefind.html new file mode 100644 index 000000000..b1d77ba81 --- /dev/null +++ b/archaeological_finds/templates/ishtar/wizard/wizard_simplefind.html @@ -0,0 +1,13 @@ +{% extends "ishtar/wizard/default_wizard.html" %} +{% load i18n %} +{% block form_head %} +
+ + {% trans 'This find is related to many base finds. To edit field related to base finds edit the corresponding find between theses:' %} +
    {% for base_find in wizard.form.base_finds %} + {% with find=base_find.get_main_find %}
  • + {{find.short_label }} + +
  • {% endwith %}{% endfor %}
+
+{% endblock %} diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index d6924257f..ceb00d432 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -187,10 +187,25 @@ find_search_wizard = FindSearch.as_view([ condition_dict=find_search_condition_dict ) + +def has_many_base_find(wizard): + find = wizard.get_current_object() + if not find: + return False + return find.base_finds.count() > 1 + + +def has_only_one_base_find(wizard): + return not has_many_base_find(wizard) + + find_modification_condition_dict = { 'selec-find_modification': check_not_warehouse_module, 'selecw-find_modification': check_warehouse_module, 'preservation-find_modification': check_preservation_module, + 'selecrecord-find_modification': has_only_one_base_find, + 'find-find_modification': has_only_one_base_find, + 'simplefind-find_modification': has_many_base_find, } find_modification_steps = [ @@ -198,6 +213,7 @@ find_modification_steps = [ ('selecw-find_modification', FindFormSelectionWarehouseModule), ('selecrecord-find_modification', RecordFormSelection), ('find-find_modification', FindForm), + ('simplefind-find_modification', SimpleFindForm), ('preservation-find_modification', PreservationForm), ('dating-find_modification', DatingFormSet), ('final-find_modification', FinalForm) @@ -218,9 +234,15 @@ def find_modify(request, pk): key = 'selecw-find_modification' FindModificationWizard.session_set_value( request, key, 'pk', pk, reset=True) + q = models.Find.objects.filter(pk=pk) + if not q.count(): + raise Http404() + step = 'find-find_modification' + find = q.all()[0] + if find.base_finds.count() > 1: + step = 'simplefind-find_modification' return redirect( - reverse('find_modification', - kwargs={'step': 'selecrecord-find_modification'})) + reverse('find_modification', kwargs={'step': step})) find_deletion_condition_dict = { 'selec-find_deletion': check_not_warehouse_module, diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py index 3043d22aa..3c25258a6 100644 --- a/archaeological_finds/wizards.py +++ b/archaeological_finds/wizards.py @@ -55,11 +55,21 @@ class FindWizard(Wizard): if base_finds: return base_finds[0].context_record + def get_current_basefinds(self): + find = self.get_current_object() + if not find: + return [] + return find.base_finds.all() + def get_form_kwargs(self, step=None): kwargs = super(FindWizard, self).get_form_kwargs(step) - if step not in ('find-find_creation', 'find-find_modification'): + if step not in ( + 'find-find_creation', 'find-find_modification', + 'simplefind-find_modification',): return kwargs kwargs['context_record'] = self.get_current_contextrecord() + if step == 'simplefind-find_modification': + kwargs['base_finds'] = self.get_current_basefinds() return kwargs def get_context_data(self, form, **kwargs): @@ -90,6 +100,10 @@ class FindModificationWizard(FindWizard): 'selec-find_modification': ['pk'], 'selecw-find_modification': ['pk'], } + wizard_templates = { + 'simplefind-find_modification': + 'ishtar/wizard/wizard_simplefind.html', + } class FindDeletionWizard(DeletionWizard): -- cgit v1.2.3 From c943fb4cbfa56163f93f88e50614613839fc77c8 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 19 Nov 2018 20:18:38 +0100 Subject: Manage 1<->n treatments wizard --- archaeological_finds/forms.py | 66 +++++++++++++++++++++++++++--- archaeological_finds/forms_treatments.py | 16 +++++++- archaeological_finds/ishtar_menu.py | 7 ++++ archaeological_finds/models_finds.py | 10 +++-- archaeological_finds/models_treatments.py | 48 ++++++++++++++++++++-- archaeological_finds/urls.py | 3 ++ archaeological_finds/views.py | 13 ++++++ archaeological_finds/wizards.py | 67 ++++++++++++++++++++++++++++++- ishtar_common/templates/base.html | 37 +++++++++++------ 9 files changed, 238 insertions(+), 29 deletions(-) diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 970b35f92..b95ac90c6 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -44,7 +44,7 @@ from archaeological_finds.forms_treatments import TreatmentSelect, \ AdministrativeActTreatmentFileFormSelection, \ AdministrativeActTreatmentFileModifForm, \ DashboardForm as DashboardTreatmentForm, N1TreatmentForm,\ - DashboardTreatmentFileForm, QAFindTreatmentForm + DashboardTreatmentFileForm, QAFindTreatmentForm, OneNTreatmentForm from archaeological_operations.models import Period, ArchaeologicalSite, \ RelationType as OpeRelationType from archaeological_operations.widgets import OAWidget @@ -84,7 +84,8 @@ __all__ = [ 'SelectFindBasketForm', 'DeleteFindBasketForm', 'FindBasketAddItemForm', 'QAFindFormSingle', 'QAFindFormMulti', 'QAFindBasketForm', 'QAFindTreatmentForm', - 'N1TreatmentForm', 'ResultingFindForm' + 'N1TreatmentForm', 'OneNTreatmentForm', 'ResultingFindForm', + 'ResultingFindsForm', 'SingleUpstreamFindFormSelection' ] logger = logging.getLogger(__name__) @@ -379,8 +380,8 @@ class SimpleFindForm(BaseFindForm): class ResultingFindForm(CustomForm, ManageOldType): file_upload = True form_label = _("Resulting find") - form_admin_name = _(u"Treatment n-1 - 030 - General") - form_slug = "treatmentn1-030-general" + form_admin_name = _(u"Treatment n-1 - 030 - Resulting find") + form_slug = "treatmentn1-030-resulting-find" associated_models = { 'resulting_material_type': models.MaterialType, @@ -472,6 +473,50 @@ class ResultingFindForm(CustomForm, ManageOldType): ] +class ResultingFindsForm(CustomForm, ManageOldType): + form_label = _("Resulting finds") + form_admin_name = _(u"Treatment 1-n - 030 - Resulting finds") + form_slug = "treatment1n-030-resulting-finds" + associated_models = {} + + resultings_number = forms.IntegerField( + label=_(u"Number of resulting finds"), + min_value=1 + ) + resultings_label = forms.CharField( + label=_(u"Prefix label for resulting finds"), + validators=[validators.MaxLengthValidator(200)], + help_text=_( + u'E.g.: with a prefix "item-", each resulting item will be named ' + u'"item-1", "item-2", "item-3"') + ) + resultings_start_number = forms.IntegerField( + label=_(u"Numbering starting from"), initial=1, min_value=0 + ) + resultings_basket_name = forms.CharField( + label=_(u"Name of the new basket containing the resulting items"), + max_length=200 + ) + + def __init__(self, *args, **kwargs): + self.user = None + if 'user' in kwargs: + self.user = kwargs.pop('user') + if hasattr(self.user, 'ishtaruser'): + self.user = self.user.ishtaruser + super(ResultingFindsForm, self).__init__(*args, **kwargs) + if not self.user: + return + + def clean(self): + q = models.FindBasket.objects.filter( + user=self.user, label=self.cleaned_data['resultings_basket_name']) + if q.count(): + raise forms.ValidationError(_(u"A basket with this label already " + u"exists.")) + return self.cleaned_data + + class QAFindFormMulti(QAForm): form_admin_name = _(u"Find - Quick action - Modify") form_slug = "find-quickaction-modify" @@ -1065,7 +1110,7 @@ class FindDeletionForm(FinalForm): class UpstreamFindFormSelection(PkWizardSearch, FindFormSelection): - form_label = _(u"Upstream find") + form_label = _(u"Upstream finds") current_model = models.Find pk_key = 'resulting_pk' @@ -1084,6 +1129,17 @@ class UpstreamFindFormSelection(PkWizardSearch, FindFormSelection): self.fields['resulting_pk'] = self.fields.pop('pk') +class SingleUpstreamFindFormSelection(UpstreamFindFormSelection): + current_model = models.Find + pk = forms.CharField( + label="", required=False, + widget=widgets.DataTable( + reverse_lazy('get-find'), + FindSelect, current_model, + source_full=reverse_lazy('get-find-full')), + validators=[valid_ids(current_model)]) + + class FindBasketSelect(CustomForm, TableSelect): _model = models.FindBasket diff --git a/archaeological_finds/forms_treatments.py b/archaeological_finds/forms_treatments.py index 99a685825..be53dd418 100644 --- a/archaeological_finds/forms_treatments.py +++ b/archaeological_finds/forms_treatments.py @@ -80,7 +80,7 @@ class TreatmentFormSelection(forms.Form): class BaseTreatmentForm(CustomForm, ManageOldType): - form_label = _(u"Base treatment") + form_label = _(u"Treatment") form_admin_name = _(u"Treatment - 020 - General") form_slug = "treatment-020-general" base_models = ['treatment_type'] @@ -231,7 +231,6 @@ class BaseTreatmentForm(CustomForm, ManageOldType): class N1TreatmentForm(BaseTreatmentForm): - form_label = _(u"Base treatment") form_admin_name = _(u"Treatment n-1 - 020 - General") form_slug = "treatmentn1-020-general" @@ -244,6 +243,19 @@ class N1TreatmentForm(BaseTreatmentForm): ] +class OneNTreatmentForm(BaseTreatmentForm): + form_admin_name = _(u"Treatment 1-n - 020 - General") + form_slug = "treatment1n-020-general" + + TYPES = [ + FieldType('treatment_state', models.TreatmentState), + FieldType( + 'treatment_type', models.TreatmentType, is_multiple=True, + extra_args={'dct': {'upstream_is_many': False, + 'downstream_is_many': True}}) + ] + + class TreatmentModifyForm(BaseTreatmentForm): index = forms.IntegerField(_(u"Index")) id = forms.IntegerField(' ', widget=forms.HiddenInput, required=False) diff --git a/archaeological_finds/ishtar_menu.py b/archaeological_finds/ishtar_menu.py index cd7ed19b7..2f37f4c4b 100644 --- a/archaeological_finds/ishtar_menu.py +++ b/archaeological_finds/ishtar_menu.py @@ -167,6 +167,13 @@ MENU_SECTIONS = [ u"- creation"), model=models.Treatment, access_controls=['change_find', 'change_own_find']), + MenuItem( + 'treatment_creation_1n', + _(u"Treatment " + u"1 n " + u"- creation"), + model=models.Treatment, + access_controls=['change_find', 'change_own_find']), MenuItem('treatment_modification', _(u"Modification"), model=models.Treatment, diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 1fb4f6132..e856cb8ca 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -1348,7 +1348,7 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms, q = q.filter(**fltr) return q.filter(downstream_treatment__isnull=True).count() - def duplicate(self, user): + def duplicate(self, user, copy_datings=True): model = self.__class__ new = model.objects.get(pk=self.pk) @@ -1366,9 +1366,11 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms, m2m = [field.name for field in model._meta.many_to_many if field.name not in PRIVATE_FIELDS] for field in m2m: - if field == 'images': - for doc in Document.objects.filter(finds__pk=self.pk).all(): - doc.finds.add(new.pk) + if field == 'datings' and copy_datings: + for dating in self.datings.all(): + dating.pk = None + dating.save() + new.datings.add(dating) else: for val in getattr(self, field).all(): getattr(new, field).add(val) diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index d92c98235..68935f142 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -29,6 +29,7 @@ from django.utils.translation import ugettext_lazy as _, pgettext_lazy, \ from archaeological_finds.models_finds import Find, FindBasket, TreatmentType from archaeological_operations.models import ClosedItem, Operation +from archaeological_context_records.models import Dating from archaeological_warehouse.models import Warehouse, Container from ishtar_common.models import Document, GeneralType, \ ImageModel, BaseHistorizedItem, OwnPerms, HistoricalRecords, Person, \ @@ -72,7 +73,8 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, "person__cached_label": _(u"Responsible"), } # extra keys than can be passed to save method - EXTRA_SAVED_KEYS = ('items', 'user', 'resulting_find', 'upstream_items') + EXTRA_SAVED_KEYS = ('items', 'user', 'resulting_find', 'upstream_items', + 'resulting_finds', 'upstream_item') # alternative names of fields for searches ALT_NAMES = { @@ -293,7 +295,10 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, if q.count(): self.index = q.all().aggregate(Max('index'))['index__max'] + 1 - def _create_resulting_find(self, resulting_find, upstream_items): + def _create_n_1_resulting_find(self, resulting_find, upstream_items): + """ + Manage creation of n<->1 treatment + """ m2m = {} base_fields = [f.name for f in Find._meta.get_fields()] for k in resulting_find.keys(): @@ -363,15 +368,45 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, new_find.skip_history_when_saving = True new_find.save() + def _create_1_n_resulting_find(self, resulting_finds, upstream_item, user): + """ + Manage creation of 1<->n treatment + """ + new_items = [] + start_number = resulting_finds['start_number'] + for idx in range(resulting_finds['number']): + label = resulting_finds['label'] + unicode(start_number + idx) + new_find = Find.objects.get( + pk=upstream_item.pk).duplicate(user) + new_find.upstream_treatment = self + new_find.label = label + new_find.skip_history_when_saving = True + new_find.save() + new_items.append(new_find) + + upstream_item.downstream_treatment = self + upstream_item.skip_history_when_saving = True + upstream_item.save() + + if getattr(user, 'ishtaruser', None): + b = FindBasket.objects.create( + label=resulting_finds['basket_name'], user=user.ishtaruser) + for item in new_items: + b.items.add(item) + def save(self, *args, **kwargs): items, user, extra_args_for_new, resulting_find = [], None, [], None - upstream_items = [] + upstream_items, upstream_item, resulting_finds = [], None, None if "items" in kwargs: items = kwargs.pop('items') if "resulting_find" in kwargs: resulting_find = kwargs.pop('resulting_find') + if "resulting_finds" in kwargs: + resulting_finds = kwargs.pop('resulting_finds') if "upstream_items" in kwargs: upstream_items = kwargs.pop('upstream_items') + if "upstream_item" in kwargs: + upstream_item = kwargs.pop('upstream_item') if "user" in kwargs: user = kwargs.pop('user') if "extra_args_for_new" in kwargs: @@ -386,7 +421,12 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, upstream_items = upstream_items.items.all() if upstream_items and resulting_find: - self._create_resulting_find(resulting_find, upstream_items) + self._create_n_1_resulting_find(resulting_find, upstream_items) + return + + if upstream_item and resulting_finds: + self._create_1_n_resulting_find(resulting_finds, upstream_item, + self.history_modifier) return tps = list(self.treatment_types.all()) diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py index b9f4d8b6c..6e9f59b8c 100644 --- a/archaeological_finds/urls.py +++ b/archaeological_finds/urls.py @@ -106,6 +106,9 @@ urlpatterns = [ url(r'^treatment_creation_n1/(?P.+)?$', check_rights(['change_find', 'change_own_find'])( views.treatment_creation_n1_wizard), name='treatment_creation_n1'), + url(r'^treatment_creation_1n/(?P.+)?$', + check_rights(['change_find', 'change_own_find'])( + views.treatment_creation_1n_wizard), name='treatment_creation_1n'), url(r'^treatment_modification/(?P.+)?$', check_rights(['change_find', 'change_own_find'])( diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index ceb00d432..29f0f75af 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -476,6 +476,19 @@ treatment_creation_n1_wizard = TreatmentN1Wizard.as_view( label=_(u"New treatment"), url_name='treatment_creation_n1',) +treatment_1n_wizard_steps = [ + ('selecfind-treatment_creation_1n', SingleUpstreamFindFormSelection), + ('file-treatment_creation_1n', TreatmentFormFileChoice), + ('basetreatment-treatment_creation_1n', OneNTreatmentForm), + ('resultingfinds-treatment_creation_1n', ResultingFindsForm), + ('final-treatment_creation_1n', FinalForm) +] + +treatment_creation_1n_wizard = Treatment1NWizard.as_view( + treatment_1n_wizard_steps, + label=_(u"New treatment"), + url_name='treatment_creation_1n',) + treatment_modification_wizard = TreatmentModificationWizard.as_view( [('selec-treatment_modification', TreatmentFormSelection), ('file-treatment_modification', TreatmentFormFileChoice), diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py index 3c25258a6..bd16a55de 100644 --- a/archaeological_finds/wizards.py +++ b/archaeological_finds/wizards.py @@ -17,8 +17,9 @@ # See the file COPYING for details. +from django.contrib import messages from django.core.exceptions import ObjectDoesNotExist, PermissionDenied -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import ugettext_lazy as _, pgettext from ishtar_common.forms import reverse_lazy from ishtar_common.wizards import Wizard, DeletionWizard, SearchWizard @@ -316,6 +317,70 @@ class TreatmentN1Wizard(TreatmentBase): return dct +class Treatment1NWizard(TreatmentBase): + saved_args = {"upstream_item": None, "resulting_finds": None} + base_url = 'treatment_creation_1n' + + def get_form_kwargs(self, step, **kwargs): + kwargs = super(Treatment1NWizard, self).get_form_kwargs(step, **kwargs) + if step != 'resultingfind-treatment_creation_1n': + return kwargs + kwargs['user'] = self.request.user + return kwargs + + def get_form_initial(self, step, data=None): + initial = super(Treatment1NWizard, self).get_form_initial(step) + if step != 'resultingfinds-treatment_creation_1n': + return initial + finds = self.get_current_finds() + if not finds: + return initial + lbl = finds[0].label + initial['resultings_basket_name'] = unicode(_(u"Basket")) + u" - " + lbl + initial['resultings_label'] = lbl + u"-" + return initial + + def get_extra_model(self, dct, form_list): + """ + Get items concerned by the treatment + """ + dct = super(Treatment1NWizard, self).get_extra_model(dct, form_list) + if 'resulting_pk' not in dct: + return dct + + # manage upstream item + pk = dct.pop('resulting_pk') + try: + find = models.Find.objects.get(pk=pk) + dct['upstream_item'] = find + except models.Find.DoesNotExist: + raise PermissionDenied + + if 'own' in self.current_right \ + and not find.is_own(dct['history_modifier']): + raise PermissionDenied + + # extract attributes to generate the new find + dct['resulting_finds'] = {} + for k in dct.keys(): + if k.startswith('resultings_'): + dct['resulting_finds'][ + k[len('resultings_'):] + ] = dct.pop(k) + messages.add_message( + self.request, messages.INFO, + unicode(_(u"The new basket: \"{}\" have been created with the " + u"resulting items. This search have been pinned.") + ).format(dct["resulting_finds"]["basket_name"]) + ) + + self.request.session["pin-search-find"] = u'{}="{}"'.format( + unicode(pgettext("key for text search", u"basket")), + dct["resulting_finds"]["basket_name"]) + self.request.session['find'] = '' + return dct + + class TreatmentDeletionWizard(DeletionWizard): model = models.Treatment fields = ['label', 'other_reference', 'year', 'index', diff --git a/ishtar_common/templates/base.html b/ishtar_common/templates/base.html index add4f1d6c..ab2baf955 100644 --- a/ishtar_common/templates/base.html +++ b/ishtar_common/templates/base.html @@ -108,20 +108,28 @@ -
-
-
- {% if MESSAGES %}{% for message, message_type in MESSAGES %} - - {% endfor %}{% endif %} + {% if messages %} + {% for message in messages %} + {% endfor %} + {% endif %} + {% if MESSAGES %}{% for message, message_type in MESSAGES %} + + {% endfor %}{% endif %}
{% if warnings %}{% for warning in warnings %} {% endfor %}{% endif %} +
+
+
{% block content %}{% endblock %}
-- cgit v1.2.3 From 3e14b1202b3435113d070fa53f93ab62b2833c8d Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 21 Nov 2018 10:22:04 +0100 Subject: Manage treatment with no creation new of item --- archaeological_files/wizards.py | 4 +- archaeological_finds/admin.py | 5 ++- archaeological_finds/forms.py | 7 +-- .../migrations/0040_auto_20181120_1027.py | 33 ++++++++++++++ archaeological_finds/models_finds.py | 4 ++ archaeological_finds/models_treatments.py | 51 +++++++++++++++------- archaeological_finds/wizards.py | 38 +++++++++++----- archaeological_operations/wizards.py | 2 +- archaeological_warehouse/wizards.py | 2 +- ishtar_common/wizards.py | 8 ++-- 10 files changed, 115 insertions(+), 39 deletions(-) create mode 100644 archaeological_finds/migrations/0040_auto_20181120_1027.py diff --git a/archaeological_files/wizards.py b/archaeological_files/wizards.py index 106008192..c9b1ba9c2 100644 --- a/archaeological_files/wizards.py +++ b/archaeological_files/wizards.py @@ -43,8 +43,8 @@ class FileWizard(OperationWizard): town_step_keys = ['towns-'] wizard_done_window = reverse_lazy('show-file') - def get_extra_model(self, dct, form_list): - dct = super(FileWizard, self).get_extra_model(dct, form_list) + def get_extra_model(self, dct, m2m, form_list): + dct = super(FileWizard, self).get_extra_model(dct, m2m, form_list) if not dct.get('numeric_reference'): current_ref = models.File.objects.filter(year=dct['year'])\ .aggregate(Max('numeric_reference'))["numeric_reference__max"] diff --git a/archaeological_finds/admin.py b/archaeological_finds/admin.py index 1513c7eeb..033d5bb96 100644 --- a/archaeological_finds/admin.py +++ b/archaeological_finds/admin.py @@ -157,7 +157,10 @@ admin_site.register(models.CommunicabilityType, HierarchicalTypeAdmin) class TreatmentTypeAdmin(GeneralTypeAdmin): list_display = HierarchicalTypeAdmin.list_display + [ - 'order', 'virtual', 'upstream_is_many', 'downstream_is_many'] + 'order', 'virtual', 'destructive', 'create_new_find', + 'upstream_is_many', 'downstream_is_many'] + list_filter = ['virtual', 'destructive', 'create_new_find', + 'upstream_is_many', 'downstream_is_many'] model = models.TreatmentType diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index b95ac90c6..90e1390bf 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -532,19 +532,20 @@ class QAFindFormMulti(QAForm): MULTI = True REPLACE_FIELDS = [ - 'qa_ue', 'qa_manufacturing_place', 'qa_checked_type', 'qa_check_date' + 'qa_denomination', 'qa_ue', 'qa_manufacturing_place', 'qa_checked_type', + 'qa_check_date' ] HEADERS = { 'qa_ue': FormHeader(_(u"Context record")), - 'qa_label': FormHeader(_(u"Identification")), + 'qa_denomination': FormHeader(_(u"Identification")), 'qa_description': FormHeader(_(u"Description")), 'qa_checked_type': FormHeader(_(u"Sheet")), 'qa_period': FormHeader(_(u"Datation")), } SINGLE_FIELDS = [ - 'qa_label', 'qa_denomination', 'qa_previous_id', + 'qa_label', 'qa_previous_id', 'qa_get_first_base_find__excavation_id', 'qa_museum_id', 'qa_seal_number', 'qa_mark' ] diff --git a/archaeological_finds/migrations/0040_auto_20181120_1027.py b/archaeological_finds/migrations/0040_auto_20181120_1027.py new file mode 100644 index 000000000..fd649dd8f --- /dev/null +++ b/archaeological_finds/migrations/0040_auto_20181120_1027.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-11-20 10:27 +from __future__ import unicode_literals + +from django.db import migrations, models + + +def init_create_new_find(apps, schema): + TreatmentType = apps.get_model('archaeological_finds', 'TreatmentType') + for tp in TreatmentType.objects.all(): + if (tp.upstream_is_many or tp.downstream_is_many) and not tp.virtual: + tp.create_new_find = True + tp.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_finds', '0039_auto_20181115_1649'), + ] + + operations = [ + migrations.AlterModelOptions( + name='treatment', + options={'ordering': ('start_date',), 'permissions': (('view_treatment', 'Can view all Treatments'), ('view_own_treatment', 'Can view own Treatment'), ('add_own_treatment', 'Can add own Treatment'), ('change_own_treatment', 'Can change own Treatment'), ('delete_own_treatment', 'Can delete own Treatment')), 'verbose_name': 'Treatment', 'verbose_name_plural': 'Treatments'}, + ), + migrations.AddField( + model_name='treatmenttype', + name='create_new_find', + field=models.BooleanField(default=False, help_text='If True when this treatment is applied a new version of the object will be created.', verbose_name='Create a new find'), + ), + migrations.RunPython(init_create_new_find) + ] diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index e856cb8ca..c7bd3f64e 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -92,6 +92,10 @@ class TreatmentType(HierarchicalType): order = models.IntegerField(_(u"Order"), default=10) virtual = models.BooleanField(_(u"Virtual")) destructive = models.BooleanField(_(u"Destructive"), default=False) + create_new_find = models.BooleanField( + _(u"Create a new find"), default=False, + help_text=_(u"If True when this treatment is applied a new version " + u"of the object will be created.")) upstream_is_many = models.BooleanField( _(u"Upstream is many"), default=False, help_text=_( diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index 68935f142..b1ad5fa41 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -74,7 +74,8 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, } # extra keys than can be passed to save method EXTRA_SAVED_KEYS = ('items', 'user', 'resulting_find', 'upstream_items', - 'resulting_finds', 'upstream_item') + 'resulting_finds', 'upstream_item', + 'treatment_type_list') # alternative names of fields for searches ALT_NAMES = { @@ -295,7 +296,8 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, if q.count(): self.index = q.all().aggregate(Max('index'))['index__max'] + 1 - def _create_n_1_resulting_find(self, resulting_find, upstream_items): + def _create_n_1_resulting_find(self, resulting_find, upstream_items, + treatment_types): """ Manage creation of n<->1 treatment """ @@ -319,6 +321,9 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, except TypeError: m2m_field.add(m2m[k]) + create_new_find = bool([tp for tp in treatment_types + if tp.create_new_find]) + dating_keys = ["period", "start_date", "end_date", "dating_type", "quality", "precise_dating"] current_datings = [] @@ -361,14 +366,19 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, new_find.data = update_data(new_find.data, upstream_item.data, merge=True) - upstream_item.downstream_treatment = self - upstream_item.history_modifier = self.history_modifier - upstream_item.save() + if create_new_find: + upstream_item.downstream_treatment = self + upstream_item.history_modifier = self.history_modifier + upstream_item.save() + else: + self.finds.add(upstream_item) + new_find.upstream_treatment = self new_find.skip_history_when_saving = True new_find.save() - def _create_1_n_resulting_find(self, resulting_finds, upstream_item, user): + def _create_1_n_resulting_find(self, resulting_finds, upstream_item, user, + treatment_types): """ Manage creation of 1<->n treatment """ @@ -384,9 +394,15 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, new_find.save() new_items.append(new_find) - upstream_item.downstream_treatment = self - upstream_item.skip_history_when_saving = True - upstream_item.save() + create_new_find = bool([tp for tp in treatment_types + if tp.create_new_find]) + + if create_new_find: + upstream_item.downstream_treatment = self + upstream_item.skip_history_when_saving = True + upstream_item.save() + else: + self.finds.add(upstream_item) if getattr(user, 'ishtaruser', None): b = FindBasket.objects.create( @@ -397,6 +413,7 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, def save(self, *args, **kwargs): items, user, extra_args_for_new, resulting_find = [], None, [], None upstream_items, upstream_item, resulting_finds = [], None, None + treatment_types = [] if "items" in kwargs: items = kwargs.pop('items') if "resulting_find" in kwargs: @@ -411,6 +428,8 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, user = kwargs.pop('user') if "extra_args_for_new" in kwargs: extra_args_for_new = kwargs.pop('extra_args_for_new') + if "treatment_type_list" in kwargs: + treatment_types = kwargs.pop('treatment_type_list') self.pre_save() super(Treatment, self).save(*args, **kwargs) updated = [] @@ -421,18 +440,20 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, upstream_items = upstream_items.items.all() if upstream_items and resulting_find: - self._create_n_1_resulting_find(resulting_find, upstream_items) + self._create_n_1_resulting_find(resulting_find, upstream_items, + treatment_types) return if upstream_item and resulting_finds: - self._create_1_n_resulting_find(resulting_finds, upstream_item, - self.history_modifier) + self._create_1_n_resulting_find( + resulting_finds, upstream_item, self.history_modifier, + treatment_types) return - tps = list(self.treatment_types.all()) - has_destructive_tp = bool([tp for tp in tps if tp.destructive]) + create_new_find = bool([tp for tp in treatment_types + if tp.create_new_find]) for item in items: - if not has_destructive_tp: + if not create_new_find: self.finds.add(item) else: new = item.duplicate(user) diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py index bd16a55de..29ca50056 100644 --- a/archaeological_finds/wizards.py +++ b/archaeological_finds/wizards.py @@ -86,8 +86,8 @@ class FindWizard(Wizard): (_(u"Context record"), unicode(current_cr))) return context - def get_extra_model(self, dct, form_list): - dct = super(FindWizard, self).get_extra_model(dct, form_list) + def get_extra_model(self, dct, m2m, form_list): + dct = super(FindWizard, self).get_extra_model(dct, m2m, form_list) dct['order'] = 1 if 'pk' in dct and type(dct['pk']) == ContextRecord: dct['base_finds__context_record'] = dct.pop('pk') @@ -125,6 +125,7 @@ class TreatmentBase(Wizard): model = models.Treatment wizard_done_window = reverse_lazy('show-treatment') base_url = "" + saved_args = {"treatment_type_list": []} def get_current_finds(self): step = self.steps.current @@ -158,10 +159,20 @@ class TreatmentBase(Wizard): initial['location'] = locations[0] return initial + def get_extra_model(self, dct, m2m, form_list): + dct = super(TreatmentBase, self).get_extra_model(dct, m2m, form_list) + dct['treatment_type_list'] = [] + for k, v in m2m: + if k == 'treatment_type': + if type(v) not in (list, tuple): + v = [v] + dct['treatment_type_list'] += v + return dct + class TreatmentWizard(TreatmentBase): basket_step = 'basetreatment-treatment_creation' - saved_args = {"items": []} + saved_args = {"items": [], "treatment_type_list": []} base_url = 'treatment_creation' def get_form_kwargs(self, step, **kwargs): @@ -171,11 +182,11 @@ class TreatmentWizard(TreatmentBase): kwargs['user'] = self.request.user return kwargs - def get_extra_model(self, dct, form_list): + def get_extra_model(self, dct, m2m, form_list): """ Get items concerned by the treatment """ - dct = super(TreatmentWizard, self).get_extra_model(dct, form_list) + dct = super(TreatmentWizard, self).get_extra_model(dct, m2m, form_list) if 'resulting_pk' in dct: dct['items'] = [] pks = dct.pop('resulting_pk').split(u',') @@ -203,7 +214,8 @@ class TreatmentModificationWizard(TreatmentWizard): class TreatmentN1Wizard(TreatmentBase): - saved_args = {"upstream_items": [], "resulting_find": None} + saved_args = {"upstream_items": [], "resulting_find": None, + "treatment_type_list": []} base_url = 'treatment_creation_n1' def _update_simple_initial_from_finds(self, initial, find, k): @@ -282,11 +294,12 @@ class TreatmentN1Wizard(TreatmentBase): initial.pop(k) return initial - def get_extra_model(self, dct, form_list): + def get_extra_model(self, dct, m2m, form_list): """ Get items concerned by the treatment """ - dct = super(TreatmentN1Wizard, self).get_extra_model(dct, form_list) + dct = super(TreatmentN1Wizard, self).get_extra_model( + dct, m2m, form_list) if 'resulting_pk' not in dct: return dct @@ -318,7 +331,8 @@ class TreatmentN1Wizard(TreatmentBase): class Treatment1NWizard(TreatmentBase): - saved_args = {"upstream_item": None, "resulting_finds": None} + saved_args = {"upstream_item": None, "resulting_finds": None, + "treatment_type_list": []} base_url = 'treatment_creation_1n' def get_form_kwargs(self, step, **kwargs): @@ -340,11 +354,12 @@ class Treatment1NWizard(TreatmentBase): initial['resultings_label'] = lbl + u"-" return initial - def get_extra_model(self, dct, form_list): + def get_extra_model(self, dct, m2m, form_list): """ Get items concerned by the treatment """ - dct = super(Treatment1NWizard, self).get_extra_model(dct, form_list) + dct = super(Treatment1NWizard, self).get_extra_model( + dct, m2m, form_list) if 'resulting_pk' not in dct: return dct @@ -373,7 +388,6 @@ class Treatment1NWizard(TreatmentBase): u"resulting items. This search have been pinned.") ).format(dct["resulting_finds"]["basket_name"]) ) - self.request.session["pin-search-find"] = u'{}="{}"'.format( unicode(pgettext("key for text search", u"basket")), dct["resulting_finds"]["basket_name"]) diff --git a/archaeological_operations/wizards.py b/archaeological_operations/wizards.py index de38beb95..798e622b4 100644 --- a/archaeological_operations/wizards.py +++ b/archaeological_operations/wizards.py @@ -332,7 +332,7 @@ class OperationAdministrativeActWizard(OperationWizard): except models.AdministrativeAct.DoesNotExist: return - def get_extra_model(self, dct, form_list): + def get_extra_model(self, dct, m2m, form_list): dct['history_modifier'] = self.request.user return dct diff --git a/archaeological_warehouse/wizards.py b/archaeological_warehouse/wizards.py index 8ee2c2972..a0d46e892 100644 --- a/archaeological_warehouse/wizards.py +++ b/archaeological_warehouse/wizards.py @@ -49,7 +49,7 @@ class PackagingWizard(TreatmentWizard): def save_model(self, dct, m2m, whole_associated_models, form_list, return_object): - dct = self.get_extra_model(dct, form_list) + dct = self.get_extra_model(dct, m2m, form_list) obj = self.get_current_saved_object() dct['location'] = dct['container'].location items = None diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index 7fd19f721..b3fc4b55a 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -439,7 +439,7 @@ class Wizard(IshtarWizard): datas.append((form.form_label, form_datas)) return datas - def get_extra_model(self, dct, form_list): + def get_extra_model(self, dct, m2m, form_list): dct['history_modifier'] = self.request.user return dct @@ -552,7 +552,7 @@ class Wizard(IshtarWizard): def save_model(self, dct, m2m, whole_associated_models, form_list, return_object): - dct = self.get_extra_model(dct, form_list) + dct = self.get_extra_model(dct, m2m, form_list) obj = self.get_current_saved_object() data = {} if obj and hasattr(obj, 'data'): @@ -1787,8 +1787,8 @@ class AccountWizard(Wizard): class SourceWizard(Wizard): model = None - def get_extra_model(self, dct, form_list): - dct = super(SourceWizard, self).get_extra_model(dct, form_list) + def get_extra_model(self, dct, m2m, form_list): + dct = super(SourceWizard, self).get_extra_model(dct, m2m, form_list) if 'history_modifier' in dct: dct.pop('history_modifier') return dct -- cgit v1.2.3 From 1d26450afa9124ca61397c46a91feff814c73582 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 21 Nov 2018 10:24:32 +0100 Subject: Update version --- version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/version.py b/version.py index 8885edb48..2245b0c8d 100644 --- a/version.py +++ b/version.py @@ -1,5 +1,5 @@ -# 2.1.dev.17 -VERSION = (2, 1, 'dev', 17) +# 2.1.dev.18 +VERSION = (2, 1, 'dev', 18) def get_version(): -- cgit v1.2.3 From 59d1938d45346aea74746e56d634e81a53cb2015 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 21 Nov 2018 11:14:36 +0100 Subject: Update translations --- archaeological_finds/locale/django.pot | 1050 ++++++++++++++------------ archaeological_warehouse/locale/django.pot | 118 +-- ishtar_common/locale/django.pot | 676 ++++++++--------- translations/de/ishtar_common.po | 674 ++++++++--------- translations/fr/archaeological_finds.po | 1073 +++++++++++++++------------ translations/fr/archaeological_warehouse.po | 118 +-- translations/fr/ishtar_common.po | 676 ++++++++--------- 7 files changed, 2319 insertions(+), 2066 deletions(-) diff --git a/archaeological_finds/locale/django.pot b/archaeological_finds/locale/django.pot index 4ca54a290..82d4bfd4c 100644 --- a/archaeological_finds/locale/django.pot +++ b/archaeological_finds/locale/django.pot @@ -9,607 +9,639 @@ msgid "" msgstr "" -#: admin.py:39 models_finds.py:288 +#: admin.py:39 models_finds.py:293 msgid "Point (2D)" msgstr "" -#: admin.py:41 models_finds.py:290 +#: admin.py:41 models_finds.py:295 msgid "Line" msgstr "" -#: admin.py:43 models_finds.py:291 +#: admin.py:43 models_finds.py:296 msgid "Multi polygon" msgstr "" -#: forms.py:91 forms.py:97 forms.py:340 forms.py:353 forms.py:631 -#: models_finds.py:660 models_finds.py:1213 wizards.py:75 +#: forms.py:95 forms.py:101 forms.py:540 forms.py:553 forms.py:831 +#: models_finds.py:674 models_finds.py:1233 wizards.py:86 msgid "Context record" msgstr "" -#: forms.py:92 +#: forms.py:96 msgid "Find - 010 - Context record choice" msgstr "" -#: forms.py:126 ishtar_menu.py:32 models_finds.py:1089 models_finds.py:1717 -#: models_treatments.py:349 templates/ishtar/sheet_find.html:4 +#: forms.py:133 forms.py:255 ishtar_menu.py:32 models_finds.py:1106 +#: models_finds.py:1739 models_treatments.py:511 +#: templates/ishtar/sheet_find.html:4 msgid "Find" msgstr "" -#: forms.py:127 -msgid "Find - 020 - General" +#: forms.py:134 +#| msgid "Find - 020 - General" +msgid "Simple find - 020 - General" msgstr "" -#: forms.py:142 forms.py:341 templates/ishtar/sheet_find.html:40 +#: forms.py:156 forms.py:395 forms.py:541 templates/ishtar/sheet_find.html:110 msgid "Identification" msgstr "" -#: forms.py:145 forms.py:360 forms.py:600 forms.py:889 models_finds.py:253 -#: models_finds.py:968 +#: forms.py:159 forms.py:398 forms.py:560 forms.py:800 forms.py:1089 +#: models_finds.py:258 models_finds.py:985 msgid "Free ID" msgstr "" -#: forms.py:147 forms.py:362 forms.py:601 forms.py:932 models_finds.py:969 +#: forms.py:161 forms.py:400 forms.py:562 forms.py:801 forms.py:1154 +#: models_finds.py:986 msgid "Denomination" msgstr "" -#: forms.py:148 forms.py:363 models_finds.py:1042 +#: forms.py:162 forms.py:563 models_finds.py:1059 msgid "Previous ID" msgstr "" -#: forms.py:150 forms.py:365 models_finds.py:257 -msgid "Excavation ID" -msgstr "" - -#: forms.py:151 forms.py:366 models_finds.py:970 +#: forms.py:163 forms.py:566 models_finds.py:987 msgid "Museum ID" msgstr "" -#: forms.py:152 forms.py:367 models_finds.py:965 +#: forms.py:164 forms.py:567 models_finds.py:982 msgid "Seal number" msgstr "" -#: forms.py:153 forms.py:368 models_finds.py:1038 +#: forms.py:165 forms.py:568 models_finds.py:1055 msgid "Mark" msgstr "" -#: forms.py:155 forms.py:156 forms.py:342 forms.py:371 forms.py:652 -#: forms_treatments.py:139 models_finds.py:258 models_finds.py:971 -#: models_treatments.py:146 templates/ishtar/sheet_find.html:58 +#: forms.py:167 forms.py:168 forms.py:403 forms.py:405 forms.py:542 +#: forms.py:571 forms.py:852 forms_treatments.py:143 models_finds.py:263 +#: models_finds.py:988 models_treatments.py:150 +#: templates/ishtar/sheet_find.html:128 msgid "Description" msgstr "" -#: forms.py:159 models_finds.py:265 -msgid "Discovery date (exact or TPQ)" -msgstr "" - -#: forms.py:162 models_finds.py:267 templates/ishtar/sheet_basefind.html:29 -msgid "Discovery date (TAQ)" -msgstr "" - -#: forms.py:164 forms.py:654 models_finds.py:269 -msgid "Batch/object" -msgstr "" - -#: forms.py:166 models_finds.py:1003 +#: forms.py:170 forms.py:407 models_finds.py:1020 msgid "Is complete?" msgstr "" -#: forms.py:169 forms.py:373 models_finds.py:57 models_finds.py:685 -#: models_finds.py:977 +#: forms.py:173 forms.py:409 forms.py:573 models_finds.py:57 +#: models_finds.py:699 models_finds.py:994 msgid "Material types" msgstr "" -#: forms.py:172 models_finds.py:982 +#: forms.py:176 forms.py:412 models_finds.py:999 msgid "Material type quality" msgstr "" -#: forms.py:174 forms.py:376 models_finds.py:152 models_finds.py:686 -#: models_finds.py:1006 +#: forms.py:178 forms.py:414 forms.py:576 models_finds.py:157 +#: models_finds.py:700 models_finds.py:1023 msgid "Object types" msgstr "" -#: forms.py:177 models_finds.py:1011 +#: forms.py:181 forms.py:417 models_finds.py:1028 msgid "Object type quality" msgstr "" -#: forms.py:178 forms.py:896 models_finds.py:989 +#: forms.py:182 forms.py:419 forms.py:1096 models_finds.py:1006 msgid "Find number" msgstr "" -#: forms.py:180 models_finds.py:1024 +#: forms.py:184 forms.py:421 models_finds.py:1041 msgid "Minimum number of individuals (MNI)" msgstr "" -#: forms.py:182 models_finds.py:972 +#: forms.py:186 forms.py:424 models_finds.py:989 msgid "Decoration" msgstr "" -#: forms.py:184 models_finds.py:973 +#: forms.py:188 forms.py:426 models_finds.py:990 msgid "Inscription" msgstr "" -#: forms.py:187 forms.py:379 models_finds.py:975 +#: forms.py:191 forms.py:428 forms.py:579 models_finds.py:992 msgid "Manufacturing place" msgstr "" -#: forms.py:189 forms.py:381 models_finds.py:1021 +#: forms.py:193 forms.py:430 forms.py:581 models_finds.py:1038 msgid "Communicability" msgstr "" -#: forms.py:191 forms.py:384 forms.py:955 forms_treatments.py:141 -#: forms_treatments.py:578 models_finds.py:259 models_finds.py:1039 -#: models_treatments.py:145 models_treatments.py:609 +#: forms.py:195 forms.py:432 forms.py:584 forms.py:1177 forms_treatments.py:145 +#: forms_treatments.py:606 models_finds.py:264 models_finds.py:1056 +#: models_treatments.py:149 models_treatments.py:771 msgid "Comment" msgstr "" -#: forms.py:194 forms.py:394 models_finds.py:1040 +#: forms.py:198 forms.py:435 forms.py:594 models_finds.py:1057 msgid "Comment on dating" msgstr "" -#: forms.py:196 templates/ishtar/sheet_find.html:76 +#: forms.py:200 forms.py:437 templates/ishtar/sheet_find.html:146 msgid "Dimensions" msgstr "" -#: forms.py:197 models_finds.py:1025 +#: forms.py:201 forms.py:438 models_finds.py:1042 msgid "Length (cm)" msgstr "" -#: forms.py:198 models_finds.py:1026 +#: forms.py:202 forms.py:439 models_finds.py:1043 msgid "Width (cm)" msgstr "" -#: forms.py:199 models_finds.py:1027 +#: forms.py:203 forms.py:440 models_finds.py:1044 msgid "Height (cm)" msgstr "" -#: forms.py:200 models_finds.py:1028 +#: forms.py:204 forms.py:441 models_finds.py:1045 msgid "Diameter (cm)" msgstr "" -#: forms.py:201 models_finds.py:1029 +#: forms.py:205 forms.py:442 models_finds.py:1046 msgid "Thickness (cm)" msgstr "" -#: forms.py:202 forms.py:894 models_finds.py:985 +#: forms.py:206 forms.py:443 forms.py:1094 models_finds.py:1002 msgid "Volume (l)" msgstr "" -#: forms.py:203 forms.py:895 templates/ishtar/sheet_find.html:84 +#: forms.py:207 forms.py:444 forms.py:1095 templates/ishtar/sheet_find.html:154 msgid "Weight (g)" msgstr "" -#: forms.py:205 +#: forms.py:209 forms.py:446 msgid "Clutter long side (cm)" msgstr "" -#: forms.py:207 +#: forms.py:211 forms.py:448 msgid "Clutter short side (cm)" msgstr "" -#: forms.py:209 +#: forms.py:213 forms.py:450 msgid "Clutter height (cm)" msgstr "" -#: forms.py:211 models_finds.py:1036 +#: forms.py:215 forms.py:452 models_finds.py:1053 msgid "Dimensions comment" msgstr "" -#: forms.py:214 templates/ishtar/sheet_basefind.html:46 -#: templates/ishtar/sheet_basefind.html:50 +#: forms.py:217 forms.py:454 forms.py:543 +#: templates/ishtar/sheet_basefind.html:70 templates/ishtar/sheet_find.html:163 +msgid "Sheet" +msgstr "" + +#: forms.py:218 forms.py:455 forms.py:587 forms.py:855 models_finds.py:1061 +msgid "Check" +msgstr "" + +#: forms.py:220 forms.py:458 forms.py:589 models_finds.py:1063 +msgid "Check date" +msgstr "" + +#: forms.py:247 +msgid "Clutter: short side cannot be bigger than the long side." +msgstr "" + +#: forms.py:256 +msgid "Find - 020 - General" +msgstr "" + +#: forms.py:285 forms.py:565 models_finds.py:262 +msgid "Excavation ID" +msgstr "" + +#: forms.py:288 models_finds.py:270 +msgid "Discovery date (exact or TPQ)" +msgstr "" + +#: forms.py:291 models_finds.py:272 templates/ishtar/sheet_basefind.html:33 +msgid "Discovery date (TAQ)" +msgstr "" + +#: forms.py:293 forms.py:854 models_finds.py:274 +msgid "Batch/object" +msgstr "" + +#: forms.py:296 templates/ishtar/sheet_basefind.html:50 +#: templates/ishtar/sheet_basefind.html:54 msgid "Coordinates" msgstr "" -#: forms.py:215 models_finds.py:276 +#: forms.py:297 models_finds.py:281 msgid "X" msgstr "" -#: forms.py:217 models_finds.py:279 +#: forms.py:299 models_finds.py:284 msgid "Estimated error for X" msgstr "" -#: forms.py:218 models_finds.py:277 +#: forms.py:300 models_finds.py:282 msgid "Y" msgstr "" -#: forms.py:220 models_finds.py:281 +#: forms.py:302 models_finds.py:286 msgid "Estimated error for Y" msgstr "" -#: forms.py:221 models_finds.py:278 +#: forms.py:303 models_finds.py:283 msgid "Z" msgstr "" -#: forms.py:223 models_finds.py:283 +#: forms.py:305 models_finds.py:288 msgid "Estimated error for Z" msgstr "" -#: forms.py:225 models_finds.py:286 +#: forms.py:307 models_finds.py:291 msgid "Spatial Reference System" msgstr "" -#: forms.py:228 models_finds.py:274 +#: forms.py:310 models_finds.py:279 msgid "Point of topographic reference" msgstr "" -#: forms.py:232 forms.py:343 templates/ishtar/sheet_basefind.html:66 -#: templates/ishtar/sheet_find.html:93 -msgid "Sheet" +#: forms.py:338 +msgid "" +"Discovery date: if a TAQ date is provided a TPQ date has to be informed. If " +"you have a precise date fill only the TPQ - discovery date field." msgstr "" -#: forms.py:233 forms.py:387 forms.py:655 models_finds.py:1044 -msgid "Check" +#: forms.py:344 +msgid "Discovery date: TAQ date must be older than TPQ date." msgstr "" -#: forms.py:235 forms.py:389 models_finds.py:1046 -msgid "Check date" +#: forms.py:360 +msgid "You should at least provide X, Y and the spatial reference system used." msgstr "" -#: forms.py:274 -msgid "" -"Discovery date: if a TAQ date is provided a TPQ date has to be informed. If " -"you have a precise date fill only the TPQ - discovery date field." +#: forms.py:369 +msgid "Coordinates are not relevant for the spatial reference system used: {}." msgstr "" -#: forms.py:280 -msgid "Discovery date: TAQ date must be older than TPQ date." +#: forms.py:382 forms.py:1086 +msgid "Resulting find" msgstr "" -#: forms.py:290 -msgid "Clutter: short side cannot be bigger than the long side." +#: forms.py:383 +#| msgid "Treatment - 010 - Request choice" +msgid "Treatment n-1 - 030 - Resulting find" msgstr "" -#: forms.py:307 -msgid "You should at least provide X, Y and the spatial reference system used." +#: forms.py:477 forms.py:1105 +msgid "Resulting finds" msgstr "" -#: forms.py:316 -msgid "Coordinates are not relevant for the spatial reference system used: {}." +#: forms.py:478 +#| msgid "Treatment - 010 - Request choice" +msgid "Treatment 1-n - 030 - Resulting finds" +msgstr "" + +#: forms.py:483 +#| msgid "Resulting finds" +msgid "Number of resulting finds" +msgstr "" + +#: forms.py:487 +msgid "Prefix label for resulting finds" msgstr "" -#: forms.py:322 +#: forms.py:490 +msgid "" +"E.g.: with a prefix \"item-\", each resulting item will be named \"item-1\", " +"\"item-2\", \"item-3\"" +msgstr "" + +#: forms.py:494 +msgid "Numbering starting from" +msgstr "" + +#: forms.py:497 +msgid "Name of the new basket containing the resulting items" +msgstr "" + +#: forms.py:515 forms.py:681 +msgid "A basket with this label already exists." +msgstr "" + +#: forms.py:521 msgid "Find - Quick action - Modify" msgstr "" -#: forms.py:344 +#: forms.py:544 msgid "Datation" msgstr "" -#: forms.py:392 forms.py:565 forms.py:641 templates/ishtar/sheet_find.html:123 +#: forms.py:592 forms.py:765 forms.py:841 templates/ishtar/sheet_find.html:195 msgid "Period" msgstr "" -#: forms.py:436 +#: forms.py:636 msgid "Find - Quick action - Modify single" msgstr "" -#: forms.py:449 +#: forms.py:649 msgid "Create" msgstr "" -#: forms.py:450 +#: forms.py:650 msgid "Update" msgstr "" -#: forms.py:452 forms.py:636 forms.py:982 forms.py:986 forms_treatments.py:180 -#: ishtar_menu.py:57 models_finds.py:926 -#: templates/ishtar/sheet_findbasket.html:4 views.py:646 +#: forms.py:652 forms.py:836 forms.py:1204 forms.py:1208 ishtar_menu.py:57 +#: models_finds.py:943 templates/ishtar/sheet_findbasket.html:4 views.py:694 +#: wizards.py:353 msgid "Basket" msgstr "" -#: forms.py:474 +#: forms.py:674 msgid "On update, you have to select a basket." msgstr "" -#: forms.py:478 +#: forms.py:678 msgid "A label is required." msgstr "" -#: forms.py:481 -msgid "A basket with this label already exists." -msgstr "" - -#: forms.py:498 templates/ishtar/sheet_find.html:102 +#: forms.py:698 templates/ishtar/sheet_find.html:174 msgid "Preservation" msgstr "" -#: forms.py:499 +#: forms.py:699 msgid "Find - 030 - Preservation" msgstr "" -#: forms.py:513 forms.py:648 models_finds.py:1015 +#: forms.py:713 forms.py:848 models_finds.py:1032 msgid "Integrity / interest" msgstr "" -#: forms.py:516 forms.py:650 models_finds.py:1018 +#: forms.py:716 forms.py:850 models_finds.py:1035 msgid "Remarkability" msgstr "" -#: forms.py:518 forms.py:646 models_finds.py:1056 +#: forms.py:718 forms.py:846 models_finds.py:1073 msgid "Conservatory state" msgstr "" -#: forms.py:521 models_finds.py:1065 +#: forms.py:721 models_finds.py:1082 msgid "Alteration" msgstr "" -#: forms.py:524 models_finds.py:1069 +#: forms.py:724 models_finds.py:1086 msgid "Alteration cause" msgstr "" -#: forms.py:527 models_finds.py:1062 +#: forms.py:727 models_finds.py:1079 msgid "Recommended treatments" msgstr "" -#: forms.py:529 models_finds.py:1073 +#: forms.py:729 models_finds.py:1090 msgid "Treatment emergency" msgstr "" -#: forms.py:531 models_finds.py:1048 +#: forms.py:731 models_finds.py:1065 msgid "Estimated value" msgstr "" -#: forms.py:532 models_finds.py:1076 +#: forms.py:732 models_finds.py:1093 msgid "Insurance value" msgstr "" -#: forms.py:534 models_finds.py:1078 +#: forms.py:734 models_finds.py:1095 msgid "Appraisal date" msgstr "" -#: forms.py:536 models_finds.py:1058 +#: forms.py:736 models_finds.py:1075 msgid "Conservatory comment" msgstr "" -#: forms.py:560 forms.py:584 models_finds.py:997 -#: templates/ishtar/sheet_find.html:119 +#: forms.py:760 forms.py:784 models_finds.py:1014 +#: templates/ishtar/sheet_find.html:191 msgid "Dating" msgstr "" -#: forms.py:566 forms_treatments.py:143 forms_treatments.py:370 -#: forms_treatments.py:580 models_finds.py:1722 models_treatments.py:148 -#: models_treatments.py:360 templates/ishtar/sheet_find.html:124 -#: templates/ishtar/sheet_find.html:185 templates/ishtar/sheet_find.html:223 +#: forms.py:766 forms_treatments.py:131 forms_treatments.py:398 +#: forms_treatments.py:608 models_finds.py:1744 models_treatments.py:152 +#: models_treatments.py:522 templates/ishtar/sheet_find.html:196 +#: templates/ishtar/sheet_find.html:254 templates/ishtar/sheet_find.html:291 +#: templates/ishtar/sheet_find.html:329 msgid "Start date" msgstr "" -#: forms.py:568 models_finds.py:1723 models_treatments.py:361 -#: templates/ishtar/sheet_find.html:125 templates/ishtar/sheet_find.html:186 -#: templates/ishtar/sheet_find.html:224 +#: forms.py:768 models_finds.py:1745 models_treatments.py:523 +#: templates/ishtar/sheet_find.html:197 templates/ishtar/sheet_find.html:255 +#: templates/ishtar/sheet_find.html:292 templates/ishtar/sheet_find.html:330 msgid "End date" msgstr "" -#: forms.py:569 templates/ishtar/sheet_find.html:127 +#: forms.py:769 templates/ishtar/sheet_find.html:199 msgid "Quality" msgstr "" -#: forms.py:571 templates/ishtar/sheet_find.html:126 +#: forms.py:771 templates/ishtar/sheet_find.html:198 msgid "Dating type" msgstr "" -#: forms.py:573 templates/ishtar/sheet_find.html:128 +#: forms.py:773 templates/ishtar/sheet_find.html:200 msgid "Precise dating" msgstr "" -#: forms.py:585 +#: forms.py:785 msgid "Find - 040 - Dating" msgstr "" -#: forms.py:592 +#: forms.py:792 msgid "Find - 001 - Search" msgstr "" -#: forms.py:595 forms.py:928 forms_treatments.py:50 forms_treatments.py:419 -#: forms_treatments.py:493 forms_treatments.py:686 +#: forms.py:795 forms.py:1150 forms_treatments.py:50 forms_treatments.py:447 +#: forms_treatments.py:521 forms_treatments.py:714 msgid "Full text search" msgstr "" -#: forms.py:598 models_finds.py:294 +#: forms.py:798 models_finds.py:299 msgid "Short ID" msgstr "" -#: forms.py:599 models_finds.py:297 +#: forms.py:799 models_finds.py:302 msgid "Complete ID" msgstr "" -#: forms.py:604 forms_treatments.py:56 forms_treatments.py:101 -#: forms_treatments.py:295 forms_treatments.py:423 forms_treatments.py:498 -#: forms_treatments.py:550 forms_treatments.py:690 models_treatments.py:122 -#: models_treatments.py:582 +#: forms.py:804 forms_treatments.py:56 forms_treatments.py:102 +#: forms_treatments.py:323 forms_treatments.py:451 forms_treatments.py:526 +#: forms_treatments.py:578 forms_treatments.py:718 models_treatments.py:126 +#: models_treatments.py:744 msgid "Year" msgstr "" -#: forms.py:606 +#: forms.py:806 msgid "Operation's number (index by year)" msgstr "" -#: forms.py:609 +#: forms.py:809 msgid "Code PATRIARCHE" msgstr "" -#: forms.py:613 +#: forms.py:813 msgid "Operation type" msgstr "" -#: forms.py:616 +#: forms.py:816 msgid "Areas" msgstr "" -#: forms.py:619 +#: forms.py:819 msgid "Archaeological site (attached to the operation)" msgstr "" -#: forms.py:625 +#: forms.py:825 msgid "Archaeological site (attached to the context record)" msgstr "" -#: forms.py:638 +#: forms.py:838 msgid "Search within related operations" msgstr "" -#: forms.py:640 +#: forms.py:840 msgid "Search within related context records" msgstr "" -#: forms.py:642 forms.py:893 models_finds.py:56 +#: forms.py:842 forms.py:1093 models_finds.py:56 msgid "Material type" msgstr "" -#: forms.py:643 models_finds.py:151 +#: forms.py:843 models_finds.py:156 msgid "Object type" msgstr "" -#: forms.py:645 +#: forms.py:845 msgid "Preservation type" msgstr "" -#: forms.py:656 forms_treatments.py:59 +#: forms.py:856 forms_treatments.py:59 msgid "Has an image?" msgstr "" -#: forms.py:703 +#: forms.py:903 msgid "Warehouse (location)" msgstr "" -#: forms.py:709 +#: forms.py:909 msgid "Warehouse (responsible)" msgstr "" -#: forms.py:714 +#: forms.py:914 msgid "Container ID" msgstr "" -#: forms.py:715 +#: forms.py:915 msgid "Container ref." msgstr "" -#: forms.py:720 forms.py:744 views.py:185 +#: forms.py:920 forms.py:944 views.py:185 msgid "Find search" msgstr "" -#: forms.py:769 models_treatments.py:258 -#: templates/ishtar/sheet_treatment.html:56 +#: forms.py:969 forms.py:1114 models_treatments.py:271 +#: templates/ishtar/sheet_treatment.html:61 msgid "Upstream finds" msgstr "" -#: forms.py:771 models_finds.py:1090 +#: forms.py:971 models_finds.py:1107 models_treatments.py:156 #: templates/ishtar/forms/qa_find_treatment.html:11 msgid "Finds" msgstr "" -#: forms.py:783 +#: forms.py:983 msgid "You should at least select one archaeological find." msgstr "" -#: forms.py:886 -msgid "Resulting find" -msgstr "" - -#: forms.py:891 +#: forms.py:1091 msgid "Precise description" msgstr "" -#: forms.py:905 -msgid "Resulting finds" -msgstr "" - -#: forms.py:910 +#: forms.py:1110 msgid "Would you like to delete this find?" msgstr "" -#: forms.py:914 models_treatments.py:68 -msgid "Upstream find" -msgstr "" - -#: forms.py:925 +#: forms.py:1147 msgid "Find basket - 001 - Search" msgstr "" -#: forms.py:937 views.py:122 +#: forms.py:1159 views.py:122 msgid "Basket search" msgstr "" -#: forms.py:951 +#: forms.py:1173 msgid "Find basket" msgstr "" -#: forms.py:953 forms_treatments.py:54 forms_treatments.py:97 -#: models_treatments.py:118 templates/ishtar/sheet_find.html:179 -#: templates/ishtar/sheet_find.html:217 +#: forms.py:1175 forms_treatments.py:54 forms_treatments.py:124 +#: models_treatments.py:122 templates/ishtar/sheet_find.html:248 +#: templates/ishtar/sheet_find.html:285 templates/ishtar/sheet_find.html:323 msgid "Label" msgstr "" -#: forms.py:972 +#: forms.py:1194 msgid "Another basket already exists with this name." msgstr "" -#: forms_treatments.py:55 forms_treatments.py:100 models_treatments.py:120 +#: forms_treatments.py:55 forms_treatments.py:127 models_treatments.py:124 msgid "Other ref." msgstr "" -#: forms_treatments.py:57 forms_treatments.py:232 forms_treatments.py:424 -#: forms_treatments.py:486 forms_treatments.py:499 forms_treatments.py:603 -#: forms_treatments.py:691 forms_treatments.py:758 models_treatments.py:123 -#: models_treatments.py:583 +#: forms_treatments.py:57 forms_treatments.py:260 forms_treatments.py:452 +#: forms_treatments.py:514 forms_treatments.py:527 forms_treatments.py:631 +#: forms_treatments.py:719 forms_treatments.py:786 models_treatments.py:127 +#: models_treatments.py:745 msgid "Index" msgstr "" -#: forms_treatments.py:58 forms_treatments.py:106 forms_treatments.py:378 -#: forms_treatments.py:440 models_finds.py:106 models_treatments.py:128 -#: models_treatments.py:359 +#: forms_treatments.py:58 forms_treatments.py:98 forms_treatments.py:406 +#: forms_treatments.py:468 models_finds.py:111 models_treatments.py:132 +#: models_treatments.py:521 msgid "Treatment type" msgstr "" -#: forms_treatments.py:71 views.py:420 +#: forms_treatments.py:71 views.py:439 msgid "Treatment search" msgstr "" -#: forms_treatments.py:83 -msgid "Base treatment" +#: forms_treatments.py:83 ishtar_menu.py:147 models_treatments.py:178 +#: models_treatments.py:513 templates/ishtar/sheet_treatment.html:4 +msgid "Treatment" msgstr "" #: forms_treatments.py:84 msgid "Treatment - 020 - General" msgstr "" -#: forms_treatments.py:108 models_treatments.py:70 models_treatments.py:130 -#: templates/ishtar/sheet_find.html:181 templates/ishtar/sheet_find.html:219 +#: forms_treatments.py:100 models_treatments.py:72 models_treatments.py:134 +#: templates/ishtar/sheet_find.html:250 templates/ishtar/sheet_find.html:287 +#: templates/ishtar/sheet_find.html:325 msgid "State" msgstr "" -#: forms_treatments.py:110 -msgid "Target" +#: forms_treatments.py:107 models_treatments.py:137 models_treatments.py:524 +msgid "Location" msgstr "" -#: forms_treatments.py:112 forms_treatments.py:301 forms_treatments.py:561 -#: models_treatments.py:71 models_treatments.py:138 +#: forms_treatments.py:113 forms_treatments.py:329 forms_treatments.py:589 +#: models_treatments.py:73 models_treatments.py:142 msgid "Responsible" msgstr "" -#: forms_treatments.py:118 forms_treatments.py:307 models_treatments.py:141 +#: forms_treatments.py:119 forms_treatments.py:335 models_treatments.py:145 msgid "Organization" msgstr "" -#: forms_treatments.py:124 models_treatments.py:133 models_treatments.py:362 -msgid "Location" +#: forms_treatments.py:133 forms_treatments.py:398 forms_treatments.py:614 +#: forms_treatments.py:667 models_treatments.py:153 models_treatments.py:765 +msgid "Closing date" msgstr "" -#: forms_treatments.py:130 +#: forms_treatments.py:136 msgid "Container (relevant for packaging)" msgstr "" -#: forms_treatments.py:136 forms_treatments.py:557 -msgid "External ref." -msgstr "" - -#: forms_treatments.py:137 models_treatments.py:147 +#: forms_treatments.py:141 models_treatments.py:151 msgid "Goal" msgstr "" -#: forms_treatments.py:145 forms_treatments.py:370 forms_treatments.py:586 -#: forms_treatments.py:639 models_treatments.py:149 models_treatments.py:603 -msgid "Closing date" -msgstr "" - #: forms_treatments.py:147 #, python-brace-format msgid "Estimated cost ({currency})" @@ -630,232 +662,244 @@ msgstr "" msgid "Insurance cost ({currency})" msgstr "" -#: forms_treatments.py:180 -msgid "Single find" -msgstr "" - -#: forms_treatments.py:204 +#: forms_treatments.py:206 msgid "" "The container field is attached to the treatment. If no packaging treatment " "is done it is not relevant." msgstr "" -#: forms_treatments.py:209 +#: forms_treatments.py:211 msgid "If a packaging treatment is done, the container field must be filled." msgstr "" -#: forms_treatments.py:213 +#: forms_treatments.py:215 msgid "A responsible or an organization must be defined." msgstr "" -#: forms_treatments.py:256 +#: forms_treatments.py:234 +#| msgid "Treatment - 020 - General" +msgid "Treatment n-1 - 020 - General" +msgstr "" + +#: forms_treatments.py:247 +#| msgid "Treatment - 020 - General" +msgid "Treatment 1-n - 020 - General" +msgstr "" + +#: forms_treatments.py:284 msgid "Another treatment with this index exists for {}." msgstr "" -#: forms_treatments.py:262 models_treatments.py:126 +#: forms_treatments.py:290 models_treatments.py:130 msgid "Associated request" msgstr "" -#: forms_treatments.py:263 +#: forms_treatments.py:291 msgid "Treatment - 010 - Request choice" msgstr "" -#: forms_treatments.py:268 forms_treatments.py:541 ishtar_menu.py:95 -#: models_treatments.py:618 models_treatments.py:646 -#: templates/ishtar/sheet_treatmentfile.html:4 wizards.py:207 +#: forms_treatments.py:296 forms_treatments.py:569 ishtar_menu.py:95 +#: models_treatments.py:780 models_treatments.py:808 +#: templates/ishtar/sheet_treatmentfile.html:4 wizards.py:457 msgid "Treatment request" msgstr "" -#: forms_treatments.py:277 +#: forms_treatments.py:305 msgid "" "Are you sure you want to delete this treatment? All changes made to the " "associated finds since this treatment record will be lost!" msgstr "" -#: forms_treatments.py:280 +#: forms_treatments.py:308 msgid "Would you like to delete this treatment?" msgstr "" -#: forms_treatments.py:285 models_finds.py:683 models_finds.py:1000 -#: models_treatments.py:150 models_treatments.py:363 -#: templates/ishtar/sheet_find.html:184 templates/ishtar/sheet_find.html:222 +#: forms_treatments.py:313 models_finds.py:697 models_finds.py:1017 +#: models_treatments.py:158 models_treatments.py:525 +#: templates/ishtar/sheet_find.html:253 templates/ishtar/sheet_find.html:290 +#: templates/ishtar/sheet_find.html:328 msgid "Container" msgstr "" -#: forms_treatments.py:291 +#: forms_treatments.py:319 msgid "Create a treatment" msgstr "" -#: forms_treatments.py:298 +#: forms_treatments.py:326 msgid "Precise date" msgstr "" -#: forms_treatments.py:340 +#: forms_treatments.py:368 msgid "At least a year is required." msgstr "" -#: forms_treatments.py:369 +#: forms_treatments.py:397 msgid "months" msgstr "" -#: forms_treatments.py:369 +#: forms_treatments.py:397 msgid "years" msgstr "" -#: forms_treatments.py:374 forms_treatments.py:643 +#: forms_treatments.py:402 forms_treatments.py:671 msgid "Slicing" msgstr "" -#: forms_treatments.py:377 forms_treatments.py:646 +#: forms_treatments.py:405 forms_treatments.py:674 msgid "Date get from" msgstr "" -#: forms_treatments.py:380 forms_treatments.py:649 +#: forms_treatments.py:408 forms_treatments.py:677 msgid "Date after" msgstr "" -#: forms_treatments.py:382 forms_treatments.py:651 +#: forms_treatments.py:410 forms_treatments.py:679 msgid "Date before" msgstr "" -#: forms_treatments.py:425 forms_treatments.py:475 forms_treatments.py:692 -#: forms_treatments.py:747 +#: forms_treatments.py:453 forms_treatments.py:503 forms_treatments.py:720 +#: forms_treatments.py:775 msgid "Act type" msgstr "" -#: forms_treatments.py:426 forms_treatments.py:693 +#: forms_treatments.py:454 forms_treatments.py:721 msgid "Indexed?" msgstr "" -#: forms_treatments.py:427 forms_treatments.py:694 +#: forms_treatments.py:455 forms_treatments.py:722 msgid "Object" msgstr "" -#: forms_treatments.py:431 forms_treatments.py:698 +#: forms_treatments.py:459 forms_treatments.py:726 msgid "Signature date after" msgstr "" -#: forms_treatments.py:433 forms_treatments.py:700 +#: forms_treatments.py:461 forms_treatments.py:728 msgid "Signature date before" msgstr "" -#: forms_treatments.py:435 +#: forms_treatments.py:463 msgid "Treatment name" msgstr "" -#: forms_treatments.py:436 +#: forms_treatments.py:464 msgid "Treatment year" msgstr "" -#: forms_treatments.py:437 +#: forms_treatments.py:465 msgid "Treatment index" msgstr "" -#: forms_treatments.py:439 +#: forms_treatments.py:467 msgid "Treatment internal reference" msgstr "" -#: forms_treatments.py:443 forms_treatments.py:714 +#: forms_treatments.py:471 forms_treatments.py:742 msgid "Modified by" msgstr "" -#: forms_treatments.py:473 +#: forms_treatments.py:501 msgid "Treatment - Administrative act - General" msgstr "" -#: forms_treatments.py:496 forms_treatments.py:548 models_treatments.py:588 +#: forms_treatments.py:524 forms_treatments.py:576 models_treatments.py:750 msgid "Name" msgstr "" -#: forms_treatments.py:497 forms_treatments.py:555 +#: forms_treatments.py:525 forms_treatments.py:583 msgid "Internal ref." msgstr "" -#: forms_treatments.py:500 forms_treatments.py:559 models_treatments.py:69 -#: templates/ishtar/sheet_find.html:180 templates/ishtar/sheet_find.html:218 +#: forms_treatments.py:528 forms_treatments.py:587 models_treatments.py:71 +#: templates/ishtar/sheet_find.html:249 templates/ishtar/sheet_find.html:286 +#: templates/ishtar/sheet_find.html:324 msgid "Type" msgstr "" -#: forms_treatments.py:503 +#: forms_treatments.py:531 msgid "In charge" msgstr "" -#: forms_treatments.py:509 forms_treatments.py:567 models_treatments.py:597 +#: forms_treatments.py:537 forms_treatments.py:595 models_treatments.py:759 #: templates/ishtar/sheet_treatmentfile.html:45 msgid "Applicant" msgstr "" -#: forms_treatments.py:515 forms_treatments.py:573 models_treatments.py:601 +#: forms_treatments.py:543 forms_treatments.py:601 models_treatments.py:763 #: templates/ishtar/sheet_treatmentfile.html:53 msgid "Applicant organisation" msgstr "" -#: forms_treatments.py:529 views.py:524 +#: forms_treatments.py:557 views.py:572 msgid "Treatment request search" msgstr "" -#: forms_treatments.py:584 forms_treatments.py:638 models_treatments.py:607 +#: forms_treatments.py:585 +msgid "External ref." +msgstr "" + +#: forms_treatments.py:612 forms_treatments.py:666 models_treatments.py:769 msgid "Reception date" msgstr "" -#: forms_treatments.py:626 +#: forms_treatments.py:654 msgid "Another treatment request with this index exists for {}." msgstr "" -#: forms_treatments.py:632 +#: forms_treatments.py:660 msgid "Are you sure you want to delete this treatment request?" msgstr "" -#: forms_treatments.py:633 +#: forms_treatments.py:661 msgid "Would you like to delete this treatment request?" msgstr "" -#: forms_treatments.py:637 models_treatments.py:605 +#: forms_treatments.py:665 models_treatments.py:767 msgid "Creation date" msgstr "" -#: forms_treatments.py:647 forms_treatments.py:711 models_treatments.py:519 -#: models_treatments.py:590 +#: forms_treatments.py:675 forms_treatments.py:739 models_treatments.py:681 +#: models_treatments.py:752 msgid "Treatment request type" msgstr "" -#: forms_treatments.py:703 +#: forms_treatments.py:731 msgid "Treatment request name" msgstr "" -#: forms_treatments.py:705 +#: forms_treatments.py:733 msgid "Treatment request year" msgstr "" -#: forms_treatments.py:707 +#: forms_treatments.py:735 msgid "Treatment request index" msgstr "" -#: forms_treatments.py:709 +#: forms_treatments.py:737 msgid "Treatment request internal reference" msgstr "" -#: forms_treatments.py:745 +#: forms_treatments.py:773 msgid "Treatment request - Administrative act - General" msgstr "" #: ishtar_menu.py:37 ishtar_menu.py:60 ishtar_menu.py:100 ishtar_menu.py:123 -#: ishtar_menu.py:155 ishtar_menu.py:179 +#: ishtar_menu.py:152 ishtar_menu.py:191 msgid "Search" msgstr "" #: ishtar_menu.py:42 ishtar_menu.py:65 ishtar_menu.py:105 ishtar_menu.py:127 -#: ishtar_menu.py:160 ishtar_menu.py:183 +#: ishtar_menu.py:195 msgid "Creation" msgstr "" #: ishtar_menu.py:47 ishtar_menu.py:70 ishtar_menu.py:110 ishtar_menu.py:131 -#: ishtar_menu.py:165 ishtar_menu.py:188 +#: ishtar_menu.py:178 ishtar_menu.py:200 msgid "Modification" msgstr "" #: ishtar_menu.py:52 ishtar_menu.py:82 ishtar_menu.py:115 ishtar_menu.py:134 -#: ishtar_menu.py:170 ishtar_menu.py:191 +#: ishtar_menu.py:183 ishtar_menu.py:203 msgid "Deletion" msgstr "" @@ -863,22 +907,29 @@ msgstr "" msgid "Manage items" msgstr "" -#: ishtar_menu.py:120 ishtar_menu.py:176 models_finds.py:1719 +#: ishtar_menu.py:120 ishtar_menu.py:188 models_finds.py:1741 msgid "Administrative act" msgstr "" -#: ishtar_menu.py:138 ishtar_menu.py:195 models_finds.py:1081 -#: models_treatments.py:163 models_treatments.py:611 +#: ishtar_menu.py:138 ishtar_menu.py:207 models_finds.py:1098 +#: models_treatments.py:171 models_treatments.py:773 +#: templates/ishtar/sheet_find.html:56 msgid "Documents" msgstr "" -#: ishtar_menu.py:147 models_treatments.py:170 models_treatments.py:351 -#: templates/ishtar/sheet_treatment.html:4 -msgid "Treatment" +#: ishtar_menu.py:158 +msgid "" +"Treatment 1 1 - creation" msgstr "" -#: ishtar_menu.py:152 -msgid "Simple treatments" +#: ishtar_menu.py:165 +msgid "" +"Treatment n 1 - creation" +msgstr "" + +#: ishtar_menu.py:172 +msgid "" +"Treatment 1 n - creation" msgstr "" #: models_finds.py:51 @@ -889,9 +940,9 @@ msgstr "" msgid "Recommendation" msgstr "" -#: models_finds.py:66 models_finds.py:79 models_finds.py:92 models_finds.py:138 -#: models_finds.py:161 models_finds.py:218 models_finds.py:967 -#: models_treatments.py:355 +#: models_finds.py:66 models_finds.py:79 models_finds.py:92 models_finds.py:143 +#: models_finds.py:166 models_finds.py:223 models_finds.py:984 +#: models_treatments.py:517 msgid "Order" msgstr "" @@ -904,12 +955,10 @@ msgid "Material type quality types" msgstr "" #: models_finds.py:82 -#| msgid "Conservatory state" msgid "Conservatory state type" msgstr "" #: models_finds.py:83 -#| msgid "Conservatory states" msgid "Conservatory state types" msgstr "" @@ -917,570 +966,600 @@ msgstr "" msgid "Virtual" msgstr "" -#: models_finds.py:95 -msgid "Upstream is many" +#: models_finds.py:94 +msgid "Destructive" +msgstr "" + +#: models_finds.py:96 +#| msgid "Create a treatment" +msgid "Create a new find" msgstr "" #: models_finds.py:97 -msgid "Check this if for this treatment from many finds you'll get one." +msgid "" +"If True when this treatment is applied a new version of the object will be " +"created." msgstr "" #: models_finds.py:100 -msgid "Downstream is many" +msgid "Upstream is many" msgstr "" #: models_finds.py:102 +msgid "Check this if for this treatment from many finds you'll get one." +msgstr "" + +#: models_finds.py:105 +msgid "Downstream is many" +msgstr "" + +#: models_finds.py:107 msgid "Check this if for this treatment from one find you'll get many." msgstr "" -#: models_finds.py:107 models_treatments.py:240 +#: models_finds.py:112 models_treatments.py:253 msgid "Treatment types" msgstr "" -#: models_finds.py:117 +#: models_finds.py:122 msgid "Integrity / interest type" msgstr "" -#: models_finds.py:118 +#: models_finds.py:123 msgid "Integrity / interest types" msgstr "" -#: models_finds.py:128 +#: models_finds.py:133 msgid "Remarkability type" msgstr "" -#: models_finds.py:129 +#: models_finds.py:134 msgid "Remarkability types" msgstr "" -#: models_finds.py:140 +#: models_finds.py:145 msgid "Batch type" msgstr "" -#: models_finds.py:141 +#: models_finds.py:146 msgid "Batch types" msgstr "" -#: models_finds.py:164 +#: models_finds.py:169 msgid "Object type quality type" msgstr "" -#: models_finds.py:165 +#: models_finds.py:170 msgid "Object type quality types" msgstr "" -#: models_finds.py:175 +#: models_finds.py:180 msgid "Alteration type" msgstr "" -#: models_finds.py:176 +#: models_finds.py:181 msgid "Alteration types" msgstr "" -#: models_finds.py:186 +#: models_finds.py:191 msgid "Alteration cause type" msgstr "" -#: models_finds.py:187 +#: models_finds.py:192 msgid "Alteration cause types" msgstr "" -#: models_finds.py:197 +#: models_finds.py:202 msgid "Treatment emergency type" msgstr "" -#: models_finds.py:198 +#: models_finds.py:203 msgid "Treatment emergency types" msgstr "" -#: models_finds.py:208 +#: models_finds.py:213 msgid "Communicability type" msgstr "" -#: models_finds.py:209 +#: models_finds.py:214 msgid "Communicability types" msgstr "" -#: models_finds.py:221 +#: models_finds.py:226 msgid "Checked type" msgstr "" -#: models_finds.py:222 +#: models_finds.py:227 msgid "Checked types" msgstr "" -#: models_finds.py:254 models_finds.py:960 models_treatments.py:143 -#: models_treatments.py:586 +#: models_finds.py:259 models_finds.py:977 models_treatments.py:147 +#: models_treatments.py:748 msgid "External ID" msgstr "" -#: models_finds.py:256 models_finds.py:962 +#: models_finds.py:261 models_finds.py:979 msgid "External ID is set automatically" msgstr "" -#: models_finds.py:260 +#: models_finds.py:265 msgid "Special interest" msgstr "" -#: models_finds.py:264 +#: models_finds.py:269 msgid "Context Record" msgstr "" -#: models_finds.py:272 +#: models_finds.py:277 msgid "Material index" msgstr "" -#: models_finds.py:289 +#: models_finds.py:294 msgid "Point (3D)" msgstr "" -#: models_finds.py:295 models_finds.py:298 +#: models_finds.py:300 models_finds.py:303 msgid "Cached value - do not edit" msgstr "" -#: models_finds.py:308 models_finds.py:958 +#: models_finds.py:313 models_finds.py:975 msgid "Base find" msgstr "" -#: models_finds.py:309 +#: models_finds.py:314 msgid "Base finds" msgstr "" -#: models_finds.py:565 +#: models_finds.py:579 msgid "g" msgstr "" -#: models_finds.py:566 +#: models_finds.py:580 msgid "kg" msgstr "" -#: models_finds.py:592 views.py:301 +#: models_finds.py:606 views.py:323 msgid "Manage basket" msgstr "" -#: models_finds.py:661 +#: models_finds.py:675 msgid "Base find - Short ID" msgstr "" -#: models_finds.py:662 +#: models_finds.py:676 msgid "Base find - Complete ID" msgstr "" -#: models_finds.py:664 +#: models_finds.py:678 msgid "Operation (code)" msgstr "" -#: models_finds.py:666 +#: models_finds.py:680 msgid "Town" msgstr "" -#: models_finds.py:668 +#: models_finds.py:682 msgid "Operation (name)" msgstr "" -#: models_finds.py:672 +#: models_finds.py:686 msgid "Parcel" msgstr "" -#: models_finds.py:673 +#: models_finds.py:687 msgid "Batch" msgstr "" -#: models_finds.py:674 +#: models_finds.py:688 msgid "Base find - Comment" msgstr "" -#: models_finds.py:675 +#: models_finds.py:689 msgid "Base find - Description" msgstr "" -#: models_finds.py:676 +#: models_finds.py:690 msgid "Base find - Topographic localisation" msgstr "" -#: models_finds.py:678 +#: models_finds.py:692 msgid "Base find - Special interest" msgstr "" -#: models_finds.py:680 +#: models_finds.py:694 msgid "Base find - Discovery date (exact or TPQ)" msgstr "" -#: models_finds.py:682 +#: models_finds.py:696 msgid "Base find - Discovery date (TAQ)" msgstr "" -#: models_finds.py:684 +#: models_finds.py:698 msgid "Periods" msgstr "" -#: models_finds.py:760 +#: models_finds.py:774 msgctxt "key for text search" msgid "short-id" msgstr "" -#: models_finds.py:764 +#: models_finds.py:778 msgctxt "key for text search" msgid "complete-id" msgstr "" -#: models_finds.py:768 +#: models_finds.py:782 msgctxt "key for text search" msgid "free-id" msgstr "" -#: models_finds.py:772 +#: models_finds.py:786 msgctxt "key for text search" msgid "denomination" msgstr "" -#: models_finds.py:776 +#: models_finds.py:790 msgctxt "key for text search" msgid "town" msgstr "" -#: models_finds.py:780 models_treatments.py:87 models_treatments.py:551 +#: models_finds.py:794 models_treatments.py:91 models_treatments.py:713 msgctxt "key for text search" msgid "year" msgstr "" -#: models_finds.py:784 +#: models_finds.py:798 msgctxt "key for text search" msgid "operation-code" msgstr "" -#: models_finds.py:788 +#: models_finds.py:802 msgctxt "key for text search" msgid "code-patriarche" msgstr "" -#: models_finds.py:792 +#: models_finds.py:806 msgctxt "key for text search" msgid "operation-type" msgstr "" -#: models_finds.py:797 +#: models_finds.py:811 msgctxt "key for text search" msgid "area" msgstr "" -#: models_finds.py:801 +#: models_finds.py:815 msgctxt "key for text search" msgid "site" msgstr "" -#: models_finds.py:806 models_finds.py:945 +#: models_finds.py:820 models_finds.py:962 msgctxt "key for text search" msgid "context-record-site" msgstr "" -#: models_finds.py:811 models_finds.py:939 +#: models_finds.py:825 models_finds.py:956 msgctxt "key for text search" msgid "context-record" msgstr "" -#: models_finds.py:815 +#: models_finds.py:829 msgctxt "key for text search" msgid "operation-relation-type" msgstr "" -#: models_finds.py:819 +#: models_finds.py:833 msgctxt "key for text search" msgid "context-record-relation-type" msgstr "" -#: models_finds.py:823 +#: models_finds.py:837 msgctxt "key for text search" msgid "period" msgstr "" -#: models_finds.py:827 +#: models_finds.py:841 msgctxt "key for text search" msgid "material" msgstr "" -#: models_finds.py:831 +#: models_finds.py:845 msgctxt "key for text search" msgid "object-type" msgstr "" -#: models_finds.py:835 +#: models_finds.py:849 msgctxt "key for text search" msgid "preservation" msgstr "" -#: models_finds.py:839 +#: models_finds.py:853 msgctxt "key for text search" msgid "conservatory" msgstr "" -#: models_finds.py:843 +#: models_finds.py:857 msgctxt "key for text search" msgid "integrity" msgstr "" -#: models_finds.py:847 +#: models_finds.py:861 msgctxt "key for text search" msgid "remarkability" msgstr "" -#: models_finds.py:851 +#: models_finds.py:865 msgctxt "key for text search" msgid "description" msgstr "" -#: models_finds.py:855 +#: models_finds.py:869 msgctxt "key for text search" msgid "batch" msgstr "" -#: models_finds.py:859 +#: models_finds.py:873 msgctxt "key for text search" msgid "checked" msgstr "" -#: models_finds.py:863 models_treatments.py:95 +#: models_finds.py:877 models_treatments.py:99 msgctxt "key for text search" msgid "has-image" msgstr "" -#: models_finds.py:867 models_finds.py:942 +#: models_finds.py:881 models_finds.py:959 msgctxt "key for text search" msgid "location" msgstr "" -#: models_finds.py:871 +#: models_finds.py:885 msgctxt "key for text search" msgid "warehouse" msgstr "" -#: models_finds.py:875 +#: models_finds.py:889 msgctxt "key for text search" msgid "container-index" msgstr "" -#: models_finds.py:879 +#: models_finds.py:893 msgctxt "key for text search" msgid "container-ref" msgstr "" -#: models_finds.py:883 +#: models_finds.py:897 wizards.py:392 msgctxt "key for text search" msgid "basket" msgstr "" -#: models_finds.py:887 models_finds.py:936 +#: models_finds.py:901 models_finds.py:953 msgctxt "key for text search" msgid "operation" msgstr "" -#: models_finds.py:891 +#: models_finds.py:905 msgctxt "key for text search" msgid "last-modified-by" msgstr "" -#: models_finds.py:895 +#: models_finds.py:909 msgctxt "key for text search" msgid "modified-since" msgstr "" -#: models_finds.py:919 +#: models_finds.py:913 +#| msgid "Create" +msgctxt "key for text search" +msgid "created-by" +msgstr "" + +#: models_finds.py:936 msgid "Bulk update" msgstr "" -#: models_finds.py:930 models_finds.py:1180 -#: templates/ishtar/forms/qa_find_treatment.html:16 views.py:666 +#: models_finds.py:947 models_finds.py:1200 +#: templates/ishtar/forms/qa_find_treatment.html:16 views.py:714 msgid "Packaging" msgstr "" -#: models_finds.py:986 +#: models_finds.py:1003 msgid "Weight" msgstr "" -#: models_finds.py:987 +#: models_finds.py:1004 msgid "Weight unit" msgstr "" -#: models_finds.py:993 templates/ishtar/sheet_find.html:174 +#: models_finds.py:1010 templates/ishtar/sheet_find.html:280 msgid "Upstream treatment" msgstr "" -#: models_finds.py:996 templates/ishtar/sheet_find.html:212 +#: models_finds.py:1013 templates/ishtar/sheet_find.html:318 msgid "Downstream treatment" msgstr "" -#: models_finds.py:1031 +#: models_finds.py:1048 msgid "Clutter - long side (cm)" msgstr "" -#: models_finds.py:1033 +#: models_finds.py:1050 msgid "Clutter - short side (cm)" msgstr "" -#: models_finds.py:1035 +#: models_finds.py:1052 msgid "Clutter - height (cm)" msgstr "" -#: models_finds.py:1051 +#: models_finds.py:1068 msgid "Collection" msgstr "" -#: models_finds.py:1083 models_treatments.py:165 models_treatments.py:613 +#: models_finds.py:1100 models_treatments.py:173 models_treatments.py:775 msgid "Cached name" msgstr "" -#: models_finds.py:1105 +#: models_finds.py:1122 msgid "FIND" msgstr "" -#: models_finds.py:1174 +#: models_finds.py:1194 msgid "Add to basket" msgstr "" -#: models_finds.py:1222 wizards.py:74 wizards.py:219 +#: models_finds.py:1242 wizards.py:85 wizards.py:469 msgid "Operation" msgstr "" -#: models_finds.py:1544 +#: models_finds.py:1566 msgid "No container have been set - the localisation cannot be set." msgstr "" -#: models_finds.py:1550 +#: models_finds.py:1572 msgid "The division number {} have not been set for the warehouse {}." msgstr "" -#: models_finds.py:1720 +#: models_finds.py:1742 msgid "Person" msgstr "" -#: models_finds.py:1726 +#: models_finds.py:1748 msgid "Property" msgstr "" -#: models_finds.py:1727 +#: models_finds.py:1749 msgid "Properties" msgstr "" -#: models_treatments.py:42 +#: models_treatments.py:44 msgid "Treatment state type" msgstr "" -#: models_treatments.py:43 +#: models_treatments.py:45 msgid "Treatment state types" msgstr "" -#: models_treatments.py:67 +#: models_treatments.py:69 msgid "Downstream find" msgstr "" -#: models_treatments.py:79 +#: models_treatments.py:70 +msgid "Upstream find" +msgstr "" + +#: models_treatments.py:83 msgctxt "key for text search" msgid "label" msgstr "" -#: models_treatments.py:83 +#: models_treatments.py:87 msgctxt "key for text search" msgid "other-reference" msgstr "" -#: models_treatments.py:91 models_treatments.py:555 +#: models_treatments.py:95 models_treatments.py:717 msgctxt "key for text search" msgid "index" msgstr "" -#: models_treatments.py:99 models_treatments.py:559 +#: models_treatments.py:103 models_treatments.py:721 msgctxt "key for text search" msgid "type" msgstr "" -#: models_treatments.py:135 +#: models_treatments.py:139 msgid "Location where the treatment is done. Target warehouse for a move." msgstr "" -#: models_treatments.py:152 +#: models_treatments.py:157 +msgid "Related finds for non-destructive treatment" +msgstr "" + +#: models_treatments.py:160 msgid "Estimated cost" msgstr "" -#: models_treatments.py:154 +#: models_treatments.py:162 msgid "Quoted cost" msgstr "" -#: models_treatments.py:156 +#: models_treatments.py:164 msgid "Realized cost" msgstr "" -#: models_treatments.py:158 +#: models_treatments.py:166 msgid "Insurance cost" msgstr "" -#: models_treatments.py:160 +#: models_treatments.py:168 msgid "Target a basket" msgstr "" -#: models_treatments.py:171 templates/ishtar/sheet_find.html:171 +#: models_treatments.py:179 templates/ishtar/sheet_find.html:243 #: templates/ishtar/sheet_treatmentfile.html:61 msgid "Treatments" msgstr "" -#: models_treatments.py:190 +#: models_treatments.py:199 msgid "TREATMENT" msgstr "" -#: models_treatments.py:249 templates/ishtar/sheet_treatment.html:61 +#: models_treatments.py:262 templates/ishtar/sheet_treatment.html:66 msgid "Downstream finds" msgstr "" -#: models_treatments.py:364 templates/ishtar/sheet_find.html:183 -#: templates/ishtar/sheet_find.html:221 +#: models_treatments.py:526 templates/ishtar/sheet_find.html:252 +#: templates/ishtar/sheet_find.html:289 templates/ishtar/sheet_find.html:327 msgid "Doer" msgstr "" -#: models_treatments.py:365 models_treatments.py:366 +#: models_treatments.py:527 models_treatments.py:528 +#: templates/ishtar/sheet_treatment.html:56 msgid "Related finds" msgstr "" -#: models_treatments.py:508 +#: models_treatments.py:670 msgid "Is upstream" msgstr "" -#: models_treatments.py:520 +#: models_treatments.py:682 msgid "Treatment request types" msgstr "" -#: models_treatments.py:543 +#: models_treatments.py:705 msgctxt "key for text search" msgid "name" msgstr "" -#: models_treatments.py:547 +#: models_treatments.py:709 msgctxt "key for text search" msgid "reference" msgstr "" -#: models_treatments.py:563 +#: models_treatments.py:725 msgctxt "key for text search" msgid "in-charge" msgstr "" -#: models_treatments.py:567 +#: models_treatments.py:729 msgctxt "key for text search" msgid "applicant" msgstr "" -#: models_treatments.py:571 +#: models_treatments.py:733 msgctxt "key for text search" msgid "applicant-organisation" msgstr "" -#: models_treatments.py:584 +#: models_treatments.py:746 msgid "Internal reference" msgstr "" -#: models_treatments.py:593 +#: models_treatments.py:755 msgid "Person in charge" msgstr "" -#: models_treatments.py:619 +#: models_treatments.py:781 msgid "Treatment requests" msgstr "" @@ -1496,45 +1575,45 @@ msgstr "" msgid "Associate a treatment" msgstr "" -#: templates/ishtar/sheet_basefind.html:6 +#: templates/ishtar/sheet_basefind.html:10 msgid "Internal ID" msgstr "" -#: templates/ishtar/sheet_basefind.html:21 +#: templates/ishtar/sheet_basefind.html:25 msgid "Discovery date" msgstr "" -#: templates/ishtar/sheet_basefind.html:24 +#: templates/ishtar/sheet_basefind.html:28 msgid "Discovery year" msgstr "" -#: templates/ishtar/sheet_basefind.html:27 +#: templates/ishtar/sheet_basefind.html:31 msgid "Discovery date (TPQ)" msgstr "" -#: templates/ishtar/sheet_basefind.html:52 +#: templates/ishtar/sheet_basefind.html:56 msgid "X:" msgstr "" -#: templates/ishtar/sheet_basefind.html:53 -#: templates/ishtar/sheet_basefind.html:55 #: templates/ishtar/sheet_basefind.html:57 +#: templates/ishtar/sheet_basefind.html:59 +#: templates/ishtar/sheet_basefind.html:61 msgid "error:" msgstr "" -#: templates/ishtar/sheet_basefind.html:54 +#: templates/ishtar/sheet_basefind.html:58 msgid "Y:" msgstr "" -#: templates/ishtar/sheet_basefind.html:56 +#: templates/ishtar/sheet_basefind.html:60 msgid "Z:" msgstr "" -#: templates/ishtar/sheet_basefind.html:60 +#: templates/ishtar/sheet_basefind.html:64 msgid "SRID" msgstr "" -#: templates/ishtar/sheet_basefind.html:75 +#: templates/ishtar/sheet_basefind.html:79 msgid "Last modified by" msgstr "" @@ -1544,39 +1623,60 @@ msgid "" "the find." msgstr "" -#: templates/ishtar/sheet_find.html:29 -msgid "Associated base finds" +#: templates/ishtar/sheet_find.html:23 +#| msgid "Base find" +msgid "Image / Base find" +msgstr "" + +#: templates/ishtar/sheet_find.html:30 +msgid "Identification / Description / Dimensions" +msgstr "" + +#: templates/ishtar/sheet_find.html:38 +#| msgid "Preservation" +msgid "Datings / Preservation" +msgstr "" + +#: templates/ishtar/sheet_find.html:47 +#| msgid "Base treatment" +msgid "Warehouse / Treatments" msgstr "" -#: templates/ishtar/sheet_find.html:53 +#: templates/ishtar/sheet_find.html:64 +msgid "Custom fields" +msgstr "" + +#: templates/ishtar/sheet_find.html:123 msgid "Administrative index" msgstr "" -#: templates/ishtar/sheet_find.html:95 +#: templates/ishtar/sheet_find.html:165 msgid "Checked" msgstr "" -#: templates/ishtar/sheet_find.html:160 +#: templates/ishtar/sheet_find.html:232 msgid "Warehouse" msgstr "" -#: templates/ishtar/sheet_find.html:178 templates/ishtar/sheet_find.html:216 +#: templates/ishtar/sheet_find.html:247 templates/ishtar/sheet_find.html:284 +#: templates/ishtar/sheet_find.html:322 msgid "Year - index" msgstr "" -#: templates/ishtar/sheet_find.html:182 templates/ishtar/sheet_find.html:220 +#: templates/ishtar/sheet_find.html:251 templates/ishtar/sheet_find.html:288 +#: templates/ishtar/sheet_find.html:326 msgid "Related finds (max. 15 displayed)" msgstr "" -#: templates/ishtar/sheet_find.html:208 +#: templates/ishtar/sheet_find.html:314 msgid "Export as CSV" msgstr "" -#: templates/ishtar/sheet_find.html:208 templates/ishtar/sheet_find.html:247 +#: templates/ishtar/sheet_find.html:314 templates/ishtar/sheet_find.html:353 msgid "CSV" msgstr "" -#: templates/ishtar/sheet_find.html:252 +#: templates/ishtar/sheet_find.html:360 msgid "Associated documents" msgstr "" @@ -1594,11 +1694,11 @@ msgctxt "Treatment" msgid "Active" msgstr "" -#: templates/ishtar/sheet_treatment.html:66 +#: templates/ishtar/sheet_treatment.html:71 msgid "Related operations" msgstr "" -#: templates/ishtar/sheet_treatment.html:77 +#: templates/ishtar/sheet_treatment.html:82 #: templates/ishtar/sheet_treatmentfile.html:73 msgid "Administrative acts" msgstr "" @@ -1613,6 +1713,12 @@ msgctxt "Treatment request" msgid "Active" msgstr "" +#: templates/ishtar/wizard/wizard_simplefind.html:6 +msgid "" +"This find is related to many base finds. To edit field related to base finds " +"edit the corresponding find between theses:" +msgstr "" + #: views.py:132 msgid "Basket modify" msgstr "" @@ -1621,78 +1727,84 @@ msgstr "" msgid "New find" msgstr "" -#: views.py:209 +#: views.py:225 msgid "Find modification" msgstr "" -#: views.py:238 +#: views.py:260 msgid "Find deletion" msgstr "" -#: views.py:251 +#: views.py:273 msgid "New basket" msgstr "" -#: views.py:280 +#: views.py:302 msgid "Manage items in basket" msgstr "" -#: views.py:389 +#: views.py:411 msgid "Delete basket" msgstr "" -#: views.py:441 +#: views.py:463 views.py:476 views.py:489 msgid "New treatment" msgstr "" -#: views.py:449 +#: views.py:497 msgid "Treatment modification" msgstr "" -#: views.py:466 +#: views.py:514 msgid "Treatment deletion" msgstr "" -#: views.py:473 +#: views.py:521 msgid "Treatment: search administrative act" msgstr "" -#: views.py:482 +#: views.py:530 msgid "Treatment: new administrative act" msgstr "" -#: views.py:492 +#: views.py:540 msgid "Treatment: administrative act modification" msgstr "" -#: views.py:501 +#: views.py:549 msgid "Treatment: administrative act deletion" msgstr "" -#: views.py:534 +#: views.py:582 msgid "New treatment request" msgstr "" -#: views.py:541 +#: views.py:589 msgid "Treatment request modification" msgstr "" -#: views.py:557 +#: views.py:605 msgid "Treatment request deletion" msgstr "" -#: views.py:564 +#: views.py:612 msgid "Treatment request: search administrative act" msgstr "" -#: views.py:574 +#: views.py:622 msgid "Treatment request: new administrative act" msgstr "" -#: views.py:584 +#: views.py:632 msgid "Treatment request: administrative act modification" msgstr "" -#: views.py:593 +#: views.py:641 msgid "Treatment request: administrative act deletion" msgstr "" + +#: wizards.py:387 +msgid "" +"The new basket: \"{}\" have been created with the resulting items. This " +"search have been pinned." +msgstr "" diff --git a/archaeological_warehouse/locale/django.pot b/archaeological_warehouse/locale/django.pot index 139895395..afd2e351d 100644 --- a/archaeological_warehouse/locale/django.pot +++ b/archaeological_warehouse/locale/django.pot @@ -9,169 +9,169 @@ msgid "" msgstr "" -#: forms.py:41 forms.py:113 ishtar_menu.py:40 models.py:94 models.py:258 +#: forms.py:42 forms.py:114 ishtar_menu.py:40 models.py:94 models.py:258 #: templates/ishtar/sheet_warehouse.html:4 msgid "Warehouse" msgstr "" -#: forms.py:50 forms.py:55 models.py:622 +#: forms.py:51 forms.py:56 models.py:623 msgid "Division" msgstr "" -#: forms.py:57 models.py:286 +#: forms.py:58 models.py:286 msgid "Order" msgstr "" -#: forms.py:71 +#: forms.py:72 msgid "There are identical divisions." msgstr "" -#: forms.py:76 models.py:83 +#: forms.py:77 models.py:83 msgid "Divisions" msgstr "" -#: forms.py:77 +#: forms.py:78 msgid "Warehouse - 020 - Divisions" msgstr "" -#: forms.py:85 forms.py:254 +#: forms.py:86 forms.py:255 msgid "Full text search" msgstr "" -#: forms.py:88 forms.py:119 models.py:75 models.py:255 +#: forms.py:89 forms.py:120 models.py:75 models.py:255 msgid "Name" msgstr "" -#: forms.py:89 forms.py:121 models.py:39 models.py:77 +#: forms.py:90 forms.py:122 models.py:39 models.py:77 msgid "Warehouse type" msgstr "" -#: forms.py:101 views.py:108 +#: forms.py:102 views.py:108 msgid "Warehouse search" msgstr "" -#: forms.py:114 +#: forms.py:115 msgid "Warehouse - 010 - General" msgstr "" -#: forms.py:124 models.py:80 +#: forms.py:125 models.py:80 msgid "Person in charge" msgstr "" -#: forms.py:130 forms.py:198 models.py:81 models.py:381 +#: forms.py:131 forms.py:199 models.py:81 models.py:382 msgid "Comment" msgstr "" -#: forms.py:132 +#: forms.py:133 msgid "Address" msgstr "" -#: forms.py:134 +#: forms.py:135 msgid "Address complement" msgstr "" -#: forms.py:136 +#: forms.py:137 msgid "Postal code" msgstr "" -#: forms.py:138 +#: forms.py:139 msgid "Town" msgstr "" -#: forms.py:139 +#: forms.py:140 msgid "Country" msgstr "" -#: forms.py:141 +#: forms.py:142 msgid "Phone" msgstr "" -#: forms.py:142 +#: forms.py:143 msgid "Mobile phone" msgstr "" -#: forms.py:167 forms.py:168 +#: forms.py:168 forms.py:169 msgid "Would you like to delete this warehouse?" msgstr "" -#: forms.py:172 models.py:395 models.py:619 +#: forms.py:173 models.py:396 models.py:620 #: templates/ishtar/sheet_container.html:4 msgid "Container" msgstr "" -#: forms.py:173 +#: forms.py:174 msgid "Container - 010 - General" msgstr "" -#: forms.py:179 forms.py:261 models.py:301 +#: forms.py:180 forms.py:262 models.py:301 msgid "Ref." msgstr "" -#: forms.py:180 models.py:389 +#: forms.py:181 models.py:390 msgid "Old reference" msgstr "" -#: forms.py:182 forms.py:260 models.py:304 models.py:379 +#: forms.py:183 forms.py:261 models.py:305 models.py:380 msgid "Container type" msgstr "" -#: forms.py:184 forms.py:258 +#: forms.py:185 forms.py:259 msgid "Current location (warehouse)" msgstr "" -#: forms.py:190 forms.py:259 models.py:376 +#: forms.py:191 forms.py:260 models.py:377 msgid "Responsible warehouse" msgstr "" -#: forms.py:196 +#: forms.py:197 msgid "Image" msgstr "" -#: forms.py:223 +#: forms.py:224 msgid "ID" msgstr "" -#: forms.py:245 +#: forms.py:246 msgid "This ID already exists for this warehouse." msgstr "" -#: forms.py:272 forms.py:278 views.py:150 +#: forms.py:273 forms.py:279 views.py:150 msgid "Container search" msgstr "" -#: forms.py:274 forms.py:280 +#: forms.py:275 forms.py:281 msgid "You should select a container." msgstr "" -#: forms.py:275 +#: forms.py:276 msgid "Add a new container" msgstr "" -#: forms.py:285 ishtar_menu.py:36 views.py:103 +#: forms.py:286 ishtar_menu.py:36 views.py:103 msgid "Packaging" msgstr "" -#: forms.py:291 +#: forms.py:292 msgid "Packager" msgstr "" -#: forms.py:297 +#: forms.py:298 msgid "Date" msgstr "" -#: forms.py:301 +#: forms.py:304 msgid "Packaged finds" msgstr "" -#: forms.py:305 +#: forms.py:308 msgid "Container - 020 - Localisation" msgstr "" -#: forms.py:307 models.py:382 +#: forms.py:310 models.py:383 msgid "Localisation" msgstr "" -#: forms.py:331 forms.py:332 +#: forms.py:334 forms.py:335 msgid "Would you like to delete this container?" msgstr "" @@ -195,7 +195,7 @@ msgstr "" msgid "Deletion" msgstr "" -#: ishtar_menu.py:57 models.py:396 templates/ishtar/sheet_warehouse.html:42 +#: ishtar_menu.py:57 models.py:397 templates/ishtar/sheet_warehouse.html:42 #: templates/ishtar/sheet_warehouse.html:87 msgid "Containers" msgstr "" @@ -209,7 +209,7 @@ msgctxt "key for text search" msgid "name" msgstr "" -#: models.py:64 models.py:356 +#: models.py:64 models.py:357 msgctxt "key for text search" msgid "type" msgstr "" @@ -218,11 +218,11 @@ msgstr "" msgid "Documents" msgstr "" -#: models.py:89 models.py:390 +#: models.py:89 models.py:391 msgid "External ID" msgstr "" -#: models.py:91 models.py:392 +#: models.py:91 models.py:393 msgid "External ID is set automatically" msgstr "" @@ -262,62 +262,62 @@ msgstr "" msgid "Volume (l)" msgstr "" -#: models.py:305 +#: models.py:306 msgid "Container types" msgstr "" -#: models.py:339 +#: models.py:340 msgid "Location - index" msgstr "" -#: models.py:340 +#: models.py:341 msgid "Precise localisation" msgstr "" -#: models.py:341 +#: models.py:342 msgid "Type" msgstr "" -#: models.py:348 +#: models.py:349 msgctxt "key for text search" msgid "location" msgstr "" -#: models.py:352 +#: models.py:353 msgctxt "key for text search" msgid "responsible-warehouse" msgstr "" -#: models.py:360 +#: models.py:361 msgctxt "key for text search" msgid "reference" msgstr "" -#: models.py:373 +#: models.py:374 msgid "Location (warehouse)" msgstr "" -#: models.py:380 +#: models.py:381 msgid "Container ref." msgstr "" -#: models.py:384 +#: models.py:385 msgid "Cached location" msgstr "" -#: models.py:386 +#: models.py:387 msgid "Cached division" msgstr "" -#: models.py:623 +#: models.py:624 msgid "Reference" msgstr "" -#: models.py:626 +#: models.py:627 msgid "Container localisation" msgstr "" -#: models.py:627 +#: models.py:628 msgid "Container localisations" msgstr "" diff --git a/ishtar_common/locale/django.pot b/ishtar_common/locale/django.pot index 638f29f22..5f0f526fc 100644 --- a/ishtar_common/locale/django.pot +++ b/ishtar_common/locale/django.pot @@ -34,12 +34,12 @@ msgstr "" msgid "Export selected as CSV file" msgstr "" -#: admin.py:207 models.py:1686 templates/navbar.html:31 +#: admin.py:207 models.py:1700 templates/navbar.html:31 msgid "Profile" msgstr "" #: admin.py:208 forms_common.py:782 forms_common.py:801 forms_common.py:802 -#: models.py:3039 +#: models.py:3056 msgid "Profiles" msgstr "" @@ -61,7 +61,7 @@ msgstr "" msgid "These parents are missing: {}" msgstr "" -#: admin.py:386 admin.py:405 models.py:883 models.py:4141 +#: admin.py:386 admin.py:405 models.py:902 models.py:4158 msgid "Parent" msgstr "" @@ -69,11 +69,11 @@ msgstr "" msgid "Center" msgstr "" -#: admin.py:395 models.py:4003 +#: admin.py:395 models.py:4020 msgid "Limit" msgstr "" -#: admin.py:398 models.py:4013 +#: admin.py:398 models.py:4030 msgid "Town children" msgstr "" @@ -121,16 +121,16 @@ msgstr "" msgid "Hide selected" msgstr "" -#: admin.py:931 models.py:2080 +#: admin.py:931 models.py:2095 msgid "Form" msgstr "" -#: admin.py:933 models.py:2105 models_imports.py:127 +#: admin.py:933 models.py:2120 models_imports.py:127 #: templates/ishtar/dashboards/dashboard_main.html:39 msgid "Users" msgstr "" -#: admin.py:953 models.py:2180 +#: admin.py:953 models.py:2195 msgid "Field" msgstr "" @@ -326,36 +326,36 @@ msgstr "" msgid "Are you sure you want to delete?" msgstr "" -#: forms.py:379 +#: forms.py:410 msgid "There are identical items." msgstr "" -#: forms.py:535 +#: forms.py:566 msgid "Last modified by" msgstr "" -#: forms.py:541 +#: forms.py:572 msgid "Modified since" msgstr "" -#: forms.py:565 forms.py:566 +#: forms.py:596 forms.py:597 msgid "Closing date" msgstr "" -#: forms.py:578 forms_common.py:1272 +#: forms.py:609 forms_common.py:1272 msgid "You should select an item." msgstr "" -#: forms.py:579 +#: forms.py:610 msgid "Add a new item" msgstr "" -#: forms.py:769 models.py:2434 +#: forms.py:800 models.py:2450 msgid "Template" msgstr "" #: forms_common.py:54 forms_common.py:72 forms_common.py:317 -#: forms_common.py:556 models.py:2568 models.py:4020 +#: forms_common.py:556 models.py:2584 models.py:4037 #: templates/blocks/JQueryAdvancedTown.html:19 msgid "Town" msgstr "" @@ -370,8 +370,8 @@ msgid "" "french town Saint-Denis in the Seine-Saint-Denis department.

" msgstr "" -#: forms_common.py:81 forms_common.py:1293 ishtar_menu.py:48 models.py:2952 -#: models.py:3204 models.py:3332 models.py:3495 +#: forms_common.py:81 forms_common.py:1293 ishtar_menu.py:48 models.py:2969 +#: models.py:3221 models.py:3349 models.py:3512 #: templates/ishtar/sheet_person.html:4 msgid "Person" msgstr "" @@ -423,16 +423,16 @@ msgid "all users" msgstr "" #: forms_common.py:305 forms_common.py:475 forms_common.py:609 -#: ishtar_menu.py:76 models.py:2773 models.py:2890 models.py:3292 +#: ishtar_menu.py:76 models.py:2789 models.py:2907 models.py:3309 #: templates/ishtar/sheet_organization.html:4 msgid "Organization" msgstr "" #: forms_common.py:308 forms_common.py:351 forms_common.py:470 #: forms_common.py:526 forms_common.py:604 forms_common.py:790 -#: forms_common.py:823 models.py:1056 models.py:1080 models.py:1879 -#: models.py:2079 models.py:2430 models.py:2765 models.py:2936 models.py:3192 -#: models.py:3999 models.py:4262 models_imports.py:98 models_imports.py:123 +#: forms_common.py:823 models.py:1075 models.py:1099 models.py:1894 +#: models.py:2094 models.py:2446 models.py:2781 models.py:2953 models.py:3209 +#: models.py:4016 models.py:4281 models_imports.py:98 models_imports.py:123 #: models_imports.py:445 models_imports.py:537 models_imports.py:827 #: templates/ishtar/import_step_by_step.html:102 #: templates/ishtar/import_step_by_step.html:270 @@ -441,40 +441,40 @@ msgstr "" msgid "Name" msgstr "" -#: forms_common.py:309 models.py:2721 models_imports.py:630 +#: forms_common.py:309 models.py:2737 models_imports.py:630 #: models_imports.py:631 msgid "Organization type" msgstr "" -#: forms_common.py:311 forms_common.py:550 models.py:2563 +#: forms_common.py:311 forms_common.py:550 models.py:2579 #: templates/ishtar/blocks/sheet_address_section.html:4 msgid "Address" msgstr "" -#: forms_common.py:313 forms_common.py:553 models.py:2564 +#: forms_common.py:313 forms_common.py:553 models.py:2580 msgid "Address complement" msgstr "" -#: forms_common.py:315 forms_common.py:554 models.py:2566 +#: forms_common.py:315 forms_common.py:554 models.py:2582 msgid "Postal code" msgstr "" -#: forms_common.py:318 forms_common.py:557 models.py:2569 +#: forms_common.py:318 forms_common.py:557 models.py:2585 msgid "Country" msgstr "" #: forms_common.py:320 forms_common.py:472 forms_common.py:530 -#: forms_common.py:606 forms_common.py:731 models.py:2596 +#: forms_common.py:606 forms_common.py:731 models.py:2612 msgid "Email" msgstr "" -#: forms_common.py:321 forms_common.py:533 models.py:2581 +#: forms_common.py:321 forms_common.py:533 models.py:2597 #: templates/ishtar/sheet_person.html:27 #: templates/ishtar/wizard/wizard_person.html:33 msgid "Phone" msgstr "" -#: forms_common.py:322 forms_common.py:542 models.py:2593 +#: forms_common.py:322 forms_common.py:542 models.py:2609 #: templates/ishtar/sheet_person.html:45 #: templates/ishtar/wizard/wizard_person.html:54 msgid "Mobile phone" @@ -486,7 +486,7 @@ msgid "Full text search" msgstr "" #: forms_common.py:352 forms_common.py:473 forms_common.py:607 -#: forms_common.py:788 models.py:1089 models.py:2767 models.py:3738 +#: forms_common.py:788 models.py:1108 models.py:2783 models.py:3755 #: models_imports.py:680 templates/ishtar/blocks/window_image_detail.html:24 #: templates/ishtar/blocks/window_tables/documents.html:8 #: templates/ishtar/import_table.html:28 @@ -510,7 +510,7 @@ msgstr "" msgid "Organization to merge" msgstr "" -#: forms_common.py:471 forms_common.py:524 forms_common.py:605 models.py:2934 +#: forms_common.py:471 forms_common.py:524 forms_common.py:605 models.py:2951 #: templates/ishtar/sheet_organization.html:24 msgid "Surname" msgstr "" @@ -527,25 +527,25 @@ msgstr "" msgid "Identity" msgstr "" -#: forms_common.py:521 forms_common.py:1095 forms_common.py:1217 models.py:2928 -#: models.py:2930 models.py:3729 models_imports.py:632 +#: forms_common.py:521 forms_common.py:1095 forms_common.py:1217 models.py:2945 +#: models.py:2947 models.py:3746 models_imports.py:632 #: templates/ishtar/blocks/window_tables/documents.html:7 msgid "Title" msgstr "" -#: forms_common.py:522 models.py:2932 +#: forms_common.py:522 models.py:2949 msgid "Salutation" msgstr "" -#: forms_common.py:528 models.py:2938 +#: forms_common.py:528 models.py:2955 msgid "Raw name" msgstr "" -#: forms_common.py:531 models.py:2582 +#: forms_common.py:531 models.py:2598 msgid "Phone description" msgstr "" -#: forms_common.py:534 models.py:2584 models.py:2586 +#: forms_common.py:534 models.py:2600 models.py:2602 msgid "Phone description 2" msgstr "" @@ -553,11 +553,11 @@ msgstr "" msgid "Phone 2" msgstr "" -#: forms_common.py:538 models.py:2590 +#: forms_common.py:538 models.py:2606 msgid "Phone description 3" msgstr "" -#: forms_common.py:540 models.py:2588 +#: forms_common.py:540 models.py:2604 msgid "Phone 3" msgstr "" @@ -565,23 +565,23 @@ msgstr "" msgid "Current organization" msgstr "" -#: forms_common.py:559 models.py:2571 +#: forms_common.py:559 models.py:2587 msgid "Other address: address" msgstr "" -#: forms_common.py:562 models.py:2574 +#: forms_common.py:562 models.py:2590 msgid "Other address: address complement" msgstr "" -#: forms_common.py:564 models.py:2575 +#: forms_common.py:564 models.py:2591 msgid "Other address: postal code" msgstr "" -#: forms_common.py:566 models.py:2577 +#: forms_common.py:566 models.py:2593 msgid "Other address: town" msgstr "" -#: forms_common.py:568 models.py:2579 +#: forms_common.py:568 models.py:2595 msgid "Other address: country" msgstr "" @@ -589,7 +589,7 @@ msgstr "" msgid "Already has an account" msgstr "" -#: forms_common.py:603 models.py:3293 +#: forms_common.py:603 models.py:3310 msgid "Username" msgstr "" @@ -597,7 +597,7 @@ msgstr "" msgid "Account search" msgstr "" -#: forms_common.py:669 forms_common.py:709 forms_common.py:713 models.py:2829 +#: forms_common.py:669 forms_common.py:709 forms_common.py:713 models.py:2846 msgid "Person type" msgstr "" @@ -625,7 +625,7 @@ msgstr "" msgid "This username already exists." msgstr "" -#: forms_common.py:789 models.py:3195 models.py:4148 +#: forms_common.py:789 models.py:3212 models.py:4165 msgid "Areas" msgstr "" @@ -633,11 +633,11 @@ msgstr "" msgid "Send the new password by email?" msgstr "" -#: forms_common.py:821 models.py:3197 views.py:968 +#: forms_common.py:821 models.py:3214 views.py:968 msgid "Current profile" msgstr "" -#: forms_common.py:824 models.py:3175 models.py:3194 +#: forms_common.py:824 models.py:3192 models.py:3211 msgid "Profile type" msgstr "" @@ -665,8 +665,8 @@ msgstr "" msgid " (duplicate)" msgstr "" -#: forms_common.py:932 forms_common.py:946 forms_common.py:947 models.py:4021 -#: models.py:4136 +#: forms_common.py:932 forms_common.py:946 forms_common.py:947 models.py:4038 +#: models.py:4153 msgid "Towns" msgstr "" @@ -693,19 +693,19 @@ msgstr "" msgid "Document - General" msgstr "" -#: forms_common.py:1098 forms_common.py:1218 models.py:3543 +#: forms_common.py:1098 forms_common.py:1218 models.py:3560 #: models_imports.py:633 msgid "Source type" msgstr "" #: forms_common.py:1101 forms_common.py:1152 forms_common.py:1333 -#: forms_common.py:1334 models.py:3504 models.py:3612 models.py:3748 +#: forms_common.py:1334 models.py:3521 models.py:3629 models.py:3765 #: templates/ishtar/blocks/window_image_detail.html:9 #: templates/ishtar/blocks/window_tables/documents.html:9 msgid "Authors" msgstr "" -#: forms_common.py:1105 models.py:3754 +#: forms_common.py:1105 models.py:3771 msgid "Numerical ressource (web address)" msgstr "" @@ -718,7 +718,7 @@ msgctxt "Not directory" msgid "File" msgstr "" -#: forms_common.py:1113 forms_common.py:1219 models.py:4138 +#: forms_common.py:1113 forms_common.py:1219 models.py:4155 msgid "Reference" msgstr "" @@ -726,38 +726,38 @@ msgstr "" msgid "Internal reference" msgstr "" -#: forms_common.py:1118 models.py:3756 +#: forms_common.py:1118 models.py:3773 #: templates/ishtar/blocks/window_image_detail.html:150 msgid "Receipt date" msgstr "" -#: forms_common.py:1120 models.py:3758 models_imports.py:859 +#: forms_common.py:1120 models.py:3775 models_imports.py:859 #: templates/ishtar/blocks/window_image_detail.html:54 msgid "Creation date" msgstr "" -#: forms_common.py:1123 models.py:3761 +#: forms_common.py:1123 models.py:3778 #: templates/ishtar/blocks/window_image_detail.html:160 msgid "Receipt date in documentation" msgstr "" -#: forms_common.py:1125 forms_common.py:1222 models.py:473 models.py:2942 -#: models.py:3421 models.py:3764 models_imports.py:483 +#: forms_common.py:1125 forms_common.py:1222 models.py:493 models.py:2959 +#: models.py:3438 models.py:3781 models_imports.py:483 #: templates/ishtar/blocks/window_image_detail.html:170 msgid "Comment" msgstr "" -#: forms_common.py:1127 forms_common.py:1221 models.py:1884 models.py:3763 +#: forms_common.py:1127 forms_common.py:1221 models.py:1899 models.py:3780 #: models_imports.py:125 models_imports.py:372 models_imports.py:446 msgid "Description" msgstr "" -#: forms_common.py:1130 models.py:3765 +#: forms_common.py:1130 models.py:3782 #: templates/ishtar/blocks/window_image_detail.html:182 msgid "Additional information" msgstr "" -#: forms_common.py:1132 forms_common.py:1225 models.py:3767 +#: forms_common.py:1132 forms_common.py:1225 models.py:3784 #: templates/ishtar/blocks/window_image_detail.html:108 msgid "Has a duplicate" msgstr "" @@ -792,7 +792,7 @@ msgid "A document have to attached at least to one item" msgstr "" #: forms_common.py:1214 forms_common.py:1286 forms_common.py:1321 -#: models.py:3503 templates/ishtar/wizard/wizard_person_deletion.html:139 +#: models.py:3520 templates/ishtar/wizard/wizard_person_deletion.html:139 msgid "Author" msgstr "" @@ -820,7 +820,7 @@ msgstr "" msgid "Would you like to delete this documentation?" msgstr "" -#: forms_common.py:1294 models.py:3468 models.py:3497 models_imports.py:634 +#: forms_common.py:1294 models.py:3485 models.py:3514 models_imports.py:634 msgid "Author type" msgstr "" @@ -832,11 +832,11 @@ msgstr "" msgid "There are identical authors." msgstr "" -#: forms_common.py:1339 models.py:1683 +#: forms_common.py:1339 models.py:1697 msgid "Query" msgstr "" -#: forms_common.py:1344 models.py:1687 +#: forms_common.py:1344 models.py:1701 msgid "Is an alert" msgstr "" @@ -876,7 +876,7 @@ msgstr "" msgid "Deletion" msgstr "" -#: ishtar_menu.py:40 models.py:2209 views.py:992 +#: ishtar_menu.py:40 models.py:2224 views.py:992 msgid "Global variables" msgstr "" @@ -933,35 +933,35 @@ msgstr "" msgid "Not a valid item." msgstr "" -#: models.py:211 +#: models.py:212 msgid "A selected item is not a valid item." msgstr "" -#: models.py:222 +#: models.py:224 msgid "This item already exists." msgstr "" -#: models.py:465 models.py:1682 models.py:2191 models.py:2528 models.py:2544 -#: models.py:3420 models_imports.py:368 +#: models.py:485 models.py:1696 models.py:2206 models.py:2544 models.py:2560 +#: models.py:3437 models_imports.py:368 msgid "Label" msgstr "" -#: models.py:467 +#: models.py:487 msgid "Textual ID" msgstr "" -#: models.py:470 +#: models.py:490 msgid "" "The slug is the standardized version of the name. It contains only lowercase " "letters, numbers and hyphens. Each slug must be unique." msgstr "" -#: models.py:474 models.py:2081 models.py:2437 models.py:3425 +#: models.py:494 models.py:2096 models.py:2453 models.py:3442 #: models_imports.py:139 models_imports.py:542 msgid "Available" msgstr "" -#: models.py:898 models.py:1083 models_imports.py:563 +#: models.py:917 models.py:1102 models_imports.py:563 #: templates/ishtar/formset_import_match.html:21 #: templates/ishtar/import_step_by_step.html:171 #: templates/ishtar/import_step_by_step.html:199 @@ -970,56 +970,56 @@ msgstr "" msgid "Key" msgstr "" -#: models.py:904 +#: models.py:923 msgid "Specific key to an import" msgstr "" -#: models.py:1043 +#: models.py:1062 msgid "Generated relation image (SVG)" msgstr "" -#: models.py:1057 models.py:1091 models.py:1604 models.py:2193 models.py:3465 -#: models.py:4165 models.py:4247 +#: models.py:1076 models.py:1110 models.py:1618 models.py:2208 models.py:3482 +#: models.py:4182 models.py:4264 msgid "Order" msgstr "" -#: models.py:1060 +#: models.py:1079 msgid "Json data - Menu" msgstr "" -#: models.py:1061 +#: models.py:1080 msgid "Json data - Menus" msgstr "" -#: models.py:1069 +#: models.py:1088 msgid "Text" msgstr "" -#: models.py:1070 +#: models.py:1089 msgid "Long text" msgstr "" -#: models.py:1071 models_imports.py:676 +#: models.py:1090 models_imports.py:676 msgid "Integer" msgstr "" -#: models.py:1072 +#: models.py:1091 msgid "Boolean" msgstr "" -#: models.py:1073 models_imports.py:677 +#: models.py:1092 models_imports.py:677 msgid "Float" msgstr "" -#: models.py:1074 models_imports.py:679 +#: models.py:1093 models_imports.py:679 msgid "Date" msgstr "" -#: models.py:1075 +#: models.py:1094 msgid "Choices" msgstr "" -#: models.py:1084 +#: models.py:1103 msgid "" "Value of the key in the JSON schema. For hierarchical key use \"__\" to " "explain it. For instance for the key 'my_subkey' with data such as " @@ -1027,417 +1027,417 @@ msgid "" "my_key__my_subkey." msgstr "" -#: models.py:1088 +#: models.py:1107 msgid "Display" msgstr "" -#: models.py:1092 +#: models.py:1111 msgid "Use in search indexes" msgstr "" -#: models.py:1099 +#: models.py:1118 msgid "Json data - Field" msgstr "" -#: models.py:1100 +#: models.py:1119 msgid "Json data - Fields" msgstr "" -#: models.py:1111 +#: models.py:1130 msgid "Content types of the field and of the menu do not match" msgstr "" -#: models.py:1171 +#: models.py:1190 msgid "Search vector" msgstr "" -#: models.py:1172 +#: models.py:1191 msgid "Auto filled at save" msgstr "" -#: models.py:1392 +#: models.py:1406 msgid "Add document/image" msgstr "" -#: models.py:1394 +#: models.py:1408 msgid "doc./image" msgstr "" -#: models.py:1413 +#: models.py:1427 msgid "Last editor" msgstr "" -#: models.py:1416 +#: models.py:1430 msgid "Creator" msgstr "" -#: models.py:1597 +#: models.py:1611 msgid "Above" msgstr "" -#: models.py:1598 +#: models.py:1612 msgid "Bellow" msgstr "" -#: models.py:1599 +#: models.py:1613 msgid "Equal" msgstr "" -#: models.py:1605 +#: models.py:1619 msgid "Symmetrical" msgstr "" -#: models.py:1606 +#: models.py:1620 msgid "Tiny label" msgstr "" -#: models.py:1609 +#: models.py:1623 msgid "Inverse relation" msgstr "" -#: models.py:1612 +#: models.py:1626 msgid "Logical relation" msgstr "" -#: models.py:1622 +#: models.py:1636 msgid "Cannot have symmetrical and an inverse_relation" msgstr "" -#: models.py:1685 +#: models.py:1699 msgid "Content type" msgstr "" -#: models.py:1690 +#: models.py:1704 msgid "Search query" msgstr "" -#: models.py:1691 +#: models.py:1705 msgid "Search queries" msgstr "" -#: models.py:1855 +#: models.py:1870 msgid "Euro" msgstr "" -#: models.py:1856 +#: models.py:1871 msgid "US dollar" msgstr "" -#: models.py:1857 views.py:742 views.py:803 +#: models.py:1872 views.py:742 views.py:803 msgid "Operations" msgstr "" -#: models.py:1858 views.py:744 views.py:807 +#: models.py:1873 views.py:744 views.py:807 msgid "Context records" msgstr "" -#: models.py:1859 +#: models.py:1874 msgid "Site" msgstr "" -#: models.py:1859 +#: models.py:1874 msgid "Archaeological entity" msgstr "" -#: models.py:1863 +#: models.py:1878 msgid "Site search" msgstr "" -#: models.py:1864 +#: models.py:1879 msgid "New site" msgstr "" -#: models.py:1865 +#: models.py:1880 msgid "Site modification" msgstr "" -#: models.py:1866 +#: models.py:1881 msgid "Site deletion" msgstr "" -#: models.py:1869 +#: models.py:1884 msgid "Archaeological entity search" msgstr "" -#: models.py:1870 +#: models.py:1885 msgid "New archaeological entity" msgstr "" -#: models.py:1871 +#: models.py:1886 msgid "Archaeological entity modification" msgstr "" -#: models.py:1872 +#: models.py:1887 msgid "Archaeological entity deletion" msgstr "" -#: models.py:1880 models.py:2431 models_imports.py:124 +#: models.py:1895 models.py:2447 models_imports.py:124 msgid "Slug" msgstr "" -#: models.py:1881 +#: models.py:1896 msgid "Current active" msgstr "" -#: models.py:1883 +#: models.py:1898 msgid "Activate experimental feature" msgstr "" -#: models.py:1886 +#: models.py:1901 msgid "Alternate configuration" msgstr "" -#: models.py:1888 +#: models.py:1903 msgid "Choose an alternate configuration for label, index management" msgstr "" -#: models.py:1892 +#: models.py:1907 msgid "Files module" msgstr "" -#: models.py:1894 +#: models.py:1909 msgid "Archaeological site module" msgstr "" -#: models.py:1896 +#: models.py:1911 msgid "Archaeological site type" msgstr "" -#: models.py:1900 +#: models.py:1915 msgid "Context records module" msgstr "" -#: models.py:1902 +#: models.py:1917 msgid "Finds module" msgstr "" -#: models.py:1903 +#: models.py:1918 msgid "Need context records module" msgstr "" -#: models.py:1905 +#: models.py:1920 msgid "Find index is based on" msgstr "" -#: models.py:1907 +#: models.py:1922 msgid "" "To prevent irrelevant indexes, change this parameter only if there is no " "find in the database" msgstr "" -#: models.py:1910 +#: models.py:1925 msgid "Warehouses module" msgstr "" -#: models.py:1911 +#: models.py:1926 msgid "Need finds module" msgstr "" -#: models.py:1912 +#: models.py:1927 msgid "Preservation module" msgstr "" -#: models.py:1914 +#: models.py:1929 msgid "Mapping module" msgstr "" -#: models.py:1915 +#: models.py:1930 msgid "Underwater module" msgstr "" -#: models.py:1917 +#: models.py:1932 msgid "Parcel are mandatory for context records" msgstr "" -#: models.py:1919 +#: models.py:1934 msgid "Home page" msgstr "" -#: models.py:1920 +#: models.py:1935 #, python-brace-format msgid "" "Homepage of Ishtar - if not defined a default homepage will appear. Use the " "markdown syntax. {random_image} can be used to display a random image." msgstr "" -#: models.py:1924 +#: models.py:1939 msgid "Main operation code prefix" msgstr "" -#: models.py:1928 +#: models.py:1943 msgid "Default operation code prefix" msgstr "" -#: models.py:1932 +#: models.py:1947 msgid "Operation region code" msgstr "" -#: models.py:1936 +#: models.py:1951 msgid "File external id" msgstr "" -#: models.py:1938 +#: models.py:1953 msgid "" "Formula to manage file external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:1943 +#: models.py:1958 msgid "Parcel external id" msgstr "" -#: models.py:1946 +#: models.py:1961 msgid "" "Formula to manage parcel external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:1951 +#: models.py:1966 msgid "Context record external id" msgstr "" -#: models.py:1953 +#: models.py:1968 msgid "" "Formula to manage context record external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:1958 +#: models.py:1973 msgid "Base find external id" msgstr "" -#: models.py:1960 +#: models.py:1975 msgid "" "Formula to manage base find external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:1965 +#: models.py:1980 msgid "Find external id" msgstr "" -#: models.py:1967 +#: models.py:1982 msgid "" "Formula to manage find external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:1972 +#: models.py:1987 msgid "Container external id" msgstr "" -#: models.py:1974 +#: models.py:1989 msgid "" "Formula to manage container external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:1979 +#: models.py:1994 msgid "Warehouse external id" msgstr "" -#: models.py:1981 +#: models.py:1996 msgid "" "Formula to manage warehouse external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:1986 +#: models.py:2001 msgid "Raw name for person" msgstr "" -#: models.py:1988 +#: models.py:2003 msgid "" "Formula to manage person raw_name. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:1992 +#: models.py:2007 msgid "Use auto index for finds" msgstr "" -#: models.py:1994 +#: models.py:2009 msgid "Currency" msgstr "" -#: models.py:1998 +#: models.py:2013 msgid "Ishtar site profile" msgstr "" -#: models.py:1999 +#: models.py:2014 msgid "Ishtar site profiles" msgstr "" -#: models.py:2083 +#: models.py:2098 msgid "Enable this form" msgstr "" -#: models.py:2084 +#: models.py:2099 msgid "" "Disable with caution: disabling a form with mandatory fields may lead to " "database errors." msgstr "" -#: models.py:2087 +#: models.py:2102 msgid "Apply to all" msgstr "" -#: models.py:2088 +#: models.py:2103 msgid "" "Apply this form to all users. If set to True, selecting user and user type " "is useless." msgstr "" -#: models.py:2094 +#: models.py:2109 msgid "Custom form" msgstr "" -#: models.py:2095 +#: models.py:2110 msgid "Custom forms" msgstr "" -#: models.py:2111 +#: models.py:2126 msgid "User types" msgstr "" -#: models.py:2183 +#: models.py:2198 msgid "Excluded field" msgstr "" -#: models.py:2184 +#: models.py:2199 msgid "Excluded fields" msgstr "" -#: models.py:2194 templates/blocks/form_flex_snippet.html:18 +#: models.py:2209 templates/blocks/form_flex_snippet.html:18 #: templates/blocks/table_form_snippet.html:9 msgid "Help" msgstr "" -#: models.py:2197 +#: models.py:2212 msgid "Custom form - Json data field" msgstr "" -#: models.py:2198 +#: models.py:2213 msgid "Custom form - Json data fields" msgstr "" -#: models.py:2202 +#: models.py:2217 msgid "Variable name" msgstr "" -#: models.py:2203 +#: models.py:2218 msgid "Description of the variable" msgstr "" -#: models.py:2205 models_imports.py:564 +#: models.py:2220 models_imports.py:564 #: templates/ishtar/formset_import_match.html:22 #: templates/ishtar/import_step_by_step.html:172 #: templates/ishtar/import_step_by_step.html:200 @@ -1445,559 +1445,559 @@ msgstr "" msgid "Value" msgstr "" -#: models.py:2208 +#: models.py:2223 msgid "Global variable" msgstr "" -#: models.py:2335 models.py:2365 +#: models.py:2351 models.py:2381 msgid "Total" msgstr "" -#: models.py:2342 models.py:2529 models.py:2545 +#: models.py:2358 models.py:2545 models.py:2561 #: templates/ishtar/dashboards/dashboard_main_detail.html:211 #: templates/ishtar/dashboards/dashboard_main_detail_users.html:5 #: templates/ishtar/sheet_person.html:30 msgid "Number" msgstr "" -#: models.py:2429 +#: models.py:2445 msgid "Administrative Act" msgstr "" -#: models.py:2436 +#: models.py:2452 msgid "Associated object" msgstr "" -#: models.py:2441 +#: models.py:2457 msgid "Document template" msgstr "" -#: models.py:2442 +#: models.py:2458 msgid "Document templates" msgstr "" -#: models.py:2533 models.py:2546 models.py:4285 models_imports.py:853 +#: models.py:2549 models.py:2562 models.py:4304 models_imports.py:853 msgid "State" msgstr "" -#: models.py:2551 models.py:4007 templates/blocks/JQueryAdvancedTown.html:12 +#: models.py:2567 models.py:4024 templates/blocks/JQueryAdvancedTown.html:12 msgid "Department" msgstr "" -#: models.py:2552 +#: models.py:2568 msgid "Departments" msgstr "" -#: models.py:2592 +#: models.py:2608 msgid "Raw phone" msgstr "" -#: models.py:2598 +#: models.py:2614 msgid "Alternative address is prefered" msgstr "" -#: models.py:2637 +#: models.py:2653 msgid "Tel: " msgstr "" -#: models.py:2641 +#: models.py:2657 msgid "Mobile: " msgstr "" -#: models.py:2645 +#: models.py:2661 msgid "Email: " msgstr "" -#: models.py:2650 +#: models.py:2666 msgid "Merge key" msgstr "" -#: models.py:2722 +#: models.py:2738 msgid "Organization types" msgstr "" -#: models.py:2749 models.py:2896 models.py:3303 +#: models.py:2765 models.py:2913 models.py:3320 msgctxt "key for text search" msgid "name" msgstr "" -#: models.py:2753 models.py:2908 models.py:3315 models.py:3639 +#: models.py:2769 models.py:2925 models.py:3332 models.py:3656 msgctxt "key for text search" msgid "type" msgstr "" -#: models.py:2768 models.py:2947 models.py:3498 models.py:4015 +#: models.py:2784 models.py:2964 models.py:3515 models.py:4032 msgid "Cached name" msgstr "" -#: models.py:2774 +#: models.py:2790 msgid "Organizations" msgstr "" -#: models.py:2804 +#: models.py:2821 msgid "unknown organization" msgstr "" -#: models.py:2830 +#: models.py:2847 msgid "Person types" msgstr "" -#: models.py:2843 models_imports.py:670 +#: models.py:2860 models_imports.py:670 msgid "Title type" msgstr "" -#: models.py:2844 +#: models.py:2861 msgid "Title types" msgstr "" -#: models.py:2868 +#: models.py:2885 msgid "Mr" msgstr "" -#: models.py:2869 +#: models.py:2886 msgid "Miss" msgstr "" -#: models.py:2870 +#: models.py:2887 msgid "Mr and Mrs" msgstr "" -#: models.py:2871 +#: models.py:2888 msgid "Mrs" msgstr "" -#: models.py:2872 +#: models.py:2889 msgid "Doctor" msgstr "" -#: models.py:2900 models.py:3307 +#: models.py:2917 models.py:3324 msgctxt "key for text search" msgid "surname" msgstr "" -#: models.py:2904 models.py:3311 +#: models.py:2921 models.py:3328 msgctxt "key for text search" msgid "email" msgstr "" -#: models.py:2912 models.py:3319 +#: models.py:2929 models.py:3336 msgctxt "key for text search" msgid "organization" msgstr "" -#: models.py:2916 +#: models.py:2933 msgctxt "key for text search" msgid "has-account" msgstr "" -#: models.py:2940 +#: models.py:2957 msgid "Contact type" msgstr "" -#: models.py:2943 models.py:3033 +#: models.py:2960 models.py:3050 msgid "Types" msgstr "" -#: models.py:2946 +#: models.py:2963 msgid "Is attached to" msgstr "" -#: models.py:2953 +#: models.py:2970 msgid "Persons" msgstr "" -#: models.py:3171 +#: models.py:3188 msgid "Groups" msgstr "" -#: models.py:3176 +#: models.py:3193 msgid "Profile types" msgstr "" -#: models.py:3187 +#: models.py:3204 msgid "Profile type summary" msgstr "" -#: models.py:3188 +#: models.py:3205 msgid "Profile types summary" msgstr "" -#: models.py:3199 +#: models.py:3216 msgid "Show field number" msgstr "" -#: models.py:3200 +#: models.py:3217 msgid "Automatically pin" msgstr "" -#: models.py:3201 +#: models.py:3218 msgid "Display pin menu" msgstr "" -#: models.py:3207 +#: models.py:3224 msgid "User profile" msgstr "" -#: models.py:3208 +#: models.py:3225 msgid "User profiles" msgstr "" -#: models.py:3243 +#: models.py:3260 msgid " - duplicate" msgstr "" -#: models.py:3299 +#: models.py:3316 msgctxt "key for text search" msgid "username" msgstr "" -#: models.py:3335 +#: models.py:3352 msgid "Advanced shortcut menu" msgstr "" -#: models.py:3338 +#: models.py:3355 msgid "Ishtar user" msgstr "" -#: models.py:3339 +#: models.py:3356 msgid "Ishtar users" msgstr "" -#: models.py:3424 +#: models.py:3441 msgid "Owner" msgstr "" -#: models.py:3427 +#: models.py:3444 msgid "Shared with" msgstr "" -#: models.py:3469 +#: models.py:3486 msgid "Author types" msgstr "" -#: models.py:3544 +#: models.py:3561 msgid "Source types" msgstr "" -#: models.py:3554 models_imports.py:669 +#: models.py:3571 models_imports.py:669 msgid "Support type" msgstr "" -#: models.py:3555 +#: models.py:3572 msgid "Support types" msgstr "" -#: models.py:3564 +#: models.py:3581 msgid "Format type" msgstr "" -#: models.py:3565 +#: models.py:3582 msgid "Format types" msgstr "" -#: models.py:3574 +#: models.py:3591 msgid "URL" msgstr "" -#: models.py:3577 +#: models.py:3594 msgid "License type" msgstr "" -#: models.py:3578 +#: models.py:3595 msgid "License types" msgstr "" -#: models.py:3631 +#: models.py:3648 msgctxt "key for text search" msgid "author" msgstr "" -#: models.py:3635 +#: models.py:3652 msgctxt "key for text search" msgid "title" msgstr "" -#: models.py:3643 +#: models.py:3660 msgctxt "key for text search" msgid "reference" msgstr "" -#: models.py:3647 +#: models.py:3664 msgctxt "key for text search" msgid "internal-reference" msgstr "" -#: models.py:3651 +#: models.py:3668 msgctxt "key for text search" msgid "description" msgstr "" -#: models.py:3655 +#: models.py:3672 msgctxt "key for text search" msgid "comment" msgstr "" -#: models.py:3659 +#: models.py:3676 msgctxt "key for text search" msgid "additional-information" msgstr "" -#: models.py:3663 +#: models.py:3680 msgctxt "key for text search" msgid "has-duplicate" msgstr "" -#: models.py:3667 models.py:3714 +#: models.py:3684 models.py:3731 msgctxt "key for text search" msgid "operation" msgstr "" -#: models.py:3671 models.py:3717 +#: models.py:3688 models.py:3734 msgctxt "key for text search" msgid "context-record" msgstr "" -#: models.py:3675 models.py:3719 +#: models.py:3692 models.py:3736 msgctxt "key for text search" msgid "find" msgstr "" -#: models.py:3679 models.py:3718 +#: models.py:3696 models.py:3735 msgctxt "key for text search" msgid "file" msgstr "" -#: models.py:3683 models.py:3720 +#: models.py:3700 models.py:3737 msgctxt "key for text search" msgid "site" msgstr "" -#: models.py:3687 models.py:3721 +#: models.py:3704 models.py:3738 msgctxt "key for text search" msgid "warehouse" msgstr "" -#: models.py:3723 +#: models.py:3740 msgctxt "key for text search" msgid "treatment" msgstr "" -#: models.py:3726 +#: models.py:3743 msgctxt "key for text search" msgid "treatment-file" msgstr "" -#: models.py:3732 +#: models.py:3749 msgid "Index" msgstr "" -#: models.py:3734 +#: models.py:3751 msgid "External ID" msgstr "" -#: models.py:3735 templates/ishtar/blocks/window_image_detail.html:34 +#: models.py:3752 templates/ishtar/blocks/window_image_detail.html:34 msgid "Ref." msgstr "" -#: models.py:3736 templates/ishtar/blocks/window_image_detail.html:44 +#: models.py:3753 templates/ishtar/blocks/window_image_detail.html:44 msgid "Internal ref." msgstr "" -#: models.py:3740 +#: models.py:3757 msgid "License" msgstr "" -#: models.py:3742 templates/ishtar/blocks/window_image_detail.html:78 +#: models.py:3759 templates/ishtar/blocks/window_image_detail.html:78 msgid "Support" msgstr "" -#: models.py:3744 models_imports.py:635 +#: models.py:3761 models_imports.py:635 #: templates/ishtar/blocks/window_image_detail.html:88 msgid "Format" msgstr "" -#: models.py:3746 templates/ishtar/blocks/window_image_detail.html:98 +#: models.py:3763 templates/ishtar/blocks/window_image_detail.html:98 msgid "Scale" msgstr "" -#: models.py:3750 +#: models.py:3767 msgid "Authors (raw)" msgstr "" -#: models.py:3762 templates/ishtar/blocks/window_image_detail.html:118 +#: models.py:3779 templates/ishtar/blocks/window_image_detail.html:118 msgid "Number of items" msgstr "" -#: models.py:3769 +#: models.py:3786 msgid "Symbolic links" msgstr "" -#: models.py:3772 +#: models.py:3789 msgid "Related" msgstr "" -#: models.py:3773 +#: models.py:3790 msgid "Cached value - do not edit" msgstr "" -#: models.py:3776 templates/ishtar/sheet_document.html:4 +#: models.py:3793 templates/ishtar/sheet_document.html:4 msgid "Document" msgstr "" -#: models.py:3777 templates/ishtar/sheet_person.html:113 +#: models.py:3794 templates/ishtar/sheet_person.html:113 msgid "Documents" msgstr "" -#: models.py:3781 +#: models.py:3798 msgid "Can view all Documents" msgstr "" -#: models.py:3783 +#: models.py:3800 msgid "Can view own Document" msgstr "" -#: models.py:3785 +#: models.py:3802 msgid "Can add own Document" msgstr "" -#: models.py:3787 +#: models.py:3804 msgid "Can change own Document" msgstr "" -#: models.py:3789 +#: models.py:3806 msgid "Can delete own Document" msgstr "" -#: models.py:4000 +#: models.py:4017 msgid "Surface (m2)" msgstr "" -#: models.py:4001 +#: models.py:4018 msgid "Localisation" msgstr "" -#: models.py:4009 +#: models.py:4026 msgid "Year of creation" msgstr "" -#: models.py:4010 +#: models.py:4027 msgid "Filling this field is relevant to distinguish old towns from new towns." msgstr "" -#: models.py:4142 +#: models.py:4159 msgid "Only four level of parent are managed." msgstr "" -#: models.py:4147 +#: models.py:4164 msgid "Area" msgstr "" -#: models.py:4166 +#: models.py:4183 msgid "Is preventive" msgstr "" -#: models.py:4167 +#: models.py:4184 msgid "Is judiciary" msgstr "" -#: models.py:4170 models_imports.py:636 +#: models.py:4187 models_imports.py:636 msgid "Operation type" msgstr "" -#: models.py:4171 +#: models.py:4188 msgid "Operation types" msgstr "" -#: models.py:4210 +#: models.py:4227 msgid "Judiciary" msgstr "" -#: models.py:4212 +#: models.py:4229 msgid "Preventive" msgstr "" -#: models.py:4214 +#: models.py:4231 msgid "Research" msgstr "" -#: models.py:4249 +#: models.py:4266 msgid "Authority name" msgstr "" -#: models.py:4250 +#: models.py:4267 msgid "Authority SRID" msgstr "" -#: models.py:4253 models_imports.py:668 +#: models.py:4270 models_imports.py:668 msgid "Spatial reference system" msgstr "" -#: models.py:4254 +#: models.py:4271 msgid "Spatial reference systems" msgstr "" -#: models.py:4261 +#: models.py:4280 msgid "Filename" msgstr "" -#: models.py:4266 +#: models.py:4285 msgid "Administration script" msgstr "" -#: models.py:4267 +#: models.py:4286 msgid "Administration scripts" msgstr "" -#: models.py:4274 +#: models.py:4293 msgid "Scheduled" msgstr "" -#: models.py:4275 +#: models.py:4294 msgid "In progress" msgstr "" -#: models.py:4276 models_imports.py:792 +#: models.py:4295 models_imports.py:792 msgid "Finished with errors" msgstr "" -#: models.py:4277 models_imports.py:793 +#: models.py:4296 models_imports.py:793 msgid "Finished" msgstr "" -#: models.py:4290 +#: models.py:4309 msgid "Result" msgstr "" -#: models.py:4293 +#: models.py:4312 msgid "Administration task" msgstr "" -#: models.py:4294 +#: models.py:4313 msgid "Administration tasks" msgstr "" -#: models.py:4298 +#: models.py:4317 msgid "Unknown" msgstr "" -#: models.py:4313 +#: models.py:4332 msgid "" "ISHTAR_SCRIPT_DIR is not set in your local_settings. Contact your " "administrator." msgstr "" -#: models.py:4322 +#: models.py:4341 msgid "" "Your ISHTAR_SCRIPT_DIR is containing dots \"..\". As it can refer to " "relative paths, it can be a security issue and this is not allowed. Only put " "a full path." msgstr "" -#: models.py:4333 +#: models.py:4352 msgid "Your ISHTAR_SCRIPT_DIR: \"{}\" is not a valid directory." msgstr "" -#: models.py:4349 +#: models.py:4368 msgid "" "Script \"{}\" is not available in your script directory. Check your " "configuration." @@ -2583,49 +2583,54 @@ msgid " items added." msgstr "" #: templates/base.html:47 -msgid "yes" +#| msgid "Select all items" +msgid "Select only one item." msgstr "" #: templates/base.html:48 -msgid "no" +msgid "yes" msgstr "" #: templates/base.html:49 -msgid "Autorefresh start. The form is disabled." +msgid "no" msgstr "" #: templates/base.html:50 +msgid "Autorefresh start. The form is disabled." +msgstr "" + +#: templates/base.html:51 msgid "Autorefresh end. The form is re-enabled." msgstr "" -#: templates/base.html:81 +#: templates/base.html:82 msgid "Current items" msgstr "" -#: templates/base.html:83 templates/ishtar/forms/qa_base.html:34 +#: templates/base.html:84 templates/ishtar/forms/qa_base.html:34 #: templates/ishtar/forms/qa_form.html:21 templates/ishtar/manage_basket.html:4 #: templates/welcome.html:11 templates/welcome.html:12 #: templates/welcome.html:13 templates/welcome.html:14 wizards.py:423 msgid ":" msgstr "" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Sheets" msgstr "" -#: templates/base.html:146 +#: templates/base.html:158 msgid "Processing..." msgstr "" -#: templates/base.html:148 +#: templates/base.html:160 msgid "This can be long." msgstr "" -#: templates/base.html:150 +#: templates/base.html:162 msgid "Time to take a coffee?" msgstr "" -#: templates/base.html:152 +#: templates/base.html:164 msgid "Time to take another coffee?" msgstr "" @@ -2832,6 +2837,11 @@ msgstr "" msgid "Data" msgstr "" +#: templates/ishtar/blocks/sheet_json.html:9 +#| msgid "No data provided" +msgid "No data" +msgstr "" + #: templates/ishtar/blocks/window_image_detail.html:64 msgid "Licenses" msgstr "" @@ -3650,11 +3660,11 @@ msgstr "" msgid "No" msgstr "" -#: templatetags/window_tables.py:88 widgets.py:1065 +#: templatetags/window_tables.py:88 widgets.py:1064 msgid "No results" msgstr "" -#: templatetags/window_tables.py:89 widgets.py:1066 +#: templatetags/window_tables.py:89 widgets.py:1065 msgid "Loading..." msgstr "" @@ -3662,15 +3672,15 @@ msgstr "" msgid "You don't have sufficient permissions to do this action." msgstr "" -#: utils.py:338 +#: utils.py:344 msgid " (...)" msgstr "" -#: utils.py:418 +#: utils.py:424 msgid "Information" msgstr "" -#: utils.py:419 +#: utils.py:425 msgid "Load another random image?" msgstr "" @@ -3835,7 +3845,7 @@ msgstr "" msgid "Previous value:" msgstr "" -#: widgets.py:1067 +#: widgets.py:1066 msgid "Remove" msgstr "" diff --git a/translations/de/ishtar_common.po b/translations/de/ishtar_common.po index 46a8e7b7f..142632f42 100644 --- a/translations/de/ishtar_common.po +++ b/translations/de/ishtar_common.po @@ -36,12 +36,12 @@ msgstr "" msgid "Export selected as CSV file" msgstr "" -#: admin.py:207 models.py:1686 templates/navbar.html:31 +#: admin.py:207 models.py:1700 templates/navbar.html:31 msgid "Profile" msgstr "" #: admin.py:208 forms_common.py:782 forms_common.py:801 forms_common.py:802 -#: models.py:3039 +#: models.py:3056 msgid "Profiles" msgstr "" @@ -63,7 +63,7 @@ msgstr "" msgid "These parents are missing: {}" msgstr "" -#: admin.py:386 admin.py:405 models.py:883 models.py:4141 +#: admin.py:386 admin.py:405 models.py:902 models.py:4158 msgid "Parent" msgstr "" @@ -71,11 +71,11 @@ msgstr "" msgid "Center" msgstr "" -#: admin.py:395 models.py:4003 +#: admin.py:395 models.py:4020 msgid "Limit" msgstr "" -#: admin.py:398 models.py:4013 +#: admin.py:398 models.py:4030 msgid "Town children" msgstr "" @@ -123,16 +123,16 @@ msgstr "" msgid "Hide selected" msgstr "" -#: admin.py:931 models.py:2080 +#: admin.py:931 models.py:2095 msgid "Form" msgstr "" -#: admin.py:933 models.py:2105 models_imports.py:127 +#: admin.py:933 models.py:2120 models_imports.py:127 #: templates/ishtar/dashboards/dashboard_main.html:39 msgid "Users" msgstr "" -#: admin.py:953 models.py:2180 +#: admin.py:953 models.py:2195 msgid "Field" msgstr "" @@ -328,36 +328,36 @@ msgstr "" msgid "Are you sure you want to delete?" msgstr "" -#: forms.py:379 +#: forms.py:410 msgid "There are identical items." msgstr "" -#: forms.py:535 +#: forms.py:566 msgid "Last modified by" msgstr "" -#: forms.py:541 +#: forms.py:572 msgid "Modified since" msgstr "" -#: forms.py:565 forms.py:566 +#: forms.py:596 forms.py:597 msgid "Closing date" msgstr "" -#: forms.py:578 forms_common.py:1272 +#: forms.py:609 forms_common.py:1272 msgid "You should select an item." msgstr "" -#: forms.py:579 +#: forms.py:610 msgid "Add a new item" msgstr "" -#: forms.py:769 models.py:2434 +#: forms.py:800 models.py:2450 msgid "Template" msgstr "" #: forms_common.py:54 forms_common.py:72 forms_common.py:317 -#: forms_common.py:556 models.py:2568 models.py:4020 +#: forms_common.py:556 models.py:2584 models.py:4037 #: templates/blocks/JQueryAdvancedTown.html:19 msgid "Town" msgstr "" @@ -372,8 +372,8 @@ msgid "" "french town Saint-Denis in the Seine-Saint-Denis department.

" msgstr "" -#: forms_common.py:81 forms_common.py:1293 ishtar_menu.py:48 models.py:2952 -#: models.py:3204 models.py:3332 models.py:3495 +#: forms_common.py:81 forms_common.py:1293 ishtar_menu.py:48 models.py:2969 +#: models.py:3221 models.py:3349 models.py:3512 #: templates/ishtar/sheet_person.html:4 msgid "Person" msgstr "" @@ -425,16 +425,16 @@ msgid "all users" msgstr "" #: forms_common.py:305 forms_common.py:475 forms_common.py:609 -#: ishtar_menu.py:76 models.py:2773 models.py:2890 models.py:3292 +#: ishtar_menu.py:76 models.py:2789 models.py:2907 models.py:3309 #: templates/ishtar/sheet_organization.html:4 msgid "Organization" msgstr "" #: forms_common.py:308 forms_common.py:351 forms_common.py:470 #: forms_common.py:526 forms_common.py:604 forms_common.py:790 -#: forms_common.py:823 models.py:1056 models.py:1080 models.py:1879 -#: models.py:2079 models.py:2430 models.py:2765 models.py:2936 models.py:3192 -#: models.py:3999 models.py:4262 models_imports.py:98 models_imports.py:123 +#: forms_common.py:823 models.py:1075 models.py:1099 models.py:1894 +#: models.py:2094 models.py:2446 models.py:2781 models.py:2953 models.py:3209 +#: models.py:4016 models.py:4281 models_imports.py:98 models_imports.py:123 #: models_imports.py:445 models_imports.py:537 models_imports.py:827 #: templates/ishtar/import_step_by_step.html:102 #: templates/ishtar/import_step_by_step.html:270 @@ -443,40 +443,40 @@ msgstr "" msgid "Name" msgstr "Name" -#: forms_common.py:309 models.py:2721 models_imports.py:630 +#: forms_common.py:309 models.py:2737 models_imports.py:630 #: models_imports.py:631 msgid "Organization type" msgstr "" -#: forms_common.py:311 forms_common.py:550 models.py:2563 +#: forms_common.py:311 forms_common.py:550 models.py:2579 #: templates/ishtar/blocks/sheet_address_section.html:4 msgid "Address" msgstr "" -#: forms_common.py:313 forms_common.py:553 models.py:2564 +#: forms_common.py:313 forms_common.py:553 models.py:2580 msgid "Address complement" msgstr "" -#: forms_common.py:315 forms_common.py:554 models.py:2566 +#: forms_common.py:315 forms_common.py:554 models.py:2582 msgid "Postal code" msgstr "Postleitzahl" -#: forms_common.py:318 forms_common.py:557 models.py:2569 +#: forms_common.py:318 forms_common.py:557 models.py:2585 msgid "Country" msgstr "" #: forms_common.py:320 forms_common.py:472 forms_common.py:530 -#: forms_common.py:606 forms_common.py:731 models.py:2596 +#: forms_common.py:606 forms_common.py:731 models.py:2612 msgid "Email" msgstr "E-Mail-Adresse" -#: forms_common.py:321 forms_common.py:533 models.py:2581 +#: forms_common.py:321 forms_common.py:533 models.py:2597 #: templates/ishtar/sheet_person.html:27 #: templates/ishtar/wizard/wizard_person.html:33 msgid "Phone" msgstr "" -#: forms_common.py:322 forms_common.py:542 models.py:2593 +#: forms_common.py:322 forms_common.py:542 models.py:2609 #: templates/ishtar/sheet_person.html:45 #: templates/ishtar/wizard/wizard_person.html:54 msgid "Mobile phone" @@ -488,7 +488,7 @@ msgid "Full text search" msgstr "" #: forms_common.py:352 forms_common.py:473 forms_common.py:607 -#: forms_common.py:788 models.py:1089 models.py:2767 models.py:3738 +#: forms_common.py:788 models.py:1108 models.py:2783 models.py:3755 #: models_imports.py:680 templates/ishtar/blocks/window_image_detail.html:24 #: templates/ishtar/blocks/window_tables/documents.html:8 #: templates/ishtar/import_table.html:28 @@ -512,7 +512,7 @@ msgstr "" msgid "Organization to merge" msgstr "" -#: forms_common.py:471 forms_common.py:524 forms_common.py:605 models.py:2934 +#: forms_common.py:471 forms_common.py:524 forms_common.py:605 models.py:2951 #: templates/ishtar/sheet_organization.html:24 msgid "Surname" msgstr "" @@ -529,25 +529,25 @@ msgstr "" msgid "Identity" msgstr "" -#: forms_common.py:521 forms_common.py:1095 forms_common.py:1217 models.py:2928 -#: models.py:2930 models.py:3729 models_imports.py:632 +#: forms_common.py:521 forms_common.py:1095 forms_common.py:1217 models.py:2945 +#: models.py:2947 models.py:3746 models_imports.py:632 #: templates/ishtar/blocks/window_tables/documents.html:7 msgid "Title" msgstr "" -#: forms_common.py:522 models.py:2932 +#: forms_common.py:522 models.py:2949 msgid "Salutation" msgstr "" -#: forms_common.py:528 models.py:2938 +#: forms_common.py:528 models.py:2955 msgid "Raw name" msgstr "" -#: forms_common.py:531 models.py:2582 +#: forms_common.py:531 models.py:2598 msgid "Phone description" msgstr "" -#: forms_common.py:534 models.py:2584 models.py:2586 +#: forms_common.py:534 models.py:2600 models.py:2602 msgid "Phone description 2" msgstr "" @@ -555,11 +555,11 @@ msgstr "" msgid "Phone 2" msgstr "" -#: forms_common.py:538 models.py:2590 +#: forms_common.py:538 models.py:2606 msgid "Phone description 3" msgstr "" -#: forms_common.py:540 models.py:2588 +#: forms_common.py:540 models.py:2604 msgid "Phone 3" msgstr "" @@ -567,23 +567,23 @@ msgstr "" msgid "Current organization" msgstr "" -#: forms_common.py:559 models.py:2571 +#: forms_common.py:559 models.py:2587 msgid "Other address: address" msgstr "" -#: forms_common.py:562 models.py:2574 +#: forms_common.py:562 models.py:2590 msgid "Other address: address complement" msgstr "" -#: forms_common.py:564 models.py:2575 +#: forms_common.py:564 models.py:2591 msgid "Other address: postal code" msgstr "" -#: forms_common.py:566 models.py:2577 +#: forms_common.py:566 models.py:2593 msgid "Other address: town" msgstr "" -#: forms_common.py:568 models.py:2579 +#: forms_common.py:568 models.py:2595 msgid "Other address: country" msgstr "" @@ -591,7 +591,7 @@ msgstr "" msgid "Already has an account" msgstr "" -#: forms_common.py:603 models.py:3293 +#: forms_common.py:603 models.py:3310 msgid "Username" msgstr "Benutzername" @@ -599,7 +599,7 @@ msgstr "Benutzername" msgid "Account search" msgstr "" -#: forms_common.py:669 forms_common.py:709 forms_common.py:713 models.py:2829 +#: forms_common.py:669 forms_common.py:709 forms_common.py:713 models.py:2846 msgid "Person type" msgstr "" @@ -627,7 +627,7 @@ msgstr "" msgid "This username already exists." msgstr "" -#: forms_common.py:789 models.py:3195 models.py:4148 +#: forms_common.py:789 models.py:3212 models.py:4165 msgid "Areas" msgstr "" @@ -635,11 +635,11 @@ msgstr "" msgid "Send the new password by email?" msgstr "" -#: forms_common.py:821 models.py:3197 views.py:968 +#: forms_common.py:821 models.py:3214 views.py:968 msgid "Current profile" msgstr "" -#: forms_common.py:824 models.py:3175 models.py:3194 +#: forms_common.py:824 models.py:3192 models.py:3211 msgid "Profile type" msgstr "" @@ -667,8 +667,8 @@ msgstr "" msgid " (duplicate)" msgstr "" -#: forms_common.py:932 forms_common.py:946 forms_common.py:947 models.py:4021 -#: models.py:4136 +#: forms_common.py:932 forms_common.py:946 forms_common.py:947 models.py:4038 +#: models.py:4153 msgid "Towns" msgstr "" @@ -695,19 +695,19 @@ msgstr "" msgid "Document - General" msgstr "" -#: forms_common.py:1098 forms_common.py:1218 models.py:3543 +#: forms_common.py:1098 forms_common.py:1218 models.py:3560 #: models_imports.py:633 msgid "Source type" msgstr "" #: forms_common.py:1101 forms_common.py:1152 forms_common.py:1333 -#: forms_common.py:1334 models.py:3504 models.py:3612 models.py:3748 +#: forms_common.py:1334 models.py:3521 models.py:3629 models.py:3765 #: templates/ishtar/blocks/window_image_detail.html:9 #: templates/ishtar/blocks/window_tables/documents.html:9 msgid "Authors" msgstr "" -#: forms_common.py:1105 models.py:3754 +#: forms_common.py:1105 models.py:3771 msgid "Numerical ressource (web address)" msgstr "" @@ -720,7 +720,7 @@ msgctxt "Not directory" msgid "File" msgstr "" -#: forms_common.py:1113 forms_common.py:1219 models.py:4138 +#: forms_common.py:1113 forms_common.py:1219 models.py:4155 msgid "Reference" msgstr "" @@ -728,38 +728,38 @@ msgstr "" msgid "Internal reference" msgstr "" -#: forms_common.py:1118 models.py:3756 +#: forms_common.py:1118 models.py:3773 #: templates/ishtar/blocks/window_image_detail.html:150 msgid "Receipt date" msgstr "" -#: forms_common.py:1120 models.py:3758 models_imports.py:859 +#: forms_common.py:1120 models.py:3775 models_imports.py:859 #: templates/ishtar/blocks/window_image_detail.html:54 msgid "Creation date" msgstr "Gründungsdatum" -#: forms_common.py:1123 models.py:3761 +#: forms_common.py:1123 models.py:3778 #: templates/ishtar/blocks/window_image_detail.html:160 msgid "Receipt date in documentation" msgstr "" -#: forms_common.py:1125 forms_common.py:1222 models.py:473 models.py:2942 -#: models.py:3421 models.py:3764 models_imports.py:483 +#: forms_common.py:1125 forms_common.py:1222 models.py:493 models.py:2959 +#: models.py:3438 models.py:3781 models_imports.py:483 #: templates/ishtar/blocks/window_image_detail.html:170 msgid "Comment" msgstr "" -#: forms_common.py:1127 forms_common.py:1221 models.py:1884 models.py:3763 +#: forms_common.py:1127 forms_common.py:1221 models.py:1899 models.py:3780 #: models_imports.py:125 models_imports.py:372 models_imports.py:446 msgid "Description" msgstr "Beschreibung" -#: forms_common.py:1130 models.py:3765 +#: forms_common.py:1130 models.py:3782 #: templates/ishtar/blocks/window_image_detail.html:182 msgid "Additional information" msgstr "" -#: forms_common.py:1132 forms_common.py:1225 models.py:3767 +#: forms_common.py:1132 forms_common.py:1225 models.py:3784 #: templates/ishtar/blocks/window_image_detail.html:108 msgid "Has a duplicate" msgstr "" @@ -794,7 +794,7 @@ msgid "A document have to attached at least to one item" msgstr "" #: forms_common.py:1214 forms_common.py:1286 forms_common.py:1321 -#: models.py:3503 templates/ishtar/wizard/wizard_person_deletion.html:139 +#: models.py:3520 templates/ishtar/wizard/wizard_person_deletion.html:139 msgid "Author" msgstr "" @@ -822,7 +822,7 @@ msgstr "" msgid "Would you like to delete this documentation?" msgstr "" -#: forms_common.py:1294 models.py:3468 models.py:3497 models_imports.py:634 +#: forms_common.py:1294 models.py:3485 models.py:3514 models_imports.py:634 msgid "Author type" msgstr "" @@ -834,11 +834,11 @@ msgstr "" msgid "There are identical authors." msgstr "" -#: forms_common.py:1339 models.py:1683 +#: forms_common.py:1339 models.py:1697 msgid "Query" msgstr "" -#: forms_common.py:1344 models.py:1687 +#: forms_common.py:1344 models.py:1701 msgid "Is an alert" msgstr "" @@ -878,7 +878,7 @@ msgstr "" msgid "Deletion" msgstr "" -#: ishtar_menu.py:40 models.py:2209 views.py:992 +#: ishtar_menu.py:40 models.py:2224 views.py:992 msgid "Global variables" msgstr "" @@ -935,35 +935,35 @@ msgstr "" msgid "Not a valid item." msgstr "" -#: models.py:211 +#: models.py:212 msgid "A selected item is not a valid item." msgstr "" -#: models.py:222 +#: models.py:224 msgid "This item already exists." msgstr "" -#: models.py:465 models.py:1682 models.py:2191 models.py:2528 models.py:2544 -#: models.py:3420 models_imports.py:368 +#: models.py:485 models.py:1696 models.py:2206 models.py:2544 models.py:2560 +#: models.py:3437 models_imports.py:368 msgid "Label" msgstr "" -#: models.py:467 +#: models.py:487 msgid "Textual ID" msgstr "" -#: models.py:470 +#: models.py:490 msgid "" "The slug is the standardized version of the name. It contains only lowercase " "letters, numbers and hyphens. Each slug must be unique." msgstr "" -#: models.py:474 models.py:2081 models.py:2437 models.py:3425 +#: models.py:494 models.py:2096 models.py:2453 models.py:3442 #: models_imports.py:139 models_imports.py:542 msgid "Available" msgstr "" -#: models.py:898 models.py:1083 models_imports.py:563 +#: models.py:917 models.py:1102 models_imports.py:563 #: templates/ishtar/formset_import_match.html:21 #: templates/ishtar/import_step_by_step.html:171 #: templates/ishtar/import_step_by_step.html:199 @@ -972,473 +972,473 @@ msgstr "" msgid "Key" msgstr "" -#: models.py:904 +#: models.py:923 msgid "Specific key to an import" msgstr "" -#: models.py:1043 +#: models.py:1062 msgid "Generated relation image (SVG)" msgstr "" -#: models.py:1057 models.py:1091 models.py:1604 models.py:2193 models.py:3465 -#: models.py:4165 models.py:4247 +#: models.py:1076 models.py:1110 models.py:1618 models.py:2208 models.py:3482 +#: models.py:4182 models.py:4264 msgid "Order" msgstr "" -#: models.py:1060 +#: models.py:1079 msgid "Json data - Menu" msgstr "" -#: models.py:1061 +#: models.py:1080 msgid "Json data - Menus" msgstr "" -#: models.py:1069 +#: models.py:1088 msgid "Text" msgstr "" -#: models.py:1070 +#: models.py:1089 msgid "Long text" msgstr "" -#: models.py:1071 models_imports.py:676 +#: models.py:1090 models_imports.py:676 msgid "Integer" msgstr "" -#: models.py:1072 +#: models.py:1091 msgid "Boolean" msgstr "" -#: models.py:1073 models_imports.py:677 +#: models.py:1092 models_imports.py:677 msgid "Float" msgstr "" -#: models.py:1074 models_imports.py:679 +#: models.py:1093 models_imports.py:679 msgid "Date" msgstr "" -#: models.py:1075 +#: models.py:1094 msgid "Choices" msgstr "" -#: models.py:1084 +#: models.py:1103 msgid "" "Value of the key in the JSON schema. For hierarchical key use \"__\" to " "explain it. For instance for the key 'my_subkey' with data such as {'my_key':" " {'my_subkey': 'value'}}, its value will be reached with my_key__my_subkey." msgstr "" -#: models.py:1088 +#: models.py:1107 msgid "Display" msgstr "" -#: models.py:1092 +#: models.py:1111 msgid "Use in search indexes" msgstr "" -#: models.py:1099 +#: models.py:1118 msgid "Json data - Field" msgstr "" -#: models.py:1100 +#: models.py:1119 msgid "Json data - Fields" msgstr "" -#: models.py:1111 +#: models.py:1130 msgid "Content types of the field and of the menu do not match" msgstr "" -#: models.py:1171 +#: models.py:1190 msgid "Search vector" msgstr "" -#: models.py:1172 +#: models.py:1191 msgid "Auto filled at save" msgstr "" -#: models.py:1392 +#: models.py:1406 msgid "Add document/image" msgstr "" -#: models.py:1394 +#: models.py:1408 msgid "doc./image" msgstr "" -#: models.py:1413 +#: models.py:1427 msgid "Last editor" msgstr "" -#: models.py:1416 +#: models.py:1430 msgid "Creator" msgstr "" -#: models.py:1597 +#: models.py:1611 msgid "Above" msgstr "" -#: models.py:1598 +#: models.py:1612 msgid "Bellow" msgstr "" -#: models.py:1599 +#: models.py:1613 msgid "Equal" msgstr "" -#: models.py:1605 +#: models.py:1619 msgid "Symmetrical" msgstr "" -#: models.py:1606 +#: models.py:1620 msgid "Tiny label" msgstr "" -#: models.py:1609 +#: models.py:1623 msgid "Inverse relation" msgstr "" -#: models.py:1612 +#: models.py:1626 msgid "Logical relation" msgstr "" -#: models.py:1622 +#: models.py:1636 msgid "Cannot have symmetrical and an inverse_relation" msgstr "" -#: models.py:1685 +#: models.py:1699 msgid "Content type" msgstr "" -#: models.py:1690 +#: models.py:1704 msgid "Search query" msgstr "" -#: models.py:1691 +#: models.py:1705 msgid "Search queries" msgstr "" -#: models.py:1855 +#: models.py:1870 msgid "Euro" msgstr "" -#: models.py:1856 +#: models.py:1871 msgid "US dollar" msgstr "" -#: models.py:1857 views.py:742 views.py:803 +#: models.py:1872 views.py:742 views.py:803 msgid "Operations" msgstr "" -#: models.py:1858 views.py:744 views.py:807 +#: models.py:1873 views.py:744 views.py:807 msgid "Context records" msgstr "" -#: models.py:1859 +#: models.py:1874 msgid "Site" msgstr "" -#: models.py:1859 +#: models.py:1874 msgid "Archaeological entity" msgstr "" -#: models.py:1863 +#: models.py:1878 msgid "Site search" msgstr "" -#: models.py:1864 +#: models.py:1879 msgid "New site" msgstr "" -#: models.py:1865 +#: models.py:1880 msgid "Site modification" msgstr "" -#: models.py:1866 +#: models.py:1881 msgid "Site deletion" msgstr "" -#: models.py:1869 +#: models.py:1884 msgid "Archaeological entity search" msgstr "" -#: models.py:1870 +#: models.py:1885 msgid "New archaeological entity" msgstr "" -#: models.py:1871 +#: models.py:1886 msgid "Archaeological entity modification" msgstr "" -#: models.py:1872 +#: models.py:1887 msgid "Archaeological entity deletion" msgstr "" -#: models.py:1880 models.py:2431 models_imports.py:124 +#: models.py:1895 models.py:2447 models_imports.py:124 msgid "Slug" msgstr "" -#: models.py:1881 +#: models.py:1896 msgid "Current active" msgstr "" -#: models.py:1883 +#: models.py:1898 msgid "Activate experimental feature" msgstr "" -#: models.py:1886 +#: models.py:1901 msgid "Alternate configuration" msgstr "" -#: models.py:1888 +#: models.py:1903 msgid "Choose an alternate configuration for label, index management" msgstr "" -#: models.py:1892 +#: models.py:1907 msgid "Files module" msgstr "" -#: models.py:1894 +#: models.py:1909 msgid "Archaeological site module" msgstr "" -#: models.py:1896 +#: models.py:1911 msgid "Archaeological site type" msgstr "" -#: models.py:1900 +#: models.py:1915 msgid "Context records module" msgstr "" -#: models.py:1902 +#: models.py:1917 msgid "Finds module" msgstr "" -#: models.py:1903 +#: models.py:1918 msgid "Need context records module" msgstr "" -#: models.py:1905 +#: models.py:1920 msgid "Find index is based on" msgstr "" -#: models.py:1907 +#: models.py:1922 msgid "" "To prevent irrelevant indexes, change this parameter only if there is no " "find in the database" msgstr "" -#: models.py:1910 +#: models.py:1925 msgid "Warehouses module" msgstr "" -#: models.py:1911 +#: models.py:1926 msgid "Need finds module" msgstr "" -#: models.py:1912 +#: models.py:1927 msgid "Preservation module" msgstr "" -#: models.py:1914 +#: models.py:1929 msgid "Mapping module" msgstr "" -#: models.py:1915 +#: models.py:1930 msgid "Underwater module" msgstr "" -#: models.py:1917 +#: models.py:1932 msgid "Parcel are mandatory for context records" msgstr "" -#: models.py:1919 +#: models.py:1934 msgid "Home page" msgstr "" -#: models.py:1920 +#: models.py:1935 #, python-brace-format msgid "" "Homepage of Ishtar - if not defined a default homepage will appear. Use the " "markdown syntax. {random_image} can be used to display a random image." msgstr "" -#: models.py:1924 +#: models.py:1939 msgid "Main operation code prefix" msgstr "" -#: models.py:1928 +#: models.py:1943 msgid "Default operation code prefix" msgstr "" -#: models.py:1932 +#: models.py:1947 msgid "Operation region code" msgstr "" -#: models.py:1936 +#: models.py:1951 msgid "File external id" msgstr "" -#: models.py:1938 +#: models.py:1953 msgid "" "Formula to manage file external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:1943 +#: models.py:1958 msgid "Parcel external id" msgstr "" -#: models.py:1946 +#: models.py:1961 msgid "" "Formula to manage parcel external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:1951 +#: models.py:1966 msgid "Context record external id" msgstr "" -#: models.py:1953 +#: models.py:1968 msgid "" "Formula to manage context record external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:1958 +#: models.py:1973 msgid "Base find external id" msgstr "" -#: models.py:1960 +#: models.py:1975 msgid "" "Formula to manage base find external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:1965 +#: models.py:1980 msgid "Find external id" msgstr "" -#: models.py:1967 +#: models.py:1982 msgid "" "Formula to manage find external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:1972 +#: models.py:1987 msgid "Container external id" msgstr "" -#: models.py:1974 +#: models.py:1989 msgid "" "Formula to manage container external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:1979 +#: models.py:1994 msgid "Warehouse external id" msgstr "" -#: models.py:1981 +#: models.py:1996 msgid "" "Formula to manage warehouse external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:1986 +#: models.py:2001 msgid "Raw name for person" msgstr "" -#: models.py:1988 +#: models.py:2003 msgid "" "Formula to manage person raw_name. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:1992 +#: models.py:2007 msgid "Use auto index for finds" msgstr "" -#: models.py:1994 +#: models.py:2009 msgid "Currency" msgstr "" -#: models.py:1998 +#: models.py:2013 msgid "Ishtar site profile" msgstr "" -#: models.py:1999 +#: models.py:2014 msgid "Ishtar site profiles" msgstr "" -#: models.py:2083 +#: models.py:2098 msgid "Enable this form" msgstr "" -#: models.py:2084 +#: models.py:2099 msgid "" "Disable with caution: disabling a form with mandatory fields may lead to " "database errors." msgstr "" -#: models.py:2087 +#: models.py:2102 msgid "Apply to all" msgstr "" -#: models.py:2088 +#: models.py:2103 msgid "" "Apply this form to all users. If set to True, selecting user and user type " "is useless." msgstr "" -#: models.py:2094 +#: models.py:2109 msgid "Custom form" msgstr "" -#: models.py:2095 +#: models.py:2110 msgid "Custom forms" msgstr "" -#: models.py:2111 +#: models.py:2126 msgid "User types" msgstr "" -#: models.py:2183 +#: models.py:2198 msgid "Excluded field" msgstr "" -#: models.py:2184 +#: models.py:2199 msgid "Excluded fields" msgstr "" -#: models.py:2194 templates/blocks/form_flex_snippet.html:18 +#: models.py:2209 templates/blocks/form_flex_snippet.html:18 #: templates/blocks/table_form_snippet.html:9 msgid "Help" msgstr "" -#: models.py:2197 +#: models.py:2212 msgid "Custom form - Json data field" msgstr "" -#: models.py:2198 +#: models.py:2213 msgid "Custom form - Json data fields" msgstr "" -#: models.py:2202 +#: models.py:2217 msgid "Variable name" msgstr "" -#: models.py:2203 +#: models.py:2218 msgid "Description of the variable" msgstr "" -#: models.py:2205 models_imports.py:564 +#: models.py:2220 models_imports.py:564 #: templates/ishtar/formset_import_match.html:22 #: templates/ishtar/import_step_by_step.html:172 #: templates/ishtar/import_step_by_step.html:200 @@ -1446,560 +1446,560 @@ msgstr "" msgid "Value" msgstr "" -#: models.py:2208 +#: models.py:2223 msgid "Global variable" msgstr "" -#: models.py:2335 models.py:2365 +#: models.py:2351 models.py:2381 msgid "Total" msgstr "" -#: models.py:2342 models.py:2529 models.py:2545 +#: models.py:2358 models.py:2545 models.py:2561 #: templates/ishtar/dashboards/dashboard_main_detail.html:211 #: templates/ishtar/dashboards/dashboard_main_detail_users.html:5 #: templates/ishtar/sheet_person.html:30 msgid "Number" msgstr "" -#: models.py:2429 +#: models.py:2445 msgid "Administrative Act" msgstr "" -#: models.py:2436 +#: models.py:2452 msgid "Associated object" msgstr "" -#: models.py:2441 +#: models.py:2457 msgid "Document template" msgstr "" -#: models.py:2442 +#: models.py:2458 msgid "Document templates" msgstr "" -#: models.py:2533 models.py:2546 models.py:4285 models_imports.py:853 +#: models.py:2549 models.py:2562 models.py:4304 models_imports.py:853 msgid "State" msgstr "" -#: models.py:2551 models.py:4007 templates/blocks/JQueryAdvancedTown.html:12 +#: models.py:2567 models.py:4024 templates/blocks/JQueryAdvancedTown.html:12 msgid "Department" msgstr "" -#: models.py:2552 +#: models.py:2568 msgid "Departments" msgstr "" -#: models.py:2592 +#: models.py:2608 msgid "Raw phone" msgstr "" -#: models.py:2598 +#: models.py:2614 msgid "Alternative address is prefered" msgstr "" -#: models.py:2637 +#: models.py:2653 msgid "Tel: " msgstr "" -#: models.py:2641 +#: models.py:2657 msgid "Mobile: " msgstr "" -#: models.py:2645 +#: models.py:2661 msgid "Email: " msgstr "E-Mail-Adresse:" -#: models.py:2650 +#: models.py:2666 msgid "Merge key" msgstr "" -#: models.py:2722 +#: models.py:2738 msgid "Organization types" msgstr "" -#: models.py:2749 models.py:2896 models.py:3303 +#: models.py:2765 models.py:2913 models.py:3320 msgctxt "key for text search" msgid "name" msgstr "" -#: models.py:2753 models.py:2908 models.py:3315 models.py:3639 +#: models.py:2769 models.py:2925 models.py:3332 models.py:3656 msgctxt "key for text search" msgid "type" msgstr "" -#: models.py:2768 models.py:2947 models.py:3498 models.py:4015 +#: models.py:2784 models.py:2964 models.py:3515 models.py:4032 msgid "Cached name" msgstr "" -#: models.py:2774 +#: models.py:2790 msgid "Organizations" msgstr "" -#: models.py:2804 +#: models.py:2821 msgid "unknown organization" msgstr "" -#: models.py:2830 +#: models.py:2847 msgid "Person types" msgstr "" -#: models.py:2843 models_imports.py:670 +#: models.py:2860 models_imports.py:670 msgid "Title type" msgstr "" -#: models.py:2844 +#: models.py:2861 msgid "Title types" msgstr "" -#: models.py:2868 +#: models.py:2885 msgid "Mr" msgstr "" -#: models.py:2869 +#: models.py:2886 msgid "Miss" msgstr "" -#: models.py:2870 +#: models.py:2887 msgid "Mr and Mrs" msgstr "" -#: models.py:2871 +#: models.py:2888 msgid "Mrs" msgstr "" -#: models.py:2872 +#: models.py:2889 msgid "Doctor" msgstr "" -#: models.py:2900 models.py:3307 +#: models.py:2917 models.py:3324 msgctxt "key for text search" msgid "surname" msgstr "" -#: models.py:2904 models.py:3311 +#: models.py:2921 models.py:3328 msgctxt "key for text search" msgid "email" msgstr "" -#: models.py:2912 models.py:3319 +#: models.py:2929 models.py:3336 msgctxt "key for text search" msgid "organization" msgstr "" -#: models.py:2916 +#: models.py:2933 msgctxt "key for text search" msgid "has-account" msgstr "" -#: models.py:2940 +#: models.py:2957 msgid "Contact type" msgstr "" -#: models.py:2943 models.py:3033 +#: models.py:2960 models.py:3050 msgid "Types" msgstr "" -#: models.py:2946 +#: models.py:2963 msgid "Is attached to" msgstr "" -#: models.py:2953 +#: models.py:2970 msgid "Persons" msgstr "" -#: models.py:3171 +#: models.py:3188 msgid "Groups" msgstr "" -#: models.py:3176 +#: models.py:3193 msgid "Profile types" msgstr "" -#: models.py:3187 +#: models.py:3204 msgid "Profile type summary" msgstr "" -#: models.py:3188 +#: models.py:3205 msgid "Profile types summary" msgstr "" -#: models.py:3199 +#: models.py:3216 msgid "Show field number" msgstr "" -#: models.py:3200 +#: models.py:3217 msgid "Automatically pin" msgstr "" -#: models.py:3201 +#: models.py:3218 msgid "Display pin menu" msgstr "" -#: models.py:3207 +#: models.py:3224 msgid "User profile" msgstr "" -#: models.py:3208 +#: models.py:3225 msgid "User profiles" msgstr "" -#: models.py:3243 +#: models.py:3260 msgid " - duplicate" msgstr "" -#: models.py:3299 +#: models.py:3316 msgctxt "key for text search" msgid "username" msgstr "" -#: models.py:3335 +#: models.py:3352 msgid "Advanced shortcut menu" msgstr "" -#: models.py:3338 +#: models.py:3355 msgid "Ishtar user" msgstr "" -#: models.py:3339 +#: models.py:3356 msgid "Ishtar users" msgstr "" -#: models.py:3424 +#: models.py:3441 msgid "Owner" msgstr "" -#: models.py:3427 +#: models.py:3444 msgid "Shared with" msgstr "" -#: models.py:3469 +#: models.py:3486 msgid "Author types" msgstr "" -#: models.py:3544 +#: models.py:3561 msgid "Source types" msgstr "" -#: models.py:3554 models_imports.py:669 +#: models.py:3571 models_imports.py:669 msgid "Support type" msgstr "" -#: models.py:3555 +#: models.py:3572 msgid "Support types" msgstr "" -#: models.py:3564 +#: models.py:3581 msgid "Format type" msgstr "" -#: models.py:3565 +#: models.py:3582 msgid "Format types" msgstr "" -#: models.py:3574 +#: models.py:3591 msgid "URL" msgstr "" -#: models.py:3577 +#: models.py:3594 msgid "License type" msgstr "" -#: models.py:3578 +#: models.py:3595 msgid "License types" msgstr "" -#: models.py:3631 +#: models.py:3648 msgctxt "key for text search" msgid "author" msgstr "" -#: models.py:3635 +#: models.py:3652 msgctxt "key for text search" msgid "title" msgstr "" -#: models.py:3643 +#: models.py:3660 msgctxt "key for text search" msgid "reference" msgstr "" -#: models.py:3647 +#: models.py:3664 msgctxt "key for text search" msgid "internal-reference" msgstr "" -#: models.py:3651 +#: models.py:3668 msgctxt "key for text search" msgid "description" msgstr "" -#: models.py:3655 +#: models.py:3672 msgctxt "key for text search" msgid "comment" msgstr "" -#: models.py:3659 +#: models.py:3676 msgctxt "key for text search" msgid "additional-information" msgstr "" -#: models.py:3663 +#: models.py:3680 msgctxt "key for text search" msgid "has-duplicate" msgstr "" -#: models.py:3667 models.py:3714 +#: models.py:3684 models.py:3731 msgctxt "key for text search" msgid "operation" msgstr "" -#: models.py:3671 models.py:3717 +#: models.py:3688 models.py:3734 msgctxt "key for text search" msgid "context-record" msgstr "" -#: models.py:3675 models.py:3719 +#: models.py:3692 models.py:3736 msgctxt "key for text search" msgid "find" msgstr "" -#: models.py:3679 models.py:3718 +#: models.py:3696 models.py:3735 msgctxt "key for text search" msgid "file" msgstr "" -#: models.py:3683 models.py:3720 +#: models.py:3700 models.py:3737 msgctxt "key for text search" msgid "site" msgstr "" -#: models.py:3687 models.py:3721 +#: models.py:3704 models.py:3738 msgctxt "key for text search" msgid "warehouse" msgstr "" -#: models.py:3723 +#: models.py:3740 msgctxt "key for text search" msgid "treatment" msgstr "" -#: models.py:3726 +#: models.py:3743 msgctxt "key for text search" msgid "treatment-file" msgstr "" -#: models.py:3732 +#: models.py:3749 msgid "Index" msgstr "" -#: models.py:3734 +#: models.py:3751 msgid "External ID" msgstr "" -#: models.py:3735 templates/ishtar/blocks/window_image_detail.html:34 +#: models.py:3752 templates/ishtar/blocks/window_image_detail.html:34 msgid "Ref." msgstr "" -#: models.py:3736 templates/ishtar/blocks/window_image_detail.html:44 +#: models.py:3753 templates/ishtar/blocks/window_image_detail.html:44 msgid "Internal ref." msgstr "" -#: models.py:3740 +#: models.py:3757 msgid "License" msgstr "" -#: models.py:3742 templates/ishtar/blocks/window_image_detail.html:78 +#: models.py:3759 templates/ishtar/blocks/window_image_detail.html:78 msgid "Support" msgstr "" -#: models.py:3744 models_imports.py:635 +#: models.py:3761 models_imports.py:635 #: templates/ishtar/blocks/window_image_detail.html:88 msgid "Format" msgstr "" -#: models.py:3746 templates/ishtar/blocks/window_image_detail.html:98 +#: models.py:3763 templates/ishtar/blocks/window_image_detail.html:98 msgid "Scale" msgstr "" -#: models.py:3750 +#: models.py:3767 msgid "Authors (raw)" msgstr "" -#: models.py:3762 templates/ishtar/blocks/window_image_detail.html:118 +#: models.py:3779 templates/ishtar/blocks/window_image_detail.html:118 msgid "Number of items" msgstr "" -#: models.py:3769 +#: models.py:3786 msgid "Symbolic links" msgstr "" -#: models.py:3772 +#: models.py:3789 msgid "Related" msgstr "" -#: models.py:3773 +#: models.py:3790 msgid "Cached value - do not edit" msgstr "" -#: models.py:3776 templates/ishtar/sheet_document.html:4 +#: models.py:3793 templates/ishtar/sheet_document.html:4 msgid "Document" msgstr "" -#: models.py:3777 templates/ishtar/sheet_person.html:113 +#: models.py:3794 templates/ishtar/sheet_person.html:113 msgid "Documents" msgstr "" -#: models.py:3781 +#: models.py:3798 msgid "Can view all Documents" msgstr "" -#: models.py:3783 +#: models.py:3800 msgid "Can view own Document" msgstr "" -#: models.py:3785 +#: models.py:3802 msgid "Can add own Document" msgstr "" -#: models.py:3787 +#: models.py:3804 msgid "Can change own Document" msgstr "" -#: models.py:3789 +#: models.py:3806 msgid "Can delete own Document" msgstr "" -#: models.py:4000 +#: models.py:4017 msgid "Surface (m2)" msgstr "" -#: models.py:4001 +#: models.py:4018 msgid "Localisation" msgstr "Lokalisierung" -#: models.py:4009 +#: models.py:4026 msgid "Year of creation" msgstr "" -#: models.py:4010 +#: models.py:4027 msgid "" "Filling this field is relevant to distinguish old towns from new towns." msgstr "" -#: models.py:4142 +#: models.py:4159 msgid "Only four level of parent are managed." msgstr "" -#: models.py:4147 +#: models.py:4164 msgid "Area" msgstr "" -#: models.py:4166 +#: models.py:4183 msgid "Is preventive" msgstr "" -#: models.py:4167 +#: models.py:4184 msgid "Is judiciary" msgstr "" -#: models.py:4170 models_imports.py:636 +#: models.py:4187 models_imports.py:636 msgid "Operation type" msgstr "" -#: models.py:4171 +#: models.py:4188 msgid "Operation types" msgstr "" -#: models.py:4210 +#: models.py:4227 msgid "Judiciary" msgstr "" -#: models.py:4212 +#: models.py:4229 msgid "Preventive" msgstr "" -#: models.py:4214 +#: models.py:4231 msgid "Research" msgstr "" -#: models.py:4249 +#: models.py:4266 msgid "Authority name" msgstr "" -#: models.py:4250 +#: models.py:4267 msgid "Authority SRID" msgstr "" -#: models.py:4253 models_imports.py:668 +#: models.py:4270 models_imports.py:668 msgid "Spatial reference system" msgstr "" -#: models.py:4254 +#: models.py:4271 msgid "Spatial reference systems" msgstr "" -#: models.py:4261 +#: models.py:4280 msgid "Filename" msgstr "" -#: models.py:4266 +#: models.py:4285 msgid "Administration script" msgstr "" -#: models.py:4267 +#: models.py:4286 msgid "Administration scripts" msgstr "" -#: models.py:4274 +#: models.py:4293 msgid "Scheduled" msgstr "" -#: models.py:4275 +#: models.py:4294 msgid "In progress" msgstr "" -#: models.py:4276 models_imports.py:792 +#: models.py:4295 models_imports.py:792 msgid "Finished with errors" msgstr "" -#: models.py:4277 models_imports.py:793 +#: models.py:4296 models_imports.py:793 msgid "Finished" msgstr "" -#: models.py:4290 +#: models.py:4309 msgid "Result" msgstr "" -#: models.py:4293 +#: models.py:4312 msgid "Administration task" msgstr "" -#: models.py:4294 +#: models.py:4313 msgid "Administration tasks" msgstr "" -#: models.py:4298 +#: models.py:4317 msgid "Unknown" msgstr "" -#: models.py:4313 +#: models.py:4332 msgid "" "ISHTAR_SCRIPT_DIR is not set in your local_settings. Contact your " "administrator." msgstr "" -#: models.py:4322 +#: models.py:4341 msgid "" "Your ISHTAR_SCRIPT_DIR is containing dots \"..\". As it can refer to " "relative paths, it can be a security issue and this is not allowed. Only put " "a full path." msgstr "" -#: models.py:4333 +#: models.py:4352 msgid "Your ISHTAR_SCRIPT_DIR: \"{}\" is not a valid directory." msgstr "" -#: models.py:4349 +#: models.py:4368 msgid "" "Script \"{}\" is not available in your script directory. Check your " "configuration." @@ -2585,49 +2585,53 @@ msgid " items added." msgstr "" #: templates/base.html:47 -msgid "yes" +msgid "Select only one item." msgstr "" #: templates/base.html:48 -msgid "no" +msgid "yes" msgstr "" #: templates/base.html:49 -msgid "Autorefresh start. The form is disabled." +msgid "no" msgstr "" #: templates/base.html:50 +msgid "Autorefresh start. The form is disabled." +msgstr "" + +#: templates/base.html:51 msgid "Autorefresh end. The form is re-enabled." msgstr "" -#: templates/base.html:81 +#: templates/base.html:82 msgid "Current items" msgstr "" -#: templates/base.html:83 templates/ishtar/forms/qa_base.html:34 +#: templates/base.html:84 templates/ishtar/forms/qa_base.html:34 #: templates/ishtar/forms/qa_form.html:21 templates/ishtar/manage_basket.html:4 #: templates/welcome.html:11 templates/welcome.html:12 #: templates/welcome.html:13 templates/welcome.html:14 wizards.py:423 msgid ":" msgstr "" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Sheets" msgstr "" -#: templates/base.html:146 +#: templates/base.html:158 msgid "Processing..." msgstr "" -#: templates/base.html:148 +#: templates/base.html:160 msgid "This can be long." msgstr "" -#: templates/base.html:150 +#: templates/base.html:162 msgid "Time to take a coffee?" msgstr "" -#: templates/base.html:152 +#: templates/base.html:164 msgid "Time to take another coffee?" msgstr "" @@ -2834,6 +2838,10 @@ msgstr "" msgid "Data" msgstr "" +#: templates/ishtar/blocks/sheet_json.html:9 +msgid "No data" +msgstr "" + #: templates/ishtar/blocks/window_image_detail.html:64 msgid "Licenses" msgstr "" @@ -3652,11 +3660,11 @@ msgstr "" msgid "No" msgstr "" -#: templatetags/window_tables.py:88 widgets.py:1065 +#: templatetags/window_tables.py:88 widgets.py:1064 msgid "No results" msgstr "" -#: templatetags/window_tables.py:89 widgets.py:1066 +#: templatetags/window_tables.py:89 widgets.py:1065 msgid "Loading..." msgstr "" @@ -3664,15 +3672,15 @@ msgstr "" msgid "You don't have sufficient permissions to do this action." msgstr "" -#: utils.py:338 +#: utils.py:344 msgid " (...)" msgstr "" -#: utils.py:418 +#: utils.py:424 msgid "Information" msgstr "" -#: utils.py:419 +#: utils.py:425 msgid "Load another random image?" msgstr "" @@ -3837,7 +3845,7 @@ msgstr "" msgid "Previous value:" msgstr "" -#: widgets.py:1067 +#: widgets.py:1066 msgid "Remove" msgstr "" diff --git a/translations/fr/archaeological_finds.po b/translations/fr/archaeological_finds.po index 996b61dca..ae08f3f62 100644 --- a/translations/fr/archaeological_finds.po +++ b/translations/fr/archaeological_finds.po @@ -11,249 +11,262 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Content-Type: text/plain; charset=UTF-8\n" -"PO-Revision-Date: 2018-11-12 03:35+0000\n" +"PO-Revision-Date: 2018-11-21 10:10+0000\n" "Last-Translator: Étienne Loks \n" "Language-Team: \n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=n>1;\n" "X-Generator: Zanata 4.6.2\n" -#: admin.py:39 models_finds.py:288 +#: admin.py:39 models_finds.py:293 msgid "Point (2D)" msgstr "Point (2D)" -#: admin.py:41 models_finds.py:290 +#: admin.py:41 models_finds.py:295 msgid "Line" msgstr "Ligne" -#: admin.py:43 models_finds.py:291 +#: admin.py:43 models_finds.py:296 msgid "Multi polygon" msgstr "Polygones multi-parties" -#: forms.py:91 forms.py:97 forms.py:340 forms.py:353 forms.py:631 -#: models_finds.py:660 models_finds.py:1213 wizards.py:75 +#: forms.py:95 forms.py:101 forms.py:540 forms.py:553 forms.py:831 +#: models_finds.py:674 models_finds.py:1233 wizards.py:86 msgid "Context record" msgstr "Unité d'Enregistrement" -#: forms.py:92 +#: forms.py:96 msgid "Find - 010 - Context record choice" msgstr "Mobilier - 010 - Choix de l'unité d'enregistrement" -#: forms.py:126 ishtar_menu.py:32 models_finds.py:1089 models_finds.py:1717 -#: models_treatments.py:349 templates/ishtar/sheet_find.html:4 +#: forms.py:133 forms.py:255 ishtar_menu.py:32 models_finds.py:1106 +#: models_finds.py:1739 models_treatments.py:511 +#: templates/ishtar/sheet_find.html:4 msgid "Find" msgstr "Mobilier" -#: forms.py:127 -msgid "Find - 020 - General" -msgstr "Mobilier - 020 - Général" +#: forms.py:134 +msgid "Simple find - 020 - General" +msgstr "Mobilier simple - 020 - Général" -#: forms.py:142 forms.py:341 templates/ishtar/sheet_find.html:40 +#: forms.py:156 forms.py:395 forms.py:541 templates/ishtar/sheet_find.html:110 msgid "Identification" msgstr "Identification" -#: forms.py:145 forms.py:360 forms.py:600 forms.py:889 models_finds.py:253 -#: models_finds.py:968 +#: forms.py:159 forms.py:398 forms.py:560 forms.py:800 forms.py:1089 +#: models_finds.py:258 models_finds.py:985 msgid "Free ID" msgstr "Identifiant libre" -#: forms.py:147 forms.py:362 forms.py:601 forms.py:932 models_finds.py:969 +#: forms.py:161 forms.py:400 forms.py:562 forms.py:801 forms.py:1154 +#: models_finds.py:986 msgid "Denomination" msgstr "Dénomination" -#: forms.py:148 forms.py:363 models_finds.py:1042 +#: forms.py:162 forms.py:563 models_finds.py:1059 msgid "Previous ID" msgstr "Identifiant précédent" -#: forms.py:150 forms.py:365 models_finds.py:257 -msgid "Excavation ID" -msgstr "Identifiant fouille" - -#: forms.py:151 forms.py:366 models_finds.py:970 +#: forms.py:163 forms.py:566 models_finds.py:987 msgid "Museum ID" msgstr "Identifiant musée" -#: forms.py:152 forms.py:367 models_finds.py:965 +#: forms.py:164 forms.py:567 models_finds.py:982 msgid "Seal number" msgstr "Numéro de scellé" -#: forms.py:153 forms.py:368 models_finds.py:1038 +#: forms.py:165 forms.py:568 models_finds.py:1055 msgid "Mark" msgstr "Marquage" -#: forms.py:155 forms.py:156 forms.py:342 forms.py:371 forms.py:652 -#: forms_treatments.py:139 models_finds.py:258 models_finds.py:971 -#: models_treatments.py:146 templates/ishtar/sheet_find.html:58 +#: forms.py:167 forms.py:168 forms.py:403 forms.py:405 forms.py:542 +#: forms.py:571 forms.py:852 forms_treatments.py:143 models_finds.py:263 +#: models_finds.py:988 models_treatments.py:150 +#: templates/ishtar/sheet_find.html:128 msgid "Description" msgstr "Description" -#: forms.py:159 models_finds.py:265 -msgid "Discovery date (exact or TPQ)" -msgstr "Date de découverte (exacte ou TPQ)" - -#: forms.py:162 models_finds.py:267 templates/ishtar/sheet_basefind.html:29 -msgid "Discovery date (TAQ)" -msgstr "Date de découverte (TAQ)" - -#: forms.py:164 forms.py:654 models_finds.py:269 -msgid "Batch/object" -msgstr "Lot/objet" - -#: forms.py:166 models_finds.py:1003 +#: forms.py:170 forms.py:407 models_finds.py:1020 msgid "Is complete?" msgstr "Est complet ?" -#: forms.py:169 forms.py:373 models_finds.py:57 models_finds.py:685 -#: models_finds.py:977 +#: forms.py:173 forms.py:409 forms.py:573 models_finds.py:57 +#: models_finds.py:699 models_finds.py:994 msgid "Material types" msgstr "Types de matériau" -#: forms.py:172 models_finds.py:982 +#: forms.py:176 forms.py:412 models_finds.py:999 msgid "Material type quality" msgstr "Qualité du type de matériaux" -#: forms.py:174 forms.py:376 models_finds.py:152 models_finds.py:686 -#: models_finds.py:1006 +#: forms.py:178 forms.py:414 forms.py:576 models_finds.py:157 +#: models_finds.py:700 models_finds.py:1023 msgid "Object types" msgstr "Types d'objet" -#: forms.py:177 models_finds.py:1011 +#: forms.py:181 forms.py:417 models_finds.py:1028 msgid "Object type quality" msgstr "Qualité du type d'objet" -#: forms.py:178 forms.py:896 models_finds.py:989 +#: forms.py:182 forms.py:419 forms.py:1096 models_finds.py:1006 msgid "Find number" msgstr "Mobilier (en nombre)" -#: forms.py:180 models_finds.py:1024 +#: forms.py:184 forms.py:421 models_finds.py:1041 msgid "Minimum number of individuals (MNI)" msgstr "Nombre minimum d'individus (NMI)" -#: forms.py:182 models_finds.py:972 +#: forms.py:186 forms.py:424 models_finds.py:989 msgid "Decoration" msgstr "Décor" -#: forms.py:184 models_finds.py:973 +#: forms.py:188 forms.py:426 models_finds.py:990 msgid "Inscription" msgstr "Inscription" -#: forms.py:187 forms.py:379 models_finds.py:975 +#: forms.py:191 forms.py:428 forms.py:579 models_finds.py:992 msgid "Manufacturing place" msgstr "Lieu de fabrication" -#: forms.py:189 forms.py:381 models_finds.py:1021 +#: forms.py:193 forms.py:430 forms.py:581 models_finds.py:1038 msgid "Communicability" msgstr "Communicabilité" -#: forms.py:191 forms.py:384 forms.py:955 forms_treatments.py:141 -#: forms_treatments.py:578 models_finds.py:259 models_finds.py:1039 -#: models_treatments.py:145 models_treatments.py:609 +#: forms.py:195 forms.py:432 forms.py:584 forms.py:1177 forms_treatments.py:145 +#: forms_treatments.py:606 models_finds.py:264 models_finds.py:1056 +#: models_treatments.py:149 models_treatments.py:771 msgid "Comment" msgstr "Commentaire général" -#: forms.py:194 forms.py:394 models_finds.py:1040 +#: forms.py:198 forms.py:435 forms.py:594 models_finds.py:1057 msgid "Comment on dating" msgstr "Commentaire relatif aux datations" -#: forms.py:196 templates/ishtar/sheet_find.html:76 +#: forms.py:200 forms.py:437 templates/ishtar/sheet_find.html:146 msgid "Dimensions" msgstr "Dimensions" -#: forms.py:197 models_finds.py:1025 +#: forms.py:201 forms.py:438 models_finds.py:1042 msgid "Length (cm)" msgstr "Longueur (cm)" -#: forms.py:198 models_finds.py:1026 +#: forms.py:202 forms.py:439 models_finds.py:1043 msgid "Width (cm)" msgstr "Largeur (cm)" -#: forms.py:199 models_finds.py:1027 +#: forms.py:203 forms.py:440 models_finds.py:1044 msgid "Height (cm)" msgstr "Hauteur (cm)" -#: forms.py:200 models_finds.py:1028 +#: forms.py:204 forms.py:441 models_finds.py:1045 msgid "Diameter (cm)" msgstr "Diamètre (cm)" -#: forms.py:201 models_finds.py:1029 +#: forms.py:205 forms.py:442 models_finds.py:1046 msgid "Thickness (cm)" msgstr "Épaisseur (cm)" -#: forms.py:202 forms.py:894 models_finds.py:985 +#: forms.py:206 forms.py:443 forms.py:1094 models_finds.py:1002 msgid "Volume (l)" msgstr "Volume (l)" -#: forms.py:203 forms.py:895 templates/ishtar/sheet_find.html:84 +#: forms.py:207 forms.py:444 forms.py:1095 templates/ishtar/sheet_find.html:154 msgid "Weight (g)" msgstr "Poids (g)" -#: forms.py:205 +#: forms.py:209 forms.py:446 msgid "Clutter long side (cm)" msgstr "Encombrement grand côté (cm)" -#: forms.py:207 +#: forms.py:211 forms.py:448 msgid "Clutter short side (cm)" msgstr "Encombrement petit côté (cm)" -#: forms.py:209 +#: forms.py:213 forms.py:450 msgid "Clutter height (cm)" msgstr "Encombrement hauteur (cm)" -#: forms.py:211 models_finds.py:1036 +#: forms.py:215 forms.py:452 models_finds.py:1053 msgid "Dimensions comment" msgstr "Commentaire relatif aux dimensions" -#: forms.py:214 templates/ishtar/sheet_basefind.html:46 -#: templates/ishtar/sheet_basefind.html:50 +#: forms.py:217 forms.py:454 forms.py:543 +#: templates/ishtar/sheet_basefind.html:70 templates/ishtar/sheet_find.html:163 +msgid "Sheet" +msgstr "Fiche" + +#: forms.py:218 forms.py:455 forms.py:587 forms.py:855 models_finds.py:1061 +msgid "Check" +msgstr "Vérification" + +#: forms.py:220 forms.py:458 forms.py:589 models_finds.py:1063 +msgid "Check date" +msgstr "Date de vérification" + +#: forms.py:247 +msgid "Clutter: short side cannot be bigger than the long side." +msgstr "" +"Encombrement : le petit côté court ne peut pas être plus grand que le grand " +"côté." + +#: forms.py:256 +msgid "Find - 020 - General" +msgstr "Mobilier - 020 - Général" + +#: forms.py:285 forms.py:565 models_finds.py:262 +msgid "Excavation ID" +msgstr "Identifiant fouille" + +#: forms.py:288 models_finds.py:270 +msgid "Discovery date (exact or TPQ)" +msgstr "Date de découverte (exacte ou TPQ)" + +#: forms.py:291 models_finds.py:272 templates/ishtar/sheet_basefind.html:33 +msgid "Discovery date (TAQ)" +msgstr "Date de découverte (TAQ)" + +#: forms.py:293 forms.py:854 models_finds.py:274 +msgid "Batch/object" +msgstr "Lot/objet" + +#: forms.py:296 templates/ishtar/sheet_basefind.html:50 +#: templates/ishtar/sheet_basefind.html:54 msgid "Coordinates" msgstr "Coordonnées" -#: forms.py:215 models_finds.py:276 +#: forms.py:297 models_finds.py:281 msgid "X" msgstr "X" -#: forms.py:217 models_finds.py:279 +#: forms.py:299 models_finds.py:284 msgid "Estimated error for X" msgstr "Erreur estimée pour X" -#: forms.py:218 models_finds.py:277 +#: forms.py:300 models_finds.py:282 msgid "Y" msgstr "Y" -#: forms.py:220 models_finds.py:281 +#: forms.py:302 models_finds.py:286 msgid "Estimated error for Y" msgstr "Erreur estimée pour Y" -#: forms.py:221 models_finds.py:278 +#: forms.py:303 models_finds.py:283 msgid "Z" msgstr "Z" -#: forms.py:223 models_finds.py:283 +#: forms.py:305 models_finds.py:288 msgid "Estimated error for Z" msgstr "Erreur estimée pour Z" -#: forms.py:225 models_finds.py:286 +#: forms.py:307 models_finds.py:291 msgid "Spatial Reference System" msgstr "Système de référence spatiale" -#: forms.py:228 models_finds.py:274 +#: forms.py:310 models_finds.py:279 msgid "Point of topographic reference" msgstr "Point topographique" -#: forms.py:232 forms.py:343 templates/ishtar/sheet_basefind.html:66 -#: templates/ishtar/sheet_find.html:93 -msgid "Sheet" -msgstr "Fiche" - -#: forms.py:233 forms.py:387 forms.py:655 models_finds.py:1044 -msgid "Check" -msgstr "Vérification" - -#: forms.py:235 forms.py:389 models_finds.py:1046 -msgid "Check date" -msgstr "Date de vérification" - -#: forms.py:274 +#: forms.py:338 msgid "" "Discovery date: if a TAQ date is provided a TPQ date has to be informed. If " "you have a precise date fill only the TPQ - discovery date field." @@ -262,374 +275,391 @@ msgstr "" "renseignée. Si vous avez une date précise, remplissez seulement le champ « " "date de découverte (exacte ou TPQ) »." -#: forms.py:280 +#: forms.py:344 msgid "Discovery date: TAQ date must be older than TPQ date." msgstr "Date de découverte : la date TAQ doit être postérieure à la date TPQ." -#: forms.py:290 -msgid "Clutter: short side cannot be bigger than the long side." -msgstr "" -"Encombrement : le petit côté court ne peut pas être plus grand que le grand " -"côté." - -#: forms.py:307 +#: forms.py:360 msgid "" "You should at least provide X, Y and the spatial reference system used." msgstr "" "Vous devez au minimum fournir X, Y et le système de référence spatiale " "utilisé." -#: forms.py:316 +#: forms.py:369 msgid "" "Coordinates are not relevant for the spatial reference system used: {}." msgstr "" "Les coordonnées ne sont pas pertinentes pour le système de référence " "spatiale utilisé : {}." -#: forms.py:322 +#: forms.py:382 forms.py:1086 +msgid "Resulting find" +msgstr "Mobilier résultant" + +#: forms.py:383 +msgid "Treatment n-1 - 030 - Resulting find" +msgstr "Traitement n-1 - 030 - Mobilier résultant" + +#: forms.py:477 forms.py:1105 +msgid "Resulting finds" +msgstr "Mobiliers résultants" + +#: forms.py:478 +msgid "Treatment 1-n - 030 - Resulting finds" +msgstr "Traitement 1-n - 030 - Mobiliers résultants" + +#: forms.py:483 +msgid "Number of resulting finds" +msgstr "Nombre de mobiliers résultants" + +#: forms.py:487 +msgid "Prefix label for resulting finds" +msgstr "Préfixe du libellé des mobiliers résultants" + +#: forms.py:490 +msgid "" +"E.g.: with a prefix \"item-\", each resulting item will be named \"item-1\", " +"\"item-2\", \"item-3\"" +msgstr "" +"Par exemple : avec un préfixe « élément- », chaque élément résultant sera " +"nommé « élément-1 », « élément-2 », « élément-3 »..." + +#: forms.py:494 +msgid "Numbering starting from" +msgstr "Numérotation commençant depuis" + +#: forms.py:497 +msgid "Name of the new basket containing the resulting items" +msgstr "Nom du nouveau panier contenant les éléments résultants" + +#: forms.py:515 forms.py:681 +msgid "A basket with this label already exists." +msgstr "Un panier avec ce libellé existe déjà." + +#: forms.py:521 msgid "Find - Quick action - Modify" msgstr "Mobilier - Action rapide - Modification" -#: forms.py:344 +#: forms.py:544 msgid "Datation" msgstr "Datation" -#: forms.py:392 forms.py:565 forms.py:641 templates/ishtar/sheet_find.html:123 +#: forms.py:592 forms.py:765 forms.py:841 templates/ishtar/sheet_find.html:195 msgid "Period" msgstr "Période" -#: forms.py:436 +#: forms.py:636 msgid "Find - Quick action - Modify single" msgstr "Mobilier - Action rapide - Modification simpe" -#: forms.py:449 +#: forms.py:649 msgid "Create" msgstr "Création" -#: forms.py:450 +#: forms.py:650 msgid "Update" msgstr "Mise à jour" -#: forms.py:452 forms.py:636 forms.py:982 forms.py:986 forms_treatments.py:180 -#: ishtar_menu.py:57 models_finds.py:926 -#: templates/ishtar/sheet_findbasket.html:4 views.py:646 +#: forms.py:652 forms.py:836 forms.py:1204 forms.py:1208 ishtar_menu.py:57 +#: models_finds.py:943 templates/ishtar/sheet_findbasket.html:4 views.py:694 +#: wizards.py:353 msgid "Basket" msgstr "Panier" -#: forms.py:474 +#: forms.py:674 msgid "On update, you have to select a basket." msgstr "Pour la mise à jour, vous avez à sélectionner un panier." -#: forms.py:478 +#: forms.py:678 msgid "A label is required." msgstr "Un libellé est obligatoire" -#: forms.py:481 -msgid "A basket with this label already exists." -msgstr "Un panier avec ce libellé existe déjà." - -#: forms.py:498 templates/ishtar/sheet_find.html:102 +#: forms.py:698 templates/ishtar/sheet_find.html:174 msgid "Preservation" msgstr "Conservation" -#: forms.py:499 +#: forms.py:699 msgid "Find - 030 - Preservation" msgstr "Mobilier - 030 - Conservation" -#: forms.py:513 forms.py:648 models_finds.py:1015 +#: forms.py:713 forms.py:848 models_finds.py:1032 msgid "Integrity / interest" msgstr "Intégrité / intérêt" -#: forms.py:516 forms.py:650 models_finds.py:1018 +#: forms.py:716 forms.py:850 models_finds.py:1035 msgid "Remarkability" msgstr "Remarquabilité" -#: forms.py:518 forms.py:646 models_finds.py:1056 +#: forms.py:718 forms.py:846 models_finds.py:1073 msgid "Conservatory state" msgstr "État sanitaire" -#: forms.py:521 models_finds.py:1065 +#: forms.py:721 models_finds.py:1082 msgid "Alteration" msgstr "Altération" -#: forms.py:524 models_finds.py:1069 +#: forms.py:724 models_finds.py:1086 msgid "Alteration cause" msgstr "Cause d'altération" -#: forms.py:527 models_finds.py:1062 +#: forms.py:727 models_finds.py:1079 msgid "Recommended treatments" msgstr "Traitements recommandés" -#: forms.py:529 models_finds.py:1073 +#: forms.py:729 models_finds.py:1090 msgid "Treatment emergency" msgstr "Urgence du traitement" -#: forms.py:531 models_finds.py:1048 +#: forms.py:731 models_finds.py:1065 msgid "Estimated value" msgstr "Valeur estimée" -#: forms.py:532 models_finds.py:1076 +#: forms.py:732 models_finds.py:1093 msgid "Insurance value" msgstr "Valeur d'assurance" -#: forms.py:534 models_finds.py:1078 +#: forms.py:734 models_finds.py:1095 msgid "Appraisal date" msgstr "Date d'évaluation" -#: forms.py:536 models_finds.py:1058 +#: forms.py:736 models_finds.py:1075 msgid "Conservatory comment" msgstr "Commentaire relatif à la conservation" -#: forms.py:560 forms.py:584 models_finds.py:997 -#: templates/ishtar/sheet_find.html:119 +#: forms.py:760 forms.py:784 models_finds.py:1014 +#: templates/ishtar/sheet_find.html:191 msgid "Dating" msgstr "Datation" -#: forms.py:566 forms_treatments.py:143 forms_treatments.py:370 -#: forms_treatments.py:580 models_finds.py:1722 models_treatments.py:148 -#: models_treatments.py:360 templates/ishtar/sheet_find.html:124 -#: templates/ishtar/sheet_find.html:185 templates/ishtar/sheet_find.html:223 +#: forms.py:766 forms_treatments.py:131 forms_treatments.py:398 +#: forms_treatments.py:608 models_finds.py:1744 models_treatments.py:152 +#: models_treatments.py:522 templates/ishtar/sheet_find.html:196 +#: templates/ishtar/sheet_find.html:254 templates/ishtar/sheet_find.html:291 +#: templates/ishtar/sheet_find.html:329 msgid "Start date" msgstr "Date de début" -#: forms.py:568 models_finds.py:1723 models_treatments.py:361 -#: templates/ishtar/sheet_find.html:125 templates/ishtar/sheet_find.html:186 -#: templates/ishtar/sheet_find.html:224 +#: forms.py:768 models_finds.py:1745 models_treatments.py:523 +#: templates/ishtar/sheet_find.html:197 templates/ishtar/sheet_find.html:255 +#: templates/ishtar/sheet_find.html:292 templates/ishtar/sheet_find.html:330 msgid "End date" msgstr "Date de fin" -#: forms.py:569 templates/ishtar/sheet_find.html:127 +#: forms.py:769 templates/ishtar/sheet_find.html:199 msgid "Quality" msgstr "Qualité" -#: forms.py:571 templates/ishtar/sheet_find.html:126 +#: forms.py:771 templates/ishtar/sheet_find.html:198 msgid "Dating type" msgstr "Type de datation" -#: forms.py:573 templates/ishtar/sheet_find.html:128 +#: forms.py:773 templates/ishtar/sheet_find.html:200 msgid "Precise dating" msgstr "Datation précise" -#: forms.py:585 +#: forms.py:785 msgid "Find - 040 - Dating" msgstr "Mobilier - 040 - Datation" -#: forms.py:592 +#: forms.py:792 msgid "Find - 001 - Search" msgstr "Mobilier - 001 - Recherche" -#: forms.py:595 forms.py:928 forms_treatments.py:50 forms_treatments.py:419 -#: forms_treatments.py:493 forms_treatments.py:686 +#: forms.py:795 forms.py:1150 forms_treatments.py:50 forms_treatments.py:447 +#: forms_treatments.py:521 forms_treatments.py:714 msgid "Full text search" msgstr "Recherche en texte intégral" -#: forms.py:598 models_finds.py:294 +#: forms.py:798 models_finds.py:299 msgid "Short ID" msgstr "Identifiant court" -#: forms.py:599 models_finds.py:297 +#: forms.py:799 models_finds.py:302 msgid "Complete ID" msgstr "Identifiant complet" -#: forms.py:604 forms_treatments.py:56 forms_treatments.py:101 -#: forms_treatments.py:295 forms_treatments.py:423 forms_treatments.py:498 -#: forms_treatments.py:550 forms_treatments.py:690 models_treatments.py:122 -#: models_treatments.py:582 +#: forms.py:804 forms_treatments.py:56 forms_treatments.py:102 +#: forms_treatments.py:323 forms_treatments.py:451 forms_treatments.py:526 +#: forms_treatments.py:578 forms_treatments.py:718 models_treatments.py:126 +#: models_treatments.py:744 msgid "Year" msgstr "Année" -#: forms.py:606 +#: forms.py:806 msgid "Operation's number (index by year)" msgstr "Numéro de l'opération (index par année)" -#: forms.py:609 +#: forms.py:809 msgid "Code PATRIARCHE" msgstr "Code PATRIARCHE" -#: forms.py:613 +#: forms.py:813 msgid "Operation type" msgstr "Type d'opération" -#: forms.py:616 +#: forms.py:816 msgid "Areas" msgstr "Zones" -#: forms.py:619 +#: forms.py:819 msgid "Archaeological site (attached to the operation)" msgstr "Site archéologique (attaché à l'opération)" -#: forms.py:625 +#: forms.py:825 msgid "Archaeological site (attached to the context record)" msgstr "Site archéologique (attaché à l'UE)" -#: forms.py:638 +#: forms.py:838 msgid "Search within related operations" msgstr "Rechercher parmi les opérations liées" -#: forms.py:640 +#: forms.py:840 msgid "Search within related context records" msgstr "Recherche parmi les Unités d'Enregistrement associées" -#: forms.py:642 forms.py:893 models_finds.py:56 +#: forms.py:842 forms.py:1093 models_finds.py:56 msgid "Material type" msgstr "Type de matériau" -#: forms.py:643 models_finds.py:151 +#: forms.py:843 models_finds.py:156 msgid "Object type" msgstr "Type d'objet" -#: forms.py:645 +#: forms.py:845 msgid "Preservation type" msgstr "Type de conservation" -#: forms.py:656 forms_treatments.py:59 +#: forms.py:856 forms_treatments.py:59 msgid "Has an image?" msgstr "Dispose d'une image ?" -#: forms.py:703 +#: forms.py:903 msgid "Warehouse (location)" msgstr "Lieu de conservation (localisation)" -#: forms.py:709 +#: forms.py:909 msgid "Warehouse (responsible)" msgstr "Lieu de conservation (responsable)" -#: forms.py:714 +#: forms.py:914 msgid "Container ID" msgstr "Identifiant du contenant" -#: forms.py:715 +#: forms.py:915 msgid "Container ref." msgstr "Réf. contenant" -#: forms.py:720 forms.py:744 views.py:185 +#: forms.py:920 forms.py:944 views.py:185 msgid "Find search" msgstr "Rechercher un mobilier" -#: forms.py:769 models_treatments.py:258 -#: templates/ishtar/sheet_treatment.html:56 +#: forms.py:969 forms.py:1114 models_treatments.py:271 +#: templates/ishtar/sheet_treatment.html:61 msgid "Upstream finds" msgstr "Mobilier amont" -#: forms.py:771 models_finds.py:1090 +#: forms.py:971 models_finds.py:1107 models_treatments.py:156 #: templates/ishtar/forms/qa_find_treatment.html:11 msgid "Finds" msgstr "Mobilier" -#: forms.py:783 +#: forms.py:983 msgid "You should at least select one archaeological find." msgstr "Vous devez sélectionner au moins un mobilier archéologique." -#: forms.py:886 -msgid "Resulting find" -msgstr "Mobilier résultant" - -#: forms.py:891 +#: forms.py:1091 msgid "Precise description" msgstr "Description précise" -#: forms.py:905 -msgid "Resulting finds" -msgstr "Mobiliers résultants" - -#: forms.py:910 +#: forms.py:1110 msgid "Would you like to delete this find?" msgstr "Voulez-vous supprimer ce mobilier ?" -#: forms.py:914 models_treatments.py:68 -msgid "Upstream find" -msgstr "Mobilier amont" - -#: forms.py:925 +#: forms.py:1147 msgid "Find basket - 001 - Search" msgstr "Panier mobilier - 001 - Recherche" -#: forms.py:937 views.py:122 +#: forms.py:1159 views.py:122 msgid "Basket search" msgstr "Recherche de panier" -#: forms.py:951 +#: forms.py:1173 msgid "Find basket" msgstr "Panier de mobilier" -#: forms.py:953 forms_treatments.py:54 forms_treatments.py:97 -#: models_treatments.py:118 templates/ishtar/sheet_find.html:179 -#: templates/ishtar/sheet_find.html:217 +#: forms.py:1175 forms_treatments.py:54 forms_treatments.py:124 +#: models_treatments.py:122 templates/ishtar/sheet_find.html:248 +#: templates/ishtar/sheet_find.html:285 templates/ishtar/sheet_find.html:323 msgid "Label" msgstr "Dénomination" -#: forms.py:972 +#: forms.py:1194 msgid "Another basket already exists with this name." msgstr "Un autre panier existant utilise déjà ce nom." -#: forms_treatments.py:55 forms_treatments.py:100 models_treatments.py:120 +#: forms_treatments.py:55 forms_treatments.py:127 models_treatments.py:124 msgid "Other ref." msgstr "Autre réf." -#: forms_treatments.py:57 forms_treatments.py:232 forms_treatments.py:424 -#: forms_treatments.py:486 forms_treatments.py:499 forms_treatments.py:603 -#: forms_treatments.py:691 forms_treatments.py:758 models_treatments.py:123 -#: models_treatments.py:583 +#: forms_treatments.py:57 forms_treatments.py:260 forms_treatments.py:452 +#: forms_treatments.py:514 forms_treatments.py:527 forms_treatments.py:631 +#: forms_treatments.py:719 forms_treatments.py:786 models_treatments.py:127 +#: models_treatments.py:745 msgid "Index" msgstr "Index" -#: forms_treatments.py:58 forms_treatments.py:106 forms_treatments.py:378 -#: forms_treatments.py:440 models_finds.py:106 models_treatments.py:128 -#: models_treatments.py:359 +#: forms_treatments.py:58 forms_treatments.py:98 forms_treatments.py:406 +#: forms_treatments.py:468 models_finds.py:111 models_treatments.py:132 +#: models_treatments.py:521 msgid "Treatment type" msgstr "Type de traitement" -#: forms_treatments.py:71 views.py:420 +#: forms_treatments.py:71 views.py:439 msgid "Treatment search" msgstr "Rechercher un traitement" -#: forms_treatments.py:83 -msgid "Base treatment" -msgstr "Traitement de base" +#: forms_treatments.py:83 ishtar_menu.py:147 models_treatments.py:178 +#: models_treatments.py:513 templates/ishtar/sheet_treatment.html:4 +msgid "Treatment" +msgstr "Traitement" #: forms_treatments.py:84 msgid "Treatment - 020 - General" msgstr "Traitement - 020 - Général" -#: forms_treatments.py:108 models_treatments.py:70 models_treatments.py:130 -#: templates/ishtar/sheet_find.html:181 templates/ishtar/sheet_find.html:219 +#: forms_treatments.py:100 models_treatments.py:72 models_treatments.py:134 +#: templates/ishtar/sheet_find.html:250 templates/ishtar/sheet_find.html:287 +#: templates/ishtar/sheet_find.html:325 msgid "State" msgstr "État" -#: forms_treatments.py:110 -msgid "Target" -msgstr "Destination" +#: forms_treatments.py:107 models_treatments.py:137 models_treatments.py:524 +msgid "Location" +msgstr "Localisation" -#: forms_treatments.py:112 forms_treatments.py:301 forms_treatments.py:561 -#: models_treatments.py:71 models_treatments.py:138 +#: forms_treatments.py:113 forms_treatments.py:329 forms_treatments.py:589 +#: models_treatments.py:73 models_treatments.py:142 msgid "Responsible" msgstr "Responsable" -#: forms_treatments.py:118 forms_treatments.py:307 models_treatments.py:141 +#: forms_treatments.py:119 forms_treatments.py:335 models_treatments.py:145 msgid "Organization" msgstr "Organisation" -#: forms_treatments.py:124 models_treatments.py:133 models_treatments.py:362 -msgid "Location" -msgstr "Localisation" +#: forms_treatments.py:133 forms_treatments.py:398 forms_treatments.py:614 +#: forms_treatments.py:667 models_treatments.py:153 models_treatments.py:765 +msgid "Closing date" +msgstr "Date de clôture" -#: forms_treatments.py:130 +#: forms_treatments.py:136 msgid "Container (relevant for packaging)" msgstr "Contenant (pertinent dans le cadre du conditionnement)" -#: forms_treatments.py:136 forms_treatments.py:557 -msgid "External ref." -msgstr "Référence" - -#: forms_treatments.py:137 models_treatments.py:147 +#: forms_treatments.py:141 models_treatments.py:151 msgid "Goal" msgstr "But" -#: forms_treatments.py:145 forms_treatments.py:370 forms_treatments.py:586 -#: forms_treatments.py:639 models_treatments.py:149 models_treatments.py:603 -msgid "Closing date" -msgstr "Date de clôture" - #: forms_treatments.py:147 #, python-brace-format msgid "Estimated cost ({currency})" @@ -650,11 +680,7 @@ msgstr "Coût réalisé ({currency})" msgid "Insurance cost ({currency})" msgstr "Coût d''assurance ({currency})" -#: forms_treatments.py:180 -msgid "Single find" -msgstr "Mobilier isolé" - -#: forms_treatments.py:204 +#: forms_treatments.py:206 msgid "" "The container field is attached to the treatment. If no packaging treatment " "is done it is not relevant." @@ -662,34 +688,42 @@ msgstr "" "Le champ concernant le contenant est rattaché au traitement. Si aucun " "conditionnement n'est réalisé, il n'est pas pertinent." -#: forms_treatments.py:209 +#: forms_treatments.py:211 msgid "If a packaging treatment is done, the container field must be filled." msgstr "" "Si un conditionnement est fait, le champ du contenant doit être rempli." -#: forms_treatments.py:213 +#: forms_treatments.py:215 msgid "A responsible or an organization must be defined." msgstr "Un responsable ou une organisation doit être défini." -#: forms_treatments.py:256 +#: forms_treatments.py:234 +msgid "Treatment n-1 - 020 - General" +msgstr "Traitement n-1 - 020 - Général" + +#: forms_treatments.py:247 +msgid "Treatment 1-n - 020 - General" +msgstr "Traitement 1-n - 020 - Général" + +#: forms_treatments.py:284 msgid "Another treatment with this index exists for {}." msgstr "Un autre traitement avec cet index existe pour {}." -#: forms_treatments.py:262 models_treatments.py:126 +#: forms_treatments.py:290 models_treatments.py:130 msgid "Associated request" msgstr "Demande associée" -#: forms_treatments.py:263 +#: forms_treatments.py:291 msgid "Treatment - 010 - Request choice" msgstr "Traitement - 010 - Choix de la demande de traitement" -#: forms_treatments.py:268 forms_treatments.py:541 ishtar_menu.py:95 -#: models_treatments.py:618 models_treatments.py:646 -#: templates/ishtar/sheet_treatmentfile.html:4 wizards.py:207 +#: forms_treatments.py:296 forms_treatments.py:569 ishtar_menu.py:95 +#: models_treatments.py:780 models_treatments.py:808 +#: templates/ishtar/sheet_treatmentfile.html:4 wizards.py:457 msgid "Treatment request" msgstr "Demande de traitement" -#: forms_treatments.py:277 +#: forms_treatments.py:305 msgid "" "Are you sure you want to delete this treatment? All changes made to the " "associated finds since this treatment record will be lost!" @@ -698,190 +732,196 @@ msgstr "" "sur le mobilier associé réalisées depuis l'enregistrement de ce traitement " "seront perdues !" -#: forms_treatments.py:280 +#: forms_treatments.py:308 msgid "Would you like to delete this treatment?" msgstr "Voulez-vous supprimer ce traitement ?" -#: forms_treatments.py:285 models_finds.py:683 models_finds.py:1000 -#: models_treatments.py:150 models_treatments.py:363 -#: templates/ishtar/sheet_find.html:184 templates/ishtar/sheet_find.html:222 +#: forms_treatments.py:313 models_finds.py:697 models_finds.py:1017 +#: models_treatments.py:158 models_treatments.py:525 +#: templates/ishtar/sheet_find.html:253 templates/ishtar/sheet_find.html:290 +#: templates/ishtar/sheet_find.html:328 msgid "Container" msgstr "Contenant" -#: forms_treatments.py:291 +#: forms_treatments.py:319 msgid "Create a treatment" msgstr "Créer un traitement" -#: forms_treatments.py:298 +#: forms_treatments.py:326 msgid "Precise date" msgstr "Date précise" -#: forms_treatments.py:340 +#: forms_treatments.py:368 msgid "At least a year is required." msgstr "Au minimum une année doit être précisée." -#: forms_treatments.py:369 +#: forms_treatments.py:397 msgid "months" msgstr "mois" -#: forms_treatments.py:369 +#: forms_treatments.py:397 msgid "years" msgstr "années" -#: forms_treatments.py:374 forms_treatments.py:643 +#: forms_treatments.py:402 forms_treatments.py:671 msgid "Slicing" msgstr "Découpage" -#: forms_treatments.py:377 forms_treatments.py:646 +#: forms_treatments.py:405 forms_treatments.py:674 msgid "Date get from" msgstr "Date utilisée" -#: forms_treatments.py:380 forms_treatments.py:649 +#: forms_treatments.py:408 forms_treatments.py:677 msgid "Date after" msgstr "Date après" -#: forms_treatments.py:382 forms_treatments.py:651 +#: forms_treatments.py:410 forms_treatments.py:679 msgid "Date before" msgstr "Date avant" -#: forms_treatments.py:425 forms_treatments.py:475 forms_treatments.py:692 -#: forms_treatments.py:747 +#: forms_treatments.py:453 forms_treatments.py:503 forms_treatments.py:720 +#: forms_treatments.py:775 msgid "Act type" msgstr "Type d'acte" -#: forms_treatments.py:426 forms_treatments.py:693 +#: forms_treatments.py:454 forms_treatments.py:721 msgid "Indexed?" msgstr "Indexé ?" -#: forms_treatments.py:427 forms_treatments.py:694 +#: forms_treatments.py:455 forms_treatments.py:722 msgid "Object" msgstr "Objet" -#: forms_treatments.py:431 forms_treatments.py:698 +#: forms_treatments.py:459 forms_treatments.py:726 msgid "Signature date after" msgstr "Date de signature après" -#: forms_treatments.py:433 forms_treatments.py:700 +#: forms_treatments.py:461 forms_treatments.py:728 msgid "Signature date before" msgstr "Date de signature avant" -#: forms_treatments.py:435 +#: forms_treatments.py:463 msgid "Treatment name" msgstr "Nom du traitement" -#: forms_treatments.py:436 +#: forms_treatments.py:464 msgid "Treatment year" msgstr "Année du traitement" -#: forms_treatments.py:437 +#: forms_treatments.py:465 msgid "Treatment index" msgstr "Index du traitement" -#: forms_treatments.py:439 +#: forms_treatments.py:467 msgid "Treatment internal reference" msgstr "Référence interne du traitement" -#: forms_treatments.py:443 forms_treatments.py:714 +#: forms_treatments.py:471 forms_treatments.py:742 msgid "Modified by" msgstr "Modifié par" -#: forms_treatments.py:473 +#: forms_treatments.py:501 msgid "Treatment - Administrative act - General" msgstr "Traitement - Acte administratif - Général" -#: forms_treatments.py:496 forms_treatments.py:548 models_treatments.py:588 +#: forms_treatments.py:524 forms_treatments.py:576 models_treatments.py:750 msgid "Name" msgstr "Nom" -#: forms_treatments.py:497 forms_treatments.py:555 +#: forms_treatments.py:525 forms_treatments.py:583 msgid "Internal ref." msgstr "Réf. interne" -#: forms_treatments.py:500 forms_treatments.py:559 models_treatments.py:69 -#: templates/ishtar/sheet_find.html:180 templates/ishtar/sheet_find.html:218 +#: forms_treatments.py:528 forms_treatments.py:587 models_treatments.py:71 +#: templates/ishtar/sheet_find.html:249 templates/ishtar/sheet_find.html:286 +#: templates/ishtar/sheet_find.html:324 msgid "Type" msgstr "Type" -#: forms_treatments.py:503 +#: forms_treatments.py:531 msgid "In charge" msgstr "Responsable" -#: forms_treatments.py:509 forms_treatments.py:567 models_treatments.py:597 +#: forms_treatments.py:537 forms_treatments.py:595 models_treatments.py:759 #: templates/ishtar/sheet_treatmentfile.html:45 msgid "Applicant" msgstr "Demandeur" -#: forms_treatments.py:515 forms_treatments.py:573 models_treatments.py:601 +#: forms_treatments.py:543 forms_treatments.py:601 models_treatments.py:763 #: templates/ishtar/sheet_treatmentfile.html:53 msgid "Applicant organisation" msgstr "Organisation du demandeur" -#: forms_treatments.py:529 views.py:524 +#: forms_treatments.py:557 views.py:572 msgid "Treatment request search" msgstr "Rechercher une demande de traitement" -#: forms_treatments.py:584 forms_treatments.py:638 models_treatments.py:607 +#: forms_treatments.py:585 +msgid "External ref." +msgstr "Référence" + +#: forms_treatments.py:612 forms_treatments.py:666 models_treatments.py:769 msgid "Reception date" msgstr "Date de réception" -#: forms_treatments.py:626 +#: forms_treatments.py:654 msgid "Another treatment request with this index exists for {}." msgstr "Une autre demande de traitement avec cet index existe pour {}." -#: forms_treatments.py:632 +#: forms_treatments.py:660 msgid "Are you sure you want to delete this treatment request?" msgstr "Êtes-vous sûr de vouloir supprimer cette demande de traitement ? " -#: forms_treatments.py:633 +#: forms_treatments.py:661 msgid "Would you like to delete this treatment request?" msgstr "Voulez-vous supprimer cette demande de traitement ?" -#: forms_treatments.py:637 models_treatments.py:605 +#: forms_treatments.py:665 models_treatments.py:767 msgid "Creation date" msgstr "Date de création" -#: forms_treatments.py:647 forms_treatments.py:711 models_treatments.py:519 -#: models_treatments.py:590 +#: forms_treatments.py:675 forms_treatments.py:739 models_treatments.py:681 +#: models_treatments.py:752 msgid "Treatment request type" msgstr "Type de demande de traitement" -#: forms_treatments.py:703 +#: forms_treatments.py:731 msgid "Treatment request name" msgstr "Nom du dossier de traitement" -#: forms_treatments.py:705 +#: forms_treatments.py:733 msgid "Treatment request year" msgstr "Année du dossier de traitement" -#: forms_treatments.py:707 +#: forms_treatments.py:735 msgid "Treatment request index" msgstr "Index de la demande de traitement" -#: forms_treatments.py:709 +#: forms_treatments.py:737 msgid "Treatment request internal reference" msgstr "Référence interne de la demande de traitement" -#: forms_treatments.py:745 +#: forms_treatments.py:773 msgid "Treatment request - Administrative act - General" msgstr "Demande de traitement - Acte administratif - Général" #: ishtar_menu.py:37 ishtar_menu.py:60 ishtar_menu.py:100 ishtar_menu.py:123 -#: ishtar_menu.py:155 ishtar_menu.py:179 +#: ishtar_menu.py:152 ishtar_menu.py:191 msgid "Search" msgstr "Recherche" #: ishtar_menu.py:42 ishtar_menu.py:65 ishtar_menu.py:105 ishtar_menu.py:127 -#: ishtar_menu.py:160 ishtar_menu.py:183 +#: ishtar_menu.py:195 msgid "Creation" msgstr "Ajout" #: ishtar_menu.py:47 ishtar_menu.py:70 ishtar_menu.py:110 ishtar_menu.py:131 -#: ishtar_menu.py:165 ishtar_menu.py:188 +#: ishtar_menu.py:178 ishtar_menu.py:200 msgid "Modification" msgstr "Modification" #: ishtar_menu.py:52 ishtar_menu.py:82 ishtar_menu.py:115 ishtar_menu.py:134 -#: ishtar_menu.py:170 ishtar_menu.py:191 +#: ishtar_menu.py:183 ishtar_menu.py:203 msgid "Deletion" msgstr "Suppression" @@ -889,23 +929,33 @@ msgstr "Suppression" msgid "Manage items" msgstr "Gestion des éléments" -#: ishtar_menu.py:120 ishtar_menu.py:176 models_finds.py:1719 +#: ishtar_menu.py:120 ishtar_menu.py:188 models_finds.py:1741 msgid "Administrative act" msgstr "Acte administratif" -#: ishtar_menu.py:138 ishtar_menu.py:195 models_finds.py:1081 -#: models_treatments.py:163 models_treatments.py:611 +#: ishtar_menu.py:138 ishtar_menu.py:207 models_finds.py:1098 +#: models_treatments.py:171 models_treatments.py:773 +#: templates/ishtar/sheet_find.html:56 msgid "Documents" msgstr "Documents" -#: ishtar_menu.py:147 models_treatments.py:170 models_treatments.py:351 -#: templates/ishtar/sheet_treatment.html:4 -msgid "Treatment" -msgstr "Traitement" +#: ishtar_menu.py:158 +msgid "" +"Treatment 1 1 - creation" +msgstr "" +"Traitement 1 1 - création" + +#: ishtar_menu.py:165 +msgid "" +"Treatment n 1 - creation" +msgstr "" +"Traitement n 1 - création" -#: ishtar_menu.py:152 -msgid "Simple treatments" -msgstr "Traitements simples" +#: ishtar_menu.py:172 +msgid "" +"Treatment 1 n - creation" +msgstr "" +"Traitement 1 n - création" #: models_finds.py:51 msgid "Code" @@ -915,9 +965,9 @@ msgstr "Code" msgid "Recommendation" msgstr "Recommandation" -#: models_finds.py:66 models_finds.py:79 models_finds.py:92 models_finds.py:138 -#: models_finds.py:161 models_finds.py:218 models_finds.py:967 -#: models_treatments.py:355 +#: models_finds.py:66 models_finds.py:79 models_finds.py:92 models_finds.py:143 +#: models_finds.py:166 models_finds.py:223 models_finds.py:984 +#: models_treatments.py:517 msgid "Order" msgstr "Ordre" @@ -941,578 +991,608 @@ msgstr "Types d'état de conservation" msgid "Virtual" msgstr "Virtuel" -#: models_finds.py:95 +#: models_finds.py:94 +msgid "Destructive" +msgstr "Destructif" + +#: models_finds.py:96 +msgid "Create a new find" +msgstr "Créer un nouvel élément" + +#: models_finds.py:97 +msgid "" +"If True when this treatment is applied a new version of the object will be " +"created." +msgstr "" +"Si mis à Vrai quand le traitement est appliqué une nouvelle version de " +"l'objet sera créé." + +#: models_finds.py:100 msgid "Upstream is many" msgstr "Les éléments amont sont multiples" -#: models_finds.py:97 +#: models_finds.py:102 msgid "Check this if for this treatment from many finds you'll get one." msgstr "" "Cochez cela si, pour ce traitement, à partir de plusieurs éléments vous en " "obtenez un seul." -#: models_finds.py:100 +#: models_finds.py:105 msgid "Downstream is many" msgstr "Les éléments aval sont multiples" -#: models_finds.py:102 +#: models_finds.py:107 msgid "Check this if for this treatment from one find you'll get many." msgstr "" "Cochez cela si, pour ce traitement, à partir d'un seul élément vous en " "obtenez plusieurs." -#: models_finds.py:107 models_treatments.py:240 +#: models_finds.py:112 models_treatments.py:253 msgid "Treatment types" msgstr "Types de traitement" -#: models_finds.py:117 +#: models_finds.py:122 msgid "Integrity / interest type" msgstr "Type d'intégrité / intérêt" -#: models_finds.py:118 +#: models_finds.py:123 msgid "Integrity / interest types" msgstr "Types d'intégrité / intérêt" -#: models_finds.py:128 +#: models_finds.py:133 msgid "Remarkability type" msgstr "Type de remarquabilité" -#: models_finds.py:129 +#: models_finds.py:134 msgid "Remarkability types" msgstr "Types de remarquabilité" -#: models_finds.py:140 +#: models_finds.py:145 msgid "Batch type" msgstr "Type de lot" -#: models_finds.py:141 +#: models_finds.py:146 msgid "Batch types" msgstr "Types de lot" -#: models_finds.py:164 +#: models_finds.py:169 msgid "Object type quality type" msgstr "Type de qualité du type d'objet" -#: models_finds.py:165 +#: models_finds.py:170 msgid "Object type quality types" msgstr "Types de qualité du type d'objet" -#: models_finds.py:175 +#: models_finds.py:180 msgid "Alteration type" msgstr "Type d'altération" -#: models_finds.py:176 +#: models_finds.py:181 msgid "Alteration types" msgstr "Types d'altération" -#: models_finds.py:186 +#: models_finds.py:191 msgid "Alteration cause type" msgstr "Type de cause d'altération" -#: models_finds.py:187 +#: models_finds.py:192 msgid "Alteration cause types" msgstr "Types de cause d'altération" -#: models_finds.py:197 +#: models_finds.py:202 msgid "Treatment emergency type" msgstr "Type d'urgence du traitement" -#: models_finds.py:198 +#: models_finds.py:203 msgid "Treatment emergency types" msgstr "Types d'urgence du traitement" -#: models_finds.py:208 +#: models_finds.py:213 msgid "Communicability type" msgstr "Type de communicabilité" -#: models_finds.py:209 +#: models_finds.py:214 msgid "Communicability types" msgstr "Types de communicabilité" -#: models_finds.py:221 +#: models_finds.py:226 msgid "Checked type" msgstr "Type de vérification" -#: models_finds.py:222 +#: models_finds.py:227 msgid "Checked types" msgstr "Types de vérification" -#: models_finds.py:254 models_finds.py:960 models_treatments.py:143 -#: models_treatments.py:586 +#: models_finds.py:259 models_finds.py:977 models_treatments.py:147 +#: models_treatments.py:748 msgid "External ID" msgstr "Identifiant" -#: models_finds.py:256 models_finds.py:962 +#: models_finds.py:261 models_finds.py:979 msgid "External ID is set automatically" msgstr "L'identifiant est attribué automatiquement" -#: models_finds.py:260 +#: models_finds.py:265 msgid "Special interest" msgstr "Intérêt spécifique" -#: models_finds.py:264 +#: models_finds.py:269 msgid "Context Record" msgstr "Unité d'Enregistrement" -#: models_finds.py:272 +#: models_finds.py:277 msgid "Material index" msgstr "Index matériel" -#: models_finds.py:289 +#: models_finds.py:294 msgid "Point (3D)" msgstr "Point (3D)" -#: models_finds.py:295 models_finds.py:298 +#: models_finds.py:300 models_finds.py:303 msgid "Cached value - do not edit" msgstr "Valeur en cache - ne pas éditer" -#: models_finds.py:308 models_finds.py:958 +#: models_finds.py:313 models_finds.py:975 msgid "Base find" msgstr "Mobilier d'origine" -#: models_finds.py:309 +#: models_finds.py:314 msgid "Base finds" msgstr "Mobilier d'origine" -#: models_finds.py:565 +#: models_finds.py:579 msgid "g" msgstr "g" -#: models_finds.py:566 +#: models_finds.py:580 msgid "kg" msgstr "kg" -#: models_finds.py:592 views.py:301 +#: models_finds.py:606 views.py:323 msgid "Manage basket" msgstr "Gérer un panier" -#: models_finds.py:661 +#: models_finds.py:675 msgid "Base find - Short ID" msgstr "Mobilier d'origine - ID court" -#: models_finds.py:662 +#: models_finds.py:676 msgid "Base find - Complete ID" msgstr "Mobilier d'origine - ID complet" -#: models_finds.py:664 +#: models_finds.py:678 msgid "Operation (code)" msgstr "Opération (code)" -#: models_finds.py:666 +#: models_finds.py:680 msgid "Town" msgstr "Ville" -#: models_finds.py:668 +#: models_finds.py:682 msgid "Operation (name)" msgstr "Opération (nom)" -#: models_finds.py:672 +#: models_finds.py:686 msgid "Parcel" msgstr "Parcelle" -#: models_finds.py:673 +#: models_finds.py:687 msgid "Batch" msgstr "Lot" -#: models_finds.py:674 +#: models_finds.py:688 msgid "Base find - Comment" msgstr "Mobilier d'origine - Commentaires" -#: models_finds.py:675 +#: models_finds.py:689 msgid "Base find - Description" msgstr "Mobilier d'origine - Description" -#: models_finds.py:676 +#: models_finds.py:690 msgid "Base find - Topographic localisation" msgstr "Mobilier d'origine - Localisation topographique" -#: models_finds.py:678 +#: models_finds.py:692 msgid "Base find - Special interest" msgstr "Mobilier d'origine - Intérêt spécifique" -#: models_finds.py:680 +#: models_finds.py:694 msgid "Base find - Discovery date (exact or TPQ)" msgstr "Mobilier d'origine - Date de découverte (exacte ou TPQ)" -#: models_finds.py:682 +#: models_finds.py:696 msgid "Base find - Discovery date (TAQ)" msgstr "Mobilier d'origine - Date de découverte (TAQ)" -#: models_finds.py:684 +#: models_finds.py:698 msgid "Periods" msgstr "Périodes" -#: models_finds.py:760 +#: models_finds.py:774 msgctxt "key for text search" msgid "short-id" msgstr "id-court" -#: models_finds.py:764 +#: models_finds.py:778 msgctxt "key for text search" msgid "complete-id" msgstr "id-complet" -#: models_finds.py:768 +#: models_finds.py:782 msgctxt "key for text search" msgid "free-id" msgstr "id-libre" -#: models_finds.py:772 +#: models_finds.py:786 msgctxt "key for text search" msgid "denomination" msgstr "denomination" -#: models_finds.py:776 +#: models_finds.py:790 msgctxt "key for text search" msgid "town" msgstr "commune" -#: models_finds.py:780 models_treatments.py:87 models_treatments.py:551 +#: models_finds.py:794 models_treatments.py:91 models_treatments.py:713 msgctxt "key for text search" msgid "year" msgstr "annee" -#: models_finds.py:784 +#: models_finds.py:798 msgctxt "key for text search" msgid "operation-code" msgstr "operation-code" -#: models_finds.py:788 +#: models_finds.py:802 msgctxt "key for text search" msgid "code-patriarche" msgstr "code-patriarche" -#: models_finds.py:792 +#: models_finds.py:806 msgctxt "key for text search" msgid "operation-type" msgstr "operation-type" -#: models_finds.py:797 +#: models_finds.py:811 msgctxt "key for text search" msgid "area" msgstr "zone" -#: models_finds.py:801 +#: models_finds.py:815 msgctxt "key for text search" msgid "site" msgstr "site" -#: models_finds.py:806 models_finds.py:945 +#: models_finds.py:820 models_finds.py:962 msgctxt "key for text search" msgid "context-record-site" msgstr "ue-site" -#: models_finds.py:811 models_finds.py:939 +#: models_finds.py:825 models_finds.py:956 msgctxt "key for text search" msgid "context-record" msgstr "ue" -#: models_finds.py:815 +#: models_finds.py:829 msgctxt "key for text search" msgid "operation-relation-type" msgstr "operation-type-relation" -#: models_finds.py:819 +#: models_finds.py:833 msgctxt "key for text search" msgid "context-record-relation-type" msgstr "ue-type-relation" -#: models_finds.py:823 +#: models_finds.py:837 msgctxt "key for text search" msgid "period" msgstr "periode" -#: models_finds.py:827 +#: models_finds.py:841 msgctxt "key for text search" msgid "material" msgstr "materiau" -#: models_finds.py:831 +#: models_finds.py:845 msgctxt "key for text search" msgid "object-type" msgstr "type-objet" -#: models_finds.py:835 +#: models_finds.py:849 msgctxt "key for text search" msgid "preservation" msgstr "preservation" -#: models_finds.py:839 +#: models_finds.py:853 msgctxt "key for text search" msgid "conservatory" msgstr "conservation" -#: models_finds.py:843 +#: models_finds.py:857 msgctxt "key for text search" msgid "integrity" msgstr "integrite" -#: models_finds.py:847 +#: models_finds.py:861 msgctxt "key for text search" msgid "remarkability" msgstr "remarquabilite" -#: models_finds.py:851 +#: models_finds.py:865 msgctxt "key for text search" msgid "description" msgstr "description" -#: models_finds.py:855 +#: models_finds.py:869 msgctxt "key for text search" msgid "batch" msgstr "lot" -#: models_finds.py:859 +#: models_finds.py:873 msgctxt "key for text search" msgid "checked" msgstr "verifie" -#: models_finds.py:863 models_treatments.py:95 +#: models_finds.py:877 models_treatments.py:99 msgctxt "key for text search" msgid "has-image" msgstr "a-une-image" -#: models_finds.py:867 models_finds.py:942 +#: models_finds.py:881 models_finds.py:959 msgctxt "key for text search" msgid "location" msgstr "localisation" -#: models_finds.py:871 +#: models_finds.py:885 msgctxt "key for text search" msgid "warehouse" msgstr "depot" -#: models_finds.py:875 +#: models_finds.py:889 msgctxt "key for text search" msgid "container-index" msgstr "contenant-index" -#: models_finds.py:879 +#: models_finds.py:893 msgctxt "key for text search" msgid "container-ref" msgstr "contenant-ref" -#: models_finds.py:883 +#: models_finds.py:897 wizards.py:392 msgctxt "key for text search" msgid "basket" msgstr "panier" -#: models_finds.py:887 models_finds.py:936 +#: models_finds.py:901 models_finds.py:953 msgctxt "key for text search" msgid "operation" msgstr "operation" -#: models_finds.py:891 +#: models_finds.py:905 msgctxt "key for text search" msgid "last-modified-by" msgstr "modifie-en-dernier-par" -#: models_finds.py:895 +#: models_finds.py:909 msgctxt "key for text search" msgid "modified-since" msgstr "modifie-depuis" -#: models_finds.py:919 +#: models_finds.py:913 +msgctxt "key for text search" +msgid "created-by" +msgstr "cree-par" + +#: models_finds.py:936 msgid "Bulk update" msgstr "Mise à jour multiple" -#: models_finds.py:930 models_finds.py:1180 -#: templates/ishtar/forms/qa_find_treatment.html:16 views.py:666 +#: models_finds.py:947 models_finds.py:1200 +#: templates/ishtar/forms/qa_find_treatment.html:16 views.py:714 msgid "Packaging" msgstr "Conditionnement" -#: models_finds.py:986 +#: models_finds.py:1003 msgid "Weight" msgstr "Poids" -#: models_finds.py:987 +#: models_finds.py:1004 msgid "Weight unit" msgstr "Unité de poids" -#: models_finds.py:993 templates/ishtar/sheet_find.html:174 +#: models_finds.py:1010 templates/ishtar/sheet_find.html:280 msgid "Upstream treatment" msgstr "Traitement amont" -#: models_finds.py:996 templates/ishtar/sheet_find.html:212 +#: models_finds.py:1013 templates/ishtar/sheet_find.html:318 msgid "Downstream treatment" msgstr "Traitement aval" -#: models_finds.py:1031 +#: models_finds.py:1048 msgid "Clutter - long side (cm)" msgstr "Encombrement - grand côté (cm)" -#: models_finds.py:1033 +#: models_finds.py:1050 msgid "Clutter - short side (cm)" msgstr "Encombrement - petit côté (cm)" -#: models_finds.py:1035 +#: models_finds.py:1052 msgid "Clutter - height (cm)" msgstr "Encombrement - hauteur (cm)" -#: models_finds.py:1051 +#: models_finds.py:1068 msgid "Collection" msgstr "Collection" -#: models_finds.py:1083 models_treatments.py:165 models_treatments.py:613 +#: models_finds.py:1100 models_treatments.py:173 models_treatments.py:775 msgid "Cached name" msgstr "Nom en cache" -#: models_finds.py:1105 +#: models_finds.py:1122 msgid "FIND" msgstr "MOBILIER" -#: models_finds.py:1174 +#: models_finds.py:1194 msgid "Add to basket" msgstr "Ajouter au panier" -#: models_finds.py:1222 wizards.py:74 wizards.py:219 +#: models_finds.py:1242 wizards.py:85 wizards.py:469 msgid "Operation" msgstr "Opération (OA)" -#: models_finds.py:1544 +#: models_finds.py:1566 msgid "No container have been set - the localisation cannot be set." msgstr "" "Aucun contenant n'a été défini - la localisation ne peut être définie." -#: models_finds.py:1550 +#: models_finds.py:1572 msgid "The division number {} have not been set for the warehouse {}." msgstr "" "La division numéro {} n'a pas été définie pour le lieu de conservation {}." -#: models_finds.py:1720 +#: models_finds.py:1742 msgid "Person" msgstr "Individu" -#: models_finds.py:1726 +#: models_finds.py:1748 msgid "Property" msgstr "Propriété" -#: models_finds.py:1727 +#: models_finds.py:1749 msgid "Properties" msgstr "Propriétés" -#: models_treatments.py:42 +#: models_treatments.py:44 msgid "Treatment state type" msgstr "Type d'état de traitement" -#: models_treatments.py:43 +#: models_treatments.py:45 msgid "Treatment state types" msgstr "Types d'état de traitement" -#: models_treatments.py:67 +#: models_treatments.py:69 msgid "Downstream find" msgstr "Mobilier aval" -#: models_treatments.py:79 +#: models_treatments.py:70 +msgid "Upstream find" +msgstr "Mobilier amont" + +#: models_treatments.py:83 msgctxt "key for text search" msgid "label" msgstr "libelle" -#: models_treatments.py:83 +#: models_treatments.py:87 msgctxt "key for text search" msgid "other-reference" msgstr "autre-reference" -#: models_treatments.py:91 models_treatments.py:555 +#: models_treatments.py:95 models_treatments.py:717 msgctxt "key for text search" msgid "index" msgstr "index" -#: models_treatments.py:99 models_treatments.py:559 +#: models_treatments.py:103 models_treatments.py:721 msgctxt "key for text search" msgid "type" msgstr "type" -#: models_treatments.py:135 +#: models_treatments.py:139 msgid "Location where the treatment is done. Target warehouse for a move." msgstr "" "Endroit où le traitement est réalisé. Renseignez le lieu de conservation de " "destination pour un déplacement." -#: models_treatments.py:152 +#: models_treatments.py:157 +msgid "Related finds for non-destructive treatment" +msgstr "Mobilier associé pour les traitements non-destructifs" + +#: models_treatments.py:160 msgid "Estimated cost" msgstr "Coût estimé" -#: models_treatments.py:154 +#: models_treatments.py:162 msgid "Quoted cost" msgstr "Coût devisé" -#: models_treatments.py:156 +#: models_treatments.py:164 msgid "Realized cost" msgstr "Coût réalisé" -#: models_treatments.py:158 +#: models_treatments.py:166 msgid "Insurance cost" msgstr "Coût d'assurance" -#: models_treatments.py:160 +#: models_treatments.py:168 msgid "Target a basket" msgstr "Appliquer à un panier" -#: models_treatments.py:171 templates/ishtar/sheet_find.html:171 +#: models_treatments.py:179 templates/ishtar/sheet_find.html:243 #: templates/ishtar/sheet_treatmentfile.html:61 msgid "Treatments" msgstr "Traitements" -#: models_treatments.py:190 +#: models_treatments.py:199 msgid "TREATMENT" msgstr "TRAITEMENT" -#: models_treatments.py:249 templates/ishtar/sheet_treatment.html:61 +#: models_treatments.py:262 templates/ishtar/sheet_treatment.html:66 msgid "Downstream finds" msgstr "Mobilier aval" -#: models_treatments.py:364 templates/ishtar/sheet_find.html:183 -#: templates/ishtar/sheet_find.html:221 +#: models_treatments.py:526 templates/ishtar/sheet_find.html:252 +#: templates/ishtar/sheet_find.html:289 templates/ishtar/sheet_find.html:327 msgid "Doer" msgstr "Opérateur" -#: models_treatments.py:365 models_treatments.py:366 +#: models_treatments.py:527 models_treatments.py:528 +#: templates/ishtar/sheet_treatment.html:56 msgid "Related finds" msgstr "Mobilier associé" -#: models_treatments.py:508 +#: models_treatments.py:670 msgid "Is upstream" msgstr "Est en amont" -#: models_treatments.py:520 +#: models_treatments.py:682 msgid "Treatment request types" msgstr "Types de demande de traitement" -#: models_treatments.py:543 +#: models_treatments.py:705 msgctxt "key for text search" msgid "name" msgstr "nom" -#: models_treatments.py:547 +#: models_treatments.py:709 msgctxt "key for text search" msgid "reference" msgstr "reference" -#: models_treatments.py:563 +#: models_treatments.py:725 msgctxt "key for text search" msgid "in-charge" msgstr "responsable" -#: models_treatments.py:567 +#: models_treatments.py:729 msgctxt "key for text search" msgid "applicant" msgstr "demandeur" -#: models_treatments.py:571 +#: models_treatments.py:733 msgctxt "key for text search" msgid "applicant-organisation" msgstr "demandeur-organisation" -#: models_treatments.py:584 +#: models_treatments.py:746 msgid "Internal reference" msgstr "Référence interne" -#: models_treatments.py:593 +#: models_treatments.py:755 msgid "Person in charge" msgstr "Personne responsable" -#: models_treatments.py:619 +#: models_treatments.py:781 msgid "Treatment requests" msgstr "Demandes de traitement" @@ -1528,45 +1608,45 @@ msgstr "Ajout" msgid "Associate a treatment" msgstr "Associer un traitement" -#: templates/ishtar/sheet_basefind.html:6 +#: templates/ishtar/sheet_basefind.html:10 msgid "Internal ID" msgstr "ID interne" -#: templates/ishtar/sheet_basefind.html:21 +#: templates/ishtar/sheet_basefind.html:25 msgid "Discovery date" msgstr "Date de découverte" -#: templates/ishtar/sheet_basefind.html:24 +#: templates/ishtar/sheet_basefind.html:28 msgid "Discovery year" msgstr "Date de découverte" -#: templates/ishtar/sheet_basefind.html:27 +#: templates/ishtar/sheet_basefind.html:31 msgid "Discovery date (TPQ)" msgstr "Date de découverte (TPQ)" -#: templates/ishtar/sheet_basefind.html:52 +#: templates/ishtar/sheet_basefind.html:56 msgid "X:" msgstr "X :" -#: templates/ishtar/sheet_basefind.html:53 -#: templates/ishtar/sheet_basefind.html:55 #: templates/ishtar/sheet_basefind.html:57 +#: templates/ishtar/sheet_basefind.html:59 +#: templates/ishtar/sheet_basefind.html:61 msgid "error:" msgstr "erreur :" -#: templates/ishtar/sheet_basefind.html:54 +#: templates/ishtar/sheet_basefind.html:58 msgid "Y:" msgstr "Y :" -#: templates/ishtar/sheet_basefind.html:56 +#: templates/ishtar/sheet_basefind.html:60 msgid "Z:" msgstr "Z :" -#: templates/ishtar/sheet_basefind.html:60 +#: templates/ishtar/sheet_basefind.html:64 msgid "SRID" msgstr "SRID" -#: templates/ishtar/sheet_basefind.html:75 +#: templates/ishtar/sheet_basefind.html:79 msgid "Last modified by" msgstr "Modifié en dernier par" @@ -1578,39 +1658,57 @@ msgstr "" "Cette fiche a un traitement aval associé, elle concerne une vieille version " "de ce mobilier." -#: templates/ishtar/sheet_find.html:29 -msgid "Associated base finds" -msgstr "Mobilier d'origine associé" +#: templates/ishtar/sheet_find.html:23 +msgid "Image / Base find" +msgstr "Image / Mobilier d'origine" -#: templates/ishtar/sheet_find.html:53 +#: templates/ishtar/sheet_find.html:30 +msgid "Identification / Description / Dimensions" +msgstr "Identification / Description / Dimensions" + +#: templates/ishtar/sheet_find.html:38 +msgid "Datings / Preservation" +msgstr "Datations / Préservation" + +#: templates/ishtar/sheet_find.html:47 +msgid "Warehouse / Treatments" +msgstr "Lieu de conservation / Traitements" + +#: templates/ishtar/sheet_find.html:64 +msgid "Custom fields" +msgstr "Champs personnalisés" + +#: templates/ishtar/sheet_find.html:123 msgid "Administrative index" msgstr "Index administratif" -#: templates/ishtar/sheet_find.html:95 +#: templates/ishtar/sheet_find.html:165 msgid "Checked" msgstr "Vérifié" -#: templates/ishtar/sheet_find.html:160 +#: templates/ishtar/sheet_find.html:232 msgid "Warehouse" msgstr "Lieu de conservation" -#: templates/ishtar/sheet_find.html:178 templates/ishtar/sheet_find.html:216 +#: templates/ishtar/sheet_find.html:247 templates/ishtar/sheet_find.html:284 +#: templates/ishtar/sheet_find.html:322 msgid "Year - index" msgstr "Année - index" -#: templates/ishtar/sheet_find.html:182 templates/ishtar/sheet_find.html:220 +#: templates/ishtar/sheet_find.html:251 templates/ishtar/sheet_find.html:288 +#: templates/ishtar/sheet_find.html:326 msgid "Related finds (max. 15 displayed)" msgstr "Mobilier associé (max. 15 affichés)" -#: templates/ishtar/sheet_find.html:208 +#: templates/ishtar/sheet_find.html:314 msgid "Export as CSV" msgstr "Export en CSV" -#: templates/ishtar/sheet_find.html:208 templates/ishtar/sheet_find.html:247 +#: templates/ishtar/sheet_find.html:314 templates/ishtar/sheet_find.html:353 msgid "CSV" msgstr "CSV" -#: templates/ishtar/sheet_find.html:252 +#: templates/ishtar/sheet_find.html:360 msgid "Associated documents" msgstr "Documents associés" @@ -1628,11 +1726,11 @@ msgctxt "Treatment" msgid "Active" msgstr "Actif" -#: templates/ishtar/sheet_treatment.html:66 +#: templates/ishtar/sheet_treatment.html:71 msgid "Related operations" msgstr "Opérations associées" -#: templates/ishtar/sheet_treatment.html:77 +#: templates/ishtar/sheet_treatment.html:82 #: templates/ishtar/sheet_treatmentfile.html:73 msgid "Administrative acts" msgstr "Actes administratifs" @@ -1647,6 +1745,15 @@ msgctxt "Treatment request" msgid "Active" msgstr "Active" +#: templates/ishtar/wizard/wizard_simplefind.html:6 +msgid "" +"This find is related to many base finds. To edit field related to base finds " +"edit the corresponding find between theses:" +msgstr "" +"Ce mobilier est associé à plusieurs mobiliers d'origine. Pour modifier les " +"champs associés aux mobiliers d'origines, modifiez le mobilier correspondant " +"parmi ceux-ci :" + #: views.py:132 msgid "Basket modify" msgstr "Modification de panier" @@ -1655,78 +1762,86 @@ msgstr "Modification de panier" msgid "New find" msgstr "Ajouter un mobilier" -#: views.py:209 +#: views.py:225 msgid "Find modification" msgstr "Modifier un mobilier" -#: views.py:238 +#: views.py:260 msgid "Find deletion" msgstr "Supprimer un mobilier" -#: views.py:251 +#: views.py:273 msgid "New basket" msgstr "Ajouter un panier" -#: views.py:280 +#: views.py:302 msgid "Manage items in basket" msgstr "Gérer les éléments dans un panier" -#: views.py:389 +#: views.py:411 msgid "Delete basket" msgstr "Supprimer un panier" -#: views.py:441 +#: views.py:463 views.py:476 views.py:489 msgid "New treatment" msgstr "Ajouter un traitement" -#: views.py:449 +#: views.py:497 msgid "Treatment modification" msgstr "Modifier un traitement" -#: views.py:466 +#: views.py:514 msgid "Treatment deletion" msgstr "Supprimer un traitement" -#: views.py:473 +#: views.py:521 msgid "Treatment: search administrative act" msgstr "Traitement : rechercher un acte administratif" -#: views.py:482 +#: views.py:530 msgid "Treatment: new administrative act" msgstr "Traitement : ajouter un acte administratif" -#: views.py:492 +#: views.py:540 msgid "Treatment: administrative act modification" msgstr "Traitement : modifier un acte administratif" -#: views.py:501 +#: views.py:549 msgid "Treatment: administrative act deletion" msgstr "Traitement : supprimer un acte administratif" -#: views.py:534 +#: views.py:582 msgid "New treatment request" msgstr "Ajouter une demande de traitement" -#: views.py:541 +#: views.py:589 msgid "Treatment request modification" msgstr "Modifier une demande de traitement" -#: views.py:557 +#: views.py:605 msgid "Treatment request deletion" msgstr "Supprimer une demande de traitement" -#: views.py:564 +#: views.py:612 msgid "Treatment request: search administrative act" msgstr "Demande de traitement : rechercher un acte administratif" -#: views.py:574 +#: views.py:622 msgid "Treatment request: new administrative act" msgstr "Demande de traitement : ajouter un acte administratif" -#: views.py:584 +#: views.py:632 msgid "Treatment request: administrative act modification" msgstr "Demande de traitement : modifier un acte administratif" -#: views.py:593 +#: views.py:641 msgid "Treatment request: administrative act deletion" msgstr "Demande de traitement : supprimer un acte administratif" + +#: wizards.py:387 +msgid "" +"The new basket: \"{}\" have been created with the resulting items. This " +"search have been pinned." +msgstr "" +"Le nouveau panier « {} » a été créé avec les éléments résultants. Cette " +"recherche a été épinglée." diff --git a/translations/fr/archaeological_warehouse.po b/translations/fr/archaeological_warehouse.po index 6b2c7ae8e..c390110e4 100644 --- a/translations/fr/archaeological_warehouse.po +++ b/translations/fr/archaeological_warehouse.po @@ -18,169 +18,169 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n>1;\n" "X-Generator: Zanata 4.6.2\n" -#: forms.py:41 forms.py:113 ishtar_menu.py:40 models.py:94 models.py:258 +#: forms.py:42 forms.py:114 ishtar_menu.py:40 models.py:94 models.py:258 #: templates/ishtar/sheet_warehouse.html:4 msgid "Warehouse" msgstr "Lieu de conservation" -#: forms.py:50 forms.py:55 models.py:622 +#: forms.py:51 forms.py:56 models.py:623 msgid "Division" msgstr "Division" -#: forms.py:57 models.py:286 +#: forms.py:58 models.py:286 msgid "Order" msgstr "Ordre" -#: forms.py:71 +#: forms.py:72 msgid "There are identical divisions." msgstr "Il y a des divisions identiques" -#: forms.py:76 models.py:83 +#: forms.py:77 models.py:83 msgid "Divisions" msgstr "Divisions" -#: forms.py:77 +#: forms.py:78 msgid "Warehouse - 020 - Divisions" msgstr "Lieu de conservation - 020 - Divisions" -#: forms.py:85 forms.py:254 +#: forms.py:86 forms.py:255 msgid "Full text search" msgstr "Recherche en texte intégral" -#: forms.py:88 forms.py:119 models.py:75 models.py:255 +#: forms.py:89 forms.py:120 models.py:75 models.py:255 msgid "Name" msgstr "Nom" -#: forms.py:89 forms.py:121 models.py:39 models.py:77 +#: forms.py:90 forms.py:122 models.py:39 models.py:77 msgid "Warehouse type" msgstr "Type de lieu de conservation" -#: forms.py:101 views.py:108 +#: forms.py:102 views.py:108 msgid "Warehouse search" msgstr "Rechercher un lieu de conservation" -#: forms.py:114 +#: forms.py:115 msgid "Warehouse - 010 - General" msgstr "Lieu de conservation - 010 - Général" -#: forms.py:124 models.py:80 +#: forms.py:125 models.py:80 msgid "Person in charge" msgstr "Responsable" -#: forms.py:130 forms.py:198 models.py:81 models.py:381 +#: forms.py:131 forms.py:199 models.py:81 models.py:382 msgid "Comment" msgstr "Commentaire" -#: forms.py:132 +#: forms.py:133 msgid "Address" msgstr "Adresse" -#: forms.py:134 +#: forms.py:135 msgid "Address complement" msgstr "Complément d'adresse" -#: forms.py:136 +#: forms.py:137 msgid "Postal code" msgstr "Code postal" -#: forms.py:138 +#: forms.py:139 msgid "Town" msgstr "Commune" -#: forms.py:139 +#: forms.py:140 msgid "Country" msgstr "Pays" -#: forms.py:141 +#: forms.py:142 msgid "Phone" msgstr "Téléphone" -#: forms.py:142 +#: forms.py:143 msgid "Mobile phone" msgstr "Téléphone mobile" -#: forms.py:167 forms.py:168 +#: forms.py:168 forms.py:169 msgid "Would you like to delete this warehouse?" msgstr "Voulez-vous supprimer ce lieu de conservation?" -#: forms.py:172 models.py:395 models.py:619 +#: forms.py:173 models.py:396 models.py:620 #: templates/ishtar/sheet_container.html:4 msgid "Container" msgstr "Contenant" -#: forms.py:173 +#: forms.py:174 msgid "Container - 010 - General" msgstr "Contenant - 010 - Général" -#: forms.py:179 forms.py:261 models.py:301 +#: forms.py:180 forms.py:262 models.py:301 msgid "Ref." msgstr "Réf." -#: forms.py:180 models.py:389 +#: forms.py:181 models.py:390 msgid "Old reference" msgstr "Ancienne référence" -#: forms.py:182 forms.py:260 models.py:304 models.py:379 +#: forms.py:183 forms.py:261 models.py:305 models.py:380 msgid "Container type" msgstr "Type de contenant" -#: forms.py:184 forms.py:258 +#: forms.py:185 forms.py:259 msgid "Current location (warehouse)" msgstr "Localisation actuelle (lieu de conservation)" -#: forms.py:190 forms.py:259 models.py:376 +#: forms.py:191 forms.py:260 models.py:377 msgid "Responsible warehouse" msgstr "Lieu de conservation responsable" -#: forms.py:196 +#: forms.py:197 msgid "Image" msgstr "Image" -#: forms.py:223 +#: forms.py:224 msgid "ID" msgstr "Identifiant" -#: forms.py:245 +#: forms.py:246 msgid "This ID already exists for this warehouse." msgstr "Cet identifiant existe déjà pour ce lieu de conservation." -#: forms.py:272 forms.py:278 views.py:150 +#: forms.py:273 forms.py:279 views.py:150 msgid "Container search" msgstr "Rechercher un contenant" -#: forms.py:274 forms.py:280 +#: forms.py:275 forms.py:281 msgid "You should select a container." msgstr "Vous devez sélectionner un contenant." -#: forms.py:275 +#: forms.py:276 msgid "Add a new container" msgstr "Ajouter un nouveau contenant" -#: forms.py:285 ishtar_menu.py:36 views.py:103 +#: forms.py:286 ishtar_menu.py:36 views.py:103 msgid "Packaging" msgstr "Conditionnement" -#: forms.py:291 +#: forms.py:292 msgid "Packager" msgstr "Personne assurant le conditionnement" -#: forms.py:297 +#: forms.py:298 msgid "Date" msgstr "Date" -#: forms.py:301 +#: forms.py:304 msgid "Packaged finds" msgstr "Mobilier conditionné" -#: forms.py:305 +#: forms.py:308 msgid "Container - 020 - Localisation" msgstr "Contenant - 020 - Localisation" -#: forms.py:307 models.py:382 +#: forms.py:310 models.py:383 msgid "Localisation" msgstr "Localisation" -#: forms.py:331 forms.py:332 +#: forms.py:334 forms.py:335 msgid "Would you like to delete this container?" msgstr "Voulez-vous supprimer ce contenant ?" @@ -204,7 +204,7 @@ msgstr "Modification" msgid "Deletion" msgstr "Suppression" -#: ishtar_menu.py:57 models.py:396 templates/ishtar/sheet_warehouse.html:42 +#: ishtar_menu.py:57 models.py:397 templates/ishtar/sheet_warehouse.html:42 #: templates/ishtar/sheet_warehouse.html:87 msgid "Containers" msgstr "Contenants" @@ -218,7 +218,7 @@ msgctxt "key for text search" msgid "name" msgstr "nom" -#: models.py:64 models.py:356 +#: models.py:64 models.py:357 msgctxt "key for text search" msgid "type" msgstr "type" @@ -227,11 +227,11 @@ msgstr "type" msgid "Documents" msgstr "Documents" -#: models.py:89 models.py:390 +#: models.py:89 models.py:391 msgid "External ID" msgstr "Identifiant" -#: models.py:91 models.py:392 +#: models.py:91 models.py:393 msgid "External ID is set automatically" msgstr "L'identifiant est attribué automatiquement" @@ -271,62 +271,62 @@ msgstr "Hauteur (mm)" msgid "Volume (l)" msgstr "Volume (l)" -#: models.py:305 +#: models.py:306 msgid "Container types" msgstr "Types de contenant" -#: models.py:339 +#: models.py:340 msgid "Location - index" msgstr "Localisation - index" -#: models.py:340 +#: models.py:341 msgid "Precise localisation" msgstr "Localisation précise" -#: models.py:341 +#: models.py:342 msgid "Type" msgstr "Type" -#: models.py:348 +#: models.py:349 msgctxt "key for text search" msgid "location" msgstr "localisation" -#: models.py:352 +#: models.py:353 msgctxt "key for text search" msgid "responsible-warehouse" msgstr "lieu-de-conservation-responsable" -#: models.py:360 +#: models.py:361 msgctxt "key for text search" msgid "reference" msgstr "reference" -#: models.py:373 +#: models.py:374 msgid "Location (warehouse)" msgstr "Localisation (lieu de conservation)" -#: models.py:380 +#: models.py:381 msgid "Container ref." msgstr "Réf. du contenant" -#: models.py:384 +#: models.py:385 msgid "Cached location" msgstr "Localisation - en cache" -#: models.py:386 +#: models.py:387 msgid "Cached division" msgstr "Division mise en cache" -#: models.py:623 +#: models.py:624 msgid "Reference" msgstr "Référence" -#: models.py:626 +#: models.py:627 msgid "Container localisation" msgstr "Localisation de contenant" -#: models.py:627 +#: models.py:628 msgid "Container localisations" msgstr "Localisations de contenant" diff --git a/translations/fr/ishtar_common.po b/translations/fr/ishtar_common.po index 0c15c6cf7..2f37fbc77 100644 --- a/translations/fr/ishtar_common.po +++ b/translations/fr/ishtar_common.po @@ -12,7 +12,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Content-Type: text/plain; charset=UTF-8\n" -"PO-Revision-Date: 2018-11-12 10:08+0000\n" +"PO-Revision-Date: 2018-11-21 09:53+0000\n" "Last-Translator: Étienne Loks \n" "Language-Team: \n" "Language: fr\n" @@ -43,12 +43,12 @@ msgstr "Seul l'unicode est géré - convertissez votre fichier d'abord" msgid "Export selected as CSV file" msgstr "Exporter la sélection en fichier CSV" -#: admin.py:207 models.py:1686 templates/navbar.html:31 +#: admin.py:207 models.py:1700 templates/navbar.html:31 msgid "Profile" msgstr "Profil" #: admin.py:208 forms_common.py:782 forms_common.py:801 forms_common.py:802 -#: models.py:3039 +#: models.py:3056 msgid "Profiles" msgstr "Profils" @@ -70,7 +70,7 @@ msgstr "%d élément(s) mis à jour." msgid "These parents are missing: {}" msgstr "Ces parents sont manquants : {}" -#: admin.py:386 admin.py:405 models.py:883 models.py:4141 +#: admin.py:386 admin.py:405 models.py:902 models.py:4158 msgid "Parent" msgstr "Parent" @@ -78,11 +78,11 @@ msgstr "Parent" msgid "Center" msgstr "Centre" -#: admin.py:395 models.py:4003 +#: admin.py:395 models.py:4020 msgid "Limit" msgstr "Limite" -#: admin.py:398 models.py:4013 +#: admin.py:398 models.py:4030 msgid "Town children" msgstr "Communes enfants" @@ -131,16 +131,16 @@ msgstr "Afficher les éléments sélectionnés" msgid "Hide selected" msgstr "Cacher les éléments sélectionnés" -#: admin.py:931 models.py:2080 +#: admin.py:931 models.py:2095 msgid "Form" msgstr "Formulaire" -#: admin.py:933 models.py:2105 models_imports.py:127 +#: admin.py:933 models.py:2120 models_imports.py:127 #: templates/ishtar/dashboards/dashboard_main.html:39 msgid "Users" msgstr "Utilisateurs" -#: admin.py:953 models.py:2180 +#: admin.py:953 models.py:2195 msgid "Field" msgstr "Champ" @@ -347,36 +347,36 @@ msgstr "Confirmer" msgid "Are you sure you want to delete?" msgstr "Êtes-vous sûr de vouloir supprimer ?" -#: forms.py:379 +#: forms.py:410 msgid "There are identical items." msgstr "Il y a des éléments identiques." -#: forms.py:535 +#: forms.py:566 msgid "Last modified by" msgstr "Modifié en dernier par" -#: forms.py:541 +#: forms.py:572 msgid "Modified since" msgstr "Modifié depuis" -#: forms.py:565 forms.py:566 +#: forms.py:596 forms.py:597 msgid "Closing date" msgstr "Date de clôture" -#: forms.py:578 forms_common.py:1272 +#: forms.py:609 forms_common.py:1272 msgid "You should select an item." msgstr "Vous devez sélectionner un élément." -#: forms.py:579 +#: forms.py:610 msgid "Add a new item" msgstr "Ajouter un nouvel élément" -#: forms.py:769 models.py:2434 +#: forms.py:800 models.py:2450 msgid "Template" msgstr "Patron" #: forms_common.py:54 forms_common.py:72 forms_common.py:317 -#: forms_common.py:556 models.py:2568 models.py:4020 +#: forms_common.py:556 models.py:2584 models.py:4037 #: templates/blocks/JQueryAdvancedTown.html:19 msgid "Town" msgstr "Commune" @@ -398,8 +398,8 @@ msgstr "" "

Par exemple tapez « saint denis 93 » pour obtenir la " "commune Saint-Denis dans le département français de Seine-Saint-Denis.

" -#: forms_common.py:81 forms_common.py:1293 ishtar_menu.py:48 models.py:2952 -#: models.py:3204 models.py:3332 models.py:3495 +#: forms_common.py:81 forms_common.py:1293 ishtar_menu.py:48 models.py:2969 +#: models.py:3221 models.py:3349 models.py:3512 #: templates/ishtar/sheet_person.html:4 msgid "Person" msgstr "Personne" @@ -455,16 +455,16 @@ msgid "all users" msgstr "tous les utilisateurs" #: forms_common.py:305 forms_common.py:475 forms_common.py:609 -#: ishtar_menu.py:76 models.py:2773 models.py:2890 models.py:3292 +#: ishtar_menu.py:76 models.py:2789 models.py:2907 models.py:3309 #: templates/ishtar/sheet_organization.html:4 msgid "Organization" msgstr "Organisation" #: forms_common.py:308 forms_common.py:351 forms_common.py:470 #: forms_common.py:526 forms_common.py:604 forms_common.py:790 -#: forms_common.py:823 models.py:1056 models.py:1080 models.py:1879 -#: models.py:2079 models.py:2430 models.py:2765 models.py:2936 models.py:3192 -#: models.py:3999 models.py:4262 models_imports.py:98 models_imports.py:123 +#: forms_common.py:823 models.py:1075 models.py:1099 models.py:1894 +#: models.py:2094 models.py:2446 models.py:2781 models.py:2953 models.py:3209 +#: models.py:4016 models.py:4281 models_imports.py:98 models_imports.py:123 #: models_imports.py:445 models_imports.py:537 models_imports.py:827 #: templates/ishtar/import_step_by_step.html:102 #: templates/ishtar/import_step_by_step.html:270 @@ -473,40 +473,40 @@ msgstr "Organisation" msgid "Name" msgstr "Nom" -#: forms_common.py:309 models.py:2721 models_imports.py:630 +#: forms_common.py:309 models.py:2737 models_imports.py:630 #: models_imports.py:631 msgid "Organization type" msgstr "Type d'organisation" -#: forms_common.py:311 forms_common.py:550 models.py:2563 +#: forms_common.py:311 forms_common.py:550 models.py:2579 #: templates/ishtar/blocks/sheet_address_section.html:4 msgid "Address" msgstr "Adresse" -#: forms_common.py:313 forms_common.py:553 models.py:2564 +#: forms_common.py:313 forms_common.py:553 models.py:2580 msgid "Address complement" msgstr "Complément d'adresse" -#: forms_common.py:315 forms_common.py:554 models.py:2566 +#: forms_common.py:315 forms_common.py:554 models.py:2582 msgid "Postal code" msgstr "Code postal" -#: forms_common.py:318 forms_common.py:557 models.py:2569 +#: forms_common.py:318 forms_common.py:557 models.py:2585 msgid "Country" msgstr "Pays" #: forms_common.py:320 forms_common.py:472 forms_common.py:530 -#: forms_common.py:606 forms_common.py:731 models.py:2596 +#: forms_common.py:606 forms_common.py:731 models.py:2612 msgid "Email" msgstr "Courriel" -#: forms_common.py:321 forms_common.py:533 models.py:2581 +#: forms_common.py:321 forms_common.py:533 models.py:2597 #: templates/ishtar/sheet_person.html:27 #: templates/ishtar/wizard/wizard_person.html:33 msgid "Phone" msgstr "Téléphone" -#: forms_common.py:322 forms_common.py:542 models.py:2593 +#: forms_common.py:322 forms_common.py:542 models.py:2609 #: templates/ishtar/sheet_person.html:45 #: templates/ishtar/wizard/wizard_person.html:54 msgid "Mobile phone" @@ -518,7 +518,7 @@ msgid "Full text search" msgstr "Recherche en texte intégral" #: forms_common.py:352 forms_common.py:473 forms_common.py:607 -#: forms_common.py:788 models.py:1089 models.py:2767 models.py:3738 +#: forms_common.py:788 models.py:1108 models.py:2783 models.py:3755 #: models_imports.py:680 templates/ishtar/blocks/window_image_detail.html:24 #: templates/ishtar/blocks/window_tables/documents.html:8 #: templates/ishtar/import_table.html:28 @@ -542,7 +542,7 @@ msgstr "Fusionner tous les éléments dans" msgid "Organization to merge" msgstr "Organisation à fusionner" -#: forms_common.py:471 forms_common.py:524 forms_common.py:605 models.py:2934 +#: forms_common.py:471 forms_common.py:524 forms_common.py:605 models.py:2951 #: templates/ishtar/sheet_organization.html:24 msgid "Surname" msgstr "Prénom" @@ -559,25 +559,25 @@ msgstr "Personne à fusionner" msgid "Identity" msgstr "Identité" -#: forms_common.py:521 forms_common.py:1095 forms_common.py:1217 models.py:2928 -#: models.py:2930 models.py:3729 models_imports.py:632 +#: forms_common.py:521 forms_common.py:1095 forms_common.py:1217 models.py:2945 +#: models.py:2947 models.py:3746 models_imports.py:632 #: templates/ishtar/blocks/window_tables/documents.html:7 msgid "Title" msgstr "Titre" -#: forms_common.py:522 models.py:2932 +#: forms_common.py:522 models.py:2949 msgid "Salutation" msgstr "Formule d'appel" -#: forms_common.py:528 models.py:2938 +#: forms_common.py:528 models.py:2955 msgid "Raw name" msgstr "Nom brut" -#: forms_common.py:531 models.py:2582 +#: forms_common.py:531 models.py:2598 msgid "Phone description" msgstr "Type de téléphone" -#: forms_common.py:534 models.py:2584 models.py:2586 +#: forms_common.py:534 models.py:2600 models.py:2602 msgid "Phone description 2" msgstr "Type de téléphone 2" @@ -585,11 +585,11 @@ msgstr "Type de téléphone 2" msgid "Phone 2" msgstr "Téléphone 2" -#: forms_common.py:538 models.py:2590 +#: forms_common.py:538 models.py:2606 msgid "Phone description 3" msgstr "Type de téléphone 3" -#: forms_common.py:540 models.py:2588 +#: forms_common.py:540 models.py:2604 msgid "Phone 3" msgstr "Téléphone 3" @@ -597,23 +597,23 @@ msgstr "Téléphone 3" msgid "Current organization" msgstr "Organisation actuelle" -#: forms_common.py:559 models.py:2571 +#: forms_common.py:559 models.py:2587 msgid "Other address: address" msgstr "Autre adresse : adresse" -#: forms_common.py:562 models.py:2574 +#: forms_common.py:562 models.py:2590 msgid "Other address: address complement" msgstr "Autre adresse : complément d'adresse" -#: forms_common.py:564 models.py:2575 +#: forms_common.py:564 models.py:2591 msgid "Other address: postal code" msgstr "Autre adresse : code postal" -#: forms_common.py:566 models.py:2577 +#: forms_common.py:566 models.py:2593 msgid "Other address: town" msgstr "Autre adresse : ville" -#: forms_common.py:568 models.py:2579 +#: forms_common.py:568 models.py:2595 msgid "Other address: country" msgstr "Autre adresse : pays" @@ -621,7 +621,7 @@ msgstr "Autre adresse : pays" msgid "Already has an account" msgstr "A déjà un compte" -#: forms_common.py:603 models.py:3293 +#: forms_common.py:603 models.py:3310 msgid "Username" msgstr "Nom d'utilisateur" @@ -629,7 +629,7 @@ msgstr "Nom d'utilisateur" msgid "Account search" msgstr "Rechercher un compte" -#: forms_common.py:669 forms_common.py:709 forms_common.py:713 models.py:2829 +#: forms_common.py:669 forms_common.py:709 forms_common.py:713 models.py:2846 msgid "Person type" msgstr "Type de personne" @@ -657,7 +657,7 @@ msgstr "Vous devez fournir un mot de passe correct." msgid "This username already exists." msgstr "Ce nom d'utilisateur existe déjà." -#: forms_common.py:789 models.py:3195 models.py:4148 +#: forms_common.py:789 models.py:3212 models.py:4165 msgid "Areas" msgstr "Zones" @@ -665,11 +665,11 @@ msgstr "Zones" msgid "Send the new password by email?" msgstr "Envoyer le nouveau mot de passe par courriel ?" -#: forms_common.py:821 models.py:3197 views.py:968 +#: forms_common.py:821 models.py:3214 views.py:968 msgid "Current profile" msgstr "Profil actuel" -#: forms_common.py:824 models.py:3175 models.py:3194 +#: forms_common.py:824 models.py:3192 models.py:3211 msgid "Profile type" msgstr "Type de profil" @@ -698,8 +698,8 @@ msgstr "Un profil avec un nom identique existe" msgid " (duplicate)" msgstr "(copie)" -#: forms_common.py:932 forms_common.py:946 forms_common.py:947 models.py:4021 -#: models.py:4136 +#: forms_common.py:932 forms_common.py:946 forms_common.py:947 models.py:4038 +#: models.py:4153 msgid "Towns" msgstr "Communes" @@ -728,19 +728,19 @@ msgstr "Documentation" msgid "Document - General" msgstr "Document - Général" -#: forms_common.py:1098 forms_common.py:1218 models.py:3543 +#: forms_common.py:1098 forms_common.py:1218 models.py:3560 #: models_imports.py:633 msgid "Source type" msgstr "Type de document" #: forms_common.py:1101 forms_common.py:1152 forms_common.py:1333 -#: forms_common.py:1334 models.py:3504 models.py:3612 models.py:3748 +#: forms_common.py:1334 models.py:3521 models.py:3629 models.py:3765 #: templates/ishtar/blocks/window_image_detail.html:9 #: templates/ishtar/blocks/window_tables/documents.html:9 msgid "Authors" msgstr "Auteurs" -#: forms_common.py:1105 models.py:3754 +#: forms_common.py:1105 models.py:3771 msgid "Numerical ressource (web address)" msgstr "Ressource numérique (adresse web)" @@ -753,7 +753,7 @@ msgctxt "Not directory" msgid "File" msgstr "Fichier" -#: forms_common.py:1113 forms_common.py:1219 models.py:4138 +#: forms_common.py:1113 forms_common.py:1219 models.py:4155 msgid "Reference" msgstr "Référence" @@ -761,38 +761,38 @@ msgstr "Référence" msgid "Internal reference" msgstr "Référence interne" -#: forms_common.py:1118 models.py:3756 +#: forms_common.py:1118 models.py:3773 #: templates/ishtar/blocks/window_image_detail.html:150 msgid "Receipt date" msgstr "Date de réception" -#: forms_common.py:1120 models.py:3758 models_imports.py:859 +#: forms_common.py:1120 models.py:3775 models_imports.py:859 #: templates/ishtar/blocks/window_image_detail.html:54 msgid "Creation date" msgstr "Date de création" -#: forms_common.py:1123 models.py:3761 +#: forms_common.py:1123 models.py:3778 #: templates/ishtar/blocks/window_image_detail.html:160 msgid "Receipt date in documentation" msgstr "Date de réception en documentation" -#: forms_common.py:1125 forms_common.py:1222 models.py:473 models.py:2942 -#: models.py:3421 models.py:3764 models_imports.py:483 +#: forms_common.py:1125 forms_common.py:1222 models.py:493 models.py:2959 +#: models.py:3438 models.py:3781 models_imports.py:483 #: templates/ishtar/blocks/window_image_detail.html:170 msgid "Comment" msgstr "Commentaire" -#: forms_common.py:1127 forms_common.py:1221 models.py:1884 models.py:3763 +#: forms_common.py:1127 forms_common.py:1221 models.py:1899 models.py:3780 #: models_imports.py:125 models_imports.py:372 models_imports.py:446 msgid "Description" msgstr "Description" -#: forms_common.py:1130 models.py:3765 +#: forms_common.py:1130 models.py:3782 #: templates/ishtar/blocks/window_image_detail.html:182 msgid "Additional information" msgstr "Information supplémentaire" -#: forms_common.py:1132 forms_common.py:1225 models.py:3767 +#: forms_common.py:1132 forms_common.py:1225 models.py:3784 #: templates/ishtar/blocks/window_image_detail.html:108 msgid "Has a duplicate" msgstr "Existe en doublon" @@ -829,7 +829,7 @@ msgid "A document have to attached at least to one item" msgstr "Un document doit être rattaché au minimum à un élément" #: forms_common.py:1214 forms_common.py:1286 forms_common.py:1321 -#: models.py:3503 templates/ishtar/wizard/wizard_person_deletion.html:139 +#: models.py:3520 templates/ishtar/wizard/wizard_person_deletion.html:139 msgid "Author" msgstr "Auteur" @@ -857,7 +857,7 @@ msgstr "Recherche document" msgid "Would you like to delete this documentation?" msgstr "Voulez-vous supprimer ce document ?" -#: forms_common.py:1294 models.py:3468 models.py:3497 models_imports.py:634 +#: forms_common.py:1294 models.py:3485 models.py:3514 models_imports.py:634 msgid "Author type" msgstr "Type d'auteur" @@ -869,11 +869,11 @@ msgstr "Sélection d'auteur" msgid "There are identical authors." msgstr "Il y a des auteurs identiques." -#: forms_common.py:1339 models.py:1683 +#: forms_common.py:1339 models.py:1697 msgid "Query" msgstr "Requête" -#: forms_common.py:1344 models.py:1687 +#: forms_common.py:1344 models.py:1701 msgid "Is an alert" msgstr "Est une alerte" @@ -913,7 +913,7 @@ msgstr "Ajout/modification" msgid "Deletion" msgstr "Suppression" -#: ishtar_menu.py:40 models.py:2209 views.py:992 +#: ishtar_menu.py:40 models.py:2224 views.py:992 msgid "Global variables" msgstr "Variables globales" @@ -970,24 +970,24 @@ msgstr "Documentation / Images" msgid "Not a valid item." msgstr "Élément invalide." -#: models.py:211 +#: models.py:212 msgid "A selected item is not a valid item." msgstr "Un élément sélectionné n'est pas valide." -#: models.py:222 +#: models.py:224 msgid "This item already exists." msgstr "Cet élément existe déjà." -#: models.py:465 models.py:1682 models.py:2191 models.py:2528 models.py:2544 -#: models.py:3420 models_imports.py:368 +#: models.py:485 models.py:1696 models.py:2206 models.py:2544 models.py:2560 +#: models.py:3437 models_imports.py:368 msgid "Label" msgstr "Dénomination" -#: models.py:467 +#: models.py:487 msgid "Textual ID" msgstr "Identifiant textuel" -#: models.py:470 +#: models.py:490 msgid "" "The slug is the standardized version of the name. It contains only lowercase " "letters, numbers and hyphens. Each slug must be unique." @@ -996,12 +996,12 @@ msgstr "" "lettres en minuscule, des nombres et des tirets (-). Chaque \"slug\" doit " "être unique dans la typologie." -#: models.py:474 models.py:2081 models.py:2437 models.py:3425 +#: models.py:494 models.py:2096 models.py:2453 models.py:3442 #: models_imports.py:139 models_imports.py:542 msgid "Available" msgstr "Disponible" -#: models.py:898 models.py:1083 models_imports.py:563 +#: models.py:917 models.py:1102 models_imports.py:563 #: templates/ishtar/formset_import_match.html:21 #: templates/ishtar/import_step_by_step.html:171 #: templates/ishtar/import_step_by_step.html:199 @@ -1010,56 +1010,56 @@ msgstr "Disponible" msgid "Key" msgstr "Clé" -#: models.py:904 +#: models.py:923 msgid "Specific key to an import" msgstr "Clé spécifique à un import" -#: models.py:1043 +#: models.py:1062 msgid "Generated relation image (SVG)" msgstr "Image des relations (SVG généré)" -#: models.py:1057 models.py:1091 models.py:1604 models.py:2193 models.py:3465 -#: models.py:4165 models.py:4247 +#: models.py:1076 models.py:1110 models.py:1618 models.py:2208 models.py:3482 +#: models.py:4182 models.py:4264 msgid "Order" msgstr "Ordre" -#: models.py:1060 +#: models.py:1079 msgid "Json data - Menu" msgstr "Données JSON - Menu" -#: models.py:1061 +#: models.py:1080 msgid "Json data - Menus" msgstr "Données JSON - Menus" -#: models.py:1069 +#: models.py:1088 msgid "Text" msgstr "Texte" -#: models.py:1070 +#: models.py:1089 msgid "Long text" msgstr "Texte long" -#: models.py:1071 models_imports.py:676 +#: models.py:1090 models_imports.py:676 msgid "Integer" msgstr "Entier" -#: models.py:1072 +#: models.py:1091 msgid "Boolean" msgstr "Booléen" -#: models.py:1073 models_imports.py:677 +#: models.py:1092 models_imports.py:677 msgid "Float" msgstr "Nombre à virgule" -#: models.py:1074 models_imports.py:679 +#: models.py:1093 models_imports.py:679 msgid "Date" msgstr "Date" -#: models.py:1075 +#: models.py:1094 msgid "Choices" msgstr "Choix" -#: models.py:1084 +#: models.py:1103 msgid "" "Value of the key in the JSON schema. For hierarchical key use \"__\" to " "explain it. For instance for the key 'my_subkey' with data such as {'my_key':" @@ -1070,200 +1070,200 @@ msgstr "" "{'ma_clef': {'ma_sousclef': 'valeur'}}, sa valeur sera atteinte avec : " "ma_clef__ma_sousclef." -#: models.py:1088 +#: models.py:1107 msgid "Display" msgstr "Afficher" -#: models.py:1092 +#: models.py:1111 msgid "Use in search indexes" msgstr "Utiliser dans les index de recherche" -#: models.py:1099 +#: models.py:1118 msgid "Json data - Field" msgstr "Donnée JSON - Champ" -#: models.py:1100 +#: models.py:1119 msgid "Json data - Fields" msgstr "Donnée JSON - Champs" -#: models.py:1111 +#: models.py:1130 msgid "Content types of the field and of the menu do not match" msgstr "Les types de contenu du champ et du menu ne correspondent pas" -#: models.py:1171 +#: models.py:1190 msgid "Search vector" msgstr "Vecteur de recherche" -#: models.py:1172 +#: models.py:1191 msgid "Auto filled at save" msgstr "Auto-rempli à la sauvegarde" -#: models.py:1392 +#: models.py:1406 msgid "Add document/image" msgstr "Ajouter un document / une image" -#: models.py:1394 +#: models.py:1408 msgid "doc./image" msgstr "doc./image" -#: models.py:1413 +#: models.py:1427 msgid "Last editor" msgstr "Dernier éditeur" -#: models.py:1416 +#: models.py:1430 msgid "Creator" msgstr "Créateur" -#: models.py:1597 +#: models.py:1611 msgid "Above" msgstr "Au-dessus" -#: models.py:1598 +#: models.py:1612 msgid "Bellow" msgstr "En dessous" -#: models.py:1599 +#: models.py:1613 msgid "Equal" msgstr "Égal" -#: models.py:1605 +#: models.py:1619 msgid "Symmetrical" msgstr "Symétrique" -#: models.py:1606 +#: models.py:1620 msgid "Tiny label" msgstr "Dénomination courte" -#: models.py:1609 +#: models.py:1623 msgid "Inverse relation" msgstr "Relation inverse" -#: models.py:1612 +#: models.py:1626 msgid "Logical relation" msgstr "Relation logique" -#: models.py:1622 +#: models.py:1636 msgid "Cannot have symmetrical and an inverse_relation" msgstr "Ne peut pas être symétrique et avoir une relation inverse" -#: models.py:1685 +#: models.py:1699 msgid "Content type" msgstr "Type de contenu" -#: models.py:1690 +#: models.py:1704 msgid "Search query" msgstr "Requête de recherche" -#: models.py:1691 +#: models.py:1705 msgid "Search queries" msgstr "Requêtes de recherche" -#: models.py:1855 +#: models.py:1870 msgid "Euro" msgstr "Euro" -#: models.py:1856 +#: models.py:1871 msgid "US dollar" msgstr "Dollar US" -#: models.py:1857 views.py:742 views.py:803 +#: models.py:1872 views.py:742 views.py:803 msgid "Operations" msgstr "Opérations" -#: models.py:1858 views.py:744 views.py:807 +#: models.py:1873 views.py:744 views.py:807 msgid "Context records" msgstr "Unités d'Enregistrement" -#: models.py:1859 +#: models.py:1874 msgid "Site" msgstr "Site" -#: models.py:1859 +#: models.py:1874 msgid "Archaeological entity" msgstr "Entité (EA)" -#: models.py:1863 +#: models.py:1878 msgid "Site search" msgstr "Rechercher un site" -#: models.py:1864 +#: models.py:1879 msgid "New site" msgstr "Ajouter un site" -#: models.py:1865 +#: models.py:1880 msgid "Site modification" msgstr "Modifier un site" -#: models.py:1866 +#: models.py:1881 msgid "Site deletion" msgstr "Supprimer un site" -#: models.py:1869 +#: models.py:1884 msgid "Archaeological entity search" msgstr "Rechercher une entité archéologique" -#: models.py:1870 +#: models.py:1885 msgid "New archaeological entity" msgstr "Nouvelle entité archéologique" -#: models.py:1871 +#: models.py:1886 msgid "Archaeological entity modification" msgstr "Modifier une entité archéologique" -#: models.py:1872 +#: models.py:1887 msgid "Archaeological entity deletion" msgstr "Supprimer une entité archéologique" -#: models.py:1880 models.py:2431 models_imports.py:124 +#: models.py:1895 models.py:2447 models_imports.py:124 msgid "Slug" msgstr "Identifiant texte" -#: models.py:1881 +#: models.py:1896 msgid "Current active" msgstr "Actuellement utilisé" -#: models.py:1883 +#: models.py:1898 msgid "Activate experimental feature" msgstr "Activer les fonctionnalités expérimentales" -#: models.py:1886 +#: models.py:1901 msgid "Alternate configuration" msgstr "Configuration alternative" -#: models.py:1888 +#: models.py:1903 msgid "Choose an alternate configuration for label, index management" msgstr "" "Choisir une configuration alternative pour les libellés, gestion des indexes" -#: models.py:1892 +#: models.py:1907 msgid "Files module" msgstr "Module Dossiers" -#: models.py:1894 +#: models.py:1909 msgid "Archaeological site module" msgstr "Module Site archéologique" -#: models.py:1896 +#: models.py:1911 msgid "Archaeological site type" msgstr "Type de site archéologique" -#: models.py:1900 +#: models.py:1915 msgid "Context records module" msgstr "Module Unités d'Enregistrement" -#: models.py:1902 +#: models.py:1917 msgid "Finds module" msgstr "Module Mobilier" -#: models.py:1903 +#: models.py:1918 msgid "Need context records module" msgstr "Nécessite le module Unités d'Enregistrement" -#: models.py:1905 +#: models.py:1920 msgid "Find index is based on" msgstr "Index mobilier basé sur" -#: models.py:1907 +#: models.py:1922 msgid "" "To prevent irrelevant indexes, change this parameter only if there is no " "find in the database" @@ -1271,35 +1271,35 @@ msgstr "" "Pour éviter des index non pertinents, ne changer ce paramètre que s'il n'y a " "pas encore de mobilier dans cette base de données" -#: models.py:1910 +#: models.py:1925 msgid "Warehouses module" msgstr "Module Lieu de conservation" -#: models.py:1911 +#: models.py:1926 msgid "Need finds module" msgstr "Nécessite le module mobilier" -#: models.py:1912 +#: models.py:1927 msgid "Preservation module" msgstr "Module de conservation" -#: models.py:1914 +#: models.py:1929 msgid "Mapping module" msgstr "Module cartographique" -#: models.py:1915 +#: models.py:1930 msgid "Underwater module" msgstr "Module sous-marin / subaquatique" -#: models.py:1917 +#: models.py:1932 msgid "Parcel are mandatory for context records" msgstr "Parcelles cadastrales obligatoires pour les Unités d'Enregistrement" -#: models.py:1919 +#: models.py:1934 msgid "Home page" msgstr "Page d'accueil" -#: models.py:1920 +#: models.py:1935 #, python-brace-format msgid "" "Homepage of Ishtar - if not defined a default homepage will appear. Use the " @@ -1309,23 +1309,23 @@ msgstr "" "défaut apparaît. Utiliser la syntaxe Markdown. {random_image} peut être " "utilisé pour afficher une image au hasard." -#: models.py:1924 +#: models.py:1939 msgid "Main operation code prefix" msgstr "Préfixe principal pour le code opération" -#: models.py:1928 +#: models.py:1943 msgid "Default operation code prefix" msgstr "Préfixe par défaut pour le code opération" -#: models.py:1932 +#: models.py:1947 msgid "Operation region code" msgstr "Code région des opérations" -#: models.py:1936 +#: models.py:1951 msgid "File external id" msgstr "Identifiant de fichier" -#: models.py:1938 +#: models.py:1953 msgid "" "Formula to manage file external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " @@ -1335,11 +1335,11 @@ msgstr "" " Une formule incorrecte peut rendre l'application inutilisable et l'import " "de données externes peut alors être destructif." -#: models.py:1943 +#: models.py:1958 msgid "Parcel external id" msgstr "Identifiant de parcelle" -#: models.py:1946 +#: models.py:1961 msgid "" "Formula to manage parcel external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " @@ -1349,11 +1349,11 @@ msgstr "" "précaution. Une formule incorrecte peut rendre l'application inutilisable et " "l'import de données externes peut alors être destructif." -#: models.py:1951 +#: models.py:1966 msgid "Context record external id" msgstr "Identifiant d'unité d'enregistrement" -#: models.py:1953 +#: models.py:1968 msgid "" "Formula to manage context record external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " @@ -1363,11 +1363,11 @@ msgstr "" "avec précaution. Une formule incorrecte peut rendre l'application " "inutilisable et l'import de données externes peut alors être destructif." -#: models.py:1958 +#: models.py:1973 msgid "Base find external id" msgstr "Identifiant de mobilier d'origine" -#: models.py:1960 +#: models.py:1975 msgid "" "Formula to manage base find external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " @@ -1377,11 +1377,11 @@ msgstr "" "précaution. Une formule incorrecte peut rendre l'application inutilisable et " "l'import de données externes peut alors être destructif." -#: models.py:1965 +#: models.py:1980 msgid "Find external id" msgstr "Identifiant de mobilier" -#: models.py:1967 +#: models.py:1982 msgid "" "Formula to manage find external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " @@ -1391,11 +1391,11 @@ msgstr "" " Une formule incorrecte peut rendre l'application inutilisable et l'import " "de données externes peut alors être destructif." -#: models.py:1972 +#: models.py:1987 msgid "Container external id" msgstr "ID du contenant" -#: models.py:1974 +#: models.py:1989 msgid "" "Formula to manage container external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " @@ -1405,11 +1405,11 @@ msgstr "" "précaution. Une formule incorrecte peut rendre l'application inutilisable et " "l'import de données externes peut alors être destructif." -#: models.py:1979 +#: models.py:1994 msgid "Warehouse external id" msgstr "Identifiant du lieu de conservation" -#: models.py:1981 +#: models.py:1996 msgid "" "Formula to manage warehouse external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " @@ -1419,11 +1419,11 @@ msgstr "" "avec précaution. Une formule incorrecte peut rendre l'application " "inutilisable et l'import de données externes peut alors être destructif." -#: models.py:1986 +#: models.py:2001 msgid "Raw name for person" msgstr "Nom brut pour une personne" -#: models.py:1988 +#: models.py:2003 msgid "" "Formula to manage person raw_name. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " @@ -1433,27 +1433,27 @@ msgstr "" "Une formule incorrecte peut rendre l'application inutilisable et l'import de " "données externes peut alors être destructif." -#: models.py:1992 +#: models.py:2007 msgid "Use auto index for finds" msgstr "Utiliser les indexes automatique pour le mobilier" -#: models.py:1994 +#: models.py:2009 msgid "Currency" msgstr "Devise" -#: models.py:1998 +#: models.py:2013 msgid "Ishtar site profile" msgstr "Profil d'instance Ishtar" -#: models.py:1999 +#: models.py:2014 msgid "Ishtar site profiles" msgstr "Profils d'instance Ishtar" -#: models.py:2083 +#: models.py:2098 msgid "Enable this form" msgstr "Activer ce formulaire" -#: models.py:2084 +#: models.py:2099 msgid "" "Disable with caution: disabling a form with mandatory fields may lead to " "database errors." @@ -1461,11 +1461,11 @@ msgstr "" "Désactiver avec précaution : désactiver un formulaire avec des champs " "obligatoires peut entraîner des erreurs dans la base de données." -#: models.py:2087 +#: models.py:2102 msgid "Apply to all" msgstr "S'applique à tous" -#: models.py:2088 +#: models.py:2103 msgid "" "Apply this form to all users. If set to True, selecting user and user type " "is useless." @@ -1473,48 +1473,48 @@ msgstr "" "Activer ce formulaire pour tous les utilisateurs. Si mis à Vrai, " "sélectionner des utilisateurs ou des types d'utilisateurs est inutile." -#: models.py:2094 +#: models.py:2109 msgid "Custom form" msgstr "Formulaire personnalisé" -#: models.py:2095 +#: models.py:2110 msgid "Custom forms" msgstr "Formulaires personnalisés" -#: models.py:2111 +#: models.py:2126 msgid "User types" msgstr "Types d'utilisateur" -#: models.py:2183 +#: models.py:2198 msgid "Excluded field" msgstr "Champ exclus" -#: models.py:2184 +#: models.py:2199 msgid "Excluded fields" msgstr "Champs exclus" -#: models.py:2194 templates/blocks/form_flex_snippet.html:18 +#: models.py:2209 templates/blocks/form_flex_snippet.html:18 #: templates/blocks/table_form_snippet.html:9 msgid "Help" msgstr "Aide" -#: models.py:2197 +#: models.py:2212 msgid "Custom form - Json data field" msgstr "Formulaire personnalisé - Champ de donnée Json" -#: models.py:2198 +#: models.py:2213 msgid "Custom form - Json data fields" msgstr "Formulaire personnalisé - Champs de donnée Json" -#: models.py:2202 +#: models.py:2217 msgid "Variable name" msgstr "Nom de la variable" -#: models.py:2203 +#: models.py:2218 msgid "Description of the variable" msgstr "Description de la variable" -#: models.py:2205 models_imports.py:564 +#: models.py:2220 models_imports.py:564 #: templates/ishtar/formset_import_match.html:22 #: templates/ishtar/import_step_by_step.html:172 #: templates/ishtar/import_step_by_step.html:200 @@ -1522,545 +1522,545 @@ msgstr "Description de la variable" msgid "Value" msgstr "Valeur" -#: models.py:2208 +#: models.py:2223 msgid "Global variable" msgstr "Variable globale" -#: models.py:2335 models.py:2365 +#: models.py:2351 models.py:2381 msgid "Total" msgstr "Total" -#: models.py:2342 models.py:2529 models.py:2545 +#: models.py:2358 models.py:2545 models.py:2561 #: templates/ishtar/dashboards/dashboard_main_detail.html:211 #: templates/ishtar/dashboards/dashboard_main_detail_users.html:5 #: templates/ishtar/sheet_person.html:30 msgid "Number" msgstr "Nombre" -#: models.py:2429 +#: models.py:2445 msgid "Administrative Act" msgstr "Acte administratif" -#: models.py:2436 +#: models.py:2452 msgid "Associated object" msgstr "Objet associé" -#: models.py:2441 +#: models.py:2457 msgid "Document template" msgstr "Patron de document" -#: models.py:2442 +#: models.py:2458 msgid "Document templates" msgstr "Patrons de document" -#: models.py:2533 models.py:2546 models.py:4285 models_imports.py:853 +#: models.py:2549 models.py:2562 models.py:4304 models_imports.py:853 msgid "State" msgstr "État" -#: models.py:2551 models.py:4007 templates/blocks/JQueryAdvancedTown.html:12 +#: models.py:2567 models.py:4024 templates/blocks/JQueryAdvancedTown.html:12 msgid "Department" msgstr "Département" -#: models.py:2552 +#: models.py:2568 msgid "Departments" msgstr "Départements" -#: models.py:2592 +#: models.py:2608 msgid "Raw phone" msgstr "Téléphone brut" -#: models.py:2598 +#: models.py:2614 msgid "Alternative address is prefered" msgstr "L'adresse alternative est préférée" -#: models.py:2637 +#: models.py:2653 msgid "Tel: " msgstr "Tél :" -#: models.py:2641 +#: models.py:2657 msgid "Mobile: " msgstr "Mobile :" -#: models.py:2645 +#: models.py:2661 msgid "Email: " msgstr "Courriel :" -#: models.py:2650 +#: models.py:2666 msgid "Merge key" msgstr "Clé de fusion" -#: models.py:2722 +#: models.py:2738 msgid "Organization types" msgstr "Types d'organisation" -#: models.py:2749 models.py:2896 models.py:3303 +#: models.py:2765 models.py:2913 models.py:3320 msgctxt "key for text search" msgid "name" msgstr "nom" -#: models.py:2753 models.py:2908 models.py:3315 models.py:3639 +#: models.py:2769 models.py:2925 models.py:3332 models.py:3656 msgctxt "key for text search" msgid "type" msgstr "type" -#: models.py:2768 models.py:2947 models.py:3498 models.py:4015 +#: models.py:2784 models.py:2964 models.py:3515 models.py:4032 msgid "Cached name" msgstr "Nom en cache" -#: models.py:2774 +#: models.py:2790 msgid "Organizations" msgstr "Organisations" -#: models.py:2804 +#: models.py:2821 msgid "unknown organization" msgstr "organisation inconnue" -#: models.py:2830 +#: models.py:2847 msgid "Person types" msgstr "Types de personne" -#: models.py:2843 models_imports.py:670 +#: models.py:2860 models_imports.py:670 msgid "Title type" msgstr "Type de titre" -#: models.py:2844 +#: models.py:2861 msgid "Title types" msgstr "Types de titre" -#: models.py:2868 +#: models.py:2885 msgid "Mr" msgstr "M." -#: models.py:2869 +#: models.py:2886 msgid "Miss" msgstr "Mlle" -#: models.py:2870 +#: models.py:2887 msgid "Mr and Mrs" msgstr "M. et Mme" -#: models.py:2871 +#: models.py:2888 msgid "Mrs" msgstr "Mme" -#: models.py:2872 +#: models.py:2889 msgid "Doctor" msgstr "Dr." -#: models.py:2900 models.py:3307 +#: models.py:2917 models.py:3324 msgctxt "key for text search" msgid "surname" msgstr "prenom" -#: models.py:2904 models.py:3311 +#: models.py:2921 models.py:3328 msgctxt "key for text search" msgid "email" msgstr "courriel" -#: models.py:2912 models.py:3319 +#: models.py:2929 models.py:3336 msgctxt "key for text search" msgid "organization" msgstr "organisation" -#: models.py:2916 +#: models.py:2933 msgctxt "key for text search" msgid "has-account" msgstr "a-un-compte" -#: models.py:2940 +#: models.py:2957 msgid "Contact type" msgstr "Type de contact" -#: models.py:2943 models.py:3033 +#: models.py:2960 models.py:3050 msgid "Types" msgstr "Types" -#: models.py:2946 +#: models.py:2963 msgid "Is attached to" msgstr "Est rattaché à" -#: models.py:2953 +#: models.py:2970 msgid "Persons" msgstr "Personnes" -#: models.py:3171 +#: models.py:3188 msgid "Groups" msgstr "Groupes" -#: models.py:3176 +#: models.py:3193 msgid "Profile types" msgstr "Types de profil" -#: models.py:3187 +#: models.py:3204 msgid "Profile type summary" msgstr "Résumé du type de profil" -#: models.py:3188 +#: models.py:3205 msgid "Profile types summary" msgstr "Résumés des types de profil" -#: models.py:3199 +#: models.py:3216 msgid "Show field number" msgstr "Afficher les numéros des champs" -#: models.py:3200 +#: models.py:3217 msgid "Automatically pin" msgstr "Épingler automatiquement" -#: models.py:3201 +#: models.py:3218 msgid "Display pin menu" msgstr "Montrer le menu d'épinglage" -#: models.py:3207 +#: models.py:3224 msgid "User profile" msgstr "Profil d'utilisateur" -#: models.py:3208 +#: models.py:3225 msgid "User profiles" msgstr "Profils d'utilisateurs" -#: models.py:3243 +#: models.py:3260 msgid " - duplicate" msgstr "- copie" -#: models.py:3299 +#: models.py:3316 msgctxt "key for text search" msgid "username" msgstr "nom-utilisateur" -#: models.py:3335 +#: models.py:3352 msgid "Advanced shortcut menu" msgstr "Menu de raccourci (avancé)" -#: models.py:3338 +#: models.py:3355 msgid "Ishtar user" msgstr "Utilisateur d'Ishtar" -#: models.py:3339 +#: models.py:3356 msgid "Ishtar users" msgstr "Utilisateurs d'Ishtar" -#: models.py:3424 +#: models.py:3441 msgid "Owner" msgstr "Propriétaire" -#: models.py:3427 +#: models.py:3444 msgid "Shared with" msgstr "Partagé avec" -#: models.py:3469 +#: models.py:3486 msgid "Author types" msgstr "Types d'auteur" -#: models.py:3544 +#: models.py:3561 msgid "Source types" msgstr "Types de document" -#: models.py:3554 models_imports.py:669 +#: models.py:3571 models_imports.py:669 msgid "Support type" msgstr "Type de support" -#: models.py:3555 +#: models.py:3572 msgid "Support types" msgstr "Types de support" -#: models.py:3564 +#: models.py:3581 msgid "Format type" msgstr "Type de format" -#: models.py:3565 +#: models.py:3582 msgid "Format types" msgstr "Types de format" -#: models.py:3574 +#: models.py:3591 msgid "URL" msgstr "URL" -#: models.py:3577 +#: models.py:3594 msgid "License type" msgstr "Type de licence" -#: models.py:3578 +#: models.py:3595 msgid "License types" msgstr "Types de licence" -#: models.py:3631 +#: models.py:3648 msgctxt "key for text search" msgid "author" msgstr "auteur" -#: models.py:3635 +#: models.py:3652 msgctxt "key for text search" msgid "title" msgstr "titre" -#: models.py:3643 +#: models.py:3660 msgctxt "key for text search" msgid "reference" msgstr "reference" -#: models.py:3647 +#: models.py:3664 msgctxt "key for text search" msgid "internal-reference" msgstr "reference-interne" -#: models.py:3651 +#: models.py:3668 msgctxt "key for text search" msgid "description" msgstr "description" -#: models.py:3655 +#: models.py:3672 msgctxt "key for text search" msgid "comment" msgstr "commentaire" -#: models.py:3659 +#: models.py:3676 msgctxt "key for text search" msgid "additional-information" msgstr "informations-supplementaires" -#: models.py:3663 +#: models.py:3680 msgctxt "key for text search" msgid "has-duplicate" msgstr "existe-en-doublon" -#: models.py:3667 models.py:3714 +#: models.py:3684 models.py:3731 msgctxt "key for text search" msgid "operation" msgstr "operation" -#: models.py:3671 models.py:3717 +#: models.py:3688 models.py:3734 msgctxt "key for text search" msgid "context-record" msgstr "ue" -#: models.py:3675 models.py:3719 +#: models.py:3692 models.py:3736 msgctxt "key for text search" msgid "find" msgstr "mobilier" -#: models.py:3679 models.py:3718 +#: models.py:3696 models.py:3735 msgctxt "key for text search" msgid "file" msgstr "dossier" -#: models.py:3683 models.py:3720 +#: models.py:3700 models.py:3737 msgctxt "key for text search" msgid "site" msgstr "site" -#: models.py:3687 models.py:3721 +#: models.py:3704 models.py:3738 msgctxt "key for text search" msgid "warehouse" msgstr "depot" -#: models.py:3723 +#: models.py:3740 msgctxt "key for text search" msgid "treatment" msgstr "traitement" -#: models.py:3726 +#: models.py:3743 msgctxt "key for text search" msgid "treatment-file" msgstr "dossier-traitement" -#: models.py:3732 +#: models.py:3749 msgid "Index" msgstr "Index" -#: models.py:3734 +#: models.py:3751 msgid "External ID" msgstr "Identifiant" -#: models.py:3735 templates/ishtar/blocks/window_image_detail.html:34 +#: models.py:3752 templates/ishtar/blocks/window_image_detail.html:34 msgid "Ref." msgstr "Réf." -#: models.py:3736 templates/ishtar/blocks/window_image_detail.html:44 +#: models.py:3753 templates/ishtar/blocks/window_image_detail.html:44 msgid "Internal ref." msgstr "Réf. interne" -#: models.py:3740 +#: models.py:3757 msgid "License" msgstr "Licence" -#: models.py:3742 templates/ishtar/blocks/window_image_detail.html:78 +#: models.py:3759 templates/ishtar/blocks/window_image_detail.html:78 msgid "Support" msgstr "Support" -#: models.py:3744 models_imports.py:635 +#: models.py:3761 models_imports.py:635 #: templates/ishtar/blocks/window_image_detail.html:88 msgid "Format" msgstr "Format" -#: models.py:3746 templates/ishtar/blocks/window_image_detail.html:98 +#: models.py:3763 templates/ishtar/blocks/window_image_detail.html:98 msgid "Scale" msgstr "Échelle" -#: models.py:3750 +#: models.py:3767 msgid "Authors (raw)" msgstr "Auteurs (brut)" -#: models.py:3762 templates/ishtar/blocks/window_image_detail.html:118 +#: models.py:3779 templates/ishtar/blocks/window_image_detail.html:118 msgid "Number of items" msgstr "Nombre d'éléments" -#: models.py:3769 +#: models.py:3786 msgid "Symbolic links" msgstr "Liens symboliques" -#: models.py:3772 +#: models.py:3789 msgid "Related" msgstr "Lié" -#: models.py:3773 +#: models.py:3790 msgid "Cached value - do not edit" msgstr "Valeur en cache - ne pas éditer" -#: models.py:3776 templates/ishtar/sheet_document.html:4 +#: models.py:3793 templates/ishtar/sheet_document.html:4 msgid "Document" msgstr "Document" -#: models.py:3777 templates/ishtar/sheet_person.html:113 +#: models.py:3794 templates/ishtar/sheet_person.html:113 msgid "Documents" msgstr "Documents" -#: models.py:3781 +#: models.py:3798 msgid "Can view all Documents" msgstr "Peut voir tous les Documents" -#: models.py:3783 +#: models.py:3800 msgid "Can view own Document" msgstr "Peut voir ses propres Documents" -#: models.py:3785 +#: models.py:3802 msgid "Can add own Document" msgstr "Peut ajouter son propre Document" -#: models.py:3787 +#: models.py:3804 msgid "Can change own Document" msgstr "Peut modifier ses propres documents" -#: models.py:3789 +#: models.py:3806 msgid "Can delete own Document" msgstr "Peut supprimer ses propres Documents" -#: models.py:4000 +#: models.py:4017 msgid "Surface (m2)" msgstr "Surface (m2)" -#: models.py:4001 +#: models.py:4018 msgid "Localisation" msgstr "Localisation" -#: models.py:4009 +#: models.py:4026 msgid "Year of creation" msgstr "Année de création" -#: models.py:4010 +#: models.py:4027 msgid "" "Filling this field is relevant to distinguish old towns from new towns." msgstr "" "Remplir ce champ est nécessaire pour distinguer les anciennes communes des " "nouvelles communes." -#: models.py:4142 +#: models.py:4159 msgid "Only four level of parent are managed." msgstr "Seulement quatre niveaux de parents sont gérés." -#: models.py:4147 +#: models.py:4164 msgid "Area" msgstr "Zone" -#: models.py:4166 +#: models.py:4183 msgid "Is preventive" msgstr "Est du préventif" -#: models.py:4167 +#: models.py:4184 msgid "Is judiciary" msgstr "Est judiciaire" -#: models.py:4170 models_imports.py:636 +#: models.py:4187 models_imports.py:636 msgid "Operation type" msgstr "Type d'opération" -#: models.py:4171 +#: models.py:4188 msgid "Operation types" msgstr "Types d'opération" -#: models.py:4210 +#: models.py:4227 msgid "Judiciary" msgstr "Judiciaire" -#: models.py:4212 +#: models.py:4229 msgid "Preventive" msgstr "Préventif" -#: models.py:4214 +#: models.py:4231 msgid "Research" msgstr "Programmé" -#: models.py:4249 +#: models.py:4266 msgid "Authority name" msgstr "Registre" -#: models.py:4250 +#: models.py:4267 msgid "Authority SRID" msgstr "SRID" -#: models.py:4253 models_imports.py:668 +#: models.py:4270 models_imports.py:668 msgid "Spatial reference system" msgstr "Système de référence spatiale" -#: models.py:4254 +#: models.py:4271 msgid "Spatial reference systems" msgstr "Systèmes de référence spatiale" -#: models.py:4261 +#: models.py:4280 msgid "Filename" msgstr "Nom de fichier" -#: models.py:4266 +#: models.py:4285 msgid "Administration script" msgstr "Script d'administration" -#: models.py:4267 +#: models.py:4286 msgid "Administration scripts" msgstr "Scripts d'administration" -#: models.py:4274 +#: models.py:4293 msgid "Scheduled" msgstr "Planifié" -#: models.py:4275 +#: models.py:4294 msgid "In progress" msgstr "En cours" -#: models.py:4276 models_imports.py:792 +#: models.py:4295 models_imports.py:792 msgid "Finished with errors" msgstr "Terminé avec des erreurs" -#: models.py:4277 models_imports.py:793 +#: models.py:4296 models_imports.py:793 msgid "Finished" msgstr "Terminé" -#: models.py:4290 +#: models.py:4309 msgid "Result" msgstr "Résultat" -#: models.py:4293 +#: models.py:4312 msgid "Administration task" msgstr "Tâche d'administration" -#: models.py:4294 +#: models.py:4313 msgid "Administration tasks" msgstr "Tâches d'administration" -#: models.py:4298 +#: models.py:4317 msgid "Unknown" msgstr "Inconnu" -#: models.py:4313 +#: models.py:4332 msgid "" "ISHTAR_SCRIPT_DIR is not set in your local_settings. Contact your " "administrator." @@ -2068,7 +2068,7 @@ msgstr "" "ISHTAR_SCRIPT_DIR n'est pas défini dans votre fichier local_settings. " "Contactez l'administrateur." -#: models.py:4322 +#: models.py:4341 msgid "" "Your ISHTAR_SCRIPT_DIR is containing dots \"..\". As it can refer to " "relative paths, it can be a security issue and this is not allowed. Only put " @@ -2079,11 +2079,11 @@ msgstr "" "problème de sécurité et cela n'est pas permis. Seul un chemin complet est " "permis." -#: models.py:4333 +#: models.py:4352 msgid "Your ISHTAR_SCRIPT_DIR: \"{}\" is not a valid directory." msgstr "ISHTAR_SCRIPT_DIR: « {} » n'est pas un répertoire valable." -#: models.py:4349 +#: models.py:4368 msgid "" "Script \"{}\" is not available in your script directory. Check your " "configuration." @@ -2679,49 +2679,53 @@ msgid " items added." msgstr "Éléments ajoutés." #: templates/base.html:47 +msgid "Select only one item." +msgstr "Sélectionnez seulement un seul élément." + +#: templates/base.html:48 msgid "yes" msgstr "oui" -#: templates/base.html:48 +#: templates/base.html:49 msgid "no" msgstr "non" -#: templates/base.html:49 +#: templates/base.html:50 msgid "Autorefresh start. The form is disabled." msgstr "Rafraîchissement automatique activé. Le formulaire est désactivé." -#: templates/base.html:50 +#: templates/base.html:51 msgid "Autorefresh end. The form is re-enabled." msgstr "Rafraîchissement automatique désactivé. Le formulaire est ré-activé." -#: templates/base.html:81 +#: templates/base.html:82 msgid "Current items" msgstr "Éléments courants" -#: templates/base.html:83 templates/ishtar/forms/qa_base.html:34 +#: templates/base.html:84 templates/ishtar/forms/qa_base.html:34 #: templates/ishtar/forms/qa_form.html:21 templates/ishtar/manage_basket.html:4 #: templates/welcome.html:11 templates/welcome.html:12 #: templates/welcome.html:13 templates/welcome.html:14 wizards.py:423 msgid ":" msgstr " :" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Sheets" msgstr "Fiches" -#: templates/base.html:146 +#: templates/base.html:158 msgid "Processing..." msgstr "En traitement..." -#: templates/base.html:148 +#: templates/base.html:160 msgid "This can be long." msgstr "Cela peut être long." -#: templates/base.html:150 +#: templates/base.html:162 msgid "Time to take a coffee?" msgstr "Il est peut-être temps de prendre un café ?" -#: templates/base.html:152 +#: templates/base.html:164 msgid "Time to take another coffee?" msgstr "Pourquoi pas un autre café ?" @@ -2937,6 +2941,10 @@ msgstr "ID interne" msgid "Data" msgstr "Données" +#: templates/ishtar/blocks/sheet_json.html:9 +msgid "No data" +msgstr "Pas de données" + #: templates/ishtar/blocks/window_image_detail.html:64 msgid "Licenses" msgstr "Licences" @@ -3779,11 +3787,11 @@ msgstr "Marque-pages" msgid "No" msgstr "Non" -#: templatetags/window_tables.py:88 widgets.py:1065 +#: templatetags/window_tables.py:88 widgets.py:1064 msgid "No results" msgstr "Pas de résultats" -#: templatetags/window_tables.py:89 widgets.py:1066 +#: templatetags/window_tables.py:89 widgets.py:1065 msgid "Loading..." msgstr "Chargement..." @@ -3792,15 +3800,15 @@ msgid "You don't have sufficient permissions to do this action." msgstr "" "Vous n'avez pas les permissions suffisantes pour effectuer cette action." -#: utils.py:338 +#: utils.py:344 msgid " (...)" msgstr " (...)" -#: utils.py:418 +#: utils.py:424 msgid "Information" msgstr "Information" -#: utils.py:419 +#: utils.py:425 msgid "Load another random image?" msgstr "Charger une autre image au hasard ?" @@ -3970,7 +3978,7 @@ msgstr "Recherche..." msgid "Previous value:" msgstr "Valeur précédente :" -#: widgets.py:1067 +#: widgets.py:1066 msgid "Remove" msgstr "Enlever" -- cgit v1.2.3 From 71f84bfa3da9db01215cc61318d6a1e3f8536c28 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 21 Nov 2018 12:25:35 +0100 Subject: Fix imports logic --- .../migrations/0041_auto_20181121_1225.py | 24 ++++++++++++++++++++++ archaeological_finds/models_finds.py | 4 ++++ archaeological_finds/models_treatments.py | 3 --- 3 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 archaeological_finds/migrations/0041_auto_20181121_1225.py diff --git a/archaeological_finds/migrations/0041_auto_20181121_1225.py b/archaeological_finds/migrations/0041_auto_20181121_1225.py new file mode 100644 index 000000000..248dc6499 --- /dev/null +++ b/archaeological_finds/migrations/0041_auto_20181121_1225.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-11-21 12:25 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_finds', '0040_auto_20181120_1027'), + ] + + operations = [ + migrations.RemoveField( + model_name='treatment', + name='finds', + ), + migrations.AddField( + model_name='find', + name='treatments', + field=models.ManyToManyField(blank=True, help_text='Related treatments when no new find is created', related_name='finds', to='archaeological_finds.Treatment', verbose_name='Treatments'), + ), + ] diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index c7bd3f64e..a3aaae50d 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -1097,6 +1097,10 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms, documents = models.ManyToManyField( Document, related_name='finds', verbose_name=_(u"Documents"), blank=True) + treatments = models.ManyToManyField( + "Treatment", verbose_name=_(u"Treatments"), + related_name='finds', blank=True, + help_text=_(u"Related treatments when no new find is created")) cached_label = models.TextField(_(u"Cached name"), null=True, blank=True, db_index=True) history = HistoricalRecords() diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index b1ad5fa41..48da7c8ec 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -152,9 +152,6 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, start_date = models.DateField(_(u"Start date"), blank=True, null=True) end_date = models.DateField(_(u"Closing date"), blank=True, null=True) creation_date = models.DateTimeField(default=datetime.datetime.now) - finds = models.ManyToManyField( - "Find", verbose_name=_(u"Finds"), related_name='treatments', blank=True, - help_text=_(u"Related finds for non-destructive treatment")) container = models.ForeignKey(Container, verbose_name=_(u"Container"), blank=True, null=True) estimated_cost = models.FloatField(_(u"Estimated cost"), -- cgit v1.2.3 From 50c110423360b4fe5b44409ebeb26721e929623a Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 22 Nov 2018 12:52:11 +0100 Subject: Fix packaging creation and treatment tests --- archaeological_finds/models_treatments.py | 6 +++++- archaeological_finds/tests.py | 28 +++++++++++++++++++++------- archaeological_warehouse/urls.py | 3 ++- archaeological_warehouse/wizards.py | 2 ++ 4 files changed, 30 insertions(+), 9 deletions(-) diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index 48da7c8ec..bc5eace58 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -470,7 +470,11 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, # manage containers if not self.container: return - for find in Find.objects.filter(upstream_treatment=self).all(): + if create_new_find: + q = Find.objects.filter(upstream_treatment=self) + else: + q = Find.objects.filter(treatments=self) + for find in q.all(): if find.container != self.container: find.container = self.container if find.pk in updated: diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py index a55e075b7..b5ec5de83 100644 --- a/archaeological_finds/tests.py +++ b/archaeological_finds/tests.py @@ -258,9 +258,10 @@ class TreatmentWizardCreationTest(WizardTest, FindInit, TestCase): treat = models.Treatment.objects.order_by('-pk').all()[0] self.find = models.Find.objects.get(pk=self.find.pk) self.assertEqual(models.Find.objects.filter( - upstream_treatment=treat).count(), 1) - self.assertEqual(self.find.downstream_treatment, - treat) + treatments=treat).count(), 1) + # TODO: test treatment with new find creation + # self.assertEqual(self.find.downstream_treatment, + # treat) class ImportFindTest(ImportTest, TestCase): @@ -832,18 +833,26 @@ class PackagingTest(FindInit, TestCase): self.basket.items.add(find) self.other_basket.items.add(find) - def testPackaging(self): + def test_packaging_with_new_find_creation(self): treatment_type = models.TreatmentType.objects.get(txt_idx='packaging') + # make packaging a treatment with a new version of the find created + treatment_type.create_new_find = True + treatment_type.save() + treatment = models.Treatment() items_nb = models.Find.objects.count() first_find = self.finds[0] - treatment.save(user=self.get_default_user(), items=self.basket) + treatment.save(user=self.get_default_user(), items=self.basket, + treatment_type_list=[treatment_type]) + treatment.treatment_types.add(treatment_type) + + + self.assertEqual(items_nb + self.basket.items.count(), models.Find.objects.count(), msg="Packaging doesn't generate enough new finds") - treatment.treatment_types.add(treatment_type) resulting_find = models.Find.objects.get( upstream_treatment__upstream=first_find, @@ -869,10 +878,15 @@ class PackagingTest(FindInit, TestCase): def test_delete(self): # manage treatment deletion treatment_type = models.TreatmentType.objects.get(txt_idx='packaging') + # make packaging a treatment with a new version of the find created + treatment_type.create_new_find = True + treatment_type.save() + treatment = models.Treatment() initial_find = self.finds[0] - treatment.save(user=self.get_default_user(), items=self.basket) + treatment.save(user=self.get_default_user(), items=self.basket, + treatment_type_list=[treatment_type]) treatment.treatment_types.add(treatment_type) resulting_find = models.Find.objects.get( diff --git a/archaeological_warehouse/urls.py b/archaeological_warehouse/urls.py index fa895b7c4..947129c82 100644 --- a/archaeological_warehouse/urls.py +++ b/archaeological_warehouse/urls.py @@ -29,7 +29,8 @@ from archaeological_warehouse import models # forms urlpatterns = [ url(r'warehouse_packaging/(?P.+)?$', - views.warehouse_packaging_wizard, name='warehouse_packaging'), + check_rights(['change_find', 'change_own_find'])( + views.warehouse_packaging_wizard), name='warehouse_packaging'), url(r'new-warehouse/(?P.+)?/$', views.new_warehouse, name='new-warehouse'), diff --git a/archaeological_warehouse/wizards.py b/archaeological_warehouse/wizards.py index a0d46e892..03258f1e2 100644 --- a/archaeological_warehouse/wizards.py +++ b/archaeological_warehouse/wizards.py @@ -60,6 +60,8 @@ class PackagingWizard(TreatmentWizard): items = dct.pop('basket') else: dct.pop('basket') + if 'treatment_type_list' in dct: + dct.pop('treatment_type_list') treatment = Treatment(**dct) extra_args_for_new = {"container": dct['container']} treatment.save(items=items, user=self.request.user, -- cgit v1.2.3 From 2368d17bed1813b958b97f173426ed35acdf1afc Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 22 Nov 2018 22:39:27 +0100 Subject: Sheet: fix treatment file edit --- archaeological_finds/ishtar_menu.py | 16 +++--- archaeological_finds/models_treatments.py | 16 ++---- fixtures/initial_data-auth-fr.json | 65 ++++++---------------- .../0076_migrate_treatmentfile_permissions.py | 34 +++++++++++ 4 files changed, 63 insertions(+), 68 deletions(-) create mode 100644 ishtar_common/migrations/0076_migrate_treatmentfile_permissions.py diff --git a/archaeological_finds/ishtar_menu.py b/archaeological_finds/ishtar_menu.py index 2f37f4c4b..cf903e2f5 100644 --- a/archaeological_finds/ishtar_menu.py +++ b/archaeological_finds/ishtar_menu.py @@ -99,23 +99,23 @@ MENU_SECTIONS = [ MenuItem('treatmentfle_search', _(u"Search"), model=models.TreatmentFile, - access_controls=['view_filetreatment', - 'view_own_filetreatment']), + access_controls=['view_treatmentfile', + 'view_own_treatmentfile']), MenuItem('treatmentfle_creation', _(u"Creation"), model=models.TreatmentFile, - access_controls=['change_filetreatment', - 'change_own_filetreatment']), + access_controls=['change_treatmentfile', + 'change_own_treatmentfile']), MenuItem('treatmentfle_modification', _(u"Modification"), model=models.TreatmentFile, - access_controls=['change_filetreatment', - 'change_own_filetreatment']), + access_controls=['change_treatmentfile', + 'change_own_treatmentfile']), MenuItem('treatmentfle_deletion', _(u"Deletion"), model=models.TreatmentFile, - access_controls=['change_filetreatment', - 'change_own_filetreatment']), + access_controls=['change_treatmentfile', + 'change_own_treatmentfile']), SectionItem( 'admin_act_fletreatments', _(u"Administrative act"), childs=[ diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index bc5eace58..a902741a3 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -782,21 +782,15 @@ class TreatmentFile(DashboardFormItem, ClosedItem, BaseHistorizedItem, verbose_name_plural = _(u"Treatment requests") unique_together = ('year', 'index') permissions = ( - ("view_filetreatment", + ("view_treatmentfile", u"Can view all Treatment requests"), - ("add_filetreatment", - u"Can add Treatment request"), - ("change_filetreatment", - u"Can change Treatment request"), - ("delete_filetreatment", - u"Can delete Treatment request"), - ("view_own_filetreatment", + ("view_own_treatmentfile", u"Can view own Treatment request"), - ("add_own_filetreatment", + ("add_own_treatmentfile", u"Can add own Treatment request"), - ("change_own_filetreatment", + ("change_own_treatmentfile", u"Can change own Treatment request"), - ("delete_own_filetreatment", + ("delete_own_treatmentfile", u"Can delete own Treatment request"), ) ordering = ('cached_label',) diff --git a/fixtures/initial_data-auth-fr.json b/fixtures/initial_data-auth-fr.json index feecf1e8a..64fbd8051 100644 --- a/fixtures/initial_data-auth-fr.json +++ b/fixtures/initial_data-auth-fr.json @@ -3849,39 +3849,6 @@ "codename": "delete_historicaltreatmentfile" } }, -{ - "model": "auth.permission", - "fields": { - "name": "Can add Treatment file", - "content_type": [ - "archaeological_finds", - "treatmentfile" - ], - "codename": "add_treatmentfile" - } -}, -{ - "model": "auth.permission", - "fields": { - "name": "Can change Treatment file", - "content_type": [ - "archaeological_finds", - "treatmentfile" - ], - "codename": "change_treatmentfile" - } -}, -{ - "model": "auth.permission", - "fields": { - "name": "Can delete Treatment file", - "content_type": [ - "archaeological_finds", - "treatmentfile" - ], - "codename": "delete_treatmentfile" - } -}, { "model": "auth.permission", "fields": { @@ -4121,7 +4088,7 @@ "archaeological_finds", "treatmentfile" ], - "codename": "view_filetreatment" + "codename": "view_treatmentfile" } }, { @@ -4132,7 +4099,7 @@ "archaeological_finds", "treatmentfile" ], - "codename": "view_own_filetreatment" + "codename": "view_own_treatmentfile" } }, { @@ -4143,7 +4110,7 @@ "archaeological_finds", "treatmentfile" ], - "codename": "add_own_filetreatment" + "codename": "add_own_treatmentfile" } }, { @@ -4154,7 +4121,7 @@ "archaeological_finds", "treatmentfile" ], - "codename": "change_own_filetreatment" + "codename": "change_own_treatmentfile" } }, { @@ -4165,7 +4132,7 @@ "archaeological_finds", "treatmentfile" ], - "codename": "delete_own_filetreatment" + "codename": "delete_own_treatmentfile" } }, { @@ -4308,7 +4275,7 @@ "archaeological_finds", "treatmentfile" ], - "codename": "add_filetreatment" + "codename": "add_treatmentfile" } }, { @@ -4319,7 +4286,7 @@ "archaeological_finds", "treatmentfile" ], - "codename": "change_filetreatment" + "codename": "change_treatmentfile" } }, { @@ -4330,7 +4297,7 @@ "archaeological_finds", "treatmentfile" ], - "codename": "delete_filetreatment" + "codename": "delete_treatmentfile" } }, { @@ -5935,7 +5902,7 @@ "name": "Demandes de traitement : ajout", "permissions": [ [ - "add_filetreatment", + "add_treatmentfile", "archaeological_finds", "treatmentfile" ] @@ -5948,12 +5915,12 @@ "name": "Demandes de traitement : modification/suppression", "permissions": [ [ - "change_filetreatment", + "change_treatmentfile", "archaeological_finds", "treatmentfile" ], [ - "delete_filetreatment", + "delete_treatmentfile", "archaeological_finds", "treatmentfile" ] @@ -5966,7 +5933,7 @@ "name": "Demandes de traitement : lecture", "permissions": [ [ - "view_filetreatment", + "view_treatmentfile", "archaeological_finds", "treatmentfile" ] @@ -5979,7 +5946,7 @@ "name": "Demandes de traitement rattach\u00e9es : ajout", "permissions": [ [ - "add_own_filetreatment", + "add_own_treatmentfile", "archaeological_finds", "treatmentfile" ] @@ -5992,7 +5959,7 @@ "name": "Demandes de traitement rattach\u00e9es : lecture", "permissions": [ [ - "view_own_filetreatment", + "view_own_treatmentfile", "archaeological_finds", "treatmentfile" ] @@ -6005,12 +5972,12 @@ "name": "Demandes de traitement rattach\u00e9es : modification/suppression", "permissions": [ [ - "change_own_filetreatment", + "change_own_treatmentfile", "archaeological_finds", "treatmentfile" ], [ - "delete_own_filetreatment", + "delete_own_treatmentfile", "archaeological_finds", "treatmentfile" ] diff --git a/ishtar_common/migrations/0076_migrate_treatmentfile_permissions.py b/ishtar_common/migrations/0076_migrate_treatmentfile_permissions.py new file mode 100644 index 000000000..0defa4efe --- /dev/null +++ b/ishtar_common/migrations/0076_migrate_treatmentfile_permissions.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-11-22 22:17 +from __future__ import unicode_literals + +from django.db import migrations + + +def migrate_perm(apps, schema_editor): + Permission = apps.get_model('auth', 'Permission') + Group = apps.get_model('auth', 'Group') + for perm in Permission.objects.filter( + codename__icontains='filetreatment').exclude( + codename__icontains='source').all(): + new_codename = perm.codename.replace('filetreatment', 'treatmentfile') + q = Permission.objects.filter( + codename=new_codename).exclude(pk=perm.pk) + if q.count(): + for gp in Group.objects.filter(permissions=q.all()[0]): + gp.permissions.add(perm) + q.all()[0].delete() + print(new_codename) + perm.codename = new_codename + perm.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('ishtar_common', '0075_auto_20181108_1908'), + ] + + operations = [ + migrations.RunPython(migrate_perm) + ] -- cgit v1.2.3 From 49d001f7620ad4bf6ca8a12cfc2d55109d3f6358 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 22 Nov 2018 22:51:32 +0100 Subject: Fix modify link on site sheet (refs #4328) --- archaeological_operations/models.py | 1 + ishtar_common/templatetags/window_header.py | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index 872d2bf4e..8d2c4e376 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -108,6 +108,7 @@ class ArchaeologicalSite(BaseHistorizedItem, OwnPerms, ValueGetter, SHOW_URL = 'show-site' TABLE_COLS = ['reference', 'name', 'towns_label', 'periods', 'remains'] SLUG = 'site' + LONG_SLUG = 'archaeologicalsite' BASE_SEARCH_VECTORS = [ "comment", diff --git a/ishtar_common/templatetags/window_header.py b/ishtar_common/templatetags/window_header.py index 18dc793bf..f6fc27082 100644 --- a/ishtar_common/templatetags/window_header.py +++ b/ishtar_common/templatetags/window_header.py @@ -10,8 +10,14 @@ def window_nav(context, item, window_id, show_url, modify_url='', histo_url='', extra_actions = [] if hasattr(item, 'get_extra_actions'): extra_actions = item.get_extra_actions(context['request']) - if modify_url and hasattr(item, 'can_do') and hasattr(item, 'SLUG') and \ - not item.can_do(context['request'], 'change_' + item.SLUG): + + slug = None + if hasattr(item, "LONG_SLUG"): + slug = item.LONG_SLUG + elif hasattr(item, "SLUG"): + slug = item.SLUG + if modify_url and hasattr(item, 'can_do') and slug and \ + not item.can_do(context['request'], 'change_' + slug): modify_url = "" return { 'show_url': show_url, -- cgit v1.2.3 From bba3881e7f11a27ff9d2f08f92542a2d24cac7c6 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 26 Nov 2018 20:52:00 +0100 Subject: Sheet treatment: fix document list - improve display with tabs --- .../templates/ishtar/sheet_treatment.html | 176 +++++++++++++-------- .../0076_migrate_treatmentfile_permissions.py | 1 - 2 files changed, 113 insertions(+), 64 deletions(-) diff --git a/archaeological_finds/templates/ishtar/sheet_treatment.html b/archaeological_finds/templates/ishtar/sheet_treatment.html index 94569b5f6..ced305798 100644 --- a/archaeological_finds/templates/ishtar/sheet_treatment.html +++ b/archaeological_finds/templates/ishtar/sheet_treatment.html @@ -9,78 +9,128 @@ {% block content %} -
-
-
- {% include "ishtar/blocks/window_image.html" %} -
-

-

{{ item.label|default:"" }}

- {% if item.other_reference %} -

{{ item.other_reference }}

{% endif %} -

{{ item.year }} - {{ item.index }}

- {% if item.external_id %} -

{{ item.external_id }}

{% endif %} - {% if item.end_date %} -

{% trans "Closed" context "Treatment" %} ({{item.end_date}})

- {% else %} -

{% trans "Active" context "Treatment" %}

- {% endif %} -

+ + +
+
+
+
+
+ {% include "ishtar/blocks/window_image.html" %} +
+

+

{{ item.label|default:"" }}

+ {% if item.other_reference %} +

{{ item.other_reference }}

{% endif %} +

{{ item.year }} - {{ item.index }}

+ {% if item.external_id %} +

{{ item.external_id }}

{% endif %} + {% if item.end_date %} +

{% trans "Closed" context "Treatment" %} ({{item.end_date}})

+ {% else %} +

{% trans "Active" context "Treatment" %}

+ {% endif %} +

+
+
+ +
+ {% field_flex_multiple "Treatment type" item.treatment_types %} + {% field_flex "State" item.treatment_state %} + {% field_flex_detail "Associated request" item.file %} + {% field_flex "Location" item.location %} + {% field_flex "Container" item.container %} + {% field_flex "Responsible" item.person %} + {% field_flex "Organization" item.organization %} + {% field_flex "Start date" item.start_date %} + {% field_flex "Closing date" item.end_date %} + {% field_flex "Estimated cost" item.estimated_cost|intcomma '' " "|add:CURRENCY %} + {% field_flex "Quoted cost" item.quoted_cost|intcomma '' " "|add:CURRENCY %} + {% field_flex "Realized cost" item.realized_cost|intcomma '' " "|add:CURRENCY %} + {% field_flex "Insurance cost" item.insurance_cost|intcomma '' " "|add:CURRENCY %} + {% field_flex_full "Comment" item.comment "
" "
" %} + {% field_flex_full "Description" item.description "
" "
" %} + {% field_flex_full "Goal" item.goal "
" "
" %} + + {% include "ishtar/blocks/sheet_json.html" %} +
-
-
- {% field_flex_multiple "Treatment type" item.treatment_types %} - {% field_flex "State" item.treatment_state %} - {% field_flex_detail "Associated request" item.file %} - {% field_flex "Location" item.location %} - {% field_flex "Container" item.container %} - {% field_flex "Responsible" item.person %} - {% field_flex "Organization" item.organization %} - {% field_flex "Start date" item.start_date %} - {% field_flex "Closing date" item.end_date %} - {% field_flex "Estimated cost" item.estimated_cost|intcomma '' " "|add:CURRENCY %} - {% field_flex "Quoted cost" item.quoted_cost|intcomma '' " "|add:CURRENCY %} - {% field_flex "Realized cost" item.realized_cost|intcomma '' " "|add:CURRENCY %} - {% field_flex "Insurance cost" item.insurance_cost|intcomma '' " "|add:CURRENCY %} - {% field_flex_full "Comment" item.comment "
" "
" %} - {% field_flex_full "Description" item.description "
" "
" %} - {% field_flex_full "Goal" item.goal "
" "
" %} - - {% include "ishtar/blocks/sheet_json.html" %} -
+
+ {% trans "Related finds" as finds %} + {% if item.finds.count %} + {% dynamic_table_document finds 'finds_for_treatment' 'treatments' item.pk 'TABLE_COLS_FOR_OPE' output %} + {% endif %} -{% trans "Related finds" as finds %} -{% if item.finds.count %} -{% dynamic_table_document finds 'finds_for_treatment' 'treatments' item.pk 'TABLE_COLS_FOR_OPE' output %} -{% endif %} + {% trans "Upstream finds" as finds %} + {% if item.upstream.count %} + {% dynamic_table_document finds 'finds_for_treatment' 'downstream_treatment' item.pk 'TABLE_COLS_FOR_OPE' output %} + {% endif %} -{% trans "Upstream finds" as finds %} -{% if item.upstream.count %} -{% dynamic_table_document finds 'finds_for_treatment' 'downstream_treatment' item.pk 'TABLE_COLS_FOR_OPE' output %} -{% endif %} + {% trans "Downstream finds" as finds %} + {% if item.downstream.count %} + {% dynamic_table_document finds 'finds_for_treatment' 'upstream_treatment' item.pk 'TABLE_COLS_FOR_OPE' output %} + {% endif %} -{% trans "Downstream finds" as finds %} -{% if item.downstream.count %} -{% dynamic_table_document finds 'finds_for_treatment' 'upstream_treatment' item.pk 'TABLE_COLS_FOR_OPE' output %} -{% endif %} + {% trans "Related operations" as related_operations %} + {% dynamic_table_document related_operations 'operations' 'related_treatment' item.pk 'TABLE_COLS' output %} -{% trans "Related operations" as related_operations %} -{% dynamic_table_document related_operations 'operations' 'related_treatment' item.pk 'TABLE_COLS' output %} -{% comment %} -{% if item.source.count %} -{% trans "Associated documents" as associated_docs %} -{% dynamic_table_document associated_docs 'treatments_docs' 'treatment' item.pk '' output %} -{% endif %} -{% endcomment %} +
+ + {% if item.documents.count %} +
+ {% trans "Associated documents" as treat_docs %} + {% dynamic_table_document treat_docs 'documents' 'treatments' item.pk '' output %} +
+ {% endif %} + + {% if item.administrative_act.count %} +
+ {% trans "Administrative acts" as admact_lbl %} + {% table_administrativact admact_lbl item.administrative_act.all %} +
+ {% endif %} -{% if item.administrative_act.count %} -{% trans "Administrative acts" as admact_lbl %} -{% table_administrativact admact_lbl item.administrative_act.all %} -{% endif %} +
{% endblock %} diff --git a/ishtar_common/migrations/0076_migrate_treatmentfile_permissions.py b/ishtar_common/migrations/0076_migrate_treatmentfile_permissions.py index 0defa4efe..4edef4a44 100644 --- a/ishtar_common/migrations/0076_migrate_treatmentfile_permissions.py +++ b/ishtar_common/migrations/0076_migrate_treatmentfile_permissions.py @@ -18,7 +18,6 @@ def migrate_perm(apps, schema_editor): for gp in Group.objects.filter(permissions=q.all()[0]): gp.permissions.add(perm) q.all()[0].delete() - print(new_codename) perm.codename = new_codename perm.save() -- cgit v1.2.3 From 9020e74bb8b8d49ae739a3215eeaf7861ab85bd4 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Tue, 27 Nov 2018 12:21:50 +0100 Subject: Commands: import management fix --- ishtar_common/management/commands/ishtar_import.py | 37 ++++++++++++++++------ 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/ishtar_common/management/commands/ishtar_import.py b/ishtar_common/management/commands/ishtar_import.py index aba1e45d5..3b04528f0 100644 --- a/ishtar_common/management/commands/ishtar_import.py +++ b/ishtar_common/management/commands/ishtar_import.py @@ -3,22 +3,41 @@ from django.core.management.base import BaseCommand, CommandError -from ishtar_common import models +from ishtar_common import models, models_imports class Command(BaseCommand): help = "./manage.py ishtar_import \n\n"\ "Launch the importation a configured import.\n"\ - " must be: \"analyse\", \"import\" or \"archive\"." + " must be: \"list\", \"analyse\", \"import\" or " \ + "\"archive\"." + + def add_arguments(self, parser): + parser.add_argument('command', choices=["list", "analyse", "import", + "archive"]) + parser.add_argument('import_id', nargs='?', default=None) def handle(self, *args, **options): - if not args or len(args) < 2: - raise CommandError(" and are mandatory") - command = args[0] - if args[0] not in ["analyse", "import", "archive"]: - raise CommandError( - " must be: \"analyse\", \"import\" or \"archive\"." - ) + command = options['command'] + import_id = options['import_id'] + if command != "list" and not import_id: + raise CommandError("With {} is mandatory".format( + command)) + if command == 'list': + state = dict(models_imports.IMPORT_STATE) + self.stdout.write("*" * 80 + "\n") + self.stdout.write( + "| pk | type | state " + "| name\n") + self.stdout.write("*" * 80 + "\n") + for imp in models.Import.objects.exclude(state="AC").all(): + self.stdout.write(u"|{: ^6}| {: ^32} | {: ^12} | {}\n".format( + imp.pk, unicode(imp.importer_type)[:32], + state[imp.state][:12], + imp.name[:128])) + self.stdout.write("*" * 80 + "\n") + self.stdout.flush() + return try: imp = models.Import.objects.get(pk=args[1]) except (ValueError, models.Import.DoesNotExist): -- cgit v1.2.3 From 264ee9454910afaa1506c23fea5ca113649b7b4c Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Tue, 27 Nov 2018 22:54:06 +0100 Subject: Menu: change label --- archaeological_finds/ishtar_menu.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/archaeological_finds/ishtar_menu.py b/archaeological_finds/ishtar_menu.py index cf903e2f5..38110edad 100644 --- a/archaeological_finds/ishtar_menu.py +++ b/archaeological_finds/ishtar_menu.py @@ -155,23 +155,17 @@ MENU_SECTIONS = [ 'view_own_treatment']), MenuItem( 'treatment_creation', - _(u"Treatment " - u"1 1 " - u"- creation"), + _(u"Simple treatment - creation"), model=models.Treatment, access_controls=['change_find', 'change_own_find']), MenuItem( 'treatment_creation_n1', - _(u"Treatment " - u"n 1 " - u"- creation"), + _(u"Treatment many to one - creation"), model=models.Treatment, access_controls=['change_find', 'change_own_find']), MenuItem( 'treatment_creation_1n', - _(u"Treatment " - u"1 n " - u"- creation"), + _(u"Treatment one to many - creation"), model=models.Treatment, access_controls=['change_find', 'change_own_find']), MenuItem('treatment_modification', -- cgit v1.2.3 From ca5a1d61a9a74705265d746c1fc5f48cb1844277 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Tue, 27 Nov 2018 23:04:05 +0100 Subject: Update translations --- archaeological_finds/locale/django.pot | 204 ++++++----- archaeological_operations/locale/django.pot | 494 +++++++++++++-------------- ishtar_common/locale/django.pot | 21 +- translations/de/ishtar_common.po | 19 +- translations/fr/archaeological_finds.po | 202 +++++------ translations/fr/archaeological_operations.po | 494 +++++++++++++-------------- translations/fr/ishtar_common.po | 19 +- 7 files changed, 724 insertions(+), 729 deletions(-) diff --git a/archaeological_finds/locale/django.pot b/archaeological_finds/locale/django.pot index 82d4bfd4c..d051e96a3 100644 --- a/archaeological_finds/locale/django.pot +++ b/archaeological_finds/locale/django.pot @@ -22,7 +22,7 @@ msgid "Multi polygon" msgstr "" #: forms.py:95 forms.py:101 forms.py:540 forms.py:553 forms.py:831 -#: models_finds.py:674 models_finds.py:1233 wizards.py:86 +#: models_finds.py:674 models_finds.py:1237 wizards.py:86 msgid "Context record" msgstr "" @@ -30,14 +30,13 @@ msgstr "" msgid "Find - 010 - Context record choice" msgstr "" -#: forms.py:133 forms.py:255 ishtar_menu.py:32 models_finds.py:1106 -#: models_finds.py:1739 models_treatments.py:511 +#: forms.py:133 forms.py:255 ishtar_menu.py:32 models_finds.py:1110 +#: models_finds.py:1743 models_treatments.py:512 #: templates/ishtar/sheet_find.html:4 msgid "Find" msgstr "" #: forms.py:134 -#| msgid "Find - 020 - General" msgid "Simple find - 020 - General" msgstr "" @@ -126,7 +125,7 @@ msgstr "" #: forms.py:195 forms.py:432 forms.py:584 forms.py:1177 forms_treatments.py:145 #: forms_treatments.py:606 models_finds.py:264 models_finds.py:1056 -#: models_treatments.py:149 models_treatments.py:771 +#: models_treatments.py:149 models_treatments.py:772 msgid "Comment" msgstr "" @@ -279,7 +278,6 @@ msgid "Resulting find" msgstr "" #: forms.py:383 -#| msgid "Treatment - 010 - Request choice" msgid "Treatment n-1 - 030 - Resulting find" msgstr "" @@ -288,12 +286,10 @@ msgid "Resulting finds" msgstr "" #: forms.py:478 -#| msgid "Treatment - 010 - Request choice" msgid "Treatment 1-n - 030 - Resulting finds" msgstr "" #: forms.py:483 -#| msgid "Resulting finds" msgid "Number of resulting finds" msgstr "" @@ -415,14 +411,14 @@ msgid "Dating" msgstr "" #: forms.py:766 forms_treatments.py:131 forms_treatments.py:398 -#: forms_treatments.py:608 models_finds.py:1744 models_treatments.py:152 -#: models_treatments.py:522 templates/ishtar/sheet_find.html:196 +#: forms_treatments.py:608 models_finds.py:1748 models_treatments.py:152 +#: models_treatments.py:523 templates/ishtar/sheet_find.html:196 #: templates/ishtar/sheet_find.html:254 templates/ishtar/sheet_find.html:291 #: templates/ishtar/sheet_find.html:329 msgid "Start date" msgstr "" -#: forms.py:768 models_finds.py:1745 models_treatments.py:523 +#: forms.py:768 models_finds.py:1749 models_treatments.py:524 #: templates/ishtar/sheet_find.html:197 templates/ishtar/sheet_find.html:255 #: templates/ishtar/sheet_find.html:292 templates/ishtar/sheet_find.html:330 msgid "End date" @@ -464,7 +460,7 @@ msgstr "" #: forms.py:804 forms_treatments.py:56 forms_treatments.py:102 #: forms_treatments.py:323 forms_treatments.py:451 forms_treatments.py:526 #: forms_treatments.py:578 forms_treatments.py:718 models_treatments.py:126 -#: models_treatments.py:744 +#: models_treatments.py:745 msgid "Year" msgstr "" @@ -536,13 +532,14 @@ msgstr "" msgid "Find search" msgstr "" -#: forms.py:969 forms.py:1114 models_treatments.py:271 -#: templates/ishtar/sheet_treatment.html:61 +#: forms.py:969 forms.py:1114 models_treatments.py:268 +#: templates/ishtar/sheet_treatment.html:102 msgid "Upstream finds" msgstr "" -#: forms.py:971 models_finds.py:1107 models_treatments.py:156 +#: forms.py:971 models_finds.py:1111 #: templates/ishtar/forms/qa_find_treatment.html:11 +#: templates/ishtar/sheet_treatment.html:24 msgid "Finds" msgstr "" @@ -587,13 +584,13 @@ msgstr "" #: forms_treatments.py:57 forms_treatments.py:260 forms_treatments.py:452 #: forms_treatments.py:514 forms_treatments.py:527 forms_treatments.py:631 #: forms_treatments.py:719 forms_treatments.py:786 models_treatments.py:127 -#: models_treatments.py:745 +#: models_treatments.py:746 msgid "Index" msgstr "" #: forms_treatments.py:58 forms_treatments.py:98 forms_treatments.py:406 #: forms_treatments.py:468 models_finds.py:111 models_treatments.py:132 -#: models_treatments.py:521 +#: models_treatments.py:522 msgid "Treatment type" msgstr "" @@ -601,8 +598,9 @@ msgstr "" msgid "Treatment search" msgstr "" -#: forms_treatments.py:83 ishtar_menu.py:147 models_treatments.py:178 -#: models_treatments.py:513 templates/ishtar/sheet_treatment.html:4 +#: forms_treatments.py:83 ishtar_menu.py:147 models_treatments.py:175 +#: models_treatments.py:514 templates/ishtar/sheet_treatment.html:4 +#: templates/ishtar/sheet_treatment.html:17 msgid "Treatment" msgstr "" @@ -616,7 +614,7 @@ msgstr "" msgid "State" msgstr "" -#: forms_treatments.py:107 models_treatments.py:137 models_treatments.py:524 +#: forms_treatments.py:107 models_treatments.py:137 models_treatments.py:525 msgid "Location" msgstr "" @@ -630,7 +628,7 @@ msgid "Organization" msgstr "" #: forms_treatments.py:133 forms_treatments.py:398 forms_treatments.py:614 -#: forms_treatments.py:667 models_treatments.py:153 models_treatments.py:765 +#: forms_treatments.py:667 models_treatments.py:153 models_treatments.py:766 msgid "Closing date" msgstr "" @@ -677,12 +675,10 @@ msgid "A responsible or an organization must be defined." msgstr "" #: forms_treatments.py:234 -#| msgid "Treatment - 020 - General" msgid "Treatment n-1 - 020 - General" msgstr "" #: forms_treatments.py:247 -#| msgid "Treatment - 020 - General" msgid "Treatment 1-n - 020 - General" msgstr "" @@ -699,7 +695,7 @@ msgid "Treatment - 010 - Request choice" msgstr "" #: forms_treatments.py:296 forms_treatments.py:569 ishtar_menu.py:95 -#: models_treatments.py:780 models_treatments.py:808 +#: models_treatments.py:781 models_treatments.py:803 #: templates/ishtar/sheet_treatmentfile.html:4 wizards.py:457 msgid "Treatment request" msgstr "" @@ -715,7 +711,7 @@ msgid "Would you like to delete this treatment?" msgstr "" #: forms_treatments.py:313 models_finds.py:697 models_finds.py:1017 -#: models_treatments.py:158 models_treatments.py:525 +#: models_treatments.py:155 models_treatments.py:526 #: templates/ishtar/sheet_find.html:253 templates/ishtar/sheet_find.html:290 #: templates/ishtar/sheet_find.html:328 msgid "Container" @@ -802,7 +798,7 @@ msgstr "" msgid "Treatment - Administrative act - General" msgstr "" -#: forms_treatments.py:524 forms_treatments.py:576 models_treatments.py:750 +#: forms_treatments.py:524 forms_treatments.py:576 models_treatments.py:751 msgid "Name" msgstr "" @@ -820,12 +816,12 @@ msgstr "" msgid "In charge" msgstr "" -#: forms_treatments.py:537 forms_treatments.py:595 models_treatments.py:759 +#: forms_treatments.py:537 forms_treatments.py:595 models_treatments.py:760 #: templates/ishtar/sheet_treatmentfile.html:45 msgid "Applicant" msgstr "" -#: forms_treatments.py:543 forms_treatments.py:601 models_treatments.py:763 +#: forms_treatments.py:543 forms_treatments.py:601 models_treatments.py:764 #: templates/ishtar/sheet_treatmentfile.html:53 msgid "Applicant organisation" msgstr "" @@ -838,7 +834,7 @@ msgstr "" msgid "External ref." msgstr "" -#: forms_treatments.py:612 forms_treatments.py:666 models_treatments.py:769 +#: forms_treatments.py:612 forms_treatments.py:666 models_treatments.py:770 msgid "Reception date" msgstr "" @@ -854,12 +850,12 @@ msgstr "" msgid "Would you like to delete this treatment request?" msgstr "" -#: forms_treatments.py:665 models_treatments.py:767 +#: forms_treatments.py:665 models_treatments.py:768 msgid "Creation date" msgstr "" -#: forms_treatments.py:675 forms_treatments.py:739 models_treatments.py:681 -#: models_treatments.py:752 +#: forms_treatments.py:675 forms_treatments.py:739 models_treatments.py:682 +#: models_treatments.py:753 msgid "Treatment request type" msgstr "" @@ -884,22 +880,22 @@ msgid "Treatment request - Administrative act - General" msgstr "" #: ishtar_menu.py:37 ishtar_menu.py:60 ishtar_menu.py:100 ishtar_menu.py:123 -#: ishtar_menu.py:152 ishtar_menu.py:191 +#: ishtar_menu.py:152 ishtar_menu.py:185 msgid "Search" msgstr "" #: ishtar_menu.py:42 ishtar_menu.py:65 ishtar_menu.py:105 ishtar_menu.py:127 -#: ishtar_menu.py:195 +#: ishtar_menu.py:189 msgid "Creation" msgstr "" #: ishtar_menu.py:47 ishtar_menu.py:70 ishtar_menu.py:110 ishtar_menu.py:131 -#: ishtar_menu.py:178 ishtar_menu.py:200 +#: ishtar_menu.py:172 ishtar_menu.py:194 msgid "Modification" msgstr "" #: ishtar_menu.py:52 ishtar_menu.py:82 ishtar_menu.py:115 ishtar_menu.py:134 -#: ishtar_menu.py:183 ishtar_menu.py:203 +#: ishtar_menu.py:177 ishtar_menu.py:197 msgid "Deletion" msgstr "" @@ -907,29 +903,29 @@ msgstr "" msgid "Manage items" msgstr "" -#: ishtar_menu.py:120 ishtar_menu.py:188 models_finds.py:1741 +#: ishtar_menu.py:120 ishtar_menu.py:182 models_finds.py:1745 msgid "Administrative act" msgstr "" -#: ishtar_menu.py:138 ishtar_menu.py:207 models_finds.py:1098 -#: models_treatments.py:171 models_treatments.py:773 -#: templates/ishtar/sheet_find.html:56 +#: ishtar_menu.py:138 ishtar_menu.py:201 models_finds.py:1098 +#: models_treatments.py:168 models_treatments.py:774 +#: templates/ishtar/sheet_find.html:56 templates/ishtar/sheet_treatment.html:32 msgid "Documents" msgstr "" #: ishtar_menu.py:158 -msgid "" -"Treatment 1 1 - creation" +#| msgid "New treatment request" +msgid "Simple treatment - creation" msgstr "" -#: ishtar_menu.py:165 -msgid "" -"Treatment n 1 - creation" +#: ishtar_menu.py:163 +#| msgid "Treatment modification" +msgid "Treatment many to one - creation" msgstr "" -#: ishtar_menu.py:172 -msgid "" -"Treatment 1 n - creation" +#: ishtar_menu.py:168 +#| msgid "Treatment request modification" +msgid "Treatment one to many - creation" msgstr "" #: models_finds.py:51 @@ -942,7 +938,7 @@ msgstr "" #: models_finds.py:66 models_finds.py:79 models_finds.py:92 models_finds.py:143 #: models_finds.py:166 models_finds.py:223 models_finds.py:984 -#: models_treatments.py:517 +#: models_treatments.py:518 msgid "Order" msgstr "" @@ -971,7 +967,6 @@ msgid "Destructive" msgstr "" #: models_finds.py:96 -#| msgid "Create a treatment" msgid "Create a new find" msgstr "" @@ -997,7 +992,7 @@ msgstr "" msgid "Check this if for this treatment from one find you'll get many." msgstr "" -#: models_finds.py:112 models_treatments.py:253 +#: models_finds.py:112 models_treatments.py:250 msgid "Treatment types" msgstr "" @@ -1074,7 +1069,7 @@ msgid "Checked types" msgstr "" #: models_finds.py:259 models_finds.py:977 models_treatments.py:147 -#: models_treatments.py:748 +#: models_treatments.py:749 msgid "External ID" msgstr "" @@ -1203,7 +1198,7 @@ msgctxt "key for text search" msgid "town" msgstr "" -#: models_finds.py:794 models_treatments.py:91 models_treatments.py:713 +#: models_finds.py:794 models_treatments.py:91 models_treatments.py:714 msgctxt "key for text search" msgid "year" msgstr "" @@ -1349,7 +1344,6 @@ msgid "modified-since" msgstr "" #: models_finds.py:913 -#| msgid "Create" msgctxt "key for text search" msgid "created-by" msgstr "" @@ -1358,7 +1352,7 @@ msgstr "" msgid "Bulk update" msgstr "" -#: models_finds.py:947 models_finds.py:1200 +#: models_finds.py:947 models_finds.py:1204 #: templates/ishtar/forms/qa_find_treatment.html:16 views.py:714 msgid "Packaging" msgstr "" @@ -1395,39 +1389,49 @@ msgstr "" msgid "Collection" msgstr "" -#: models_finds.py:1100 models_treatments.py:173 models_treatments.py:775 +#: models_finds.py:1101 models_treatments.py:176 +#: templates/ishtar/sheet_find.html:243 +#: templates/ishtar/sheet_treatmentfile.html:61 +msgid "Treatments" +msgstr "" + +#: models_finds.py:1103 +msgid "Related treatments when no new find is created" +msgstr "" + +#: models_finds.py:1104 models_treatments.py:170 models_treatments.py:776 msgid "Cached name" msgstr "" -#: models_finds.py:1122 +#: models_finds.py:1126 msgid "FIND" msgstr "" -#: models_finds.py:1194 +#: models_finds.py:1198 msgid "Add to basket" msgstr "" -#: models_finds.py:1242 wizards.py:85 wizards.py:469 +#: models_finds.py:1246 wizards.py:85 wizards.py:469 msgid "Operation" msgstr "" -#: models_finds.py:1566 +#: models_finds.py:1570 msgid "No container have been set - the localisation cannot be set." msgstr "" -#: models_finds.py:1572 +#: models_finds.py:1576 msgid "The division number {} have not been set for the warehouse {}." msgstr "" -#: models_finds.py:1742 +#: models_finds.py:1746 msgid "Person" msgstr "" -#: models_finds.py:1748 +#: models_finds.py:1752 msgid "Property" msgstr "" -#: models_finds.py:1749 +#: models_finds.py:1753 msgid "Properties" msgstr "" @@ -1457,12 +1461,12 @@ msgctxt "key for text search" msgid "other-reference" msgstr "" -#: models_treatments.py:95 models_treatments.py:717 +#: models_treatments.py:95 models_treatments.py:718 msgctxt "key for text search" msgid "index" msgstr "" -#: models_treatments.py:103 models_treatments.py:721 +#: models_treatments.py:103 models_treatments.py:722 msgctxt "key for text search" msgid "type" msgstr "" @@ -1472,94 +1476,85 @@ msgid "Location where the treatment is done. Target warehouse for a move." msgstr "" #: models_treatments.py:157 -msgid "Related finds for non-destructive treatment" -msgstr "" - -#: models_treatments.py:160 msgid "Estimated cost" msgstr "" -#: models_treatments.py:162 +#: models_treatments.py:159 msgid "Quoted cost" msgstr "" -#: models_treatments.py:164 +#: models_treatments.py:161 msgid "Realized cost" msgstr "" -#: models_treatments.py:166 +#: models_treatments.py:163 msgid "Insurance cost" msgstr "" -#: models_treatments.py:168 +#: models_treatments.py:165 msgid "Target a basket" msgstr "" -#: models_treatments.py:179 templates/ishtar/sheet_find.html:243 -#: templates/ishtar/sheet_treatmentfile.html:61 -msgid "Treatments" -msgstr "" - -#: models_treatments.py:199 +#: models_treatments.py:196 msgid "TREATMENT" msgstr "" -#: models_treatments.py:262 templates/ishtar/sheet_treatment.html:66 +#: models_treatments.py:259 templates/ishtar/sheet_treatment.html:107 msgid "Downstream finds" msgstr "" -#: models_treatments.py:526 templates/ishtar/sheet_find.html:252 +#: models_treatments.py:527 templates/ishtar/sheet_find.html:252 #: templates/ishtar/sheet_find.html:289 templates/ishtar/sheet_find.html:327 msgid "Doer" msgstr "" -#: models_treatments.py:527 models_treatments.py:528 -#: templates/ishtar/sheet_treatment.html:56 +#: models_treatments.py:528 models_treatments.py:529 +#: templates/ishtar/sheet_treatment.html:97 msgid "Related finds" msgstr "" -#: models_treatments.py:670 +#: models_treatments.py:671 msgid "Is upstream" msgstr "" -#: models_treatments.py:682 +#: models_treatments.py:683 msgid "Treatment request types" msgstr "" -#: models_treatments.py:705 +#: models_treatments.py:706 msgctxt "key for text search" msgid "name" msgstr "" -#: models_treatments.py:709 +#: models_treatments.py:710 msgctxt "key for text search" msgid "reference" msgstr "" -#: models_treatments.py:725 +#: models_treatments.py:726 msgctxt "key for text search" msgid "in-charge" msgstr "" -#: models_treatments.py:729 +#: models_treatments.py:730 msgctxt "key for text search" msgid "applicant" msgstr "" -#: models_treatments.py:733 +#: models_treatments.py:734 msgctxt "key for text search" msgid "applicant-organisation" msgstr "" -#: models_treatments.py:746 +#: models_treatments.py:747 msgid "Internal reference" msgstr "" -#: models_treatments.py:755 +#: models_treatments.py:756 msgid "Person in charge" msgstr "" -#: models_treatments.py:781 +#: models_treatments.py:782 msgid "Treatment requests" msgstr "" @@ -1624,7 +1619,6 @@ msgid "" msgstr "" #: templates/ishtar/sheet_find.html:23 -#| msgid "Base find" msgid "Image / Base find" msgstr "" @@ -1633,12 +1627,10 @@ msgid "Identification / Description / Dimensions" msgstr "" #: templates/ishtar/sheet_find.html:38 -#| msgid "Preservation" msgid "Datings / Preservation" msgstr "" #: templates/ishtar/sheet_find.html:47 -#| msgid "Base treatment" msgid "Warehouse / Treatments" msgstr "" @@ -1677,6 +1669,7 @@ msgid "CSV" msgstr "" #: templates/ishtar/sheet_find.html:360 +#: templates/ishtar/sheet_treatment.html:121 msgid "Associated documents" msgstr "" @@ -1684,25 +1677,26 @@ msgstr "" msgid "Content" msgstr "" -#: templates/ishtar/sheet_treatment.html:25 +#: templates/ishtar/sheet_treatment.html:41 +#: templates/ishtar/sheet_treatment.html:129 +#: templates/ishtar/sheet_treatmentfile.html:73 +msgid "Administrative acts" +msgstr "" + +#: templates/ishtar/sheet_treatment.html:63 msgctxt "Treatment" msgid "Closed" msgstr "" -#: templates/ishtar/sheet_treatment.html:27 +#: templates/ishtar/sheet_treatment.html:65 msgctxt "Treatment" msgid "Active" msgstr "" -#: templates/ishtar/sheet_treatment.html:71 +#: templates/ishtar/sheet_treatment.html:112 msgid "Related operations" msgstr "" -#: templates/ishtar/sheet_treatment.html:82 -#: templates/ishtar/sheet_treatmentfile.html:73 -msgid "Administrative acts" -msgstr "" - #: templates/ishtar/sheet_treatmentfile.html:24 msgctxt "Treatment request" msgid "Closed" diff --git a/archaeological_operations/locale/django.pot b/archaeological_operations/locale/django.pot index 83373847b..fea311997 100644 --- a/archaeological_operations/locale/django.pot +++ b/archaeological_operations/locale/django.pot @@ -9,21 +9,21 @@ msgid "" msgstr "" -#: admin.py:91 models.py:244 models.py:836 +#: admin.py:91 models.py:245 models.py:852 msgid "Point" msgstr "" -#: admin.py:93 models.py:245 models.py:837 +#: admin.py:93 models.py:246 models.py:853 msgid "Multi polygon" msgstr "" -#: forms.py:64 forms.py:1061 forms.py:1077 forms.py:1083 models.py:1931 +#: forms.py:64 forms.py:1061 forms.py:1077 forms.py:1083 models.py:1955 #: templates/ishtar/blocks/window_tables/parcels.html:9 -#: templates/ishtar/sheet_operation.html:250 +#: templates/ishtar/sheet_operation.html:254 msgid "Parcels" msgstr "" -#: forms.py:67 forms.py:200 forms.py:1036 models.py:1915 +#: forms.py:67 forms.py:200 forms.py:1036 models.py:1939 #: templates/ishtar/blocks/window_tables/parcels.html:6 #: templates/ishtar/dashboards/dashboard_operation.html:432 #: templates/ishtar/dashboards/dashboard_operation.html:446 @@ -32,22 +32,22 @@ msgstr "" msgid "Town" msgstr "" -#: forms.py:69 forms.py:480 forms.py:763 forms.py:1400 models.py:734 -#: models.py:1489 models.py:1696 models.py:1913 +#: forms.py:69 forms.py:480 forms.py:763 forms.py:1400 models.py:750 +#: models.py:1513 models.py:1720 models.py:1937 #: templates/ishtar/blocks/window_tables/parcels.html:7 msgid "Year" msgstr "" -#: forms.py:72 models.py:1916 +#: forms.py:72 models.py:1940 #: templates/ishtar/blocks/window_tables/parcels.html:8 msgid "Section" msgstr "" -#: forms.py:75 models.py:1918 +#: forms.py:75 models.py:1942 msgid "Parcel number" msgstr "" -#: forms.py:77 models.py:1920 models.py:1939 models.py:2000 +#: forms.py:77 models.py:1944 models.py:1963 models.py:2024 msgid "Public domain" msgstr "" @@ -83,8 +83,8 @@ msgstr "" msgid "Relation type" msgstr "" -#: forms.py:373 forms.py:1254 ishtar_menu.py:32 models.py:842 models.py:1394 -#: models.py:1405 models.py:1491 models.py:1678 models.py:1912 +#: forms.py:373 forms.py:1254 ishtar_menu.py:32 models.py:858 models.py:1418 +#: models.py:1429 models.py:1515 models.py:1702 models.py:1936 #: templates/ishtar/sheet_operation.html:4 wizards.py:320 wizards.py:331 msgid "Operation" msgstr "" @@ -125,15 +125,15 @@ msgstr "" msgid "Full text search" msgstr "" -#: forms.py:481 models.py:735 +#: forms.py:481 models.py:751 msgid "Numeric reference" msgstr "" -#: forms.py:488 forms.py:1064 forms.py:1412 models.py:1930 models.py:2142 +#: forms.py:488 forms.py:1064 forms.py:1412 models.py:1954 models.py:2166 msgid "Parcel" msgstr "" -#: forms.py:491 forms.py:1415 models.py:1395 +#: forms.py:491 forms.py:1415 models.py:1419 #: templates/ishtar/dashboards/dashboard_operation.html:390 #: templates/ishtar/dashboards/dashboard_operation.html:411 #: templates/ishtar/dashboards/dashboard_operation.html:643 @@ -142,17 +142,17 @@ msgstr "" msgid "Department" msgstr "" -#: forms.py:492 forms.py:1148 forms.py:1241 forms.py:1325 models.py:213 +#: forms.py:492 forms.py:1148 forms.py:1241 forms.py:1325 models.py:214 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:7 #: templates/ishtar/sheet_operation.html:29 msgid "Name" msgstr "" -#: forms.py:493 forms.py:761 models.py:797 +#: forms.py:493 forms.py:761 models.py:813 msgid "Address / Locality" msgstr "" -#: forms.py:494 forms.py:678 forms.py:757 models.py:742 +#: forms.py:494 forms.py:678 forms.py:757 models.py:758 msgid "Operation type" msgstr "" @@ -160,26 +160,26 @@ msgstr "" msgid "Is open?" msgstr "" -#: forms.py:503 forms.py:793 models.py:727 +#: forms.py:503 forms.py:793 models.py:743 msgid "In charge" msgstr "" -#: forms.py:510 models.py:1672 +#: forms.py:510 models.py:1696 msgid "Scientist in charge" msgstr "" -#: forms.py:512 forms.py:680 forms.py:783 models.py:725 +#: forms.py:512 forms.py:680 forms.py:783 models.py:741 msgid "Operator" msgstr "" -#: forms.py:521 forms.py:1153 forms.py:1243 forms.py:1330 models.py:217 -#: models.py:744 +#: forms.py:521 forms.py:1153 forms.py:1243 forms.py:1330 models.py:218 +#: models.py:760 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:9 msgid "Remains" msgstr "" #: forms.py:522 forms.py:1131 forms.py:1150 forms.py:1242 forms.py:1327 -#: models.py:215 models.py:750 +#: models.py:216 models.py:766 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8 msgid "Periods" msgstr "" @@ -204,8 +204,8 @@ msgstr "" msgid "Search within relations" msgstr "" -#: forms.py:529 forms.py:841 forms.py:1245 forms.py:1340 models.py:221 -#: models.py:798 +#: forms.py:529 forms.py:841 forms.py:1245 forms.py:1340 models.py:222 +#: models.py:814 msgid "Comment" msgstr "" @@ -213,23 +213,23 @@ msgstr "" msgid "Abstract (full text search)" msgstr "" -#: forms.py:532 forms.py:844 models.py:800 +#: forms.py:532 forms.py:844 models.py:816 msgid "Comment about scientific documentation" msgstr "" -#: forms.py:533 forms.py:846 models.py:815 +#: forms.py:533 forms.py:846 models.py:831 msgid "Record quality" msgstr "" -#: forms.py:534 forms.py:812 models.py:762 +#: forms.py:534 forms.py:812 models.py:778 msgid "Report processing" msgstr "" -#: forms.py:536 forms.py:849 models.py:810 +#: forms.py:536 forms.py:849 models.py:826 msgid "Virtual operation" msgstr "" -#: forms.py:538 forms.py:1188 forms.py:1192 models.py:257 +#: forms.py:538 forms.py:1188 forms.py:1192 models.py:258 msgid "Archaeological site" msgstr "" @@ -241,7 +241,7 @@ msgstr "" msgid "Modified by" msgstr "" -#: forms.py:557 forms.py:834 models.py:822 +#: forms.py:557 forms.py:834 models.py:838 msgid "Documentation received" msgstr "" @@ -253,7 +253,7 @@ msgstr "" msgid "Documentation deadline after" msgstr "" -#: forms.py:563 forms.py:839 models.py:826 +#: forms.py:563 forms.py:839 models.py:842 msgid "Finds received" msgstr "" @@ -273,12 +273,12 @@ msgstr "" msgid "Associated file" msgstr "" -#: forms.py:643 forms.py:937 models.py:1023 models.py:1404 models.py:1490 -#: models.py:1683 wizards.py:83 +#: forms.py:643 forms.py:937 models.py:1039 models.py:1428 models.py:1514 +#: models.py:1707 wizards.py:83 msgid "Archaeological file" msgstr "" -#: forms.py:650 forms.py:654 models.py:817 +#: forms.py:650 forms.py:654 models.py:833 msgid "Abstract" msgstr "" @@ -294,7 +294,7 @@ msgstr "" msgid "years" msgstr "" -#: forms.py:660 models.py:711 +#: forms.py:660 models.py:727 msgid "Creation date" msgstr "" @@ -356,11 +356,11 @@ msgstr "" msgid "Operation - 010 - General" msgstr "" -#: forms.py:759 models.py:796 +#: forms.py:759 models.py:812 msgid "Generic name" msgstr "" -#: forms.py:768 models.py:764 +#: forms.py:768 models.py:780 msgid "Old code" msgstr "" @@ -368,7 +368,7 @@ msgstr "" msgid "Head scientist" msgstr "" -#: forms.py:790 models.py:795 +#: forms.py:790 models.py:811 msgid "Operator reference" msgstr "" @@ -376,23 +376,23 @@ msgstr "" msgid "Total surface (m2)" msgstr "" -#: forms.py:807 models.py:57 models.py:714 models.py:2144 +#: forms.py:807 models.py:57 models.py:730 models.py:2168 msgid "Start date" msgstr "" -#: forms.py:808 models.py:716 +#: forms.py:808 models.py:732 msgid "Excavation end date" msgstr "" -#: forms.py:810 models.py:717 +#: forms.py:810 models.py:733 msgid "Report delivery date" msgstr "" -#: forms.py:831 models.py:819 +#: forms.py:831 models.py:835 msgid "Deadline for submission of the documentation" msgstr "" -#: forms.py:836 models.py:824 +#: forms.py:836 models.py:840 msgid "Deadline for submission of the finds" msgstr "" @@ -416,7 +416,7 @@ msgstr "" msgid "Bad operation code" msgstr "" -#: forms.py:933 models.py:1038 +#: forms.py:933 models.py:1054 msgid "Operation code" msgstr "" @@ -428,19 +428,19 @@ msgstr "" msgid "Operation - 015 - Court-ordered seizure" msgstr "" -#: forms.py:973 models.py:829 +#: forms.py:973 models.py:845 msgid "Seizure name" msgstr "" -#: forms.py:976 models.py:830 +#: forms.py:976 models.py:846 msgid "Official report number" msgstr "" -#: forms.py:979 models.py:832 +#: forms.py:979 models.py:848 msgid "Name of the protagonist" msgstr "" -#: forms.py:984 forms.py:991 models.py:731 +#: forms.py:984 forms.py:991 models.py:747 msgid "Collaborators" msgstr "" @@ -456,20 +456,20 @@ msgstr "" msgid "Operation - 033 - Preventive - Excavation" msgstr "" -#: forms.py:1004 models.py:748 +#: forms.py:1004 models.py:764 #: templates/ishtar/dashboards/dashboard_operation.html:701 msgid "Cost (euros)" msgstr "" -#: forms.py:1005 models.py:753 +#: forms.py:1005 models.py:769 msgid "Scheduled man-days" msgstr "" -#: forms.py:1007 models.py:756 +#: forms.py:1007 models.py:772 msgid "Optional man-days" msgstr "" -#: forms.py:1009 models.py:759 +#: forms.py:1009 models.py:775 msgid "Effective man-days" msgstr "" @@ -481,20 +481,20 @@ msgstr "" msgid "Operation - 037 - Preventive - Diagnostic" msgstr "" -#: forms.py:1025 models.py:779 +#: forms.py:1025 models.py:795 msgid "Prescription on zoning" msgstr "" -#: forms.py:1027 models.py:782 +#: forms.py:1027 models.py:798 msgid "Prescription on large area" msgstr "" -#: forms.py:1030 models.py:784 +#: forms.py:1030 models.py:800 msgid "Prescription on geoarchaeological context" msgstr "" -#: forms.py:1034 forms.py:1050 forms.py:1055 forms.py:1359 models.py:128 -#: models.py:219 models.py:506 models.py:746 models.py:1706 +#: forms.py:1034 forms.py:1050 forms.py:1055 forms.py:1359 models.py:129 +#: models.py:220 models.py:522 models.py:762 models.py:1730 msgid "Towns" msgstr "" @@ -530,12 +530,12 @@ msgstr "" msgid "Operation - 070 - Periods" msgstr "" -#: forms.py:1138 templates/ishtar/sheet_operation.html:273 -#: templates/ishtar/sheet_operation.html:310 +#: forms.py:1138 templates/ishtar/sheet_operation.html:277 +#: templates/ishtar/sheet_operation.html:314 msgid "Period" msgstr "" -#: forms.py:1147 forms.py:1239 forms.py:1324 models.py:212 +#: forms.py:1147 forms.py:1239 forms.py:1324 models.py:213 msgid "Reference" msgstr "" @@ -543,7 +543,7 @@ msgstr "" msgid "This reference already exists." msgstr "" -#: forms.py:1203 models.py:258 models.py:807 +#: forms.py:1203 models.py:259 models.py:823 #: templates/ishtar/sheet_operation.html:194 msgid "Archaeological sites" msgstr "" @@ -568,35 +568,35 @@ msgstr "" msgid "Would you like to delete this operation?" msgstr "" -#: forms.py:1248 models.py:223 +#: forms.py:1248 models.py:224 msgid "Top operation" msgstr "" -#: forms.py:1260 forms.py:1333 models.py:226 +#: forms.py:1260 forms.py:1333 models.py:227 msgid "National Geographic Institute locality" msgstr "" -#: forms.py:1263 forms.py:1337 models.py:229 +#: forms.py:1263 forms.py:1337 models.py:230 msgid "Cadastral locality" msgstr "" -#: forms.py:1266 forms.py:1374 models.py:233 +#: forms.py:1266 forms.py:1374 models.py:234 msgid "Shipwreck name" msgstr "" -#: forms.py:1269 forms.py:1382 models.py:235 +#: forms.py:1269 forms.py:1382 models.py:236 msgid "Oceanographic service localisation" msgstr "" -#: forms.py:1272 forms.py:1376 models.py:237 +#: forms.py:1272 forms.py:1376 models.py:238 msgid "Shipwreck code" msgstr "" -#: forms.py:1274 forms.py:1378 models.py:239 +#: forms.py:1274 forms.py:1378 models.py:240 msgid "Sinking date" msgstr "" -#: forms.py:1276 forms.py:1380 models.py:241 +#: forms.py:1276 forms.py:1380 models.py:242 msgid "Discovery area" msgstr "" @@ -620,11 +620,11 @@ msgstr "" msgid "Archaeological site - 030 - Underwater" msgstr "" -#: forms.py:1401 forms.py:1535 models.py:1663 +#: forms.py:1401 forms.py:1535 models.py:1687 msgid "Index" msgstr "" -#: forms.py:1409 forms.py:1469 models.py:1418 models.py:1657 +#: forms.py:1409 forms.py:1469 models.py:1442 models.py:1681 msgid "Act type" msgstr "" @@ -632,7 +632,7 @@ msgstr "" msgid "Indexed?" msgstr "" -#: forms.py:1416 forms.py:1474 models.py:1697 +#: forms.py:1416 forms.py:1474 models.py:1721 #: templates/ishtar/blocks/window_tables/administrativacts.html:9 msgid "Object" msgstr "" @@ -645,7 +645,7 @@ msgstr "" msgid "You should select an administrative act." msgstr "" -#: forms.py:1477 models.py:1694 +#: forms.py:1477 models.py:1718 msgid "Signature date" msgstr "" @@ -705,12 +705,12 @@ msgstr "" msgid "Deletion" msgstr "" -#: ishtar_menu.py:61 models.py:1713 +#: ishtar_menu.py:61 models.py:1737 #: templates/ishtar/sheet_administrativeact.html:4 msgid "Administrative act" msgstr "" -#: ishtar_menu.py:87 models.py:249 models.py:802 +#: ishtar_menu.py:87 models.py:250 models.py:818 msgid "Documents" msgstr "" @@ -726,17 +726,17 @@ msgstr "" msgid "General informations" msgstr "" -#: ishtar_menu.py:143 models.py:843 +#: ishtar_menu.py:143 models.py:859 #: templates/ishtar/dashboards/dashboard_operation.html:8 #: templates/ishtar/sheet_site.html:65 msgid "Operations" msgstr "" -#: models.py:56 models.py:76 models.py:94 models.py:2622 +#: models.py:56 models.py:76 models.py:94 models.py:2646 msgid "Order" msgstr "" -#: models.py:58 models.py:2145 +#: models.py:58 models.py:2169 msgid "End date" msgstr "" @@ -768,665 +768,665 @@ msgstr "" msgid "Types of record quality" msgstr "" -#: models.py:135 +#: models.py:136 msgctxt "key for text search" msgid "reference" msgstr "" -#: models.py:139 models.py:569 +#: models.py:140 models.py:585 msgctxt "key for text search" msgid "name" msgstr "" -#: models.py:143 models.py:601 tests.py:1625 +#: models.py:144 models.py:617 tests.py:1625 msgctxt "key for text search" msgid "period" msgstr "" -#: models.py:147 models.py:597 tests.py:1656 +#: models.py:148 models.py:613 tests.py:1656 msgctxt "key for text search" msgid "remain" msgstr "" -#: models.py:151 models.py:557 tests.py:1633 +#: models.py:152 models.py:573 tests.py:1633 msgctxt "key for text search" msgid "town" msgstr "" -#: models.py:155 models.py:625 +#: models.py:156 models.py:641 msgctxt "key for text search" msgid "comment" msgstr "" -#: models.py:159 +#: models.py:160 msgctxt "key for text search" msgid "locality-ngi" msgstr "" -#: models.py:163 +#: models.py:164 msgctxt "key for text search" msgid "locality-cadastral" msgstr "" -#: models.py:167 +#: models.py:168 msgctxt "key for text search" msgid "shipwreck-name" msgstr "" -#: models.py:172 +#: models.py:173 msgctxt "key for text search" msgid "oceanographic-service-localisation" msgstr "" -#: models.py:176 +#: models.py:177 msgctxt "key for text search" msgid "shipwreck-code" msgstr "" -#: models.py:180 +#: models.py:181 msgctxt "key for text search" msgid "sinking-date" msgstr "" -#: models.py:184 +#: models.py:185 msgctxt "key for text search" msgid "discovery-area" msgstr "" -#: models.py:188 models.py:203 +#: models.py:189 models.py:204 msgctxt "key for text search" msgid "operation" msgstr "" -#: models.py:192 +#: models.py:193 msgctxt "key for text search" msgid "top-operation" msgstr "" -#: models.py:251 models.py:804 models.py:1926 +#: models.py:252 models.py:820 models.py:1950 msgid "Cached name" msgstr "" -#: models.py:280 +#: models.py:281 msgid "SITE" msgstr "" -#: models.py:345 +#: models.py:361 msgid "Unknown" msgstr "" -#: models.py:348 +#: models.py:364 msgid "Virtual operation of site: {}" msgstr "" -#: models.py:488 +#: models.py:504 msgid "Associated file (label)" msgstr "" -#: models.py:489 +#: models.py:505 msgid "Operator name" msgstr "" -#: models.py:490 +#: models.py:506 msgid "Scientist (full name)" msgstr "" -#: models.py:491 +#: models.py:507 msgid "Associated file (external ID)" msgstr "" -#: models.py:492 +#: models.py:508 msgid "Scientist (title)" msgstr "" -#: models.py:493 +#: models.py:509 msgid "Scientist (surname)" msgstr "" -#: models.py:494 +#: models.py:510 msgid "Scientist (name)" msgstr "" -#: models.py:495 +#: models.py:511 msgid "Scientist - Organization (name)" msgstr "" -#: models.py:496 +#: models.py:512 msgid "In charge (title)" msgstr "" -#: models.py:497 +#: models.py:513 msgid "In charge (surname)" msgstr "" -#: models.py:498 +#: models.py:514 msgid "In charge (name)" msgstr "" -#: models.py:499 +#: models.py:515 msgid "In charge - Organization (name)" msgstr "" -#: models.py:504 +#: models.py:520 msgid "Archaeological sites (reference)" msgstr "" -#: models.py:545 models.py:1502 tests.py:1628 tests.py:1673 +#: models.py:561 models.py:1526 tests.py:1628 tests.py:1673 msgctxt "key for text search" msgid "year" msgstr "" -#: models.py:549 +#: models.py:565 msgctxt "key for text search" msgid "operation-code" msgstr "" -#: models.py:553 models.py:1514 +#: models.py:569 models.py:1538 msgctxt "key for text search" msgid "patriarche" msgstr "" -#: models.py:561 models.py:1534 +#: models.py:577 models.py:1558 msgctxt "key for text search" msgid "parcel" msgstr "" -#: models.py:565 +#: models.py:581 msgctxt "key for text search" msgid "department" msgstr "" -#: models.py:573 +#: models.py:589 msgctxt "key for text search" msgid "address" msgstr "" -#: models.py:577 models.py:1518 +#: models.py:593 models.py:1542 msgctxt "key for text search" msgid "type" msgstr "" -#: models.py:581 tests.py:1661 +#: models.py:597 tests.py:1661 msgctxt "key for text search" msgid "is-open" msgstr "" -#: models.py:585 +#: models.py:601 msgctxt "key for text search" msgid "in-charge" msgstr "" -#: models.py:589 +#: models.py:605 msgctxt "key for text search" msgid "scientist" msgstr "" -#: models.py:593 +#: models.py:609 msgctxt "key for text search" msgid "operator" msgstr "" -#: models.py:605 +#: models.py:621 msgctxt "key for text search" msgid "start-before" msgstr "" -#: models.py:609 +#: models.py:625 msgctxt "key for text search" msgid "start-after" msgstr "" -#: models.py:613 +#: models.py:629 msgctxt "key for text search" msgid "end-before" msgstr "" -#: models.py:617 +#: models.py:633 msgctxt "key for text search" msgid "end-after" msgstr "" -#: models.py:621 +#: models.py:637 msgctxt "key for text search" msgid "relation-types" msgstr "" -#: models.py:629 +#: models.py:645 msgctxt "key for text search" msgid "abstract" msgstr "" -#: models.py:634 +#: models.py:650 msgctxt "key for text search" msgid "scientific-documentation-comment" msgstr "" -#: models.py:638 +#: models.py:654 msgctxt "key for text search" msgid "record-quality" msgstr "" -#: models.py:643 +#: models.py:659 msgctxt "key for text search" msgid "report-processing" msgstr "" -#: models.py:648 +#: models.py:664 msgctxt "key for text search" msgid "virtual-operation" msgstr "" -#: models.py:653 models.py:696 +#: models.py:669 models.py:712 msgctxt "key for text search" msgid "site" msgstr "" -#: models.py:657 models.py:1552 +#: models.py:673 models.py:1576 msgctxt "key for text search" msgid "created-by" msgstr "" -#: models.py:661 models.py:1556 +#: models.py:677 models.py:1580 msgctxt "key for text search" msgid "modified-by" msgstr "" -#: models.py:665 +#: models.py:681 msgctxt "key for text search" msgid "documentation-received" msgstr "" -#: models.py:669 +#: models.py:685 msgctxt "key for text search" msgid "documentation-deadline-before" msgstr "" -#: models.py:673 +#: models.py:689 msgctxt "key for text search" msgid "documentation-deadline-after" msgstr "" -#: models.py:677 +#: models.py:693 msgctxt "key for text search" msgid "finds-received" msgstr "" -#: models.py:681 +#: models.py:697 msgctxt "key for text search" msgid "finds-deadline-before" msgstr "" -#: models.py:685 +#: models.py:701 msgctxt "key for text search" msgid "finds-deadline-after" msgstr "" -#: models.py:698 +#: models.py:714 msgctxt "key for text search" msgid "file" msgstr "" -#: models.py:713 templates/ishtar/sheet_operation.html:60 +#: models.py:729 templates/ishtar/sheet_operation.html:60 msgid "Closing date" msgstr "" -#: models.py:720 +#: models.py:736 msgid "In charge scientist" msgstr "" -#: models.py:739 models.py:1908 +#: models.py:755 models.py:1932 msgid "File" msgstr "" -#: models.py:743 +#: models.py:759 msgid "Surface (m2)" msgstr "" -#: models.py:812 +#: models.py:828 msgid "" "If checked, it means that this operation have not been officialy registered." msgstr "" -#: models.py:891 +#: models.py:907 msgid "OPE" msgstr "" -#: models.py:988 +#: models.py:1004 msgid "Intercommunal" msgstr "" -#: models.py:1024 +#: models.py:1040 msgid "Code patriarche" msgstr "" -#: models.py:1066 +#: models.py:1082 msgid "This operation code already exists for this year" msgstr "" -#: models.py:1111 +#: models.py:1135 msgid "Number of parcels" msgstr "" -#: models.py:1121 +#: models.py:1145 msgid "Number of administrative acts" msgstr "" -#: models.py:1129 +#: models.py:1153 msgid "Number of indexed administrative acts" msgstr "" -#: models.py:1137 +#: models.py:1161 msgid "Number of context records" msgstr "" -#: models.py:1173 +#: models.py:1197 msgid "Number of finds" msgstr "" -#: models.py:1218 +#: models.py:1242 msgid "No type" msgstr "" -#: models.py:1249 +#: models.py:1273 msgid "Number of sources" msgstr "" -#: models.py:1287 templates/ishtar/dashboards/dashboard_operation.html:309 +#: models.py:1311 templates/ishtar/dashboards/dashboard_operation.html:309 #: templates/ishtar/dashboards/dashboard_operation.html:575 #: templates/ishtar/dashboards/dashboard_operation.html:611 msgid "Mean" msgstr "" -#: models.py:1349 +#: models.py:1373 msgid "Operation relation type" msgstr "" -#: models.py:1350 +#: models.py:1374 msgid "Operation relation types" msgstr "" -#: models.py:1363 +#: models.py:1387 msgid "Operation record relation" msgstr "" -#: models.py:1364 +#: models.py:1388 msgid "Operation record relations" msgstr "" -#: models.py:1406 models.py:1688 +#: models.py:1430 models.py:1712 msgid "Treatment request" msgstr "" -#: models.py:1407 models.py:1693 +#: models.py:1431 models.py:1717 msgid "Treatment" msgstr "" -#: models.py:1409 +#: models.py:1433 msgid "Intended to" msgstr "" -#: models.py:1411 +#: models.py:1435 msgid "Code" msgstr "" -#: models.py:1414 +#: models.py:1438 msgid "Associated template" msgstr "" -#: models.py:1415 +#: models.py:1439 msgid "Indexed" msgstr "" -#: models.py:1419 +#: models.py:1443 msgid "Act types" msgstr "" -#: models.py:1489 models.py:1734 +#: models.py:1513 models.py:1758 #: templates/ishtar/blocks/window_tables/administrativacts.html:6 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:6 msgid "Ref." msgstr "" -#: models.py:1506 +#: models.py:1530 msgctxt "key for text search" msgid "index" msgstr "" -#: models.py:1510 +#: models.py:1534 msgctxt "key for text search" msgid "other-ref" msgstr "" -#: models.py:1522 +#: models.py:1546 msgctxt "key for text search" msgid "indexed" msgstr "" -#: models.py:1526 +#: models.py:1550 msgctxt "key for text search" msgid "operation-town" msgstr "" -#: models.py:1530 +#: models.py:1554 msgctxt "key for text search" msgid "file-town" msgstr "" -#: models.py:1540 +#: models.py:1564 msgctxt "key for text search" msgid "operation-department" msgstr "" -#: models.py:1544 +#: models.py:1568 msgctxt "key for text search" msgid "file-department" msgstr "" -#: models.py:1548 +#: models.py:1572 msgctxt "key for text search" msgid "object" msgstr "" -#: models.py:1560 +#: models.py:1584 msgctxt "key for text search" msgid "signature-before" msgstr "" -#: models.py:1564 +#: models.py:1588 msgctxt "key for text search" msgid "signature-after" msgstr "" -#: models.py:1568 +#: models.py:1592 msgctxt "key for text search" msgid "file-name" msgstr "" -#: models.py:1572 +#: models.py:1596 msgctxt "key for text search" msgid "general-contractor" msgstr "" -#: models.py:1577 +#: models.py:1601 msgctxt "key for text search" msgid "general-contractor-organization" msgstr "" -#: models.py:1582 +#: models.py:1606 msgctxt "key for text search" msgid "file-reference" msgstr "" -#: models.py:1586 +#: models.py:1610 msgctxt "key for text search" msgid "file-year" msgstr "" -#: models.py:1590 +#: models.py:1614 msgctxt "key for text search" msgid "file-other-reference" msgstr "" -#: models.py:1594 +#: models.py:1618 msgctxt "key for text search" msgid "file-in-charge" msgstr "" -#: models.py:1598 +#: models.py:1622 msgctxt "key for text search" msgid "file-permit-reference" msgstr "" -#: models.py:1602 +#: models.py:1626 msgctxt "key for text search" msgid "treatment-name" msgstr "" -#: models.py:1606 +#: models.py:1630 msgctxt "key for text search" msgid "treatment-reference" msgstr "" -#: models.py:1610 +#: models.py:1634 msgctxt "key for text search" msgid "treatment-year" msgstr "" -#: models.py:1614 +#: models.py:1638 msgctxt "key for text search" msgid "treatment-index" msgstr "" -#: models.py:1618 +#: models.py:1642 msgctxt "key for text search" msgid "treatment-type" msgstr "" -#: models.py:1622 +#: models.py:1646 msgctxt "key for text search" msgid "treatment-file-name" msgstr "" -#: models.py:1626 +#: models.py:1650 msgctxt "key for text search" msgid "treatment-file-reference" msgstr "" -#: models.py:1630 +#: models.py:1654 msgctxt "key for text search" msgid "treatment-file-year" msgstr "" -#: models.py:1634 +#: models.py:1658 msgctxt "key for text search" msgid "treatment-file-index" msgstr "" -#: models.py:1638 +#: models.py:1662 msgctxt "key for text search" msgid "treatment-file-type" msgstr "" -#: models.py:1661 +#: models.py:1685 msgid "Person in charge of the operation" msgstr "" -#: models.py:1667 +#: models.py:1691 msgid "Archaeological preventive operator" msgstr "" -#: models.py:1675 +#: models.py:1699 msgid "Signatory" msgstr "" -#: models.py:1703 +#: models.py:1727 msgid "Departments" msgstr "" -#: models.py:1704 +#: models.py:1728 msgid "Cached values get from associated departments" msgstr "" -#: models.py:1707 +#: models.py:1731 msgid "Cached values get from associated towns" msgstr "" -#: models.py:1714 templates/ishtar/sheet_operation.html:202 -#: templates/ishtar/sheet_operation.html:244 +#: models.py:1738 templates/ishtar/sheet_operation.html:202 +#: templates/ishtar/sheet_operation.html:248 msgid "Administrative acts" msgstr "" -#: models.py:1837 +#: models.py:1861 msgid "This index already exists for this year" msgstr "" -#: models.py:1921 +#: models.py:1945 msgid "External ID" msgstr "" -#: models.py:1924 +#: models.py:1948 msgid "External ID is set automatically" msgstr "" -#: models.py:1925 +#: models.py:1949 msgid "Address - Locality" msgstr "" -#: models.py:2140 +#: models.py:2164 msgid "Owner" msgstr "" -#: models.py:2148 +#: models.py:2172 msgid "Parcel owner" msgstr "" -#: models.py:2149 +#: models.py:2173 msgid "Parcel owners" msgstr "" -#: models.py:2183 +#: models.py:2207 msgid "Recorded" msgstr "" -#: models.py:2184 +#: models.py:2208 msgid "Effective" msgstr "" -#: models.py:2185 +#: models.py:2209 msgid "Active" msgstr "" -#: models.py:2186 +#: models.py:2210 msgid "Field completed" msgstr "" -#: models.py:2187 +#: models.py:2211 msgid "Associated report" msgstr "" -#: models.py:2188 +#: models.py:2212 msgid "Closed" msgstr "" -#: models.py:2189 +#: models.py:2213 msgid "Documented and closed" msgstr "" -#: models.py:2623 +#: models.py:2647 msgid "Is preventive" msgstr "" -#: models.py:2626 +#: models.py:2650 msgid "Operation type old" msgstr "" -#: models.py:2627 +#: models.py:2651 msgid "Operation types old" msgstr "" #: templates/ishtar/blocks/window_tables/administrativacts.html:7 -#: templates/ishtar/sheet_operation.html:263 -#: templates/ishtar/sheet_operation.html:327 +#: templates/ishtar/sheet_operation.html:267 +#: templates/ishtar/sheet_operation.html:331 msgid "Type" msgstr "" @@ -1470,12 +1470,12 @@ msgstr "" #: templates/ishtar/dashboards/dashboard_operation.html:432 #: templates/ishtar/dashboards/dashboard_operation.html:463 #: templates/ishtar/dashboards/dashboard_operation.html:687 -#: templates/ishtar/sheet_operation.html:263 -#: templates/ishtar/sheet_operation.html:273 -#: templates/ishtar/sheet_operation.html:290 -#: templates/ishtar/sheet_operation.html:300 -#: templates/ishtar/sheet_operation.html:310 -#: templates/ishtar/sheet_operation.html:327 +#: templates/ishtar/sheet_operation.html:267 +#: templates/ishtar/sheet_operation.html:277 +#: templates/ishtar/sheet_operation.html:294 +#: templates/ishtar/sheet_operation.html:304 +#: templates/ishtar/sheet_operation.html:314 +#: templates/ishtar/sheet_operation.html:331 msgid "Number" msgstr "" @@ -1734,54 +1734,54 @@ msgstr "" msgid "Document from this operation" msgstr "" -#: templates/ishtar/sheet_operation.html:212 -#: templates/ishtar/sheet_operation.html:255 +#: templates/ishtar/sheet_operation.html:213 +#: templates/ishtar/sheet_operation.html:259 msgid "Context records" msgstr "" -#: templates/ishtar/sheet_operation.html:217 +#: templates/ishtar/sheet_operation.html:218 msgid "Context record relations" msgstr "" -#: templates/ishtar/sheet_operation.html:222 +#: templates/ishtar/sheet_operation.html:223 msgid "Documents from associated context records" msgstr "" -#: templates/ishtar/sheet_operation.html:227 -#: templates/ishtar/sheet_operation.html:282 +#: templates/ishtar/sheet_operation.html:229 +#: templates/ishtar/sheet_operation.html:286 #: templates/ishtar/sheet_site.html:70 msgid "Finds" msgstr "" -#: templates/ishtar/sheet_operation.html:232 +#: templates/ishtar/sheet_operation.html:234 msgid "Documents from associated finds" msgstr "" -#: templates/ishtar/sheet_operation.html:237 +#: templates/ishtar/sheet_operation.html:240 msgid "Associated containers" msgstr "" -#: templates/ishtar/sheet_operation.html:241 +#: templates/ishtar/sheet_operation.html:245 msgid "Statistics" msgstr "" -#: templates/ishtar/sheet_operation.html:242 +#: templates/ishtar/sheet_operation.html:246 msgid "These numbers are updated hourly" msgstr "" -#: templates/ishtar/sheet_operation.html:290 +#: templates/ishtar/sheet_operation.html:294 msgid "Material type" msgstr "" -#: templates/ishtar/sheet_operation.html:300 +#: templates/ishtar/sheet_operation.html:304 msgid "Object type" msgstr "" -#: templates/ishtar/sheet_operation.html:319 +#: templates/ishtar/sheet_operation.html:323 msgid "Sources" msgstr "" -#: templates/ishtar/sheet_operation.html:337 +#: templates/ishtar/sheet_operation.html:341 msgid "Finds by context records" msgstr "" diff --git a/ishtar_common/locale/django.pot b/ishtar_common/locale/django.pot index 5f0f526fc..7435f077a 100644 --- a/ishtar_common/locale/django.pot +++ b/ishtar_common/locale/django.pot @@ -2136,11 +2136,11 @@ msgstr "" msgid "Importer - Targets" msgstr "" -#: models_imports.py:525 views_item.py:847 +#: models_imports.py:525 views_item.py:867 msgid "True" msgstr "" -#: models_imports.py:526 views_item.py:849 +#: models_imports.py:526 views_item.py:869 msgid "False" msgstr "" @@ -2583,7 +2583,6 @@ msgid " items added." msgstr "" #: templates/base.html:47 -#| msgid "Select all items" msgid "Select only one item." msgstr "" @@ -2838,7 +2837,6 @@ msgid "Data" msgstr "" #: templates/ishtar/blocks/sheet_json.html:9 -#| msgid "No data provided" msgid "No data" msgstr "" @@ -2848,7 +2846,7 @@ msgstr "" #: templates/ishtar/blocks/window_image_detail.html:111 #: templates/ishtar/import_delete.html:20 templatetags/window_field.py:17 -#: views_item.py:486 wizards.py:393 +#: views_item.py:506 wizards.py:393 msgid "Yes" msgstr "" @@ -2861,6 +2859,11 @@ msgstr "" msgid "Web" msgstr "" +#: templates/ishtar/blocks/window_image_detail.html:193 +#: templates/ishtar/blocks/window_tables/documents.html:10 +msgid "Related to" +msgstr "" + #: templates/ishtar/blocks/window_nav.html:17 msgid "" "Are you sure to restore to this version? All changes made since this version " @@ -2896,10 +2899,6 @@ msgstr "" msgid "Relation between items are not historized." msgstr "" -#: templates/ishtar/blocks/window_tables/documents.html:10 -msgid "Related to" -msgstr "" - #: templates/ishtar/blocks/window_tables/documents.html:11 #: templates/ishtar/blocks/window_tables/documents.html:19 msgid "Link" @@ -3744,7 +3743,7 @@ msgstr "" msgid "Treatment" msgstr "" -#: views.py:724 views_item.py:103 +#: views.py:724 views_item.py:104 msgid "Operation not permitted." msgstr "" @@ -3824,7 +3823,7 @@ msgstr "" msgid "Bookmark - Delete" msgstr "" -#: views_item.py:105 +#: views_item.py:106 #, python-format msgid "New %s" msgstr "" diff --git a/translations/de/ishtar_common.po b/translations/de/ishtar_common.po index 142632f42..d8e6d4cdb 100644 --- a/translations/de/ishtar_common.po +++ b/translations/de/ishtar_common.po @@ -2138,11 +2138,11 @@ msgstr "" msgid "Importer - Targets" msgstr "" -#: models_imports.py:525 views_item.py:847 +#: models_imports.py:525 views_item.py:867 msgid "True" msgstr "" -#: models_imports.py:526 views_item.py:849 +#: models_imports.py:526 views_item.py:869 msgid "False" msgstr "" @@ -2848,7 +2848,7 @@ msgstr "" #: templates/ishtar/blocks/window_image_detail.html:111 #: templates/ishtar/import_delete.html:20 templatetags/window_field.py:17 -#: views_item.py:486 wizards.py:393 +#: views_item.py:506 wizards.py:393 msgid "Yes" msgstr "" @@ -2861,6 +2861,11 @@ msgstr "" msgid "Web" msgstr "" +#: templates/ishtar/blocks/window_image_detail.html:193 +#: templates/ishtar/blocks/window_tables/documents.html:10 +msgid "Related to" +msgstr "" + #: templates/ishtar/blocks/window_nav.html:17 msgid "" "Are you sure to restore to this version? All changes made since this version " @@ -2896,10 +2901,6 @@ msgstr "" msgid "Relation between items are not historized." msgstr "" -#: templates/ishtar/blocks/window_tables/documents.html:10 -msgid "Related to" -msgstr "" - #: templates/ishtar/blocks/window_tables/documents.html:11 #: templates/ishtar/blocks/window_tables/documents.html:19 msgid "Link" @@ -3744,7 +3745,7 @@ msgstr "" msgid "Treatment" msgstr "" -#: views.py:724 views_item.py:103 +#: views.py:724 views_item.py:104 msgid "Operation not permitted." msgstr "" @@ -3824,7 +3825,7 @@ msgstr "" msgid "Bookmark - Delete" msgstr "" -#: views_item.py:105 +#: views_item.py:106 #, python-format msgid "New %s" msgstr "" diff --git a/translations/fr/archaeological_finds.po b/translations/fr/archaeological_finds.po index ae08f3f62..3d81efbca 100644 --- a/translations/fr/archaeological_finds.po +++ b/translations/fr/archaeological_finds.po @@ -11,7 +11,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Content-Type: text/plain; charset=UTF-8\n" -"PO-Revision-Date: 2018-11-21 10:10+0000\n" +"PO-Revision-Date: 2018-11-27 10:00+0000\n" "Last-Translator: Étienne Loks \n" "Language-Team: \n" "Language: fr\n" @@ -31,7 +31,7 @@ msgid "Multi polygon" msgstr "Polygones multi-parties" #: forms.py:95 forms.py:101 forms.py:540 forms.py:553 forms.py:831 -#: models_finds.py:674 models_finds.py:1233 wizards.py:86 +#: models_finds.py:674 models_finds.py:1237 wizards.py:86 msgid "Context record" msgstr "Unité d'Enregistrement" @@ -39,8 +39,8 @@ msgstr "Unité d'Enregistrement" msgid "Find - 010 - Context record choice" msgstr "Mobilier - 010 - Choix de l'unité d'enregistrement" -#: forms.py:133 forms.py:255 ishtar_menu.py:32 models_finds.py:1106 -#: models_finds.py:1739 models_treatments.py:511 +#: forms.py:133 forms.py:255 ishtar_menu.py:32 models_finds.py:1110 +#: models_finds.py:1743 models_treatments.py:512 #: templates/ishtar/sheet_find.html:4 msgid "Find" msgstr "Mobilier" @@ -134,7 +134,7 @@ msgstr "Communicabilité" #: forms.py:195 forms.py:432 forms.py:584 forms.py:1177 forms_treatments.py:145 #: forms_treatments.py:606 models_finds.py:264 models_finds.py:1056 -#: models_treatments.py:149 models_treatments.py:771 +#: models_treatments.py:149 models_treatments.py:772 msgid "Comment" msgstr "Commentaire général" @@ -433,14 +433,14 @@ msgid "Dating" msgstr "Datation" #: forms.py:766 forms_treatments.py:131 forms_treatments.py:398 -#: forms_treatments.py:608 models_finds.py:1744 models_treatments.py:152 -#: models_treatments.py:522 templates/ishtar/sheet_find.html:196 +#: forms_treatments.py:608 models_finds.py:1748 models_treatments.py:152 +#: models_treatments.py:523 templates/ishtar/sheet_find.html:196 #: templates/ishtar/sheet_find.html:254 templates/ishtar/sheet_find.html:291 #: templates/ishtar/sheet_find.html:329 msgid "Start date" msgstr "Date de début" -#: forms.py:768 models_finds.py:1745 models_treatments.py:523 +#: forms.py:768 models_finds.py:1749 models_treatments.py:524 #: templates/ishtar/sheet_find.html:197 templates/ishtar/sheet_find.html:255 #: templates/ishtar/sheet_find.html:292 templates/ishtar/sheet_find.html:330 msgid "End date" @@ -482,7 +482,7 @@ msgstr "Identifiant complet" #: forms.py:804 forms_treatments.py:56 forms_treatments.py:102 #: forms_treatments.py:323 forms_treatments.py:451 forms_treatments.py:526 #: forms_treatments.py:578 forms_treatments.py:718 models_treatments.py:126 -#: models_treatments.py:744 +#: models_treatments.py:745 msgid "Year" msgstr "Année" @@ -554,13 +554,14 @@ msgstr "Réf. contenant" msgid "Find search" msgstr "Rechercher un mobilier" -#: forms.py:969 forms.py:1114 models_treatments.py:271 -#: templates/ishtar/sheet_treatment.html:61 +#: forms.py:969 forms.py:1114 models_treatments.py:268 +#: templates/ishtar/sheet_treatment.html:102 msgid "Upstream finds" msgstr "Mobilier amont" -#: forms.py:971 models_finds.py:1107 models_treatments.py:156 +#: forms.py:971 models_finds.py:1111 #: templates/ishtar/forms/qa_find_treatment.html:11 +#: templates/ishtar/sheet_treatment.html:24 msgid "Finds" msgstr "Mobilier" @@ -605,13 +606,13 @@ msgstr "Autre réf." #: forms_treatments.py:57 forms_treatments.py:260 forms_treatments.py:452 #: forms_treatments.py:514 forms_treatments.py:527 forms_treatments.py:631 #: forms_treatments.py:719 forms_treatments.py:786 models_treatments.py:127 -#: models_treatments.py:745 +#: models_treatments.py:746 msgid "Index" msgstr "Index" #: forms_treatments.py:58 forms_treatments.py:98 forms_treatments.py:406 #: forms_treatments.py:468 models_finds.py:111 models_treatments.py:132 -#: models_treatments.py:521 +#: models_treatments.py:522 msgid "Treatment type" msgstr "Type de traitement" @@ -619,8 +620,9 @@ msgstr "Type de traitement" msgid "Treatment search" msgstr "Rechercher un traitement" -#: forms_treatments.py:83 ishtar_menu.py:147 models_treatments.py:178 -#: models_treatments.py:513 templates/ishtar/sheet_treatment.html:4 +#: forms_treatments.py:83 ishtar_menu.py:147 models_treatments.py:175 +#: models_treatments.py:514 templates/ishtar/sheet_treatment.html:4 +#: templates/ishtar/sheet_treatment.html:17 msgid "Treatment" msgstr "Traitement" @@ -634,7 +636,7 @@ msgstr "Traitement - 020 - Général" msgid "State" msgstr "État" -#: forms_treatments.py:107 models_treatments.py:137 models_treatments.py:524 +#: forms_treatments.py:107 models_treatments.py:137 models_treatments.py:525 msgid "Location" msgstr "Localisation" @@ -648,7 +650,7 @@ msgid "Organization" msgstr "Organisation" #: forms_treatments.py:133 forms_treatments.py:398 forms_treatments.py:614 -#: forms_treatments.py:667 models_treatments.py:153 models_treatments.py:765 +#: forms_treatments.py:667 models_treatments.py:153 models_treatments.py:766 msgid "Closing date" msgstr "Date de clôture" @@ -718,7 +720,7 @@ msgid "Treatment - 010 - Request choice" msgstr "Traitement - 010 - Choix de la demande de traitement" #: forms_treatments.py:296 forms_treatments.py:569 ishtar_menu.py:95 -#: models_treatments.py:780 models_treatments.py:808 +#: models_treatments.py:781 models_treatments.py:803 #: templates/ishtar/sheet_treatmentfile.html:4 wizards.py:457 msgid "Treatment request" msgstr "Demande de traitement" @@ -737,7 +739,7 @@ msgid "Would you like to delete this treatment?" msgstr "Voulez-vous supprimer ce traitement ?" #: forms_treatments.py:313 models_finds.py:697 models_finds.py:1017 -#: models_treatments.py:158 models_treatments.py:525 +#: models_treatments.py:155 models_treatments.py:526 #: templates/ishtar/sheet_find.html:253 templates/ishtar/sheet_find.html:290 #: templates/ishtar/sheet_find.html:328 msgid "Container" @@ -824,7 +826,7 @@ msgstr "Modifié par" msgid "Treatment - Administrative act - General" msgstr "Traitement - Acte administratif - Général" -#: forms_treatments.py:524 forms_treatments.py:576 models_treatments.py:750 +#: forms_treatments.py:524 forms_treatments.py:576 models_treatments.py:751 msgid "Name" msgstr "Nom" @@ -842,12 +844,12 @@ msgstr "Type" msgid "In charge" msgstr "Responsable" -#: forms_treatments.py:537 forms_treatments.py:595 models_treatments.py:759 +#: forms_treatments.py:537 forms_treatments.py:595 models_treatments.py:760 #: templates/ishtar/sheet_treatmentfile.html:45 msgid "Applicant" msgstr "Demandeur" -#: forms_treatments.py:543 forms_treatments.py:601 models_treatments.py:763 +#: forms_treatments.py:543 forms_treatments.py:601 models_treatments.py:764 #: templates/ishtar/sheet_treatmentfile.html:53 msgid "Applicant organisation" msgstr "Organisation du demandeur" @@ -860,7 +862,7 @@ msgstr "Rechercher une demande de traitement" msgid "External ref." msgstr "Référence" -#: forms_treatments.py:612 forms_treatments.py:666 models_treatments.py:769 +#: forms_treatments.py:612 forms_treatments.py:666 models_treatments.py:770 msgid "Reception date" msgstr "Date de réception" @@ -876,12 +878,12 @@ msgstr "Êtes-vous sûr de vouloir supprimer cette demande de traitement ? " msgid "Would you like to delete this treatment request?" msgstr "Voulez-vous supprimer cette demande de traitement ?" -#: forms_treatments.py:665 models_treatments.py:767 +#: forms_treatments.py:665 models_treatments.py:768 msgid "Creation date" msgstr "Date de création" -#: forms_treatments.py:675 forms_treatments.py:739 models_treatments.py:681 -#: models_treatments.py:752 +#: forms_treatments.py:675 forms_treatments.py:739 models_treatments.py:682 +#: models_treatments.py:753 msgid "Treatment request type" msgstr "Type de demande de traitement" @@ -906,22 +908,22 @@ msgid "Treatment request - Administrative act - General" msgstr "Demande de traitement - Acte administratif - Général" #: ishtar_menu.py:37 ishtar_menu.py:60 ishtar_menu.py:100 ishtar_menu.py:123 -#: ishtar_menu.py:152 ishtar_menu.py:191 +#: ishtar_menu.py:152 ishtar_menu.py:185 msgid "Search" msgstr "Recherche" #: ishtar_menu.py:42 ishtar_menu.py:65 ishtar_menu.py:105 ishtar_menu.py:127 -#: ishtar_menu.py:195 +#: ishtar_menu.py:189 msgid "Creation" msgstr "Ajout" #: ishtar_menu.py:47 ishtar_menu.py:70 ishtar_menu.py:110 ishtar_menu.py:131 -#: ishtar_menu.py:178 ishtar_menu.py:200 +#: ishtar_menu.py:172 ishtar_menu.py:194 msgid "Modification" msgstr "Modification" #: ishtar_menu.py:52 ishtar_menu.py:82 ishtar_menu.py:115 ishtar_menu.py:134 -#: ishtar_menu.py:183 ishtar_menu.py:203 +#: ishtar_menu.py:177 ishtar_menu.py:197 msgid "Deletion" msgstr "Suppression" @@ -929,33 +931,27 @@ msgstr "Suppression" msgid "Manage items" msgstr "Gestion des éléments" -#: ishtar_menu.py:120 ishtar_menu.py:188 models_finds.py:1741 +#: ishtar_menu.py:120 ishtar_menu.py:182 models_finds.py:1745 msgid "Administrative act" msgstr "Acte administratif" -#: ishtar_menu.py:138 ishtar_menu.py:207 models_finds.py:1098 -#: models_treatments.py:171 models_treatments.py:773 -#: templates/ishtar/sheet_find.html:56 +#: ishtar_menu.py:138 ishtar_menu.py:201 models_finds.py:1098 +#: models_treatments.py:168 models_treatments.py:774 +#: templates/ishtar/sheet_find.html:56 templates/ishtar/sheet_treatment.html:32 msgid "Documents" msgstr "Documents" #: ishtar_menu.py:158 -msgid "" -"Treatment 1 1 - creation" -msgstr "" -"Traitement 1 1 - création" +msgid "Simple treatment - creation" +msgstr "Traitement simple - création" -#: ishtar_menu.py:165 -msgid "" -"Treatment n 1 - creation" -msgstr "" -"Traitement n 1 - création" +#: ishtar_menu.py:163 +msgid "Treatment many to one - creation" +msgstr "Traitement de plusieurs à un - création" -#: ishtar_menu.py:172 -msgid "" -"Treatment 1 n - creation" -msgstr "" -"Traitement 1 n - création" +#: ishtar_menu.py:168 +msgid "Treatment one to many - creation" +msgstr "Traitement de un à plusieurs - création" #: models_finds.py:51 msgid "Code" @@ -967,7 +963,7 @@ msgstr "Recommandation" #: models_finds.py:66 models_finds.py:79 models_finds.py:92 models_finds.py:143 #: models_finds.py:166 models_finds.py:223 models_finds.py:984 -#: models_treatments.py:517 +#: models_treatments.py:518 msgid "Order" msgstr "Ordre" @@ -1027,7 +1023,7 @@ msgstr "" "Cochez cela si, pour ce traitement, à partir d'un seul élément vous en " "obtenez plusieurs." -#: models_finds.py:112 models_treatments.py:253 +#: models_finds.py:112 models_treatments.py:250 msgid "Treatment types" msgstr "Types de traitement" @@ -1104,7 +1100,7 @@ msgid "Checked types" msgstr "Types de vérification" #: models_finds.py:259 models_finds.py:977 models_treatments.py:147 -#: models_treatments.py:748 +#: models_treatments.py:749 msgid "External ID" msgstr "Identifiant" @@ -1233,7 +1229,7 @@ msgctxt "key for text search" msgid "town" msgstr "commune" -#: models_finds.py:794 models_treatments.py:91 models_treatments.py:713 +#: models_finds.py:794 models_treatments.py:91 models_treatments.py:714 msgctxt "key for text search" msgid "year" msgstr "annee" @@ -1387,7 +1383,7 @@ msgstr "cree-par" msgid "Bulk update" msgstr "Mise à jour multiple" -#: models_finds.py:947 models_finds.py:1200 +#: models_finds.py:947 models_finds.py:1204 #: templates/ishtar/forms/qa_find_treatment.html:16 views.py:714 msgid "Packaging" msgstr "Conditionnement" @@ -1424,41 +1420,52 @@ msgstr "Encombrement - hauteur (cm)" msgid "Collection" msgstr "Collection" -#: models_finds.py:1100 models_treatments.py:173 models_treatments.py:775 +#: models_finds.py:1101 models_treatments.py:176 +#: templates/ishtar/sheet_find.html:243 +#: templates/ishtar/sheet_treatmentfile.html:61 +msgid "Treatments" +msgstr "Traitements" + +#: models_finds.py:1103 +msgid "Related treatments when no new find is created" +msgstr "" +"Traitements associés quand il n'y a pas de création de nouveau mobilier" + +#: models_finds.py:1104 models_treatments.py:170 models_treatments.py:776 msgid "Cached name" msgstr "Nom en cache" -#: models_finds.py:1122 +#: models_finds.py:1126 msgid "FIND" msgstr "MOBILIER" -#: models_finds.py:1194 +#: models_finds.py:1198 msgid "Add to basket" msgstr "Ajouter au panier" -#: models_finds.py:1242 wizards.py:85 wizards.py:469 +#: models_finds.py:1246 wizards.py:85 wizards.py:469 msgid "Operation" msgstr "Opération (OA)" -#: models_finds.py:1566 +#: models_finds.py:1570 msgid "No container have been set - the localisation cannot be set." msgstr "" "Aucun contenant n'a été défini - la localisation ne peut être définie." -#: models_finds.py:1572 +#: models_finds.py:1576 msgid "The division number {} have not been set for the warehouse {}." msgstr "" "La division numéro {} n'a pas été définie pour le lieu de conservation {}." -#: models_finds.py:1742 +#: models_finds.py:1746 msgid "Person" msgstr "Individu" -#: models_finds.py:1748 +#: models_finds.py:1752 msgid "Property" msgstr "Propriété" -#: models_finds.py:1749 +#: models_finds.py:1753 msgid "Properties" msgstr "Propriétés" @@ -1488,12 +1495,12 @@ msgctxt "key for text search" msgid "other-reference" msgstr "autre-reference" -#: models_treatments.py:95 models_treatments.py:717 +#: models_treatments.py:95 models_treatments.py:718 msgctxt "key for text search" msgid "index" msgstr "index" -#: models_treatments.py:103 models_treatments.py:721 +#: models_treatments.py:103 models_treatments.py:722 msgctxt "key for text search" msgid "type" msgstr "type" @@ -1505,94 +1512,85 @@ msgstr "" "destination pour un déplacement." #: models_treatments.py:157 -msgid "Related finds for non-destructive treatment" -msgstr "Mobilier associé pour les traitements non-destructifs" - -#: models_treatments.py:160 msgid "Estimated cost" msgstr "Coût estimé" -#: models_treatments.py:162 +#: models_treatments.py:159 msgid "Quoted cost" msgstr "Coût devisé" -#: models_treatments.py:164 +#: models_treatments.py:161 msgid "Realized cost" msgstr "Coût réalisé" -#: models_treatments.py:166 +#: models_treatments.py:163 msgid "Insurance cost" msgstr "Coût d'assurance" -#: models_treatments.py:168 +#: models_treatments.py:165 msgid "Target a basket" msgstr "Appliquer à un panier" -#: models_treatments.py:179 templates/ishtar/sheet_find.html:243 -#: templates/ishtar/sheet_treatmentfile.html:61 -msgid "Treatments" -msgstr "Traitements" - -#: models_treatments.py:199 +#: models_treatments.py:196 msgid "TREATMENT" msgstr "TRAITEMENT" -#: models_treatments.py:262 templates/ishtar/sheet_treatment.html:66 +#: models_treatments.py:259 templates/ishtar/sheet_treatment.html:107 msgid "Downstream finds" msgstr "Mobilier aval" -#: models_treatments.py:526 templates/ishtar/sheet_find.html:252 +#: models_treatments.py:527 templates/ishtar/sheet_find.html:252 #: templates/ishtar/sheet_find.html:289 templates/ishtar/sheet_find.html:327 msgid "Doer" msgstr "Opérateur" -#: models_treatments.py:527 models_treatments.py:528 -#: templates/ishtar/sheet_treatment.html:56 +#: models_treatments.py:528 models_treatments.py:529 +#: templates/ishtar/sheet_treatment.html:97 msgid "Related finds" msgstr "Mobilier associé" -#: models_treatments.py:670 +#: models_treatments.py:671 msgid "Is upstream" msgstr "Est en amont" -#: models_treatments.py:682 +#: models_treatments.py:683 msgid "Treatment request types" msgstr "Types de demande de traitement" -#: models_treatments.py:705 +#: models_treatments.py:706 msgctxt "key for text search" msgid "name" msgstr "nom" -#: models_treatments.py:709 +#: models_treatments.py:710 msgctxt "key for text search" msgid "reference" msgstr "reference" -#: models_treatments.py:725 +#: models_treatments.py:726 msgctxt "key for text search" msgid "in-charge" msgstr "responsable" -#: models_treatments.py:729 +#: models_treatments.py:730 msgctxt "key for text search" msgid "applicant" msgstr "demandeur" -#: models_treatments.py:733 +#: models_treatments.py:734 msgctxt "key for text search" msgid "applicant-organisation" msgstr "demandeur-organisation" -#: models_treatments.py:746 +#: models_treatments.py:747 msgid "Internal reference" msgstr "Référence interne" -#: models_treatments.py:755 +#: models_treatments.py:756 msgid "Person in charge" msgstr "Personne responsable" -#: models_treatments.py:781 +#: models_treatments.py:782 msgid "Treatment requests" msgstr "Demandes de traitement" @@ -1709,6 +1707,7 @@ msgid "CSV" msgstr "CSV" #: templates/ishtar/sheet_find.html:360 +#: templates/ishtar/sheet_treatment.html:121 msgid "Associated documents" msgstr "Documents associés" @@ -1716,25 +1715,26 @@ msgstr "Documents associés" msgid "Content" msgstr "Contenu" -#: templates/ishtar/sheet_treatment.html:25 +#: templates/ishtar/sheet_treatment.html:41 +#: templates/ishtar/sheet_treatment.html:129 +#: templates/ishtar/sheet_treatmentfile.html:73 +msgid "Administrative acts" +msgstr "Actes administratifs" + +#: templates/ishtar/sheet_treatment.html:63 msgctxt "Treatment" msgid "Closed" msgstr "Close" -#: templates/ishtar/sheet_treatment.html:27 +#: templates/ishtar/sheet_treatment.html:65 msgctxt "Treatment" msgid "Active" msgstr "Actif" -#: templates/ishtar/sheet_treatment.html:71 +#: templates/ishtar/sheet_treatment.html:112 msgid "Related operations" msgstr "Opérations associées" -#: templates/ishtar/sheet_treatment.html:82 -#: templates/ishtar/sheet_treatmentfile.html:73 -msgid "Administrative acts" -msgstr "Actes administratifs" - #: templates/ishtar/sheet_treatmentfile.html:24 msgctxt "Treatment request" msgid "Closed" diff --git a/translations/fr/archaeological_operations.po b/translations/fr/archaeological_operations.po index 5d4bd0631..abd3b3e89 100644 --- a/translations/fr/archaeological_operations.po +++ b/translations/fr/archaeological_operations.po @@ -18,21 +18,21 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n>1;\n" "X-Generator: Zanata 4.6.2\n" -#: admin.py:91 models.py:244 models.py:836 +#: admin.py:91 models.py:245 models.py:852 msgid "Point" msgstr "Point" -#: admin.py:93 models.py:245 models.py:837 +#: admin.py:93 models.py:246 models.py:853 msgid "Multi polygon" msgstr "Polygones multi-parties" -#: forms.py:64 forms.py:1061 forms.py:1077 forms.py:1083 models.py:1931 +#: forms.py:64 forms.py:1061 forms.py:1077 forms.py:1083 models.py:1955 #: templates/ishtar/blocks/window_tables/parcels.html:9 -#: templates/ishtar/sheet_operation.html:250 +#: templates/ishtar/sheet_operation.html:254 msgid "Parcels" msgstr "Parcelles" -#: forms.py:67 forms.py:200 forms.py:1036 models.py:1915 +#: forms.py:67 forms.py:200 forms.py:1036 models.py:1939 #: templates/ishtar/blocks/window_tables/parcels.html:6 #: templates/ishtar/dashboards/dashboard_operation.html:432 #: templates/ishtar/dashboards/dashboard_operation.html:446 @@ -41,22 +41,22 @@ msgstr "Parcelles" msgid "Town" msgstr "Commune" -#: forms.py:69 forms.py:480 forms.py:763 forms.py:1400 models.py:734 -#: models.py:1489 models.py:1696 models.py:1913 +#: forms.py:69 forms.py:480 forms.py:763 forms.py:1400 models.py:750 +#: models.py:1513 models.py:1720 models.py:1937 #: templates/ishtar/blocks/window_tables/parcels.html:7 msgid "Year" msgstr "Année" -#: forms.py:72 models.py:1916 +#: forms.py:72 models.py:1940 #: templates/ishtar/blocks/window_tables/parcels.html:8 msgid "Section" msgstr "Section" -#: forms.py:75 models.py:1918 +#: forms.py:75 models.py:1942 msgid "Parcel number" msgstr "Numéro de parcelle" -#: forms.py:77 models.py:1920 models.py:1939 models.py:2000 +#: forms.py:77 models.py:1944 models.py:1963 models.py:2024 msgid "Public domain" msgstr "Domaine public" @@ -92,8 +92,8 @@ msgstr "Il y a des parcelles identiques." msgid "Relation type" msgstr "Type de relation" -#: forms.py:373 forms.py:1254 ishtar_menu.py:32 models.py:842 models.py:1394 -#: models.py:1405 models.py:1491 models.py:1678 models.py:1912 +#: forms.py:373 forms.py:1254 ishtar_menu.py:32 models.py:858 models.py:1418 +#: models.py:1429 models.py:1515 models.py:1702 models.py:1936 #: templates/ishtar/sheet_operation.html:4 wizards.py:320 wizards.py:331 msgid "Operation" msgstr "Opération (OA)" @@ -134,15 +134,15 @@ msgstr "Opération - 080 - Relations" msgid "Full text search" msgstr "Recherche en texte intégral" -#: forms.py:481 models.py:735 +#: forms.py:481 models.py:751 msgid "Numeric reference" msgstr "Identifiant numérique" -#: forms.py:488 forms.py:1064 forms.py:1412 models.py:1930 models.py:2142 +#: forms.py:488 forms.py:1064 forms.py:1412 models.py:1954 models.py:2166 msgid "Parcel" msgstr "Parcelle" -#: forms.py:491 forms.py:1415 models.py:1395 +#: forms.py:491 forms.py:1415 models.py:1419 #: templates/ishtar/dashboards/dashboard_operation.html:390 #: templates/ishtar/dashboards/dashboard_operation.html:411 #: templates/ishtar/dashboards/dashboard_operation.html:643 @@ -151,17 +151,17 @@ msgstr "Parcelle" msgid "Department" msgstr "Département" -#: forms.py:492 forms.py:1148 forms.py:1241 forms.py:1325 models.py:213 +#: forms.py:492 forms.py:1148 forms.py:1241 forms.py:1325 models.py:214 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:7 #: templates/ishtar/sheet_operation.html:29 msgid "Name" msgstr "Nom" -#: forms.py:493 forms.py:761 models.py:797 +#: forms.py:493 forms.py:761 models.py:813 msgid "Address / Locality" msgstr "Adresse / Lieu-dit" -#: forms.py:494 forms.py:678 forms.py:757 models.py:742 +#: forms.py:494 forms.py:678 forms.py:757 models.py:758 msgid "Operation type" msgstr "Type d'opération" @@ -169,26 +169,26 @@ msgstr "Type d'opération" msgid "Is open?" msgstr "Est ouvert ?" -#: forms.py:503 forms.py:793 models.py:727 +#: forms.py:503 forms.py:793 models.py:743 msgid "In charge" msgstr "Responsable du suivi scientifique" -#: forms.py:510 models.py:1672 +#: forms.py:510 models.py:1696 msgid "Scientist in charge" msgstr "Responsable scientifique" -#: forms.py:512 forms.py:680 forms.py:783 models.py:725 +#: forms.py:512 forms.py:680 forms.py:783 models.py:741 msgid "Operator" msgstr "Opérateur" -#: forms.py:521 forms.py:1153 forms.py:1243 forms.py:1330 models.py:217 -#: models.py:744 +#: forms.py:521 forms.py:1153 forms.py:1243 forms.py:1330 models.py:218 +#: models.py:760 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:9 msgid "Remains" msgstr "Vestiges" #: forms.py:522 forms.py:1131 forms.py:1150 forms.py:1242 forms.py:1327 -#: models.py:215 models.py:750 +#: models.py:216 models.py:766 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8 msgid "Periods" msgstr "Périodes" @@ -213,8 +213,8 @@ msgstr "Terminé après" msgid "Search within relations" msgstr "Rechercher parmi les relations" -#: forms.py:529 forms.py:841 forms.py:1245 forms.py:1340 models.py:221 -#: models.py:798 +#: forms.py:529 forms.py:841 forms.py:1245 forms.py:1340 models.py:222 +#: models.py:814 msgid "Comment" msgstr "Commentaire" @@ -222,23 +222,23 @@ msgstr "Commentaire" msgid "Abstract (full text search)" msgstr "Résumé (recherche en texte intégral)" -#: forms.py:532 forms.py:844 models.py:800 +#: forms.py:532 forms.py:844 models.py:816 msgid "Comment about scientific documentation" msgstr "Commentaire relatif à la documentation scientifique" -#: forms.py:533 forms.py:846 models.py:815 +#: forms.py:533 forms.py:846 models.py:831 msgid "Record quality" msgstr "Qualité d'enregistrement" -#: forms.py:534 forms.py:812 models.py:762 +#: forms.py:534 forms.py:812 models.py:778 msgid "Report processing" msgstr "Traitement du rapport" -#: forms.py:536 forms.py:849 models.py:810 +#: forms.py:536 forms.py:849 models.py:826 msgid "Virtual operation" msgstr "Opération virtuelle" -#: forms.py:538 forms.py:1188 forms.py:1192 models.py:257 +#: forms.py:538 forms.py:1188 forms.py:1192 models.py:258 msgid "Archaeological site" msgstr "Entité (EA)" @@ -250,7 +250,7 @@ msgstr "Créé par" msgid "Modified by" msgstr "Modifié par" -#: forms.py:557 forms.py:834 models.py:822 +#: forms.py:557 forms.py:834 models.py:838 msgid "Documentation received" msgstr "Documentation reçue" @@ -262,7 +262,7 @@ msgstr "Date limite de versement de la documentation avant" msgid "Documentation deadline after" msgstr "Date limite de versement de la documentation après" -#: forms.py:563 forms.py:839 models.py:826 +#: forms.py:563 forms.py:839 models.py:842 msgid "Finds received" msgstr "Mobilier reçu" @@ -282,12 +282,12 @@ msgstr "Rechercher une opération" msgid "Associated file" msgstr "Dossier associé" -#: forms.py:643 forms.py:937 models.py:1023 models.py:1404 models.py:1490 -#: models.py:1683 wizards.py:83 +#: forms.py:643 forms.py:937 models.py:1039 models.py:1428 models.py:1514 +#: models.py:1707 wizards.py:83 msgid "Archaeological file" msgstr "Dossier archéologique" -#: forms.py:650 forms.py:654 models.py:817 +#: forms.py:650 forms.py:654 models.py:833 msgid "Abstract" msgstr "Résumé" @@ -303,7 +303,7 @@ msgstr "mois" msgid "years" msgstr "années" -#: forms.py:660 models.py:711 +#: forms.py:660 models.py:727 msgid "Creation date" msgstr "Date de création" @@ -365,11 +365,11 @@ msgstr "Général" msgid "Operation - 010 - General" msgstr "Opération - 010 - Général" -#: forms.py:759 models.py:796 +#: forms.py:759 models.py:812 msgid "Generic name" msgstr "Nom générique" -#: forms.py:768 models.py:764 +#: forms.py:768 models.py:780 msgid "Old code" msgstr "Ancien code" @@ -377,7 +377,7 @@ msgstr "Ancien code" msgid "Head scientist" msgstr "Responsable scientifique" -#: forms.py:790 models.py:795 +#: forms.py:790 models.py:811 msgid "Operator reference" msgstr "Référence de l'opérateur" @@ -385,23 +385,23 @@ msgstr "Référence de l'opérateur" msgid "Total surface (m2)" msgstr "Surface totale (m2)" -#: forms.py:807 models.py:57 models.py:714 models.py:2144 +#: forms.py:807 models.py:57 models.py:730 models.py:2168 msgid "Start date" msgstr "Date de début" -#: forms.py:808 models.py:716 +#: forms.py:808 models.py:732 msgid "Excavation end date" msgstr "Date de fin de chantier" -#: forms.py:810 models.py:717 +#: forms.py:810 models.py:733 msgid "Report delivery date" msgstr "Date de livraison du rapport" -#: forms.py:831 models.py:819 +#: forms.py:831 models.py:835 msgid "Deadline for submission of the documentation" msgstr "Date limite de versement de la documentation" -#: forms.py:836 models.py:824 +#: forms.py:836 models.py:840 msgid "Deadline for submission of the finds" msgstr "Date limite de versement du mobilier" @@ -430,7 +430,7 @@ msgstr "" msgid "Bad operation code" msgstr "Mauvais code d'opération" -#: forms.py:933 models.py:1038 +#: forms.py:933 models.py:1054 msgid "Operation code" msgstr "Code de l'opération" @@ -442,19 +442,19 @@ msgstr "Saisie judiciaire" msgid "Operation - 015 - Court-ordered seizure" msgstr "Opération - 015 - Saisie judiciaire" -#: forms.py:973 models.py:829 +#: forms.py:973 models.py:845 msgid "Seizure name" msgstr "Nom de la saisie" -#: forms.py:976 models.py:830 +#: forms.py:976 models.py:846 msgid "Official report number" msgstr "Numéro de procès-verbal" -#: forms.py:979 models.py:832 +#: forms.py:979 models.py:848 msgid "Name of the protagonist" msgstr "Nom du protagoniste" -#: forms.py:984 forms.py:991 models.py:731 +#: forms.py:984 forms.py:991 models.py:747 msgid "Collaborators" msgstr "Collaborateurs" @@ -470,20 +470,20 @@ msgstr "Information archéologie préventive - fouille" msgid "Operation - 033 - Preventive - Excavation" msgstr "Opération - 033 - Préventif - Fouille" -#: forms.py:1004 models.py:748 +#: forms.py:1004 models.py:764 #: templates/ishtar/dashboards/dashboard_operation.html:701 msgid "Cost (euros)" msgstr "Coût (euros)" -#: forms.py:1005 models.py:753 +#: forms.py:1005 models.py:769 msgid "Scheduled man-days" msgstr "Jours-hommes prévus" -#: forms.py:1007 models.py:756 +#: forms.py:1007 models.py:772 msgid "Optional man-days" msgstr "Jours-hommes optionnels" -#: forms.py:1009 models.py:759 +#: forms.py:1009 models.py:775 msgid "Effective man-days" msgstr "Jours-hommes effectifs" @@ -495,20 +495,20 @@ msgstr "Information archéologie préventive - diagnostic" msgid "Operation - 037 - Preventive - Diagnostic" msgstr "Opération - 037 - Préventif - Diagnostic" -#: forms.py:1025 models.py:779 +#: forms.py:1025 models.py:795 msgid "Prescription on zoning" msgstr "Prescription sur zonage" -#: forms.py:1027 models.py:782 +#: forms.py:1027 models.py:798 msgid "Prescription on large area" msgstr "Prescription sur une vaste surface" -#: forms.py:1030 models.py:784 +#: forms.py:1030 models.py:800 msgid "Prescription on geoarchaeological context" msgstr "Prescription sur un contexte géoarchéologique" -#: forms.py:1034 forms.py:1050 forms.py:1055 forms.py:1359 models.py:128 -#: models.py:219 models.py:506 models.py:746 models.py:1706 +#: forms.py:1034 forms.py:1050 forms.py:1055 forms.py:1359 models.py:129 +#: models.py:220 models.py:522 models.py:762 models.py:1730 msgid "Towns" msgstr "Communes" @@ -544,12 +544,12 @@ msgstr "Type de vestige" msgid "Operation - 070 - Periods" msgstr "Opération - 070 - Périodes" -#: forms.py:1138 templates/ishtar/sheet_operation.html:273 -#: templates/ishtar/sheet_operation.html:310 +#: forms.py:1138 templates/ishtar/sheet_operation.html:277 +#: templates/ishtar/sheet_operation.html:314 msgid "Period" msgstr "Période" -#: forms.py:1147 forms.py:1239 forms.py:1324 models.py:212 +#: forms.py:1147 forms.py:1239 forms.py:1324 models.py:213 msgid "Reference" msgstr "Référence" @@ -557,7 +557,7 @@ msgstr "Référence" msgid "This reference already exists." msgstr "Cette référence existe déjà." -#: forms.py:1203 models.py:258 models.py:807 +#: forms.py:1203 models.py:259 models.py:823 #: templates/ishtar/sheet_operation.html:194 msgid "Archaeological sites" msgstr "Entités archéologiques" @@ -582,35 +582,35 @@ msgstr "Voulez-vous clore cette opération ?" msgid "Would you like to delete this operation?" msgstr "Voulez-vous supprimer cette opération ?" -#: forms.py:1248 models.py:223 +#: forms.py:1248 models.py:224 msgid "Top operation" msgstr "Opération chapeau" -#: forms.py:1260 forms.py:1333 models.py:226 +#: forms.py:1260 forms.py:1333 models.py:227 msgid "National Geographic Institute locality" msgstr "Lieu-dit IGN" -#: forms.py:1263 forms.py:1337 models.py:229 +#: forms.py:1263 forms.py:1337 models.py:230 msgid "Cadastral locality" msgstr "Lieu-dit cadastre" -#: forms.py:1266 forms.py:1374 models.py:233 +#: forms.py:1266 forms.py:1374 models.py:234 msgid "Shipwreck name" msgstr "Nom de l'épave" -#: forms.py:1269 forms.py:1382 models.py:235 +#: forms.py:1269 forms.py:1382 models.py:236 msgid "Oceanographic service localisation" msgstr "Localisation SHOM" -#: forms.py:1272 forms.py:1376 models.py:237 +#: forms.py:1272 forms.py:1376 models.py:238 msgid "Shipwreck code" msgstr "Code épave" -#: forms.py:1274 forms.py:1378 models.py:239 +#: forms.py:1274 forms.py:1378 models.py:240 msgid "Sinking date" msgstr "Date de naufrage" -#: forms.py:1276 forms.py:1380 models.py:241 +#: forms.py:1276 forms.py:1380 models.py:242 msgid "Discovery area" msgstr "Zone de découverte" @@ -634,11 +634,11 @@ msgstr "Sous-marin / subaquatique" msgid "Archaeological site - 030 - Underwater" msgstr "Site archéologique - 030 - Sous-marin / subaquatique" -#: forms.py:1401 forms.py:1535 models.py:1663 +#: forms.py:1401 forms.py:1535 models.py:1687 msgid "Index" msgstr "Index" -#: forms.py:1409 forms.py:1469 models.py:1418 models.py:1657 +#: forms.py:1409 forms.py:1469 models.py:1442 models.py:1681 msgid "Act type" msgstr "Type d'acte" @@ -646,7 +646,7 @@ msgstr "Type d'acte" msgid "Indexed?" msgstr "Indexé ?" -#: forms.py:1416 forms.py:1474 models.py:1697 +#: forms.py:1416 forms.py:1474 models.py:1721 #: templates/ishtar/blocks/window_tables/administrativacts.html:9 msgid "Object" msgstr "Objet" @@ -659,7 +659,7 @@ msgstr "Rechercher un acte administratif" msgid "You should select an administrative act." msgstr "Vous devez sélectionner un acte administratif." -#: forms.py:1477 models.py:1694 +#: forms.py:1477 models.py:1718 msgid "Signature date" msgstr "Date de signature" @@ -721,12 +721,12 @@ msgstr "Clôture" msgid "Deletion" msgstr "Suppression" -#: ishtar_menu.py:61 models.py:1713 +#: ishtar_menu.py:61 models.py:1737 #: templates/ishtar/sheet_administrativeact.html:4 msgid "Administrative act" msgstr "Acte administratif" -#: ishtar_menu.py:87 models.py:249 models.py:802 +#: ishtar_menu.py:87 models.py:250 models.py:818 msgid "Documents" msgstr "Documents" @@ -742,17 +742,17 @@ msgstr "Tableau de bord" msgid "General informations" msgstr "Informations générales" -#: ishtar_menu.py:143 models.py:843 +#: ishtar_menu.py:143 models.py:859 #: templates/ishtar/dashboards/dashboard_operation.html:8 #: templates/ishtar/sheet_site.html:65 msgid "Operations" msgstr "Opérations" -#: models.py:56 models.py:76 models.py:94 models.py:2622 +#: models.py:56 models.py:76 models.py:94 models.py:2646 msgid "Order" msgstr "Ordre" -#: models.py:58 models.py:2145 +#: models.py:58 models.py:2169 msgid "End date" msgstr "Date de fin" @@ -784,667 +784,667 @@ msgstr "Type de qualité d'enregistrement" msgid "Types of record quality" msgstr "Types de qualité d'enregistrement" -#: models.py:135 +#: models.py:136 msgctxt "key for text search" msgid "reference" msgstr "reference" -#: models.py:139 models.py:569 +#: models.py:140 models.py:585 msgctxt "key for text search" msgid "name" msgstr "nom" -#: models.py:143 models.py:601 tests.py:1625 +#: models.py:144 models.py:617 tests.py:1625 msgctxt "key for text search" msgid "period" msgstr "periode" -#: models.py:147 models.py:597 tests.py:1656 +#: models.py:148 models.py:613 tests.py:1656 msgctxt "key for text search" msgid "remain" msgstr "vestige" -#: models.py:151 models.py:557 tests.py:1633 +#: models.py:152 models.py:573 tests.py:1633 msgctxt "key for text search" msgid "town" msgstr "commune" -#: models.py:155 models.py:625 +#: models.py:156 models.py:641 msgctxt "key for text search" msgid "comment" msgstr "commentaire" -#: models.py:159 +#: models.py:160 msgctxt "key for text search" msgid "locality-ngi" msgstr "lieu-dit-ign" -#: models.py:163 +#: models.py:164 msgctxt "key for text search" msgid "locality-cadastral" msgstr "lieu-dit-cadastre" -#: models.py:167 +#: models.py:168 msgctxt "key for text search" msgid "shipwreck-name" msgstr "nom-epave" -#: models.py:172 +#: models.py:173 msgctxt "key for text search" msgid "oceanographic-service-localisation" msgstr "localisation-shom" -#: models.py:176 +#: models.py:177 msgctxt "key for text search" msgid "shipwreck-code" msgstr "code-epave" -#: models.py:180 +#: models.py:181 msgctxt "key for text search" msgid "sinking-date" msgstr "date-naufrage" -#: models.py:184 +#: models.py:185 msgctxt "key for text search" msgid "discovery-area" msgstr "zone-decouverte" -#: models.py:188 models.py:203 +#: models.py:189 models.py:204 msgctxt "key for text search" msgid "operation" msgstr "operation" -#: models.py:192 +#: models.py:193 msgctxt "key for text search" msgid "top-operation" msgstr "operation-chapeau" -#: models.py:251 models.py:804 models.py:1926 +#: models.py:252 models.py:820 models.py:1950 msgid "Cached name" msgstr "Nom en cache" -#: models.py:280 +#: models.py:281 msgid "SITE" msgstr "SITE" -#: models.py:345 +#: models.py:361 msgid "Unknown" msgstr "Inconnu" -#: models.py:348 +#: models.py:364 msgid "Virtual operation of site: {}" msgstr "Opération virtuelle du site : {}" -#: models.py:488 +#: models.py:504 msgid "Associated file (label)" msgstr "Dossier associé (nom)" -#: models.py:489 +#: models.py:505 msgid "Operator name" msgstr "Nom de l'opérateur" -#: models.py:490 +#: models.py:506 msgid "Scientist (full name)" msgstr "Responsable scientifique (nom complet)" -#: models.py:491 +#: models.py:507 msgid "Associated file (external ID)" msgstr "Dossier associé (identifiant)" -#: models.py:492 +#: models.py:508 msgid "Scientist (title)" msgstr "Responsable scientifique (titre)" -#: models.py:493 +#: models.py:509 msgid "Scientist (surname)" msgstr "Responsable scientifique (nom)" -#: models.py:494 +#: models.py:510 msgid "Scientist (name)" msgstr "Scientifique (nom)" -#: models.py:495 +#: models.py:511 msgid "Scientist - Organization (name)" msgstr "Scientifique - Organisation (nom)" -#: models.py:496 +#: models.py:512 msgid "In charge (title)" msgstr "Responsable du suivi scientifique (titre)" -#: models.py:497 +#: models.py:513 msgid "In charge (surname)" msgstr "Responsable du suivi scientifique (prénom)" -#: models.py:498 +#: models.py:514 msgid "In charge (name)" msgstr "Responsable du suivi scientifique (nom)" -#: models.py:499 +#: models.py:515 msgid "In charge - Organization (name)" msgstr "Responsable du suivi scientifique - Organisation (nom)" -#: models.py:504 +#: models.py:520 msgid "Archaeological sites (reference)" msgstr "Entités archéologiques (référence)" -#: models.py:545 models.py:1502 tests.py:1628 tests.py:1673 +#: models.py:561 models.py:1526 tests.py:1628 tests.py:1673 msgctxt "key for text search" msgid "year" msgstr "annee" -#: models.py:549 +#: models.py:565 msgctxt "key for text search" msgid "operation-code" msgstr "code-operation" -#: models.py:553 models.py:1514 +#: models.py:569 models.py:1538 msgctxt "key for text search" msgid "patriarche" msgstr "patriarche" -#: models.py:561 models.py:1534 +#: models.py:577 models.py:1558 msgctxt "key for text search" msgid "parcel" msgstr "parcelle" -#: models.py:565 +#: models.py:581 msgctxt "key for text search" msgid "department" msgstr "departement" -#: models.py:573 +#: models.py:589 msgctxt "key for text search" msgid "address" msgstr "adresse" -#: models.py:577 models.py:1518 +#: models.py:593 models.py:1542 msgctxt "key for text search" msgid "type" msgstr "type" -#: models.py:581 tests.py:1661 +#: models.py:597 tests.py:1661 msgctxt "key for text search" msgid "is-open" msgstr "est-ouvert" -#: models.py:585 +#: models.py:601 msgctxt "key for text search" msgid "in-charge" msgstr "responsable-suivi" -#: models.py:589 +#: models.py:605 msgctxt "key for text search" msgid "scientist" msgstr "scientifique" -#: models.py:593 +#: models.py:609 msgctxt "key for text search" msgid "operator" msgstr "operateur" -#: models.py:605 +#: models.py:621 msgctxt "key for text search" msgid "start-before" msgstr "commence-avant" -#: models.py:609 +#: models.py:625 msgctxt "key for text search" msgid "start-after" msgstr "commence-apres" -#: models.py:613 +#: models.py:629 msgctxt "key for text search" msgid "end-before" msgstr "fini-apres" -#: models.py:617 +#: models.py:633 msgctxt "key for text search" msgid "end-after" msgstr "fini-avant" -#: models.py:621 +#: models.py:637 msgctxt "key for text search" msgid "relation-types" msgstr "type-relation" -#: models.py:629 +#: models.py:645 msgctxt "key for text search" msgid "abstract" msgstr "resume" -#: models.py:634 +#: models.py:650 msgctxt "key for text search" msgid "scientific-documentation-comment" msgstr "commentaire-documentation-scientifique" -#: models.py:638 +#: models.py:654 msgctxt "key for text search" msgid "record-quality" msgstr "qualite-enregistrement" -#: models.py:643 +#: models.py:659 msgctxt "key for text search" msgid "report-processing" msgstr "traitement-rapport" -#: models.py:648 +#: models.py:664 msgctxt "key for text search" msgid "virtual-operation" msgstr "operation-virtuelle" -#: models.py:653 models.py:696 +#: models.py:669 models.py:712 msgctxt "key for text search" msgid "site" msgstr "site" -#: models.py:657 models.py:1552 +#: models.py:673 models.py:1576 msgctxt "key for text search" msgid "created-by" msgstr "cree-par" -#: models.py:661 models.py:1556 +#: models.py:677 models.py:1580 msgctxt "key for text search" msgid "modified-by" msgstr "modifie-par" -#: models.py:665 +#: models.py:681 msgctxt "key for text search" msgid "documentation-received" msgstr "documentation-recue" -#: models.py:669 +#: models.py:685 msgctxt "key for text search" msgid "documentation-deadline-before" msgstr "documentation-date-limite-avant" -#: models.py:673 +#: models.py:689 msgctxt "key for text search" msgid "documentation-deadline-after" msgstr "documentation-date-limite-après" -#: models.py:677 +#: models.py:693 msgctxt "key for text search" msgid "finds-received" msgstr "mobilier-recu" -#: models.py:681 +#: models.py:697 msgctxt "key for text search" msgid "finds-deadline-before" msgstr "mobilier-date-limite-avant" -#: models.py:685 +#: models.py:701 msgctxt "key for text search" msgid "finds-deadline-after" msgstr "mobilier-date-limite-apres" -#: models.py:698 +#: models.py:714 msgctxt "key for text search" msgid "file" msgstr "dossier" -#: models.py:713 templates/ishtar/sheet_operation.html:60 +#: models.py:729 templates/ishtar/sheet_operation.html:60 msgid "Closing date" msgstr "Date de clôture" -#: models.py:720 +#: models.py:736 msgid "In charge scientist" msgstr "Responsable du suivi scientifique" -#: models.py:739 models.py:1908 +#: models.py:755 models.py:1932 msgid "File" msgstr "Dossier" -#: models.py:743 +#: models.py:759 msgid "Surface (m2)" msgstr "Surface (m2)" -#: models.py:812 +#: models.py:828 msgid "" "If checked, it means that this operation have not been officialy registered." msgstr "" "Si coché, cela signifie que cette opération n'a pas été officiellement " "enregistrée." -#: models.py:891 +#: models.py:907 msgid "OPE" msgstr "OPE" -#: models.py:988 +#: models.py:1004 msgid "Intercommunal" msgstr "Intercommunal" -#: models.py:1024 +#: models.py:1040 msgid "Code patriarche" msgstr "Code patriarche" -#: models.py:1066 +#: models.py:1082 msgid "This operation code already exists for this year" msgstr "Ce code d'opération existe déjà pour cette année." -#: models.py:1111 +#: models.py:1135 msgid "Number of parcels" msgstr "Nombre de parcelles" -#: models.py:1121 +#: models.py:1145 msgid "Number of administrative acts" msgstr "Nombre d'actes administratifs" -#: models.py:1129 +#: models.py:1153 msgid "Number of indexed administrative acts" msgstr "Nombre d'actes administratifs indexés" -#: models.py:1137 +#: models.py:1161 msgid "Number of context records" msgstr "Nombre d'Unités d'Enregistrement" -#: models.py:1173 +#: models.py:1197 msgid "Number of finds" msgstr "Nombre d'éléments de mobilier" -#: models.py:1218 +#: models.py:1242 msgid "No type" msgstr "Pas de type" -#: models.py:1249 +#: models.py:1273 msgid "Number of sources" msgstr "Nombre de documents" -#: models.py:1287 templates/ishtar/dashboards/dashboard_operation.html:309 +#: models.py:1311 templates/ishtar/dashboards/dashboard_operation.html:309 #: templates/ishtar/dashboards/dashboard_operation.html:575 #: templates/ishtar/dashboards/dashboard_operation.html:611 msgid "Mean" msgstr "Moyenne" -#: models.py:1349 +#: models.py:1373 msgid "Operation relation type" msgstr "Type de relation entre opérations" -#: models.py:1350 +#: models.py:1374 msgid "Operation relation types" msgstr "Types de relation entre opérations" -#: models.py:1363 +#: models.py:1387 msgid "Operation record relation" msgstr "Relation entre opérations" -#: models.py:1364 +#: models.py:1388 msgid "Operation record relations" msgstr "Relations entre opérations" -#: models.py:1406 models.py:1688 +#: models.py:1430 models.py:1712 msgid "Treatment request" msgstr "Demande de traitement" -#: models.py:1407 models.py:1693 +#: models.py:1431 models.py:1717 msgid "Treatment" msgstr "Traitement" -#: models.py:1409 +#: models.py:1433 msgid "Intended to" msgstr "Destiné à" -#: models.py:1411 +#: models.py:1435 msgid "Code" msgstr "Code" -#: models.py:1414 +#: models.py:1438 msgid "Associated template" msgstr "Patron associé" -#: models.py:1415 +#: models.py:1439 msgid "Indexed" msgstr "Indexé" -#: models.py:1419 +#: models.py:1443 msgid "Act types" msgstr "Types d'acte" -#: models.py:1489 models.py:1734 +#: models.py:1513 models.py:1758 #: templates/ishtar/blocks/window_tables/administrativacts.html:6 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:6 msgid "Ref." msgstr "Réf." -#: models.py:1506 +#: models.py:1530 msgctxt "key for text search" msgid "index" msgstr "index" -#: models.py:1510 +#: models.py:1534 msgctxt "key for text search" msgid "other-ref" msgstr "autre-ref" -#: models.py:1522 +#: models.py:1546 msgctxt "key for text search" msgid "indexed" msgstr "indexe" -#: models.py:1526 +#: models.py:1550 msgctxt "key for text search" msgid "operation-town" msgstr "operation-commune" -#: models.py:1530 +#: models.py:1554 msgctxt "key for text search" msgid "file-town" msgstr "dossier-commune" -#: models.py:1540 +#: models.py:1564 msgctxt "key for text search" msgid "operation-department" msgstr "operation-departement" -#: models.py:1544 +#: models.py:1568 msgctxt "key for text search" msgid "file-department" msgstr "dossier-departement" -#: models.py:1548 +#: models.py:1572 msgctxt "key for text search" msgid "object" msgstr "objet" -#: models.py:1560 +#: models.py:1584 msgctxt "key for text search" msgid "signature-before" msgstr "signature-avant" -#: models.py:1564 +#: models.py:1588 msgctxt "key for text search" msgid "signature-after" msgstr "signature-apres" -#: models.py:1568 +#: models.py:1592 msgctxt "key for text search" msgid "file-name" msgstr "dossier-nom" -#: models.py:1572 +#: models.py:1596 msgctxt "key for text search" msgid "general-contractor" msgstr "amenageur" -#: models.py:1577 +#: models.py:1601 msgctxt "key for text search" msgid "general-contractor-organization" msgstr "amenageur-organisation" -#: models.py:1582 +#: models.py:1606 msgctxt "key for text search" msgid "file-reference" msgstr "dossier-reference" -#: models.py:1586 +#: models.py:1610 msgctxt "key for text search" msgid "file-year" msgstr "dossier-annee" -#: models.py:1590 +#: models.py:1614 msgctxt "key for text search" msgid "file-other-reference" msgstr "dossier-autre-reference" -#: models.py:1594 +#: models.py:1618 msgctxt "key for text search" msgid "file-in-charge" msgstr "dossier-responsable" -#: models.py:1598 +#: models.py:1622 msgctxt "key for text search" msgid "file-permit-reference" msgstr "dossier-ref-permis" -#: models.py:1602 +#: models.py:1626 msgctxt "key for text search" msgid "treatment-name" msgstr "traitement-nom" -#: models.py:1606 +#: models.py:1630 msgctxt "key for text search" msgid "treatment-reference" msgstr "traitement-reference" -#: models.py:1610 +#: models.py:1634 msgctxt "key for text search" msgid "treatment-year" msgstr "traitement-annee" -#: models.py:1614 +#: models.py:1638 msgctxt "key for text search" msgid "treatment-index" msgstr "traitement-index" -#: models.py:1618 +#: models.py:1642 msgctxt "key for text search" msgid "treatment-type" msgstr "traitement-type" -#: models.py:1622 +#: models.py:1646 msgctxt "key for text search" msgid "treatment-file-name" msgstr "dossier-traitement-nom" -#: models.py:1626 +#: models.py:1650 msgctxt "key for text search" msgid "treatment-file-reference" msgstr "dossier-traitement-reference" -#: models.py:1630 +#: models.py:1654 msgctxt "key for text search" msgid "treatment-file-year" msgstr "dossier-traitement-annee" -#: models.py:1634 +#: models.py:1658 msgctxt "key for text search" msgid "treatment-file-index" msgstr "dossier-traitement-index" -#: models.py:1638 +#: models.py:1662 msgctxt "key for text search" msgid "treatment-file-type" msgstr "dossier-traitement-type" -#: models.py:1661 +#: models.py:1685 msgid "Person in charge of the operation" msgstr "Responsable d'opération" -#: models.py:1667 +#: models.py:1691 msgid "Archaeological preventive operator" msgstr "Opérateur d'archéologie préventive" -#: models.py:1675 +#: models.py:1699 msgid "Signatory" msgstr "Signataire" -#: models.py:1703 +#: models.py:1727 msgid "Departments" msgstr "Départements" -#: models.py:1704 +#: models.py:1728 msgid "Cached values get from associated departments" msgstr "Valeur en cache des départements associés" -#: models.py:1707 +#: models.py:1731 msgid "Cached values get from associated towns" msgstr "Valeur en cache des communes associées" -#: models.py:1714 templates/ishtar/sheet_operation.html:202 -#: templates/ishtar/sheet_operation.html:244 +#: models.py:1738 templates/ishtar/sheet_operation.html:202 +#: templates/ishtar/sheet_operation.html:248 msgid "Administrative acts" msgstr "Actes administratifs" -#: models.py:1837 +#: models.py:1861 msgid "This index already exists for this year" msgstr "Cet index existe déjà pour cette année." -#: models.py:1921 +#: models.py:1945 msgid "External ID" msgstr "Identifiant" -#: models.py:1924 +#: models.py:1948 msgid "External ID is set automatically" msgstr "L'identifiant est attribué automatiquement" -#: models.py:1925 +#: models.py:1949 msgid "Address - Locality" msgstr "Adresse - Lieu-dit" -#: models.py:2140 +#: models.py:2164 msgid "Owner" msgstr "Propriétaire" -#: models.py:2148 +#: models.py:2172 msgid "Parcel owner" msgstr "Propriétaire de parcelle" -#: models.py:2149 +#: models.py:2173 msgid "Parcel owners" msgstr "Propriétaires de parcelle" -#: models.py:2183 +#: models.py:2207 msgid "Recorded" msgstr "Enregistré" -#: models.py:2184 +#: models.py:2208 msgid "Effective" msgstr "Effectif" -#: models.py:2185 +#: models.py:2209 msgid "Active" msgstr "Actif" -#: models.py:2186 +#: models.py:2210 msgid "Field completed" msgstr "Terrain achevé" -#: models.py:2187 +#: models.py:2211 msgid "Associated report" msgstr "Rapport associé" -#: models.py:2188 +#: models.py:2212 msgid "Closed" msgstr "Clos" -#: models.py:2189 +#: models.py:2213 msgid "Documented and closed" msgstr "Documenté et clos" -#: models.py:2623 +#: models.py:2647 msgid "Is preventive" msgstr "Préventif" -#: models.py:2626 +#: models.py:2650 msgid "Operation type old" msgstr "Type d'opération - ancien" -#: models.py:2627 +#: models.py:2651 msgid "Operation types old" msgstr "Types d'opération - ancien" #: templates/ishtar/blocks/window_tables/administrativacts.html:7 -#: templates/ishtar/sheet_operation.html:263 -#: templates/ishtar/sheet_operation.html:327 +#: templates/ishtar/sheet_operation.html:267 +#: templates/ishtar/sheet_operation.html:331 msgid "Type" msgstr "Type" @@ -1488,12 +1488,12 @@ msgstr "État" #: templates/ishtar/dashboards/dashboard_operation.html:432 #: templates/ishtar/dashboards/dashboard_operation.html:463 #: templates/ishtar/dashboards/dashboard_operation.html:687 -#: templates/ishtar/sheet_operation.html:263 -#: templates/ishtar/sheet_operation.html:273 -#: templates/ishtar/sheet_operation.html:290 -#: templates/ishtar/sheet_operation.html:300 -#: templates/ishtar/sheet_operation.html:310 -#: templates/ishtar/sheet_operation.html:327 +#: templates/ishtar/sheet_operation.html:267 +#: templates/ishtar/sheet_operation.html:277 +#: templates/ishtar/sheet_operation.html:294 +#: templates/ishtar/sheet_operation.html:304 +#: templates/ishtar/sheet_operation.html:314 +#: templates/ishtar/sheet_operation.html:331 msgid "Number" msgstr "Nombre" @@ -1754,54 +1754,54 @@ msgstr "Parcelles associées" msgid "Document from this operation" msgstr "Documents de cette opération" -#: templates/ishtar/sheet_operation.html:212 -#: templates/ishtar/sheet_operation.html:255 +#: templates/ishtar/sheet_operation.html:213 +#: templates/ishtar/sheet_operation.html:259 msgid "Context records" msgstr "Unités d'Enregistrement" -#: templates/ishtar/sheet_operation.html:217 +#: templates/ishtar/sheet_operation.html:218 msgid "Context record relations" msgstr "Relations entre Unités d'Enregistrement" -#: templates/ishtar/sheet_operation.html:222 +#: templates/ishtar/sheet_operation.html:223 msgid "Documents from associated context records" msgstr "Documents des Unités d'Enregistrement associées" -#: templates/ishtar/sheet_operation.html:227 -#: templates/ishtar/sheet_operation.html:282 +#: templates/ishtar/sheet_operation.html:229 +#: templates/ishtar/sheet_operation.html:286 #: templates/ishtar/sheet_site.html:70 msgid "Finds" msgstr "Mobilier" -#: templates/ishtar/sheet_operation.html:232 +#: templates/ishtar/sheet_operation.html:234 msgid "Documents from associated finds" msgstr "Documents du mobilier associé" -#: templates/ishtar/sheet_operation.html:237 +#: templates/ishtar/sheet_operation.html:240 msgid "Associated containers" msgstr "Contenants associés" -#: templates/ishtar/sheet_operation.html:241 +#: templates/ishtar/sheet_operation.html:245 msgid "Statistics" msgstr "Statistiques" -#: templates/ishtar/sheet_operation.html:242 +#: templates/ishtar/sheet_operation.html:246 msgid "These numbers are updated hourly" msgstr "Ces chiffres sont mis à jour toutes les heures" -#: templates/ishtar/sheet_operation.html:290 +#: templates/ishtar/sheet_operation.html:294 msgid "Material type" msgstr "Type de matériau" -#: templates/ishtar/sheet_operation.html:300 +#: templates/ishtar/sheet_operation.html:304 msgid "Object type" msgstr "Type d'objet" -#: templates/ishtar/sheet_operation.html:319 +#: templates/ishtar/sheet_operation.html:323 msgid "Sources" msgstr "Documents" -#: templates/ishtar/sheet_operation.html:337 +#: templates/ishtar/sheet_operation.html:341 msgid "Finds by context records" msgstr "Mobilier par Unités d'Enregistrement" diff --git a/translations/fr/ishtar_common.po b/translations/fr/ishtar_common.po index 2f37fbc77..51e5776be 100644 --- a/translations/fr/ishtar_common.po +++ b/translations/fr/ishtar_common.po @@ -2228,11 +2228,11 @@ msgstr "Importeur - Cible" msgid "Importer - Targets" msgstr "Importeur - Cibles" -#: models_imports.py:525 views_item.py:847 +#: models_imports.py:525 views_item.py:867 msgid "True" msgstr "Oui" -#: models_imports.py:526 views_item.py:849 +#: models_imports.py:526 views_item.py:869 msgid "False" msgstr "Non" @@ -2951,7 +2951,7 @@ msgstr "Licences" #: templates/ishtar/blocks/window_image_detail.html:111 #: templates/ishtar/import_delete.html:20 templatetags/window_field.py:17 -#: views_item.py:486 wizards.py:393 +#: views_item.py:506 wizards.py:393 msgid "Yes" msgstr "Oui" @@ -2964,6 +2964,11 @@ msgstr "Fichier" msgid "Web" msgstr "Internet" +#: templates/ishtar/blocks/window_image_detail.html:193 +#: templates/ishtar/blocks/window_tables/documents.html:10 +msgid "Related to" +msgstr "Associé à" + #: templates/ishtar/blocks/window_nav.html:17 msgid "" "Are you sure to restore to this version? All changes made since this version " @@ -3001,10 +3006,6 @@ msgstr "Exporter en fichier PDF" msgid "Relation between items are not historized." msgstr "Les relations entre éléments ne sont pas historisées." -#: templates/ishtar/blocks/window_tables/documents.html:10 -msgid "Related to" -msgstr "Associé à" - #: templates/ishtar/blocks/window_tables/documents.html:11 #: templates/ishtar/blocks/window_tables/documents.html:19 msgid "Link" @@ -3877,7 +3878,7 @@ msgstr "Demande de traitement" msgid "Treatment" msgstr "Traitement" -#: views.py:724 views_item.py:103 +#: views.py:724 views_item.py:104 msgid "Operation not permitted." msgstr "Opération non permise." @@ -3957,7 +3958,7 @@ msgstr "Supprimer le marque page" msgid "Bookmark - Delete" msgstr "Marque page - Suppression" -#: views_item.py:105 +#: views_item.py:106 #, python-format msgid "New %s" msgstr "Nouveau %s" -- cgit v1.2.3 From 893eb095b5b64c094ad3cddb615670780a67e9c4 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 28 Nov 2018 14:32:33 +0100 Subject: Commands - regenerate label: options to specify app name and model name --- .../regenerate_search_vector_cached_label.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/ishtar_common/management/commands/regenerate_search_vector_cached_label.py b/ishtar_common/management/commands/regenerate_search_vector_cached_label.py index 59e37d75b..404811acf 100644 --- a/ishtar_common/management/commands/regenerate_search_vector_cached_label.py +++ b/ishtar_common/management/commands/regenerate_search_vector_cached_label.py @@ -24,16 +24,32 @@ from django.core.management.base import BaseCommand from django.apps import apps +APPS = ['ishtar_common', 'archaeological_operations', + 'archaeological_context_records', 'archaeological_finds', + 'archaeological_warehouse'] + + class Command(BaseCommand): args = '' help = 'Regenerate cached labels and search vectors' + def add_arguments(self, parser): + parser.add_argument('app_name', nargs='?', default=None, + choices=APPS) + parser.add_argument('model_name', nargs='?', default=None) + def handle(self, *args, **options): - for app in ['ishtar_common', 'archaeological_operations', - 'archaeological_context_records', - 'archaeological_finds', 'archaeological_warehouse']: + limit = options['app_name'] + model_name = options['model_name'] + if model_name: + model_name = model_name.lower() + for app in APPS: + if limit and app != limit: + continue print(u"* app: {}".format(app)) for model in apps.get_app_config(app).get_models(): + if model_name and model.__name__.lower() != model_name: + continue if model.__name__.startswith('Historical'): continue if not bool( -- cgit v1.2.3 From 1d26a7a62d150d19e659e66515fcda5a40c6c68a Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 28 Nov 2018 17:14:20 +0100 Subject: Treatment deletion: more explicit messages. --- .../ishtar/wizard/wizard_treatement_deletion.html | 27 ++++++++++++++++++++++ archaeological_finds/wizards.py | 1 + ishtar_common/models_imports.py | 2 +- .../templates/ishtar/wizard/confirm_wizard.html | 8 ++++++- 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 archaeological_finds/templates/ishtar/wizard/wizard_treatement_deletion.html diff --git a/archaeological_finds/templates/ishtar/wizard/wizard_treatement_deletion.html b/archaeological_finds/templates/ishtar/wizard/wizard_treatement_deletion.html new file mode 100644 index 000000000..b0ebe7409 --- /dev/null +++ b/archaeological_finds/templates/ishtar/wizard/wizard_treatement_deletion.html @@ -0,0 +1,27 @@ +{% extends "ishtar/wizard/confirm_wizard.html" %} +{% load i18n %} + +{% block "warning_message" %} +{% with has_downstream=current_object.downstream.count %} +
+ + {% trans "Are you sure you want to delete this treatment?" %} +{% if has_downstream %} + {% trans "The following finds will be deleted and restored to a previous version."%} +
    {% for item in current_object.downstream.all %} +
  • + {{item}} +
  • + {% endfor %}
+ {% trans "All changes made to the associated finds since this treatment record will be lost!" %} +{% endif %} +
+ +
+ {% trans "Treatment informations:" %} +
+ + + +{% endwith %} +{% endblock %} diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py index 29ca50056..8ed7061e2 100644 --- a/archaeological_finds/wizards.py +++ b/archaeological_finds/wizards.py @@ -396,6 +396,7 @@ class Treatment1NWizard(TreatmentBase): class TreatmentDeletionWizard(DeletionWizard): + wizard_confirm = 'ishtar/wizard/wizard_treatement_deletion.html' model = models.Treatment fields = ['label', 'other_reference', 'year', 'index', 'treatment_types', 'location', 'person', 'organization', diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py index 9aae1d52d..fde4b3440 100644 --- a/ishtar_common/models_imports.py +++ b/ishtar_common/models_imports.py @@ -133,7 +133,7 @@ class ImporterType(models.Model): ImporterModel, verbose_name=_(u"Models that can accept new items"), blank=True, help_text=_(u"Leave blank for no restrictions"), related_name='+') - is_template = models.BooleanField(_(u"Is template"), default=False) + is_template = models.BooleanField(_(u"Can be exported"), default=False) unicity_keys = models.CharField(_(u"Unicity keys (separator \";\")"), blank=True, null=True, max_length=500) available = models.BooleanField(_(u"Available"), default=True) diff --git a/ishtar_common/templates/ishtar/wizard/confirm_wizard.html b/ishtar_common/templates/ishtar/wizard/confirm_wizard.html index 401fe570c..9829058a8 100644 --- a/ishtar_common/templates/ishtar/wizard/confirm_wizard.html +++ b/ishtar_common/templates/ishtar/wizard/confirm_wizard.html @@ -9,7 +9,12 @@
{% csrf_token %}
{% block "warning_informations" %}{% endblock %} -

{% if confirm_msg %}{{confirm_msg|safe}}{%else%}{% trans "You have entered the following informations:" %}{%endif%}

+ {% block "warning_message" %} +
+ {% if confirm_msg %}{{confirm_msg|safe}}{%else%}{% trans "You have entered the following informations:" %}{%endif%} +
+ {% endblock %} + {% block "detailed_informations" %} {% for form_label, form_data in datas %}
@@ -42,6 +47,7 @@ {{ extra_form }} {% endif %} + {% endblock %} {% block "extra_informations" %}{% endblock %} {% block "footer" %} -- cgit v1.2.3 From 13531adff386cc09c7f41c02ba7c116575cb6ee1 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 28 Nov 2018 18:51:28 +0100 Subject: Treatments: better management of merge - tests --- archaeological_context_records/models.py | 17 ++++++++ archaeological_finds/models_finds.py | 10 ++++- archaeological_finds/models_treatments.py | 19 +++------ archaeological_finds/tests.py | 67 +++++++++++++++++++++++++++++-- archaeological_finds/wizards.py | 12 ++++-- ishtar_common/templates/base.html | 2 +- 6 files changed, 106 insertions(+), 21 deletions(-) diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index 89f3edee4..2e9af17c1 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -84,6 +84,23 @@ class Dating(models.Model): return unicode(self.period) return u"%s (%s-%s)" % (self.period, start_date, end_date) + @classmethod + def is_identical(cls, dating_1, dating_2): + """ + Compare two dating attribute by attribute and return True if all + attribute is identical + """ + for attr in ["period", "start_date", "end_date", "dating_type", + "quality", "precise_dating"]: + value1 = getattr(dating_1, attr) + value2 = getattr(dating_2, attr) + if attr == "precise_dating": + value1 = value1.strip() + value2 = value2.strip() + if value1 != value2: + return False + return True + def context_records_lbl(self): return u" - ".join( [cr.cached_label for cr in self.context_records.all()] diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index a3aaae50d..9baced4e0 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -1376,12 +1376,20 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms, for field in m2m: if field == 'datings' and copy_datings: for dating in self.datings.all(): + is_present = False + for current_dating in new.datings.all(): + if Dating.is_identical(current_dating, dating): + is_present = True + break + if is_present: + continue dating.pk = None dating.save() new.datings.add(dating) else: for val in getattr(self, field).all(): - getattr(new, field).add(val) + if val not in getattr(new, field).all(): + getattr(new, field).add(val) return new @classmethod diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index a902741a3..29afc94e3 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -321,26 +321,19 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, create_new_find = bool([tp for tp in treatment_types if tp.create_new_find]) - dating_keys = ["period", "start_date", "end_date", "dating_type", - "quality", "precise_dating"] - current_datings = [] current_base_finds = [] current_documents = [] for upstream_item in upstream_items: # datings are not explicitly part of the resulting_find # need to reassociate with no duplicate for dating in upstream_item.datings.all(): - current_dating = [] - for key in dating_keys: - value = getattr(dating, key) - if hasattr(value, 'pk'): - value = value.pk - current_dating.append(value) - current_dating = tuple(current_dating) - if current_dating in current_datings: - # do not add similar dating + is_present = False + for current_dating in new_find.datings.all(): + if Dating.is_identical(current_dating, dating): + is_present = True + break + if is_present: continue - current_datings.append(current_dating) dating.pk = None # duplicate dating.save() new_find.datings.add(dating) diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py index b5ec5de83..8d1ffe91d 100644 --- a/archaeological_finds/tests.py +++ b/archaeological_finds/tests.py @@ -808,7 +808,7 @@ class FindQATest(FindInit, TestCase): base_desc_1 + u"\n" + extra_desc) -class PackagingTest(FindInit, TestCase): +class TreatmentTest(FindInit, TestCase): fixtures = FIND_FIXTURES model = models.Find @@ -875,13 +875,40 @@ class PackagingTest(FindInit, TestCase): item, self.finds, msg="Other basket have not been upgraded after packaging") - def test_delete(self): - # manage treatment deletion + def test_simple_delete(self): + treatment_type = models.TreatmentType.objects.get(txt_idx='packaging') + treatment_type.create_new_find = False + treatment_type.save() + + nb_find = models.Find.objects.count() + + treatment = models.Treatment() + + initial_find = self.finds[0] + treatment.save(user=self.get_default_user(), items=self.basket, + treatment_type_list=[treatment_type]) + treatment.treatment_types.add(treatment_type) + + self.assertEqual(nb_find, models.Find.objects.count()) + + treatment.delete() + self.assertEqual( + models.Treatment.objects.filter(pk=treatment.pk).count(), 0) + + q = models.Find.objects.filter(pk=initial_find.pk) + # initial find not deleted + self.assertEqual(q.count(), 1) + initial_find = q.all()[0] + self.assertEqual(initial_find.upstream_treatment, None) + + def test_upstream_find_delete(self): treatment_type = models.TreatmentType.objects.get(txt_idx='packaging') # make packaging a treatment with a new version of the find created treatment_type.create_new_find = True treatment_type.save() + nb_find = models.Find.objects.count() + treatment = models.Treatment() initial_find = self.finds[0] @@ -889,6 +916,10 @@ class PackagingTest(FindInit, TestCase): treatment_type_list=[treatment_type]) treatment.treatment_types.add(treatment_type) + nb_b = self.basket.items.count() + self.assertEqual( + nb_find + nb_b, models.Find.objects.count()) + resulting_find = models.Find.objects.get( upstream_treatment__upstream=initial_find, base_finds__pk=initial_find.base_finds.all()[0].pk @@ -902,3 +933,33 @@ class PackagingTest(FindInit, TestCase): self.assertEqual(q.count(), 1) initial_find = q.all()[0] self.assertEqual(initial_find.upstream_treatment, None) + + def test_treatment_delete(self): + treatment_type = models.TreatmentType.objects.get(txt_idx='packaging') + treatment_type.create_new_find = True + treatment_type.save() + + nb_find = models.Find.objects.count() + + treatment = models.Treatment() + + initial_find = self.finds[0] + treatment.save(user=self.get_default_user(), items=self.basket, + treatment_type_list=[treatment_type]) + treatment.treatment_types.add(treatment_type) + + nb_b = self.basket.items.count() + self.assertEqual( + nb_find + nb_b, models.Find.objects.count()) + + treatment.delete() + + self.assertEqual(nb_find, models.Find.objects.count()) + + self.assertEqual( + models.Treatment.objects.filter(pk=treatment.pk).count(), 0) + q = models.Find.objects.filter(pk=initial_find.pk) + # initial find not deleted + self.assertEqual(q.count(), 1) + initial_find = q.all()[0] + self.assertEqual(initial_find.upstream_treatment, None) diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py index 8ed7061e2..43f48ab59 100644 --- a/archaeological_finds/wizards.py +++ b/archaeological_finds/wizards.py @@ -246,12 +246,18 @@ class TreatmentN1Wizard(TreatmentBase): def _update_char_initial_from_finds(self, initial, find, k, sep=' ; '): r_k = "resulting_" + k - if not getattr(find, k): + value = getattr(find, k) + if not value: return initial + value = value.strip() if not initial[r_k]: - initial[r_k] = getattr(find, k) + initial[r_k] = value else: - initial[r_k] += sep + getattr(find, k) + # new value is entirely inside the current value + if value == initial[r_k] or (value + sep) in initial[r_k] or \ + (sep + value) in initial[r_k]: + return initial + initial[r_k] += sep + value return initial def get_form_initial(self, step, data=None): diff --git a/ishtar_common/templates/base.html b/ishtar_common/templates/base.html index ab2baf955..e5af101d5 100644 --- a/ishtar_common/templates/base.html +++ b/ishtar_common/templates/base.html @@ -44,7 +44,7 @@ var activate_own_search_msg = "{% trans 'Searches in the shortcut menu deal with only your items.' %}"; var search_pinned_msg = "{% trans 'Search pinned' %}"; var added_message = "{% trans " items added." %}"; - var select_only_one_msg = {% trans "Select only one item." %}; + var select_only_one_msg = "{% trans "Select only one item." %}"; var YES = "{% trans 'yes' %}"; var NO = "{% trans 'no' %}"; var autorefresh_message_start = "{% trans 'Autorefresh start. The form is disabled.' %}"; -- cgit v1.2.3 From d15ac59d709110b2e34e4bc28f9458e552d48785 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 28 Nov 2018 19:02:36 +0100 Subject: Update translations --- archaeological_context_records/locale/django.pot | 178 ++++---- archaeological_finds/locale/django.pot | 126 +++--- archaeological_operations/locale/django.pot | 468 +++++++++++----------- ishtar_common/locale/django.pot | 10 +- translations/de/ishtar_common.po | 10 +- translations/fr/archaeological_context_records.po | 178 ++++---- translations/fr/archaeological_finds.po | 124 +++--- translations/fr/archaeological_operations.po | 468 +++++++++++----------- translations/fr/ishtar_common.po | 14 +- 9 files changed, 809 insertions(+), 767 deletions(-) diff --git a/archaeological_context_records/locale/django.pot b/archaeological_context_records/locale/django.pot index fbd1d8d86..ca72da29d 100644 --- a/archaeological_context_records/locale/django.pot +++ b/archaeological_context_records/locale/django.pot @@ -13,11 +13,11 @@ msgstr "" msgid "Point" msgstr "" -#: admin.py:51 models.py:410 +#: admin.py:51 models.py:427 msgid "Multi polygon" msgstr "" -#: forms.py:47 forms.py:53 models.py:352 wizards.py:81 +#: forms.py:47 forms.py:53 models.py:369 wizards.py:81 msgid "Operation" msgstr "" @@ -33,7 +33,7 @@ msgstr "" msgid "Full text search" msgstr "" -#: forms.py:69 forms.py:155 models.py:357 models.py:737 +#: forms.py:69 forms.py:155 models.py:374 models.py:754 msgid "ID" msgstr "" @@ -49,7 +49,7 @@ msgstr "" msgid "Operation's number (index by year)" msgstr "" -#: forms.py:80 models.py:355 +#: forms.py:80 models.py:372 msgid "Archaeological site" msgstr "" @@ -65,8 +65,8 @@ msgstr "" msgid "Unit type" msgstr "" -#: forms.py:89 forms.py:148 models.py:231 models.py:232 models.py:347 -#: models.py:739 +#: forms.py:89 forms.py:148 models.py:248 models.py:249 models.py:364 +#: models.py:756 msgid "Parcel" msgstr "" @@ -90,7 +90,7 @@ msgstr "" msgid "Context record - 020 - General" msgstr "" -#: forms.py:149 models.py:228 models.py:229 models.py:350 +#: forms.py:149 models.py:245 models.py:246 models.py:367 msgid "Town" msgstr "" @@ -98,52 +98,52 @@ msgstr "" msgid "Only the items associated to the operation can be selected." msgstr "" -#: forms.py:157 models.py:358 models.py:740 +#: forms.py:157 models.py:375 models.py:757 #: templates/ishtar/sheet_contextrecord.html:45 msgid "Description" msgstr "" -#: forms.py:159 models.py:359 +#: forms.py:159 models.py:376 msgid "General comment" msgstr "" -#: forms.py:162 models.py:405 +#: forms.py:162 models.py:422 msgid "Excavation technique" msgstr "" -#: forms.py:163 models.py:363 +#: forms.py:163 models.py:380 msgid "Length (m)" msgstr "" -#: forms.py:164 models.py:364 +#: forms.py:164 models.py:381 msgid "Width (m)" msgstr "" -#: forms.py:165 models.py:365 +#: forms.py:165 models.py:382 msgid "Thickness (m)" msgstr "" -#: forms.py:166 models.py:367 +#: forms.py:166 models.py:384 msgid "Diameter (m)" msgstr "" -#: forms.py:167 models.py:368 +#: forms.py:167 models.py:385 msgid "Depth (m)" msgstr "" -#: forms.py:169 models.py:370 +#: forms.py:169 models.py:387 msgid "Depth of appearance (m)" msgstr "" -#: forms.py:170 models.py:379 models.py:738 +#: forms.py:170 models.py:396 models.py:755 msgid "Context record type" msgstr "" -#: forms.py:172 models.py:360 +#: forms.py:172 models.py:377 msgid "Opening date" msgstr "" -#: forms.py:174 models.py:362 templates/ishtar/sheet_contextrecord.html:140 +#: forms.py:174 models.py:379 templates/ishtar/sheet_contextrecord.html:140 msgid "Closing date" msgstr "" @@ -151,7 +151,7 @@ msgstr "" msgid "Documentation" msgstr "" -#: forms.py:180 models.py:372 +#: forms.py:180 models.py:389 msgid "Location" msgstr "" @@ -187,7 +187,7 @@ msgstr "" msgid "Context record - 030 - Dating" msgstr "" -#: forms.py:315 ishtar_menu.py:29 models.py:91 +#: forms.py:315 ishtar_menu.py:29 models.py:108 msgid "Context record" msgstr "" @@ -199,7 +199,7 @@ msgstr "" msgid "Context record - 050 - Relations" msgstr "" -#: forms.py:337 forms.py:348 models.py:382 +#: forms.py:337 forms.py:348 models.py:399 #: templates/ishtar/sheet_contextrecord.html:64 msgid "Interpretation" msgstr "" @@ -212,31 +212,31 @@ msgstr "" msgid "Comments on dating" msgstr "" -#: forms.py:346 models.py:381 +#: forms.py:346 models.py:398 msgid "Filling" msgstr "" -#: forms.py:350 models.py:402 +#: forms.py:350 models.py:419 msgid "Activity" msgstr "" -#: forms.py:352 models.py:400 +#: forms.py:352 models.py:417 msgid "Identification" msgstr "" -#: forms.py:354 models.py:385 +#: forms.py:354 models.py:402 msgid "TAQ" msgstr "" -#: forms.py:355 models.py:389 +#: forms.py:355 models.py:406 msgid "Estimated TAQ" msgstr "" -#: forms.py:357 models.py:392 +#: forms.py:357 models.py:409 msgid "TPQ" msgstr "" -#: forms.py:358 models.py:396 +#: forms.py:358 models.py:413 msgid "Estimated TPQ" msgstr "" @@ -288,260 +288,260 @@ msgstr "" msgid "Datings" msgstr "" -#: models.py:98 +#: models.py:115 msgid "Find" msgstr "" -#: models.py:117 models.py:136 models.py:152 +#: models.py:134 models.py:153 models.py:169 msgid "Order" msgstr "" -#: models.py:119 +#: models.py:136 msgid "Parent context record type" msgstr "" -#: models.py:123 +#: models.py:140 msgid "Context record Type" msgstr "" -#: models.py:124 +#: models.py:141 msgid "Context record Types" msgstr "" -#: models.py:139 +#: models.py:156 msgid "Activity Type" msgstr "" -#: models.py:140 +#: models.py:157 msgid "Activity Types" msgstr "" -#: models.py:155 +#: models.py:172 msgid "Identification Type" msgstr "" -#: models.py:156 +#: models.py:173 msgid "Identification Types" msgstr "" -#: models.py:169 +#: models.py:186 msgid "Excavation technique type" msgstr "" -#: models.py:170 +#: models.py:187 msgid "Excavation technique types" msgstr "" -#: models.py:180 +#: models.py:197 msgid "Documentation type" msgstr "" -#: models.py:181 +#: models.py:198 msgid "Documentation types" msgstr "" -#: models.py:222 models.py:741 +#: models.py:239 models.py:758 msgid "Periods" msgstr "" -#: models.py:223 +#: models.py:240 msgid "Datings (period)" msgstr "" -#: models.py:224 +#: models.py:241 msgid "Related context records" msgstr "" -#: models.py:225 +#: models.py:242 msgid "Operation (Patriarche code)" msgstr "" -#: models.py:226 +#: models.py:243 msgid "Operation (name)" msgstr "" -#: models.py:227 +#: models.py:244 msgid "Parcel (external ID)" msgstr "" -#: models.py:230 +#: models.py:247 msgid "Parcel (year)" msgstr "" -#: models.py:265 +#: models.py:282 msgctxt "key for text search" msgid "id" msgstr "" -#: models.py:269 +#: models.py:286 msgctxt "key for text search" msgid "town" msgstr "" -#: models.py:273 +#: models.py:290 msgctxt "key for text search" msgid "operation-year" msgstr "" -#: models.py:277 +#: models.py:294 msgctxt "key for text search" msgid "patriarche" msgstr "" -#: models.py:281 +#: models.py:298 msgctxt "key for text search" msgid "operation-code" msgstr "" -#: models.py:285 models.py:327 +#: models.py:302 models.py:344 msgctxt "key for text search" msgid "operation" msgstr "" -#: models.py:289 models.py:330 +#: models.py:306 models.py:347 msgctxt "key for text search" msgid "site" msgstr "" -#: models.py:293 +#: models.py:310 msgctxt "key for text search" msgid "operation-relation-type" msgstr "" -#: models.py:297 +#: models.py:314 msgctxt "key for text search" msgid "period" msgstr "" -#: models.py:301 +#: models.py:318 msgctxt "key for text search" msgid "unit-type" msgstr "" -#: models.py:305 +#: models.py:322 msgctxt "key for text search" msgid "parcel" msgstr "" -#: models.py:309 +#: models.py:326 msgctxt "key for text search" msgid "record-relation-type" msgstr "" -#: models.py:343 +#: models.py:360 msgid "External ID" msgstr "" -#: models.py:345 +#: models.py:362 msgid "External ID is set automatically" msgstr "" -#: models.py:373 +#: models.py:390 msgid "A short description of the location of the context record" msgstr "" -#: models.py:377 +#: models.py:394 msgid "Comment on datings" msgstr "" -#: models.py:386 +#: models.py:403 msgid "" "\"Terminus Ante Quem\" the context record can't have been created after this " "date" msgstr "" -#: models.py:390 +#: models.py:407 msgid "Estimation of a \"Terminus Ante Quem\"" msgstr "" -#: models.py:393 +#: models.py:410 msgid "" "\"Terminus Post Quem\" the context record can't have been created before " "this date" msgstr "" -#: models.py:397 +#: models.py:414 msgid "Estimation of a \"Terminus Post Quem\"" msgstr "" -#: models.py:408 +#: models.py:425 msgid "Point (2D)" msgstr "" -#: models.py:409 +#: models.py:426 msgid "Point (3D)" msgstr "" -#: models.py:413 +#: models.py:430 msgid "Documents" msgstr "" -#: models.py:415 +#: models.py:432 msgid "Cached name" msgstr "" -#: models.py:419 models.py:420 templates/ishtar/sheet_contextrecord.html:4 +#: models.py:436 models.py:437 templates/ishtar/sheet_contextrecord.html:4 msgid "Context Record" msgstr "" -#: models.py:439 +#: models.py:456 msgctxt "short" msgid "Context record" msgstr "" -#: models.py:668 models.py:691 models.py:736 +#: models.py:685 models.py:708 models.py:753 msgid "Relation type" msgstr "" -#: models.py:669 +#: models.py:686 msgid "Relation types" msgstr "" -#: models.py:686 +#: models.py:703 msgid "ID (left)" msgstr "" -#: models.py:687 +#: models.py:704 msgid "Context record type (left)" msgstr "" -#: models.py:688 +#: models.py:705 msgid "Parcel (left)" msgstr "" -#: models.py:689 +#: models.py:706 msgid "Description (left)" msgstr "" -#: models.py:690 +#: models.py:707 msgid "Periods (left)" msgstr "" -#: models.py:692 +#: models.py:709 msgid "ID (right)" msgstr "" -#: models.py:693 +#: models.py:710 msgid "Context record type (right)" msgstr "" -#: models.py:694 +#: models.py:711 msgid "Parcel (right)" msgstr "" -#: models.py:695 +#: models.py:712 msgid "Description (right)" msgstr "" -#: models.py:696 +#: models.py:713 msgid "Periods (right)" msgstr "" -#: models.py:705 +#: models.py:722 msgid "Record relation" msgstr "" -#: models.py:706 +#: models.py:723 msgid "Record relations" msgstr "" diff --git a/archaeological_finds/locale/django.pot b/archaeological_finds/locale/django.pot index d051e96a3..e3218d236 100644 --- a/archaeological_finds/locale/django.pot +++ b/archaeological_finds/locale/django.pot @@ -31,7 +31,7 @@ msgid "Find - 010 - Context record choice" msgstr "" #: forms.py:133 forms.py:255 ishtar_menu.py:32 models_finds.py:1110 -#: models_finds.py:1743 models_treatments.py:512 +#: models_finds.py:1751 models_treatments.py:505 #: templates/ishtar/sheet_find.html:4 msgid "Find" msgstr "" @@ -125,7 +125,7 @@ msgstr "" #: forms.py:195 forms.py:432 forms.py:584 forms.py:1177 forms_treatments.py:145 #: forms_treatments.py:606 models_finds.py:264 models_finds.py:1056 -#: models_treatments.py:149 models_treatments.py:772 +#: models_treatments.py:149 models_treatments.py:765 msgid "Comment" msgstr "" @@ -341,7 +341,7 @@ msgstr "" #: forms.py:652 forms.py:836 forms.py:1204 forms.py:1208 ishtar_menu.py:57 #: models_finds.py:943 templates/ishtar/sheet_findbasket.html:4 views.py:694 -#: wizards.py:353 +#: wizards.py:359 msgid "Basket" msgstr "" @@ -411,14 +411,14 @@ msgid "Dating" msgstr "" #: forms.py:766 forms_treatments.py:131 forms_treatments.py:398 -#: forms_treatments.py:608 models_finds.py:1748 models_treatments.py:152 -#: models_treatments.py:523 templates/ishtar/sheet_find.html:196 +#: forms_treatments.py:608 models_finds.py:1756 models_treatments.py:152 +#: models_treatments.py:516 templates/ishtar/sheet_find.html:196 #: templates/ishtar/sheet_find.html:254 templates/ishtar/sheet_find.html:291 #: templates/ishtar/sheet_find.html:329 msgid "Start date" msgstr "" -#: forms.py:768 models_finds.py:1749 models_treatments.py:524 +#: forms.py:768 models_finds.py:1757 models_treatments.py:517 #: templates/ishtar/sheet_find.html:197 templates/ishtar/sheet_find.html:255 #: templates/ishtar/sheet_find.html:292 templates/ishtar/sheet_find.html:330 msgid "End date" @@ -460,7 +460,7 @@ msgstr "" #: forms.py:804 forms_treatments.py:56 forms_treatments.py:102 #: forms_treatments.py:323 forms_treatments.py:451 forms_treatments.py:526 #: forms_treatments.py:578 forms_treatments.py:718 models_treatments.py:126 -#: models_treatments.py:745 +#: models_treatments.py:738 msgid "Year" msgstr "" @@ -584,13 +584,13 @@ msgstr "" #: forms_treatments.py:57 forms_treatments.py:260 forms_treatments.py:452 #: forms_treatments.py:514 forms_treatments.py:527 forms_treatments.py:631 #: forms_treatments.py:719 forms_treatments.py:786 models_treatments.py:127 -#: models_treatments.py:746 +#: models_treatments.py:739 msgid "Index" msgstr "" #: forms_treatments.py:58 forms_treatments.py:98 forms_treatments.py:406 #: forms_treatments.py:468 models_finds.py:111 models_treatments.py:132 -#: models_treatments.py:522 +#: models_treatments.py:515 msgid "Treatment type" msgstr "" @@ -599,7 +599,7 @@ msgid "Treatment search" msgstr "" #: forms_treatments.py:83 ishtar_menu.py:147 models_treatments.py:175 -#: models_treatments.py:514 templates/ishtar/sheet_treatment.html:4 +#: models_treatments.py:507 templates/ishtar/sheet_treatment.html:4 #: templates/ishtar/sheet_treatment.html:17 msgid "Treatment" msgstr "" @@ -614,7 +614,7 @@ msgstr "" msgid "State" msgstr "" -#: forms_treatments.py:107 models_treatments.py:137 models_treatments.py:525 +#: forms_treatments.py:107 models_treatments.py:137 models_treatments.py:518 msgid "Location" msgstr "" @@ -628,7 +628,7 @@ msgid "Organization" msgstr "" #: forms_treatments.py:133 forms_treatments.py:398 forms_treatments.py:614 -#: forms_treatments.py:667 models_treatments.py:153 models_treatments.py:766 +#: forms_treatments.py:667 models_treatments.py:153 models_treatments.py:759 msgid "Closing date" msgstr "" @@ -695,8 +695,8 @@ msgid "Treatment - 010 - Request choice" msgstr "" #: forms_treatments.py:296 forms_treatments.py:569 ishtar_menu.py:95 -#: models_treatments.py:781 models_treatments.py:803 -#: templates/ishtar/sheet_treatmentfile.html:4 wizards.py:457 +#: models_treatments.py:774 models_treatments.py:796 +#: templates/ishtar/sheet_treatmentfile.html:4 wizards.py:464 msgid "Treatment request" msgstr "" @@ -711,7 +711,7 @@ msgid "Would you like to delete this treatment?" msgstr "" #: forms_treatments.py:313 models_finds.py:697 models_finds.py:1017 -#: models_treatments.py:155 models_treatments.py:526 +#: models_treatments.py:155 models_treatments.py:519 #: templates/ishtar/sheet_find.html:253 templates/ishtar/sheet_find.html:290 #: templates/ishtar/sheet_find.html:328 msgid "Container" @@ -798,7 +798,7 @@ msgstr "" msgid "Treatment - Administrative act - General" msgstr "" -#: forms_treatments.py:524 forms_treatments.py:576 models_treatments.py:751 +#: forms_treatments.py:524 forms_treatments.py:576 models_treatments.py:744 msgid "Name" msgstr "" @@ -816,12 +816,12 @@ msgstr "" msgid "In charge" msgstr "" -#: forms_treatments.py:537 forms_treatments.py:595 models_treatments.py:760 +#: forms_treatments.py:537 forms_treatments.py:595 models_treatments.py:753 #: templates/ishtar/sheet_treatmentfile.html:45 msgid "Applicant" msgstr "" -#: forms_treatments.py:543 forms_treatments.py:601 models_treatments.py:764 +#: forms_treatments.py:543 forms_treatments.py:601 models_treatments.py:757 #: templates/ishtar/sheet_treatmentfile.html:53 msgid "Applicant organisation" msgstr "" @@ -834,7 +834,7 @@ msgstr "" msgid "External ref." msgstr "" -#: forms_treatments.py:612 forms_treatments.py:666 models_treatments.py:770 +#: forms_treatments.py:612 forms_treatments.py:666 models_treatments.py:763 msgid "Reception date" msgstr "" @@ -850,12 +850,12 @@ msgstr "" msgid "Would you like to delete this treatment request?" msgstr "" -#: forms_treatments.py:665 models_treatments.py:768 +#: forms_treatments.py:665 models_treatments.py:761 msgid "Creation date" msgstr "" -#: forms_treatments.py:675 forms_treatments.py:739 models_treatments.py:682 -#: models_treatments.py:753 +#: forms_treatments.py:675 forms_treatments.py:739 models_treatments.py:675 +#: models_treatments.py:746 msgid "Treatment request type" msgstr "" @@ -903,28 +903,25 @@ msgstr "" msgid "Manage items" msgstr "" -#: ishtar_menu.py:120 ishtar_menu.py:182 models_finds.py:1745 +#: ishtar_menu.py:120 ishtar_menu.py:182 models_finds.py:1753 msgid "Administrative act" msgstr "" #: ishtar_menu.py:138 ishtar_menu.py:201 models_finds.py:1098 -#: models_treatments.py:168 models_treatments.py:774 +#: models_treatments.py:168 models_treatments.py:767 #: templates/ishtar/sheet_find.html:56 templates/ishtar/sheet_treatment.html:32 msgid "Documents" msgstr "" #: ishtar_menu.py:158 -#| msgid "New treatment request" msgid "Simple treatment - creation" msgstr "" #: ishtar_menu.py:163 -#| msgid "Treatment modification" msgid "Treatment many to one - creation" msgstr "" #: ishtar_menu.py:168 -#| msgid "Treatment request modification" msgid "Treatment one to many - creation" msgstr "" @@ -938,7 +935,7 @@ msgstr "" #: models_finds.py:66 models_finds.py:79 models_finds.py:92 models_finds.py:143 #: models_finds.py:166 models_finds.py:223 models_finds.py:984 -#: models_treatments.py:518 +#: models_treatments.py:511 msgid "Order" msgstr "" @@ -1069,7 +1066,7 @@ msgid "Checked types" msgstr "" #: models_finds.py:259 models_finds.py:977 models_treatments.py:147 -#: models_treatments.py:749 +#: models_treatments.py:742 msgid "External ID" msgstr "" @@ -1198,7 +1195,7 @@ msgctxt "key for text search" msgid "town" msgstr "" -#: models_finds.py:794 models_treatments.py:91 models_treatments.py:714 +#: models_finds.py:794 models_treatments.py:91 models_treatments.py:707 msgctxt "key for text search" msgid "year" msgstr "" @@ -1323,7 +1320,7 @@ msgctxt "key for text search" msgid "container-ref" msgstr "" -#: models_finds.py:897 wizards.py:392 +#: models_finds.py:897 wizards.py:398 msgctxt "key for text search" msgid "basket" msgstr "" @@ -1399,7 +1396,7 @@ msgstr "" msgid "Related treatments when no new find is created" msgstr "" -#: models_finds.py:1104 models_treatments.py:170 models_treatments.py:776 +#: models_finds.py:1104 models_treatments.py:170 models_treatments.py:769 msgid "Cached name" msgstr "" @@ -1411,27 +1408,27 @@ msgstr "" msgid "Add to basket" msgstr "" -#: models_finds.py:1246 wizards.py:85 wizards.py:469 +#: models_finds.py:1246 wizards.py:85 wizards.py:476 msgid "Operation" msgstr "" -#: models_finds.py:1570 +#: models_finds.py:1578 msgid "No container have been set - the localisation cannot be set." msgstr "" -#: models_finds.py:1576 +#: models_finds.py:1584 msgid "The division number {} have not been set for the warehouse {}." msgstr "" -#: models_finds.py:1746 +#: models_finds.py:1754 msgid "Person" msgstr "" -#: models_finds.py:1752 +#: models_finds.py:1760 msgid "Property" msgstr "" -#: models_finds.py:1753 +#: models_finds.py:1761 msgid "Properties" msgstr "" @@ -1461,12 +1458,12 @@ msgctxt "key for text search" msgid "other-reference" msgstr "" -#: models_treatments.py:95 models_treatments.py:718 +#: models_treatments.py:95 models_treatments.py:711 msgctxt "key for text search" msgid "index" msgstr "" -#: models_treatments.py:103 models_treatments.py:722 +#: models_treatments.py:103 models_treatments.py:715 msgctxt "key for text search" msgid "type" msgstr "" @@ -1503,58 +1500,58 @@ msgstr "" msgid "Downstream finds" msgstr "" -#: models_treatments.py:527 templates/ishtar/sheet_find.html:252 +#: models_treatments.py:520 templates/ishtar/sheet_find.html:252 #: templates/ishtar/sheet_find.html:289 templates/ishtar/sheet_find.html:327 msgid "Doer" msgstr "" -#: models_treatments.py:528 models_treatments.py:529 +#: models_treatments.py:521 models_treatments.py:522 #: templates/ishtar/sheet_treatment.html:97 msgid "Related finds" msgstr "" -#: models_treatments.py:671 +#: models_treatments.py:664 msgid "Is upstream" msgstr "" -#: models_treatments.py:683 +#: models_treatments.py:676 msgid "Treatment request types" msgstr "" -#: models_treatments.py:706 +#: models_treatments.py:699 msgctxt "key for text search" msgid "name" msgstr "" -#: models_treatments.py:710 +#: models_treatments.py:703 msgctxt "key for text search" msgid "reference" msgstr "" -#: models_treatments.py:726 +#: models_treatments.py:719 msgctxt "key for text search" msgid "in-charge" msgstr "" -#: models_treatments.py:730 +#: models_treatments.py:723 msgctxt "key for text search" msgid "applicant" msgstr "" -#: models_treatments.py:734 +#: models_treatments.py:727 msgctxt "key for text search" msgid "applicant-organisation" msgstr "" -#: models_treatments.py:747 +#: models_treatments.py:740 msgid "Internal reference" msgstr "" -#: models_treatments.py:756 +#: models_treatments.py:749 msgid "Person in charge" msgstr "" -#: models_treatments.py:782 +#: models_treatments.py:775 msgid "Treatment requests" msgstr "" @@ -1713,6 +1710,29 @@ msgid "" "edit the corresponding find between theses:" msgstr "" +#: templates/ishtar/wizard/wizard_treatement_deletion.html:8 +#| msgid "Are you sure you want to delete this treatment request?" +msgid "Are you sure you want to delete this treatment?" +msgstr "" + +#: templates/ishtar/wizard/wizard_treatement_deletion.html:10 +msgid "The following finds will be deleted and restored to a previous version." +msgstr "" + +#: templates/ishtar/wizard/wizard_treatement_deletion.html:16 +#| msgid "" +#| "Are you sure you want to delete this treatment? All changes made to the " +#| "associated finds since this treatment record will be lost!" +msgid "" +"All changes made to the associated finds since this treatment record will be " +"lost!" +msgstr "" + +#: templates/ishtar/wizard/wizard_treatement_deletion.html:21 +#| msgid "Treatment modification" +msgid "Treatment informations:" +msgstr "" + #: views.py:132 msgid "Basket modify" msgstr "" @@ -1797,7 +1817,7 @@ msgstr "" msgid "Treatment request: administrative act deletion" msgstr "" -#: wizards.py:387 +#: wizards.py:393 msgid "" "The new basket: \"{}\" have been created with the resulting items. This " "search have been pinned." diff --git a/archaeological_operations/locale/django.pot b/archaeological_operations/locale/django.pot index fea311997..57d12194d 100644 --- a/archaeological_operations/locale/django.pot +++ b/archaeological_operations/locale/django.pot @@ -9,21 +9,21 @@ msgid "" msgstr "" -#: admin.py:91 models.py:245 models.py:852 +#: admin.py:91 models.py:249 models.py:857 msgid "Point" msgstr "" -#: admin.py:93 models.py:246 models.py:853 +#: admin.py:93 models.py:250 models.py:858 msgid "Multi polygon" msgstr "" -#: forms.py:64 forms.py:1061 forms.py:1077 forms.py:1083 models.py:1955 +#: forms.py:64 forms.py:1061 forms.py:1077 forms.py:1083 models.py:1964 #: templates/ishtar/blocks/window_tables/parcels.html:9 #: templates/ishtar/sheet_operation.html:254 msgid "Parcels" msgstr "" -#: forms.py:67 forms.py:200 forms.py:1036 models.py:1939 +#: forms.py:67 forms.py:200 forms.py:1036 models.py:1948 #: templates/ishtar/blocks/window_tables/parcels.html:6 #: templates/ishtar/dashboards/dashboard_operation.html:432 #: templates/ishtar/dashboards/dashboard_operation.html:446 @@ -32,22 +32,22 @@ msgstr "" msgid "Town" msgstr "" -#: forms.py:69 forms.py:480 forms.py:763 forms.py:1400 models.py:750 -#: models.py:1513 models.py:1720 models.py:1937 +#: forms.py:69 forms.py:480 forms.py:763 forms.py:1408 models.py:755 +#: models.py:1522 models.py:1729 models.py:1946 #: templates/ishtar/blocks/window_tables/parcels.html:7 msgid "Year" msgstr "" -#: forms.py:72 models.py:1940 +#: forms.py:72 models.py:1949 #: templates/ishtar/blocks/window_tables/parcels.html:8 msgid "Section" msgstr "" -#: forms.py:75 models.py:1942 +#: forms.py:75 models.py:1951 msgid "Parcel number" msgstr "" -#: forms.py:77 models.py:1944 models.py:1963 models.py:2024 +#: forms.py:77 models.py:1953 models.py:1972 models.py:2033 msgid "Public domain" msgstr "" @@ -83,8 +83,8 @@ msgstr "" msgid "Relation type" msgstr "" -#: forms.py:373 forms.py:1254 ishtar_menu.py:32 models.py:858 models.py:1418 -#: models.py:1429 models.py:1515 models.py:1702 models.py:1936 +#: forms.py:373 forms.py:1254 ishtar_menu.py:32 models.py:863 models.py:1427 +#: models.py:1438 models.py:1524 models.py:1711 models.py:1945 #: templates/ishtar/sheet_operation.html:4 wizards.py:320 wizards.py:331 msgid "Operation" msgstr "" @@ -121,19 +121,19 @@ msgstr "" msgid "Operation - 080 - Relations" msgstr "" -#: forms.py:478 forms.py:1237 forms.py:1396 +#: forms.py:478 forms.py:1237 forms.py:1404 msgid "Full text search" msgstr "" -#: forms.py:481 models.py:751 +#: forms.py:481 models.py:756 msgid "Numeric reference" msgstr "" -#: forms.py:488 forms.py:1064 forms.py:1412 models.py:1954 models.py:2166 +#: forms.py:488 forms.py:1064 forms.py:1420 models.py:1963 models.py:2175 msgid "Parcel" msgstr "" -#: forms.py:491 forms.py:1415 models.py:1419 +#: forms.py:491 forms.py:1423 models.py:1428 #: templates/ishtar/dashboards/dashboard_operation.html:390 #: templates/ishtar/dashboards/dashboard_operation.html:411 #: templates/ishtar/dashboards/dashboard_operation.html:643 @@ -142,17 +142,17 @@ msgstr "" msgid "Department" msgstr "" -#: forms.py:492 forms.py:1148 forms.py:1241 forms.py:1325 models.py:214 +#: forms.py:492 forms.py:1148 forms.py:1241 forms.py:1326 models.py:214 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:7 #: templates/ishtar/sheet_operation.html:29 msgid "Name" msgstr "" -#: forms.py:493 forms.py:761 models.py:813 +#: forms.py:493 forms.py:761 models.py:818 msgid "Address / Locality" msgstr "" -#: forms.py:494 forms.py:678 forms.py:757 models.py:758 +#: forms.py:494 forms.py:678 forms.py:757 models.py:763 msgid "Operation type" msgstr "" @@ -160,26 +160,26 @@ msgstr "" msgid "Is open?" msgstr "" -#: forms.py:503 forms.py:793 models.py:743 +#: forms.py:503 forms.py:793 models.py:748 msgid "In charge" msgstr "" -#: forms.py:510 models.py:1696 +#: forms.py:510 models.py:1705 msgid "Scientist in charge" msgstr "" -#: forms.py:512 forms.py:680 forms.py:783 models.py:741 +#: forms.py:512 forms.py:680 forms.py:783 models.py:746 msgid "Operator" msgstr "" -#: forms.py:521 forms.py:1153 forms.py:1243 forms.py:1330 models.py:218 -#: models.py:760 +#: forms.py:521 forms.py:1153 forms.py:1243 forms.py:1331 models.py:218 +#: models.py:765 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:9 msgid "Remains" msgstr "" -#: forms.py:522 forms.py:1131 forms.py:1150 forms.py:1242 forms.py:1327 -#: models.py:216 models.py:766 +#: forms.py:522 forms.py:1131 forms.py:1150 forms.py:1242 forms.py:1328 +#: models.py:216 models.py:771 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8 msgid "Periods" msgstr "" @@ -204,8 +204,8 @@ msgstr "" msgid "Search within relations" msgstr "" -#: forms.py:529 forms.py:841 forms.py:1245 forms.py:1340 models.py:222 -#: models.py:814 +#: forms.py:529 forms.py:841 forms.py:1245 forms.py:1343 models.py:222 +#: models.py:819 msgid "Comment" msgstr "" @@ -213,35 +213,35 @@ msgstr "" msgid "Abstract (full text search)" msgstr "" -#: forms.py:532 forms.py:844 models.py:816 +#: forms.py:532 forms.py:844 models.py:821 msgid "Comment about scientific documentation" msgstr "" -#: forms.py:533 forms.py:846 models.py:831 +#: forms.py:533 forms.py:846 models.py:836 msgid "Record quality" msgstr "" -#: forms.py:534 forms.py:812 models.py:778 +#: forms.py:534 forms.py:812 models.py:783 msgid "Report processing" msgstr "" -#: forms.py:536 forms.py:849 models.py:826 +#: forms.py:536 forms.py:849 models.py:831 msgid "Virtual operation" msgstr "" -#: forms.py:538 forms.py:1188 forms.py:1192 models.py:258 +#: forms.py:538 forms.py:1188 forms.py:1192 models.py:262 msgid "Archaeological site" msgstr "" -#: forms.py:544 forms.py:1419 +#: forms.py:544 forms.py:1427 msgid "Created by" msgstr "" -#: forms.py:550 forms.py:1425 +#: forms.py:550 forms.py:1433 msgid "Modified by" msgstr "" -#: forms.py:557 forms.py:834 models.py:838 +#: forms.py:557 forms.py:834 models.py:843 msgid "Documentation received" msgstr "" @@ -253,7 +253,7 @@ msgstr "" msgid "Documentation deadline after" msgstr "" -#: forms.py:563 forms.py:839 models.py:842 +#: forms.py:563 forms.py:839 models.py:847 msgid "Finds received" msgstr "" @@ -273,12 +273,12 @@ msgstr "" msgid "Associated file" msgstr "" -#: forms.py:643 forms.py:937 models.py:1039 models.py:1428 models.py:1514 -#: models.py:1707 wizards.py:83 +#: forms.py:643 forms.py:937 models.py:1044 models.py:1437 models.py:1523 +#: models.py:1716 wizards.py:83 msgid "Archaeological file" msgstr "" -#: forms.py:650 forms.py:654 models.py:833 +#: forms.py:650 forms.py:654 models.py:838 msgid "Abstract" msgstr "" @@ -294,7 +294,7 @@ msgstr "" msgid "years" msgstr "" -#: forms.py:660 models.py:727 +#: forms.py:660 models.py:732 msgid "Creation date" msgstr "" @@ -346,7 +346,7 @@ msgstr "" msgid "With finds" msgstr "" -#: forms.py:737 forms.py:1317 forms.py:1466 +#: forms.py:737 forms.py:1317 forms.py:1474 #: templates/ishtar/sheet_administrativeact.html:23 #: templates/ishtar/sheet_operation.html:12 templates/ishtar/sheet_site.html:33 msgid "General" @@ -356,11 +356,11 @@ msgstr "" msgid "Operation - 010 - General" msgstr "" -#: forms.py:759 models.py:812 +#: forms.py:759 models.py:817 msgid "Generic name" msgstr "" -#: forms.py:768 models.py:780 +#: forms.py:768 models.py:785 msgid "Old code" msgstr "" @@ -368,7 +368,7 @@ msgstr "" msgid "Head scientist" msgstr "" -#: forms.py:790 models.py:811 +#: forms.py:790 models.py:816 msgid "Operator reference" msgstr "" @@ -376,23 +376,23 @@ msgstr "" msgid "Total surface (m2)" msgstr "" -#: forms.py:807 models.py:57 models.py:730 models.py:2168 +#: forms.py:807 models.py:57 models.py:735 models.py:2177 msgid "Start date" msgstr "" -#: forms.py:808 models.py:732 +#: forms.py:808 models.py:737 msgid "Excavation end date" msgstr "" -#: forms.py:810 models.py:733 +#: forms.py:810 models.py:738 msgid "Report delivery date" msgstr "" -#: forms.py:831 models.py:835 +#: forms.py:831 models.py:840 msgid "Deadline for submission of the documentation" msgstr "" -#: forms.py:836 models.py:840 +#: forms.py:836 models.py:845 msgid "Deadline for submission of the finds" msgstr "" @@ -416,7 +416,7 @@ msgstr "" msgid "Bad operation code" msgstr "" -#: forms.py:933 models.py:1054 +#: forms.py:933 models.py:1059 msgid "Operation code" msgstr "" @@ -428,19 +428,19 @@ msgstr "" msgid "Operation - 015 - Court-ordered seizure" msgstr "" -#: forms.py:973 models.py:845 +#: forms.py:973 models.py:850 msgid "Seizure name" msgstr "" -#: forms.py:976 models.py:846 +#: forms.py:976 models.py:851 msgid "Official report number" msgstr "" -#: forms.py:979 models.py:848 +#: forms.py:979 models.py:853 msgid "Name of the protagonist" msgstr "" -#: forms.py:984 forms.py:991 models.py:747 +#: forms.py:984 forms.py:991 forms.py:1342 models.py:233 models.py:752 msgid "Collaborators" msgstr "" @@ -456,20 +456,20 @@ msgstr "" msgid "Operation - 033 - Preventive - Excavation" msgstr "" -#: forms.py:1004 models.py:764 +#: forms.py:1004 models.py:769 #: templates/ishtar/dashboards/dashboard_operation.html:701 msgid "Cost (euros)" msgstr "" -#: forms.py:1005 models.py:769 +#: forms.py:1005 models.py:774 msgid "Scheduled man-days" msgstr "" -#: forms.py:1007 models.py:772 +#: forms.py:1007 models.py:777 msgid "Optional man-days" msgstr "" -#: forms.py:1009 models.py:775 +#: forms.py:1009 models.py:780 msgid "Effective man-days" msgstr "" @@ -481,20 +481,20 @@ msgstr "" msgid "Operation - 037 - Preventive - Diagnostic" msgstr "" -#: forms.py:1025 models.py:795 +#: forms.py:1025 models.py:800 msgid "Prescription on zoning" msgstr "" -#: forms.py:1027 models.py:798 +#: forms.py:1027 models.py:803 msgid "Prescription on large area" msgstr "" -#: forms.py:1030 models.py:800 +#: forms.py:1030 models.py:805 msgid "Prescription on geoarchaeological context" msgstr "" -#: forms.py:1034 forms.py:1050 forms.py:1055 forms.py:1359 models.py:129 -#: models.py:220 models.py:522 models.py:762 models.py:1730 +#: forms.py:1034 forms.py:1050 forms.py:1055 forms.py:1367 models.py:129 +#: models.py:220 models.py:527 models.py:767 models.py:1739 msgid "Towns" msgstr "" @@ -535,15 +535,15 @@ msgstr "" msgid "Period" msgstr "" -#: forms.py:1147 forms.py:1239 forms.py:1324 models.py:213 +#: forms.py:1147 forms.py:1239 forms.py:1325 models.py:213 msgid "Reference" msgstr "" -#: forms.py:1171 forms.py:1353 +#: forms.py:1171 forms.py:1361 msgid "This reference already exists." msgstr "" -#: forms.py:1203 models.py:259 models.py:823 +#: forms.py:1203 models.py:263 models.py:828 #: templates/ishtar/sheet_operation.html:194 msgid "Archaeological sites" msgstr "" @@ -572,31 +572,31 @@ msgstr "" msgid "Top operation" msgstr "" -#: forms.py:1260 forms.py:1333 models.py:227 +#: forms.py:1260 forms.py:1334 models.py:227 msgid "National Geographic Institute locality" msgstr "" -#: forms.py:1263 forms.py:1337 models.py:230 +#: forms.py:1263 forms.py:1338 models.py:230 msgid "Cadastral locality" msgstr "" -#: forms.py:1266 forms.py:1374 models.py:234 +#: forms.py:1266 forms.py:1382 models.py:238 msgid "Shipwreck name" msgstr "" -#: forms.py:1269 forms.py:1382 models.py:236 +#: forms.py:1269 forms.py:1390 models.py:240 msgid "Oceanographic service localisation" msgstr "" -#: forms.py:1272 forms.py:1376 models.py:238 +#: forms.py:1272 forms.py:1384 models.py:242 msgid "Shipwreck code" msgstr "" -#: forms.py:1274 forms.py:1378 models.py:240 +#: forms.py:1274 forms.py:1386 models.py:244 msgid "Sinking date" msgstr "" -#: forms.py:1276 forms.py:1380 models.py:242 +#: forms.py:1276 forms.py:1388 models.py:246 msgid "Discovery area" msgstr "" @@ -608,83 +608,83 @@ msgstr "" msgid "Archaeological site - 010 - General" msgstr "" -#: forms.py:1360 +#: forms.py:1368 msgid "Archaeological site - 020 - Towns" msgstr "" -#: forms.py:1369 templates/ishtar/sheet_site.html:52 +#: forms.py:1377 templates/ishtar/sheet_site.html:53 msgid "Underwater" msgstr "" -#: forms.py:1370 +#: forms.py:1378 msgid "Archaeological site - 030 - Underwater" msgstr "" -#: forms.py:1401 forms.py:1535 models.py:1687 +#: forms.py:1409 forms.py:1543 models.py:1696 msgid "Index" msgstr "" -#: forms.py:1409 forms.py:1469 models.py:1442 models.py:1681 +#: forms.py:1417 forms.py:1477 models.py:1451 models.py:1690 msgid "Act type" msgstr "" -#: forms.py:1410 forms.py:1605 +#: forms.py:1418 forms.py:1613 msgid "Indexed?" msgstr "" -#: forms.py:1416 forms.py:1474 models.py:1721 +#: forms.py:1424 forms.py:1482 models.py:1730 #: templates/ishtar/blocks/window_tables/administrativacts.html:9 msgid "Object" msgstr "" -#: forms.py:1446 views.py:412 +#: forms.py:1454 views.py:412 msgid "Administrative act search" msgstr "" -#: forms.py:1461 forms.py:1563 forms.py:1630 +#: forms.py:1469 forms.py:1571 forms.py:1638 msgid "You should select an administrative act." msgstr "" -#: forms.py:1477 models.py:1718 +#: forms.py:1485 models.py:1727 msgid "Signature date" msgstr "" -#: forms.py:1489 +#: forms.py:1497 msgid "Operation - Administrative act - General" msgstr "" -#: forms.py:1523 +#: forms.py:1531 #, python-format msgid "" "This index already exists for year: %(year)d - use a value bigger than " "%(last_val)d" msgstr "" -#: forms.py:1527 +#: forms.py:1535 msgid "Bad index" msgstr "" -#: forms.py:1540 +#: forms.py:1548 msgid "Would you like to delete this administrative act?" msgstr "" -#: forms.py:1545 +#: forms.py:1553 msgid "Template" msgstr "" -#: forms.py:1569 forms.py:1573 +#: forms.py:1577 forms.py:1581 msgid "This document is not intended for this type of act." msgstr "" -#: forms.py:1591 +#: forms.py:1599 msgid "Doc generation" msgstr "" -#: forms.py:1593 +#: forms.py:1601 msgid "Generate the associated doc?" msgstr "" -#: forms.py:1614 ishtar_menu.py:101 views.py:465 +#: forms.py:1622 ishtar_menu.py:101 views.py:465 msgctxt "admin act register" msgid "Register" msgstr "" @@ -705,12 +705,12 @@ msgstr "" msgid "Deletion" msgstr "" -#: ishtar_menu.py:61 models.py:1737 +#: ishtar_menu.py:61 models.py:1746 #: templates/ishtar/sheet_administrativeact.html:4 msgid "Administrative act" msgstr "" -#: ishtar_menu.py:87 models.py:250 models.py:818 +#: ishtar_menu.py:87 models.py:254 models.py:823 msgid "Documents" msgstr "" @@ -726,17 +726,17 @@ msgstr "" msgid "General informations" msgstr "" -#: ishtar_menu.py:143 models.py:859 +#: ishtar_menu.py:143 models.py:864 #: templates/ishtar/dashboards/dashboard_operation.html:8 -#: templates/ishtar/sheet_site.html:65 +#: templates/ishtar/sheet_site.html:66 msgid "Operations" msgstr "" -#: models.py:56 models.py:76 models.py:94 models.py:2646 +#: models.py:56 models.py:76 models.py:94 models.py:2655 msgid "Order" msgstr "" -#: models.py:58 models.py:2169 +#: models.py:58 models.py:2178 msgid "End date" msgstr "" @@ -773,27 +773,27 @@ msgctxt "key for text search" msgid "reference" msgstr "" -#: models.py:140 models.py:585 +#: models.py:140 models.py:590 msgctxt "key for text search" msgid "name" msgstr "" -#: models.py:144 models.py:617 tests.py:1625 +#: models.py:144 models.py:622 tests.py:1625 msgctxt "key for text search" msgid "period" msgstr "" -#: models.py:148 models.py:613 tests.py:1656 +#: models.py:148 models.py:618 tests.py:1656 msgctxt "key for text search" msgid "remain" msgstr "" -#: models.py:152 models.py:573 tests.py:1633 +#: models.py:152 models.py:578 tests.py:1633 msgctxt "key for text search" msgid "town" msgstr "" -#: models.py:156 models.py:641 +#: models.py:156 models.py:646 msgctxt "key for text search" msgid "comment" msgstr "" @@ -843,584 +843,584 @@ msgctxt "key for text search" msgid "top-operation" msgstr "" -#: models.py:252 models.py:820 models.py:1950 +#: models.py:256 models.py:825 models.py:1959 msgid "Cached name" msgstr "" -#: models.py:281 +#: models.py:285 msgid "SITE" msgstr "" -#: models.py:361 +#: models.py:366 msgid "Unknown" msgstr "" -#: models.py:364 +#: models.py:369 msgid "Virtual operation of site: {}" msgstr "" -#: models.py:504 +#: models.py:509 msgid "Associated file (label)" msgstr "" -#: models.py:505 +#: models.py:510 msgid "Operator name" msgstr "" -#: models.py:506 +#: models.py:511 msgid "Scientist (full name)" msgstr "" -#: models.py:507 +#: models.py:512 msgid "Associated file (external ID)" msgstr "" -#: models.py:508 +#: models.py:513 msgid "Scientist (title)" msgstr "" -#: models.py:509 +#: models.py:514 msgid "Scientist (surname)" msgstr "" -#: models.py:510 +#: models.py:515 msgid "Scientist (name)" msgstr "" -#: models.py:511 +#: models.py:516 msgid "Scientist - Organization (name)" msgstr "" -#: models.py:512 +#: models.py:517 msgid "In charge (title)" msgstr "" -#: models.py:513 +#: models.py:518 msgid "In charge (surname)" msgstr "" -#: models.py:514 +#: models.py:519 msgid "In charge (name)" msgstr "" -#: models.py:515 +#: models.py:520 msgid "In charge - Organization (name)" msgstr "" -#: models.py:520 +#: models.py:525 msgid "Archaeological sites (reference)" msgstr "" -#: models.py:561 models.py:1526 tests.py:1628 tests.py:1673 +#: models.py:566 models.py:1535 tests.py:1628 tests.py:1673 msgctxt "key for text search" msgid "year" msgstr "" -#: models.py:565 +#: models.py:570 msgctxt "key for text search" msgid "operation-code" msgstr "" -#: models.py:569 models.py:1538 +#: models.py:574 models.py:1547 msgctxt "key for text search" msgid "patriarche" msgstr "" -#: models.py:577 models.py:1558 +#: models.py:582 models.py:1567 msgctxt "key for text search" msgid "parcel" msgstr "" -#: models.py:581 +#: models.py:586 msgctxt "key for text search" msgid "department" msgstr "" -#: models.py:589 +#: models.py:594 msgctxt "key for text search" msgid "address" msgstr "" -#: models.py:593 models.py:1542 +#: models.py:598 models.py:1551 msgctxt "key for text search" msgid "type" msgstr "" -#: models.py:597 tests.py:1661 +#: models.py:602 tests.py:1661 msgctxt "key for text search" msgid "is-open" msgstr "" -#: models.py:601 +#: models.py:606 msgctxt "key for text search" msgid "in-charge" msgstr "" -#: models.py:605 +#: models.py:610 msgctxt "key for text search" msgid "scientist" msgstr "" -#: models.py:609 +#: models.py:614 msgctxt "key for text search" msgid "operator" msgstr "" -#: models.py:621 +#: models.py:626 msgctxt "key for text search" msgid "start-before" msgstr "" -#: models.py:625 +#: models.py:630 msgctxt "key for text search" msgid "start-after" msgstr "" -#: models.py:629 +#: models.py:634 msgctxt "key for text search" msgid "end-before" msgstr "" -#: models.py:633 +#: models.py:638 msgctxt "key for text search" msgid "end-after" msgstr "" -#: models.py:637 +#: models.py:642 msgctxt "key for text search" msgid "relation-types" msgstr "" -#: models.py:645 +#: models.py:650 msgctxt "key for text search" msgid "abstract" msgstr "" -#: models.py:650 +#: models.py:655 msgctxt "key for text search" msgid "scientific-documentation-comment" msgstr "" -#: models.py:654 +#: models.py:659 msgctxt "key for text search" msgid "record-quality" msgstr "" -#: models.py:659 +#: models.py:664 msgctxt "key for text search" msgid "report-processing" msgstr "" -#: models.py:664 +#: models.py:669 msgctxt "key for text search" msgid "virtual-operation" msgstr "" -#: models.py:669 models.py:712 +#: models.py:674 models.py:717 msgctxt "key for text search" msgid "site" msgstr "" -#: models.py:673 models.py:1576 +#: models.py:678 models.py:1585 msgctxt "key for text search" msgid "created-by" msgstr "" -#: models.py:677 models.py:1580 +#: models.py:682 models.py:1589 msgctxt "key for text search" msgid "modified-by" msgstr "" -#: models.py:681 +#: models.py:686 msgctxt "key for text search" msgid "documentation-received" msgstr "" -#: models.py:685 +#: models.py:690 msgctxt "key for text search" msgid "documentation-deadline-before" msgstr "" -#: models.py:689 +#: models.py:694 msgctxt "key for text search" msgid "documentation-deadline-after" msgstr "" -#: models.py:693 +#: models.py:698 msgctxt "key for text search" msgid "finds-received" msgstr "" -#: models.py:697 +#: models.py:702 msgctxt "key for text search" msgid "finds-deadline-before" msgstr "" -#: models.py:701 +#: models.py:706 msgctxt "key for text search" msgid "finds-deadline-after" msgstr "" -#: models.py:714 +#: models.py:719 msgctxt "key for text search" msgid "file" msgstr "" -#: models.py:729 templates/ishtar/sheet_operation.html:60 +#: models.py:734 templates/ishtar/sheet_operation.html:60 msgid "Closing date" msgstr "" -#: models.py:736 +#: models.py:741 msgid "In charge scientist" msgstr "" -#: models.py:755 models.py:1932 +#: models.py:760 models.py:1941 msgid "File" msgstr "" -#: models.py:759 +#: models.py:764 msgid "Surface (m2)" msgstr "" -#: models.py:828 +#: models.py:833 msgid "" "If checked, it means that this operation have not been officialy registered." msgstr "" -#: models.py:907 +#: models.py:912 msgid "OPE" msgstr "" -#: models.py:1004 +#: models.py:1009 msgid "Intercommunal" msgstr "" -#: models.py:1040 +#: models.py:1045 msgid "Code patriarche" msgstr "" -#: models.py:1082 +#: models.py:1087 msgid "This operation code already exists for this year" msgstr "" -#: models.py:1135 +#: models.py:1144 msgid "Number of parcels" msgstr "" -#: models.py:1145 +#: models.py:1154 msgid "Number of administrative acts" msgstr "" -#: models.py:1153 +#: models.py:1162 msgid "Number of indexed administrative acts" msgstr "" -#: models.py:1161 +#: models.py:1170 msgid "Number of context records" msgstr "" -#: models.py:1197 +#: models.py:1206 msgid "Number of finds" msgstr "" -#: models.py:1242 +#: models.py:1251 msgid "No type" msgstr "" -#: models.py:1273 +#: models.py:1282 msgid "Number of sources" msgstr "" -#: models.py:1311 templates/ishtar/dashboards/dashboard_operation.html:309 +#: models.py:1320 templates/ishtar/dashboards/dashboard_operation.html:309 #: templates/ishtar/dashboards/dashboard_operation.html:575 #: templates/ishtar/dashboards/dashboard_operation.html:611 msgid "Mean" msgstr "" -#: models.py:1373 +#: models.py:1382 msgid "Operation relation type" msgstr "" -#: models.py:1374 +#: models.py:1383 msgid "Operation relation types" msgstr "" -#: models.py:1387 +#: models.py:1396 msgid "Operation record relation" msgstr "" -#: models.py:1388 +#: models.py:1397 msgid "Operation record relations" msgstr "" -#: models.py:1430 models.py:1712 +#: models.py:1439 models.py:1721 msgid "Treatment request" msgstr "" -#: models.py:1431 models.py:1717 +#: models.py:1440 models.py:1726 msgid "Treatment" msgstr "" -#: models.py:1433 +#: models.py:1442 msgid "Intended to" msgstr "" -#: models.py:1435 +#: models.py:1444 msgid "Code" msgstr "" -#: models.py:1438 +#: models.py:1447 msgid "Associated template" msgstr "" -#: models.py:1439 +#: models.py:1448 msgid "Indexed" msgstr "" -#: models.py:1443 +#: models.py:1452 msgid "Act types" msgstr "" -#: models.py:1513 models.py:1758 +#: models.py:1522 models.py:1767 #: templates/ishtar/blocks/window_tables/administrativacts.html:6 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:6 msgid "Ref." msgstr "" -#: models.py:1530 +#: models.py:1539 msgctxt "key for text search" msgid "index" msgstr "" -#: models.py:1534 +#: models.py:1543 msgctxt "key for text search" msgid "other-ref" msgstr "" -#: models.py:1546 +#: models.py:1555 msgctxt "key for text search" msgid "indexed" msgstr "" -#: models.py:1550 +#: models.py:1559 msgctxt "key for text search" msgid "operation-town" msgstr "" -#: models.py:1554 +#: models.py:1563 msgctxt "key for text search" msgid "file-town" msgstr "" -#: models.py:1564 +#: models.py:1573 msgctxt "key for text search" msgid "operation-department" msgstr "" -#: models.py:1568 +#: models.py:1577 msgctxt "key for text search" msgid "file-department" msgstr "" -#: models.py:1572 +#: models.py:1581 msgctxt "key for text search" msgid "object" msgstr "" -#: models.py:1584 +#: models.py:1593 msgctxt "key for text search" msgid "signature-before" msgstr "" -#: models.py:1588 +#: models.py:1597 msgctxt "key for text search" msgid "signature-after" msgstr "" -#: models.py:1592 +#: models.py:1601 msgctxt "key for text search" msgid "file-name" msgstr "" -#: models.py:1596 +#: models.py:1605 msgctxt "key for text search" msgid "general-contractor" msgstr "" -#: models.py:1601 +#: models.py:1610 msgctxt "key for text search" msgid "general-contractor-organization" msgstr "" -#: models.py:1606 +#: models.py:1615 msgctxt "key for text search" msgid "file-reference" msgstr "" -#: models.py:1610 +#: models.py:1619 msgctxt "key for text search" msgid "file-year" msgstr "" -#: models.py:1614 +#: models.py:1623 msgctxt "key for text search" msgid "file-other-reference" msgstr "" -#: models.py:1618 +#: models.py:1627 msgctxt "key for text search" msgid "file-in-charge" msgstr "" -#: models.py:1622 +#: models.py:1631 msgctxt "key for text search" msgid "file-permit-reference" msgstr "" -#: models.py:1626 +#: models.py:1635 msgctxt "key for text search" msgid "treatment-name" msgstr "" -#: models.py:1630 +#: models.py:1639 msgctxt "key for text search" msgid "treatment-reference" msgstr "" -#: models.py:1634 +#: models.py:1643 msgctxt "key for text search" msgid "treatment-year" msgstr "" -#: models.py:1638 +#: models.py:1647 msgctxt "key for text search" msgid "treatment-index" msgstr "" -#: models.py:1642 +#: models.py:1651 msgctxt "key for text search" msgid "treatment-type" msgstr "" -#: models.py:1646 +#: models.py:1655 msgctxt "key for text search" msgid "treatment-file-name" msgstr "" -#: models.py:1650 +#: models.py:1659 msgctxt "key for text search" msgid "treatment-file-reference" msgstr "" -#: models.py:1654 +#: models.py:1663 msgctxt "key for text search" msgid "treatment-file-year" msgstr "" -#: models.py:1658 +#: models.py:1667 msgctxt "key for text search" msgid "treatment-file-index" msgstr "" -#: models.py:1662 +#: models.py:1671 msgctxt "key for text search" msgid "treatment-file-type" msgstr "" -#: models.py:1685 +#: models.py:1694 msgid "Person in charge of the operation" msgstr "" -#: models.py:1691 +#: models.py:1700 msgid "Archaeological preventive operator" msgstr "" -#: models.py:1699 +#: models.py:1708 msgid "Signatory" msgstr "" -#: models.py:1727 +#: models.py:1736 msgid "Departments" msgstr "" -#: models.py:1728 +#: models.py:1737 msgid "Cached values get from associated departments" msgstr "" -#: models.py:1731 +#: models.py:1740 msgid "Cached values get from associated towns" msgstr "" -#: models.py:1738 templates/ishtar/sheet_operation.html:202 +#: models.py:1747 templates/ishtar/sheet_operation.html:202 #: templates/ishtar/sheet_operation.html:248 msgid "Administrative acts" msgstr "" -#: models.py:1861 +#: models.py:1870 msgid "This index already exists for this year" msgstr "" -#: models.py:1945 +#: models.py:1954 msgid "External ID" msgstr "" -#: models.py:1948 +#: models.py:1957 msgid "External ID is set automatically" msgstr "" -#: models.py:1949 +#: models.py:1958 msgid "Address - Locality" msgstr "" -#: models.py:2164 +#: models.py:2173 msgid "Owner" msgstr "" -#: models.py:2172 +#: models.py:2181 msgid "Parcel owner" msgstr "" -#: models.py:2173 +#: models.py:2182 msgid "Parcel owners" msgstr "" -#: models.py:2207 +#: models.py:2216 msgid "Recorded" msgstr "" -#: models.py:2208 +#: models.py:2217 msgid "Effective" msgstr "" -#: models.py:2209 +#: models.py:2218 msgid "Active" msgstr "" -#: models.py:2210 +#: models.py:2219 msgid "Field completed" msgstr "" -#: models.py:2211 +#: models.py:2220 msgid "Associated report" msgstr "" -#: models.py:2212 +#: models.py:2221 msgid "Closed" msgstr "" -#: models.py:2213 +#: models.py:2222 msgid "Documented and closed" msgstr "" -#: models.py:2647 +#: models.py:2656 msgid "Is preventive" msgstr "" -#: models.py:2650 +#: models.py:2659 msgid "Operation type old" msgstr "" -#: models.py:2651 +#: models.py:2660 msgid "Operation types old" msgstr "" @@ -1722,7 +1722,7 @@ msgid "Patriarche OA code not yet recorded!" msgstr "" #: templates/ishtar/sheet_operation.html:159 -#: templates/ishtar/sheet_site.html:43 +#: templates/ishtar/sheet_site.html:44 msgid "Localisation" msgstr "" @@ -1749,7 +1749,7 @@ msgstr "" #: templates/ishtar/sheet_operation.html:229 #: templates/ishtar/sheet_operation.html:286 -#: templates/ishtar/sheet_site.html:70 +#: templates/ishtar/sheet_site.html:71 msgid "Finds" msgstr "" diff --git a/ishtar_common/locale/django.pot b/ishtar_common/locale/django.pot index 7435f077a..2b4664b19 100644 --- a/ishtar_common/locale/django.pot +++ b/ishtar_common/locale/django.pot @@ -2028,7 +2028,7 @@ msgid "Leave blank for no restrictions" msgstr "" #: models_imports.py:136 -msgid "Is template" +msgid "Can be exported" msgstr "" #: models_imports.py:137 @@ -2136,11 +2136,11 @@ msgstr "" msgid "Importer - Targets" msgstr "" -#: models_imports.py:525 views_item.py:867 +#: models_imports.py:525 views_item.py:869 msgid "True" msgstr "" -#: models_imports.py:526 views_item.py:869 +#: models_imports.py:526 views_item.py:871 msgid "False" msgstr "" @@ -3351,12 +3351,12 @@ msgstr "" msgid "Responsible for planning service of archaeological files" msgstr "" -#: templates/ishtar/wizard/confirm_wizard.html:12 +#: templates/ishtar/wizard/confirm_wizard.html:14 #: templates/ishtar/wizard/wizard_done_summary.html:6 msgid "You have entered the following informations:" msgstr "" -#: templates/ishtar/wizard/confirm_wizard.html:50 +#: templates/ishtar/wizard/confirm_wizard.html:56 msgid "Would you like to save them?" msgstr "" diff --git a/translations/de/ishtar_common.po b/translations/de/ishtar_common.po index d8e6d4cdb..bb8799f64 100644 --- a/translations/de/ishtar_common.po +++ b/translations/de/ishtar_common.po @@ -2030,7 +2030,7 @@ msgid "Leave blank for no restrictions" msgstr "" #: models_imports.py:136 -msgid "Is template" +msgid "Can be exported" msgstr "" #: models_imports.py:137 @@ -2138,11 +2138,11 @@ msgstr "" msgid "Importer - Targets" msgstr "" -#: models_imports.py:525 views_item.py:867 +#: models_imports.py:525 views_item.py:869 msgid "True" msgstr "" -#: models_imports.py:526 views_item.py:869 +#: models_imports.py:526 views_item.py:871 msgid "False" msgstr "" @@ -3353,12 +3353,12 @@ msgstr "" msgid "Responsible for planning service of archaeological files" msgstr "" -#: templates/ishtar/wizard/confirm_wizard.html:12 +#: templates/ishtar/wizard/confirm_wizard.html:14 #: templates/ishtar/wizard/wizard_done_summary.html:6 msgid "You have entered the following informations:" msgstr "" -#: templates/ishtar/wizard/confirm_wizard.html:50 +#: templates/ishtar/wizard/confirm_wizard.html:56 msgid "Would you like to save them?" msgstr "" diff --git a/translations/fr/archaeological_context_records.po b/translations/fr/archaeological_context_records.po index d20a86c19..7ffe62cd7 100644 --- a/translations/fr/archaeological_context_records.po +++ b/translations/fr/archaeological_context_records.po @@ -22,11 +22,11 @@ msgstr "" msgid "Point" msgstr "Point" -#: admin.py:51 models.py:410 +#: admin.py:51 models.py:427 msgid "Multi polygon" msgstr "Polygones multi-parties" -#: forms.py:47 forms.py:53 models.py:352 wizards.py:81 +#: forms.py:47 forms.py:53 models.py:369 wizards.py:81 msgid "Operation" msgstr "Opération" @@ -42,7 +42,7 @@ msgstr "Unité d'enregistrement - 001 - Recherche" msgid "Full text search" msgstr "Recherche en texte intégral" -#: forms.py:69 forms.py:155 models.py:357 models.py:737 +#: forms.py:69 forms.py:155 models.py:374 models.py:754 msgid "ID" msgstr "Identifiant" @@ -58,7 +58,7 @@ msgstr "Année de l'opération" msgid "Operation's number (index by year)" msgstr "Numéro de l'opération (index par année)" -#: forms.py:80 models.py:355 +#: forms.py:80 models.py:372 msgid "Archaeological site" msgstr "Entité archéologique" @@ -74,8 +74,8 @@ msgstr "Période" msgid "Unit type" msgstr "Type d'unité" -#: forms.py:89 forms.py:148 models.py:231 models.py:232 models.py:347 -#: models.py:739 +#: forms.py:89 forms.py:148 models.py:248 models.py:249 models.py:364 +#: models.py:756 msgid "Parcel" msgstr "Parcelle" @@ -99,7 +99,7 @@ msgstr "Général" msgid "Context record - 020 - General" msgstr "Unité d'enregistrement - 020 - Général" -#: forms.py:149 models.py:228 models.py:229 models.py:350 +#: forms.py:149 models.py:245 models.py:246 models.py:367 msgid "Town" msgstr "Commune" @@ -107,52 +107,52 @@ msgstr "Commune" msgid "Only the items associated to the operation can be selected." msgstr "Seuls les éléments associés à l'opération peuvent être sélectionnés." -#: forms.py:157 models.py:358 models.py:740 +#: forms.py:157 models.py:375 models.py:757 #: templates/ishtar/sheet_contextrecord.html:45 msgid "Description" msgstr "Description" -#: forms.py:159 models.py:359 +#: forms.py:159 models.py:376 msgid "General comment" msgstr "Commentaire général" -#: forms.py:162 models.py:405 +#: forms.py:162 models.py:422 msgid "Excavation technique" msgstr "Méthode de fouille" -#: forms.py:163 models.py:363 +#: forms.py:163 models.py:380 msgid "Length (m)" msgstr "Taille (m)" -#: forms.py:164 models.py:364 +#: forms.py:164 models.py:381 msgid "Width (m)" msgstr "Largeur (m)" -#: forms.py:165 models.py:365 +#: forms.py:165 models.py:382 msgid "Thickness (m)" msgstr "Épaisseur (m)" -#: forms.py:166 models.py:367 +#: forms.py:166 models.py:384 msgid "Diameter (m)" msgstr "Diamètre (m)" -#: forms.py:167 models.py:368 +#: forms.py:167 models.py:385 msgid "Depth (m)" msgstr "Profondeur (m)" -#: forms.py:169 models.py:370 +#: forms.py:169 models.py:387 msgid "Depth of appearance (m)" msgstr "Profondeur d'apparition (m)" -#: forms.py:170 models.py:379 models.py:738 +#: forms.py:170 models.py:396 models.py:755 msgid "Context record type" msgstr "Type d'Unité d'Enregistrement" -#: forms.py:172 models.py:360 +#: forms.py:172 models.py:377 msgid "Opening date" msgstr "Date d'ouverture" -#: forms.py:174 models.py:362 templates/ishtar/sheet_contextrecord.html:140 +#: forms.py:174 models.py:379 templates/ishtar/sheet_contextrecord.html:140 msgid "Closing date" msgstr "Date de clôture" @@ -160,7 +160,7 @@ msgstr "Date de clôture" msgid "Documentation" msgstr "Documentation" -#: forms.py:180 models.py:372 +#: forms.py:180 models.py:389 msgid "Location" msgstr "Localisation" @@ -196,7 +196,7 @@ msgstr "Type de datation" msgid "Context record - 030 - Dating" msgstr "Unité d'enregistrement - 030 - Datation" -#: forms.py:315 ishtar_menu.py:29 models.py:91 +#: forms.py:315 ishtar_menu.py:29 models.py:108 msgid "Context record" msgstr "Unité d'Enregistrement" @@ -208,7 +208,7 @@ msgstr "Relations" msgid "Context record - 050 - Relations" msgstr "Unité d'enregistrement - 050 - Relations" -#: forms.py:337 forms.py:348 models.py:382 +#: forms.py:337 forms.py:348 models.py:399 #: templates/ishtar/sheet_contextrecord.html:64 msgid "Interpretation" msgstr "Interprétation" @@ -221,31 +221,31 @@ msgstr "Unité d'enregistrement - 040 - Interprétation" msgid "Comments on dating" msgstr "Commentaire relatif à la datation" -#: forms.py:346 models.py:381 +#: forms.py:346 models.py:398 msgid "Filling" msgstr "Remplissage" -#: forms.py:350 models.py:402 +#: forms.py:350 models.py:419 msgid "Activity" msgstr "Activité" -#: forms.py:352 models.py:400 +#: forms.py:352 models.py:417 msgid "Identification" msgstr "Identification" -#: forms.py:354 models.py:385 +#: forms.py:354 models.py:402 msgid "TAQ" msgstr "TAQ" -#: forms.py:355 models.py:389 +#: forms.py:355 models.py:406 msgid "Estimated TAQ" msgstr "TAQ estimé" -#: forms.py:357 models.py:392 +#: forms.py:357 models.py:409 msgid "TPQ" msgstr "TPQ" -#: forms.py:358 models.py:396 +#: forms.py:358 models.py:413 msgid "Estimated TPQ" msgstr "TPQ estimé" @@ -297,163 +297,163 @@ msgstr "Datation précise" msgid "Datings" msgstr "Datations" -#: models.py:98 +#: models.py:115 msgid "Find" msgstr "Mobilier" -#: models.py:117 models.py:136 models.py:152 +#: models.py:134 models.py:153 models.py:169 msgid "Order" msgstr "Ordre" -#: models.py:119 +#: models.py:136 msgid "Parent context record type" msgstr "Type d'UE parent" -#: models.py:123 +#: models.py:140 msgid "Context record Type" msgstr "Type d'Unité d'Enregistrement" -#: models.py:124 +#: models.py:141 msgid "Context record Types" msgstr "Types d'Unité d'Enregistrement" -#: models.py:139 +#: models.py:156 msgid "Activity Type" msgstr "Type d'activité" -#: models.py:140 +#: models.py:157 msgid "Activity Types" msgstr "Types d'activité" -#: models.py:155 +#: models.py:172 msgid "Identification Type" msgstr "Type d'identification" -#: models.py:156 +#: models.py:173 msgid "Identification Types" msgstr "Types d'identification" -#: models.py:169 +#: models.py:186 msgid "Excavation technique type" msgstr "Type de méthode de fouille" -#: models.py:170 +#: models.py:187 msgid "Excavation technique types" msgstr "Types de méthode de fouille" -#: models.py:180 +#: models.py:197 msgid "Documentation type" msgstr "Type de documentation" -#: models.py:181 +#: models.py:198 msgid "Documentation types" msgstr "Types de documentation" -#: models.py:222 models.py:741 +#: models.py:239 models.py:758 msgid "Periods" msgstr "Périodes" -#: models.py:223 +#: models.py:240 msgid "Datings (period)" msgstr "Datations (période)" -#: models.py:224 +#: models.py:241 msgid "Related context records" msgstr "Unités d'Enregistrement liées" -#: models.py:225 +#: models.py:242 msgid "Operation (Patriarche code)" msgstr "Opération (code Patriarche)" -#: models.py:226 +#: models.py:243 msgid "Operation (name)" msgstr "Opération (nom)" -#: models.py:227 +#: models.py:244 msgid "Parcel (external ID)" msgstr "Parcelle (identifiant)" -#: models.py:230 +#: models.py:247 msgid "Parcel (year)" msgstr "Parcelle (année)" -#: models.py:265 +#: models.py:282 msgctxt "key for text search" msgid "id" msgstr "id" -#: models.py:269 +#: models.py:286 msgctxt "key for text search" msgid "town" msgstr "commune" -#: models.py:273 +#: models.py:290 msgctxt "key for text search" msgid "operation-year" msgstr "operation-annee" -#: models.py:277 +#: models.py:294 msgctxt "key for text search" msgid "patriarche" msgstr "patriarche" -#: models.py:281 +#: models.py:298 msgctxt "key for text search" msgid "operation-code" msgstr "operation-code" -#: models.py:285 models.py:327 +#: models.py:302 models.py:344 msgctxt "key for text search" msgid "operation" msgstr "operation" -#: models.py:289 models.py:330 +#: models.py:306 models.py:347 msgctxt "key for text search" msgid "site" msgstr "site" -#: models.py:293 +#: models.py:310 msgctxt "key for text search" msgid "operation-relation-type" msgstr "operation-type-relation" -#: models.py:297 +#: models.py:314 msgctxt "key for text search" msgid "period" msgstr "periode" -#: models.py:301 +#: models.py:318 msgctxt "key for text search" msgid "unit-type" msgstr "type" -#: models.py:305 +#: models.py:322 msgctxt "key for text search" msgid "parcel" msgstr "parcelle" -#: models.py:309 +#: models.py:326 msgctxt "key for text search" msgid "record-relation-type" msgstr "ue-type-relation" -#: models.py:343 +#: models.py:360 msgid "External ID" msgstr "Identifiant" -#: models.py:345 +#: models.py:362 msgid "External ID is set automatically" msgstr "L'identifiant est attribué automatiquement" -#: models.py:373 +#: models.py:390 msgid "A short description of the location of the context record" msgstr "Une courte description de la localisation de l'Unité d'Enregistrement" -#: models.py:377 +#: models.py:394 msgid "Comment on datings" msgstr "Commentaire relatif aux datations" -#: models.py:386 +#: models.py:403 msgid "" "\"Terminus Ante Quem\" the context record can't have been created after this " "date" @@ -461,11 +461,11 @@ msgstr "" "« Terminus Ante Quem ». L'Unité d'Enregistrement ne peut avoir été créée " "après cette date." -#: models.py:390 +#: models.py:407 msgid "Estimation of a \"Terminus Ante Quem\"" msgstr "Estimation d'un « Terminus Ante Quem »." -#: models.py:393 +#: models.py:410 msgid "" "\"Terminus Post Quem\" the context record can't have been created before " "this date" @@ -473,88 +473,88 @@ msgstr "" "« Terminus Post Quem ». L'Unité d'Enregistrement ne peut avoir été créée " "avant cette date." -#: models.py:397 +#: models.py:414 msgid "Estimation of a \"Terminus Post Quem\"" msgstr "Estimation d'un « Terminus Post Quem »." -#: models.py:408 +#: models.py:425 msgid "Point (2D)" msgstr "Point (2D)" -#: models.py:409 +#: models.py:426 msgid "Point (3D)" msgstr "Point (3D)" -#: models.py:413 +#: models.py:430 msgid "Documents" msgstr "Documents" -#: models.py:415 +#: models.py:432 msgid "Cached name" msgstr "Nom en cache" -#: models.py:419 models.py:420 templates/ishtar/sheet_contextrecord.html:4 +#: models.py:436 models.py:437 templates/ishtar/sheet_contextrecord.html:4 msgid "Context Record" msgstr "Unité d'Enregistrement" -#: models.py:439 +#: models.py:456 msgctxt "short" msgid "Context record" msgstr "UE" -#: models.py:668 models.py:691 models.py:736 +#: models.py:685 models.py:708 models.py:753 msgid "Relation type" msgstr "Type de relation" -#: models.py:669 +#: models.py:686 msgid "Relation types" msgstr "Types de relation" -#: models.py:686 +#: models.py:703 msgid "ID (left)" msgstr "Identifiant (gauche)" -#: models.py:687 +#: models.py:704 msgid "Context record type (left)" msgstr "Type d'UE (gauche)" -#: models.py:688 +#: models.py:705 msgid "Parcel (left)" msgstr "Parcelle (gauche)" -#: models.py:689 +#: models.py:706 msgid "Description (left)" msgstr "Description (gauche)" -#: models.py:690 +#: models.py:707 msgid "Periods (left)" msgstr "Périodes (gauche)" -#: models.py:692 +#: models.py:709 msgid "ID (right)" msgstr "Identifiant (droit)" -#: models.py:693 +#: models.py:710 msgid "Context record type (right)" msgstr "Type d'UE (droite)" -#: models.py:694 +#: models.py:711 msgid "Parcel (right)" msgstr "Parcelle (droite)" -#: models.py:695 +#: models.py:712 msgid "Description (right)" msgstr "Description (droite)" -#: models.py:696 +#: models.py:713 msgid "Periods (right)" msgstr "Périodes (droite)" -#: models.py:705 +#: models.py:722 msgid "Record relation" msgstr "Relation entre Unités d'Enregistrement" -#: models.py:706 +#: models.py:723 msgid "Record relations" msgstr "Relations entre Unités d'Enregistrement" diff --git a/translations/fr/archaeological_finds.po b/translations/fr/archaeological_finds.po index 3d81efbca..1e200761b 100644 --- a/translations/fr/archaeological_finds.po +++ b/translations/fr/archaeological_finds.po @@ -11,7 +11,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Content-Type: text/plain; charset=UTF-8\n" -"PO-Revision-Date: 2018-11-27 10:00+0000\n" +"PO-Revision-Date: 2018-11-28 05:58+0000\n" "Last-Translator: Étienne Loks \n" "Language-Team: \n" "Language: fr\n" @@ -40,7 +40,7 @@ msgid "Find - 010 - Context record choice" msgstr "Mobilier - 010 - Choix de l'unité d'enregistrement" #: forms.py:133 forms.py:255 ishtar_menu.py:32 models_finds.py:1110 -#: models_finds.py:1743 models_treatments.py:512 +#: models_finds.py:1751 models_treatments.py:505 #: templates/ishtar/sheet_find.html:4 msgid "Find" msgstr "Mobilier" @@ -134,7 +134,7 @@ msgstr "Communicabilité" #: forms.py:195 forms.py:432 forms.py:584 forms.py:1177 forms_treatments.py:145 #: forms_treatments.py:606 models_finds.py:264 models_finds.py:1056 -#: models_treatments.py:149 models_treatments.py:772 +#: models_treatments.py:149 models_treatments.py:765 msgid "Comment" msgstr "Commentaire général" @@ -363,7 +363,7 @@ msgstr "Mise à jour" #: forms.py:652 forms.py:836 forms.py:1204 forms.py:1208 ishtar_menu.py:57 #: models_finds.py:943 templates/ishtar/sheet_findbasket.html:4 views.py:694 -#: wizards.py:353 +#: wizards.py:359 msgid "Basket" msgstr "Panier" @@ -433,14 +433,14 @@ msgid "Dating" msgstr "Datation" #: forms.py:766 forms_treatments.py:131 forms_treatments.py:398 -#: forms_treatments.py:608 models_finds.py:1748 models_treatments.py:152 -#: models_treatments.py:523 templates/ishtar/sheet_find.html:196 +#: forms_treatments.py:608 models_finds.py:1756 models_treatments.py:152 +#: models_treatments.py:516 templates/ishtar/sheet_find.html:196 #: templates/ishtar/sheet_find.html:254 templates/ishtar/sheet_find.html:291 #: templates/ishtar/sheet_find.html:329 msgid "Start date" msgstr "Date de début" -#: forms.py:768 models_finds.py:1749 models_treatments.py:524 +#: forms.py:768 models_finds.py:1757 models_treatments.py:517 #: templates/ishtar/sheet_find.html:197 templates/ishtar/sheet_find.html:255 #: templates/ishtar/sheet_find.html:292 templates/ishtar/sheet_find.html:330 msgid "End date" @@ -482,7 +482,7 @@ msgstr "Identifiant complet" #: forms.py:804 forms_treatments.py:56 forms_treatments.py:102 #: forms_treatments.py:323 forms_treatments.py:451 forms_treatments.py:526 #: forms_treatments.py:578 forms_treatments.py:718 models_treatments.py:126 -#: models_treatments.py:745 +#: models_treatments.py:738 msgid "Year" msgstr "Année" @@ -606,13 +606,13 @@ msgstr "Autre réf." #: forms_treatments.py:57 forms_treatments.py:260 forms_treatments.py:452 #: forms_treatments.py:514 forms_treatments.py:527 forms_treatments.py:631 #: forms_treatments.py:719 forms_treatments.py:786 models_treatments.py:127 -#: models_treatments.py:746 +#: models_treatments.py:739 msgid "Index" msgstr "Index" #: forms_treatments.py:58 forms_treatments.py:98 forms_treatments.py:406 #: forms_treatments.py:468 models_finds.py:111 models_treatments.py:132 -#: models_treatments.py:522 +#: models_treatments.py:515 msgid "Treatment type" msgstr "Type de traitement" @@ -621,7 +621,7 @@ msgid "Treatment search" msgstr "Rechercher un traitement" #: forms_treatments.py:83 ishtar_menu.py:147 models_treatments.py:175 -#: models_treatments.py:514 templates/ishtar/sheet_treatment.html:4 +#: models_treatments.py:507 templates/ishtar/sheet_treatment.html:4 #: templates/ishtar/sheet_treatment.html:17 msgid "Treatment" msgstr "Traitement" @@ -636,7 +636,7 @@ msgstr "Traitement - 020 - Général" msgid "State" msgstr "État" -#: forms_treatments.py:107 models_treatments.py:137 models_treatments.py:525 +#: forms_treatments.py:107 models_treatments.py:137 models_treatments.py:518 msgid "Location" msgstr "Localisation" @@ -650,7 +650,7 @@ msgid "Organization" msgstr "Organisation" #: forms_treatments.py:133 forms_treatments.py:398 forms_treatments.py:614 -#: forms_treatments.py:667 models_treatments.py:153 models_treatments.py:766 +#: forms_treatments.py:667 models_treatments.py:153 models_treatments.py:759 msgid "Closing date" msgstr "Date de clôture" @@ -720,8 +720,8 @@ msgid "Treatment - 010 - Request choice" msgstr "Traitement - 010 - Choix de la demande de traitement" #: forms_treatments.py:296 forms_treatments.py:569 ishtar_menu.py:95 -#: models_treatments.py:781 models_treatments.py:803 -#: templates/ishtar/sheet_treatmentfile.html:4 wizards.py:457 +#: models_treatments.py:774 models_treatments.py:796 +#: templates/ishtar/sheet_treatmentfile.html:4 wizards.py:464 msgid "Treatment request" msgstr "Demande de traitement" @@ -739,7 +739,7 @@ msgid "Would you like to delete this treatment?" msgstr "Voulez-vous supprimer ce traitement ?" #: forms_treatments.py:313 models_finds.py:697 models_finds.py:1017 -#: models_treatments.py:155 models_treatments.py:526 +#: models_treatments.py:155 models_treatments.py:519 #: templates/ishtar/sheet_find.html:253 templates/ishtar/sheet_find.html:290 #: templates/ishtar/sheet_find.html:328 msgid "Container" @@ -826,7 +826,7 @@ msgstr "Modifié par" msgid "Treatment - Administrative act - General" msgstr "Traitement - Acte administratif - Général" -#: forms_treatments.py:524 forms_treatments.py:576 models_treatments.py:751 +#: forms_treatments.py:524 forms_treatments.py:576 models_treatments.py:744 msgid "Name" msgstr "Nom" @@ -844,12 +844,12 @@ msgstr "Type" msgid "In charge" msgstr "Responsable" -#: forms_treatments.py:537 forms_treatments.py:595 models_treatments.py:760 +#: forms_treatments.py:537 forms_treatments.py:595 models_treatments.py:753 #: templates/ishtar/sheet_treatmentfile.html:45 msgid "Applicant" msgstr "Demandeur" -#: forms_treatments.py:543 forms_treatments.py:601 models_treatments.py:764 +#: forms_treatments.py:543 forms_treatments.py:601 models_treatments.py:757 #: templates/ishtar/sheet_treatmentfile.html:53 msgid "Applicant organisation" msgstr "Organisation du demandeur" @@ -862,7 +862,7 @@ msgstr "Rechercher une demande de traitement" msgid "External ref." msgstr "Référence" -#: forms_treatments.py:612 forms_treatments.py:666 models_treatments.py:770 +#: forms_treatments.py:612 forms_treatments.py:666 models_treatments.py:763 msgid "Reception date" msgstr "Date de réception" @@ -878,12 +878,12 @@ msgstr "Êtes-vous sûr de vouloir supprimer cette demande de traitement ? " msgid "Would you like to delete this treatment request?" msgstr "Voulez-vous supprimer cette demande de traitement ?" -#: forms_treatments.py:665 models_treatments.py:768 +#: forms_treatments.py:665 models_treatments.py:761 msgid "Creation date" msgstr "Date de création" -#: forms_treatments.py:675 forms_treatments.py:739 models_treatments.py:682 -#: models_treatments.py:753 +#: forms_treatments.py:675 forms_treatments.py:739 models_treatments.py:675 +#: models_treatments.py:746 msgid "Treatment request type" msgstr "Type de demande de traitement" @@ -931,12 +931,12 @@ msgstr "Suppression" msgid "Manage items" msgstr "Gestion des éléments" -#: ishtar_menu.py:120 ishtar_menu.py:182 models_finds.py:1745 +#: ishtar_menu.py:120 ishtar_menu.py:182 models_finds.py:1753 msgid "Administrative act" msgstr "Acte administratif" #: ishtar_menu.py:138 ishtar_menu.py:201 models_finds.py:1098 -#: models_treatments.py:168 models_treatments.py:774 +#: models_treatments.py:168 models_treatments.py:767 #: templates/ishtar/sheet_find.html:56 templates/ishtar/sheet_treatment.html:32 msgid "Documents" msgstr "Documents" @@ -963,7 +963,7 @@ msgstr "Recommandation" #: models_finds.py:66 models_finds.py:79 models_finds.py:92 models_finds.py:143 #: models_finds.py:166 models_finds.py:223 models_finds.py:984 -#: models_treatments.py:518 +#: models_treatments.py:511 msgid "Order" msgstr "Ordre" @@ -1100,7 +1100,7 @@ msgid "Checked types" msgstr "Types de vérification" #: models_finds.py:259 models_finds.py:977 models_treatments.py:147 -#: models_treatments.py:749 +#: models_treatments.py:742 msgid "External ID" msgstr "Identifiant" @@ -1229,7 +1229,7 @@ msgctxt "key for text search" msgid "town" msgstr "commune" -#: models_finds.py:794 models_treatments.py:91 models_treatments.py:714 +#: models_finds.py:794 models_treatments.py:91 models_treatments.py:707 msgctxt "key for text search" msgid "year" msgstr "annee" @@ -1354,7 +1354,7 @@ msgctxt "key for text search" msgid "container-ref" msgstr "contenant-ref" -#: models_finds.py:897 wizards.py:392 +#: models_finds.py:897 wizards.py:398 msgctxt "key for text search" msgid "basket" msgstr "panier" @@ -1431,7 +1431,7 @@ msgid "Related treatments when no new find is created" msgstr "" "Traitements associés quand il n'y a pas de création de nouveau mobilier" -#: models_finds.py:1104 models_treatments.py:170 models_treatments.py:776 +#: models_finds.py:1104 models_treatments.py:170 models_treatments.py:769 msgid "Cached name" msgstr "Nom en cache" @@ -1443,29 +1443,29 @@ msgstr "MOBILIER" msgid "Add to basket" msgstr "Ajouter au panier" -#: models_finds.py:1246 wizards.py:85 wizards.py:469 +#: models_finds.py:1246 wizards.py:85 wizards.py:476 msgid "Operation" msgstr "Opération (OA)" -#: models_finds.py:1570 +#: models_finds.py:1578 msgid "No container have been set - the localisation cannot be set." msgstr "" "Aucun contenant n'a été défini - la localisation ne peut être définie." -#: models_finds.py:1576 +#: models_finds.py:1584 msgid "The division number {} have not been set for the warehouse {}." msgstr "" "La division numéro {} n'a pas été définie pour le lieu de conservation {}." -#: models_finds.py:1746 +#: models_finds.py:1754 msgid "Person" msgstr "Individu" -#: models_finds.py:1752 +#: models_finds.py:1760 msgid "Property" msgstr "Propriété" -#: models_finds.py:1753 +#: models_finds.py:1761 msgid "Properties" msgstr "Propriétés" @@ -1495,12 +1495,12 @@ msgctxt "key for text search" msgid "other-reference" msgstr "autre-reference" -#: models_treatments.py:95 models_treatments.py:718 +#: models_treatments.py:95 models_treatments.py:711 msgctxt "key for text search" msgid "index" msgstr "index" -#: models_treatments.py:103 models_treatments.py:722 +#: models_treatments.py:103 models_treatments.py:715 msgctxt "key for text search" msgid "type" msgstr "type" @@ -1539,58 +1539,58 @@ msgstr "TRAITEMENT" msgid "Downstream finds" msgstr "Mobilier aval" -#: models_treatments.py:527 templates/ishtar/sheet_find.html:252 +#: models_treatments.py:520 templates/ishtar/sheet_find.html:252 #: templates/ishtar/sheet_find.html:289 templates/ishtar/sheet_find.html:327 msgid "Doer" msgstr "Opérateur" -#: models_treatments.py:528 models_treatments.py:529 +#: models_treatments.py:521 models_treatments.py:522 #: templates/ishtar/sheet_treatment.html:97 msgid "Related finds" msgstr "Mobilier associé" -#: models_treatments.py:671 +#: models_treatments.py:664 msgid "Is upstream" msgstr "Est en amont" -#: models_treatments.py:683 +#: models_treatments.py:676 msgid "Treatment request types" msgstr "Types de demande de traitement" -#: models_treatments.py:706 +#: models_treatments.py:699 msgctxt "key for text search" msgid "name" msgstr "nom" -#: models_treatments.py:710 +#: models_treatments.py:703 msgctxt "key for text search" msgid "reference" msgstr "reference" -#: models_treatments.py:726 +#: models_treatments.py:719 msgctxt "key for text search" msgid "in-charge" msgstr "responsable" -#: models_treatments.py:730 +#: models_treatments.py:723 msgctxt "key for text search" msgid "applicant" msgstr "demandeur" -#: models_treatments.py:734 +#: models_treatments.py:727 msgctxt "key for text search" msgid "applicant-organisation" msgstr "demandeur-organisation" -#: models_treatments.py:747 +#: models_treatments.py:740 msgid "Internal reference" msgstr "Référence interne" -#: models_treatments.py:756 +#: models_treatments.py:749 msgid "Person in charge" msgstr "Personne responsable" -#: models_treatments.py:782 +#: models_treatments.py:775 msgid "Treatment requests" msgstr "Demandes de traitement" @@ -1754,6 +1754,28 @@ msgstr "" "champs associés aux mobiliers d'origines, modifiez le mobilier correspondant " "parmi ceux-ci :" +#: templates/ishtar/wizard/wizard_treatement_deletion.html:8 +msgid "Are you sure you want to delete this treatment?" +msgstr "Êtes-vous sûr de vouloir supprimer ce traitement ? " + +#: templates/ishtar/wizard/wizard_treatement_deletion.html:10 +msgid "" +"The following finds will be deleted and restored to a previous version." +msgstr "" +"Le mobilier suivant sera supprimé et restauré à une version précédente." + +#: templates/ishtar/wizard/wizard_treatement_deletion.html:16 +msgid "" +"All changes made to the associated finds since this treatment record will be " +"lost!" +msgstr "" +"Toutes les modifications sur le mobilier associé réalisées depuis " +"l'enregistrement de ce traitement seront perdues !" + +#: templates/ishtar/wizard/wizard_treatement_deletion.html:21 +msgid "Treatment informations:" +msgstr "Informations sur le traitement :" + #: views.py:132 msgid "Basket modify" msgstr "Modification de panier" @@ -1838,7 +1860,7 @@ msgstr "Demande de traitement : modifier un acte administratif" msgid "Treatment request: administrative act deletion" msgstr "Demande de traitement : supprimer un acte administratif" -#: wizards.py:387 +#: wizards.py:393 msgid "" "The new basket: \"{}\" have been created with the resulting items. This " "search have been pinned." diff --git a/translations/fr/archaeological_operations.po b/translations/fr/archaeological_operations.po index abd3b3e89..cfe787dc5 100644 --- a/translations/fr/archaeological_operations.po +++ b/translations/fr/archaeological_operations.po @@ -18,21 +18,21 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n>1;\n" "X-Generator: Zanata 4.6.2\n" -#: admin.py:91 models.py:245 models.py:852 +#: admin.py:91 models.py:249 models.py:857 msgid "Point" msgstr "Point" -#: admin.py:93 models.py:246 models.py:853 +#: admin.py:93 models.py:250 models.py:858 msgid "Multi polygon" msgstr "Polygones multi-parties" -#: forms.py:64 forms.py:1061 forms.py:1077 forms.py:1083 models.py:1955 +#: forms.py:64 forms.py:1061 forms.py:1077 forms.py:1083 models.py:1964 #: templates/ishtar/blocks/window_tables/parcels.html:9 #: templates/ishtar/sheet_operation.html:254 msgid "Parcels" msgstr "Parcelles" -#: forms.py:67 forms.py:200 forms.py:1036 models.py:1939 +#: forms.py:67 forms.py:200 forms.py:1036 models.py:1948 #: templates/ishtar/blocks/window_tables/parcels.html:6 #: templates/ishtar/dashboards/dashboard_operation.html:432 #: templates/ishtar/dashboards/dashboard_operation.html:446 @@ -41,22 +41,22 @@ msgstr "Parcelles" msgid "Town" msgstr "Commune" -#: forms.py:69 forms.py:480 forms.py:763 forms.py:1400 models.py:750 -#: models.py:1513 models.py:1720 models.py:1937 +#: forms.py:69 forms.py:480 forms.py:763 forms.py:1408 models.py:755 +#: models.py:1522 models.py:1729 models.py:1946 #: templates/ishtar/blocks/window_tables/parcels.html:7 msgid "Year" msgstr "Année" -#: forms.py:72 models.py:1940 +#: forms.py:72 models.py:1949 #: templates/ishtar/blocks/window_tables/parcels.html:8 msgid "Section" msgstr "Section" -#: forms.py:75 models.py:1942 +#: forms.py:75 models.py:1951 msgid "Parcel number" msgstr "Numéro de parcelle" -#: forms.py:77 models.py:1944 models.py:1963 models.py:2024 +#: forms.py:77 models.py:1953 models.py:1972 models.py:2033 msgid "Public domain" msgstr "Domaine public" @@ -92,8 +92,8 @@ msgstr "Il y a des parcelles identiques." msgid "Relation type" msgstr "Type de relation" -#: forms.py:373 forms.py:1254 ishtar_menu.py:32 models.py:858 models.py:1418 -#: models.py:1429 models.py:1515 models.py:1702 models.py:1936 +#: forms.py:373 forms.py:1254 ishtar_menu.py:32 models.py:863 models.py:1427 +#: models.py:1438 models.py:1524 models.py:1711 models.py:1945 #: templates/ishtar/sheet_operation.html:4 wizards.py:320 wizards.py:331 msgid "Operation" msgstr "Opération (OA)" @@ -130,19 +130,19 @@ msgstr "Relations" msgid "Operation - 080 - Relations" msgstr "Opération - 080 - Relations" -#: forms.py:478 forms.py:1237 forms.py:1396 +#: forms.py:478 forms.py:1237 forms.py:1404 msgid "Full text search" msgstr "Recherche en texte intégral" -#: forms.py:481 models.py:751 +#: forms.py:481 models.py:756 msgid "Numeric reference" msgstr "Identifiant numérique" -#: forms.py:488 forms.py:1064 forms.py:1412 models.py:1954 models.py:2166 +#: forms.py:488 forms.py:1064 forms.py:1420 models.py:1963 models.py:2175 msgid "Parcel" msgstr "Parcelle" -#: forms.py:491 forms.py:1415 models.py:1419 +#: forms.py:491 forms.py:1423 models.py:1428 #: templates/ishtar/dashboards/dashboard_operation.html:390 #: templates/ishtar/dashboards/dashboard_operation.html:411 #: templates/ishtar/dashboards/dashboard_operation.html:643 @@ -151,17 +151,17 @@ msgstr "Parcelle" msgid "Department" msgstr "Département" -#: forms.py:492 forms.py:1148 forms.py:1241 forms.py:1325 models.py:214 +#: forms.py:492 forms.py:1148 forms.py:1241 forms.py:1326 models.py:214 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:7 #: templates/ishtar/sheet_operation.html:29 msgid "Name" msgstr "Nom" -#: forms.py:493 forms.py:761 models.py:813 +#: forms.py:493 forms.py:761 models.py:818 msgid "Address / Locality" msgstr "Adresse / Lieu-dit" -#: forms.py:494 forms.py:678 forms.py:757 models.py:758 +#: forms.py:494 forms.py:678 forms.py:757 models.py:763 msgid "Operation type" msgstr "Type d'opération" @@ -169,26 +169,26 @@ msgstr "Type d'opération" msgid "Is open?" msgstr "Est ouvert ?" -#: forms.py:503 forms.py:793 models.py:743 +#: forms.py:503 forms.py:793 models.py:748 msgid "In charge" msgstr "Responsable du suivi scientifique" -#: forms.py:510 models.py:1696 +#: forms.py:510 models.py:1705 msgid "Scientist in charge" msgstr "Responsable scientifique" -#: forms.py:512 forms.py:680 forms.py:783 models.py:741 +#: forms.py:512 forms.py:680 forms.py:783 models.py:746 msgid "Operator" msgstr "Opérateur" -#: forms.py:521 forms.py:1153 forms.py:1243 forms.py:1330 models.py:218 -#: models.py:760 +#: forms.py:521 forms.py:1153 forms.py:1243 forms.py:1331 models.py:218 +#: models.py:765 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:9 msgid "Remains" msgstr "Vestiges" -#: forms.py:522 forms.py:1131 forms.py:1150 forms.py:1242 forms.py:1327 -#: models.py:216 models.py:766 +#: forms.py:522 forms.py:1131 forms.py:1150 forms.py:1242 forms.py:1328 +#: models.py:216 models.py:771 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8 msgid "Periods" msgstr "Périodes" @@ -213,8 +213,8 @@ msgstr "Terminé après" msgid "Search within relations" msgstr "Rechercher parmi les relations" -#: forms.py:529 forms.py:841 forms.py:1245 forms.py:1340 models.py:222 -#: models.py:814 +#: forms.py:529 forms.py:841 forms.py:1245 forms.py:1343 models.py:222 +#: models.py:819 msgid "Comment" msgstr "Commentaire" @@ -222,35 +222,35 @@ msgstr "Commentaire" msgid "Abstract (full text search)" msgstr "Résumé (recherche en texte intégral)" -#: forms.py:532 forms.py:844 models.py:816 +#: forms.py:532 forms.py:844 models.py:821 msgid "Comment about scientific documentation" msgstr "Commentaire relatif à la documentation scientifique" -#: forms.py:533 forms.py:846 models.py:831 +#: forms.py:533 forms.py:846 models.py:836 msgid "Record quality" msgstr "Qualité d'enregistrement" -#: forms.py:534 forms.py:812 models.py:778 +#: forms.py:534 forms.py:812 models.py:783 msgid "Report processing" msgstr "Traitement du rapport" -#: forms.py:536 forms.py:849 models.py:826 +#: forms.py:536 forms.py:849 models.py:831 msgid "Virtual operation" msgstr "Opération virtuelle" -#: forms.py:538 forms.py:1188 forms.py:1192 models.py:258 +#: forms.py:538 forms.py:1188 forms.py:1192 models.py:262 msgid "Archaeological site" msgstr "Entité (EA)" -#: forms.py:544 forms.py:1419 +#: forms.py:544 forms.py:1427 msgid "Created by" msgstr "Créé par" -#: forms.py:550 forms.py:1425 +#: forms.py:550 forms.py:1433 msgid "Modified by" msgstr "Modifié par" -#: forms.py:557 forms.py:834 models.py:838 +#: forms.py:557 forms.py:834 models.py:843 msgid "Documentation received" msgstr "Documentation reçue" @@ -262,7 +262,7 @@ msgstr "Date limite de versement de la documentation avant" msgid "Documentation deadline after" msgstr "Date limite de versement de la documentation après" -#: forms.py:563 forms.py:839 models.py:842 +#: forms.py:563 forms.py:839 models.py:847 msgid "Finds received" msgstr "Mobilier reçu" @@ -282,12 +282,12 @@ msgstr "Rechercher une opération" msgid "Associated file" msgstr "Dossier associé" -#: forms.py:643 forms.py:937 models.py:1039 models.py:1428 models.py:1514 -#: models.py:1707 wizards.py:83 +#: forms.py:643 forms.py:937 models.py:1044 models.py:1437 models.py:1523 +#: models.py:1716 wizards.py:83 msgid "Archaeological file" msgstr "Dossier archéologique" -#: forms.py:650 forms.py:654 models.py:833 +#: forms.py:650 forms.py:654 models.py:838 msgid "Abstract" msgstr "Résumé" @@ -303,7 +303,7 @@ msgstr "mois" msgid "years" msgstr "années" -#: forms.py:660 models.py:727 +#: forms.py:660 models.py:732 msgid "Creation date" msgstr "Date de création" @@ -355,7 +355,7 @@ msgstr "Avec un rapport" msgid "With finds" msgstr "Avec du mobilier" -#: forms.py:737 forms.py:1317 forms.py:1466 +#: forms.py:737 forms.py:1317 forms.py:1474 #: templates/ishtar/sheet_administrativeact.html:23 #: templates/ishtar/sheet_operation.html:12 templates/ishtar/sheet_site.html:33 msgid "General" @@ -365,11 +365,11 @@ msgstr "Général" msgid "Operation - 010 - General" msgstr "Opération - 010 - Général" -#: forms.py:759 models.py:812 +#: forms.py:759 models.py:817 msgid "Generic name" msgstr "Nom générique" -#: forms.py:768 models.py:780 +#: forms.py:768 models.py:785 msgid "Old code" msgstr "Ancien code" @@ -377,7 +377,7 @@ msgstr "Ancien code" msgid "Head scientist" msgstr "Responsable scientifique" -#: forms.py:790 models.py:811 +#: forms.py:790 models.py:816 msgid "Operator reference" msgstr "Référence de l'opérateur" @@ -385,23 +385,23 @@ msgstr "Référence de l'opérateur" msgid "Total surface (m2)" msgstr "Surface totale (m2)" -#: forms.py:807 models.py:57 models.py:730 models.py:2168 +#: forms.py:807 models.py:57 models.py:735 models.py:2177 msgid "Start date" msgstr "Date de début" -#: forms.py:808 models.py:732 +#: forms.py:808 models.py:737 msgid "Excavation end date" msgstr "Date de fin de chantier" -#: forms.py:810 models.py:733 +#: forms.py:810 models.py:738 msgid "Report delivery date" msgstr "Date de livraison du rapport" -#: forms.py:831 models.py:835 +#: forms.py:831 models.py:840 msgid "Deadline for submission of the documentation" msgstr "Date limite de versement de la documentation" -#: forms.py:836 models.py:840 +#: forms.py:836 models.py:845 msgid "Deadline for submission of the finds" msgstr "Date limite de versement du mobilier" @@ -430,7 +430,7 @@ msgstr "" msgid "Bad operation code" msgstr "Mauvais code d'opération" -#: forms.py:933 models.py:1054 +#: forms.py:933 models.py:1059 msgid "Operation code" msgstr "Code de l'opération" @@ -442,19 +442,19 @@ msgstr "Saisie judiciaire" msgid "Operation - 015 - Court-ordered seizure" msgstr "Opération - 015 - Saisie judiciaire" -#: forms.py:973 models.py:845 +#: forms.py:973 models.py:850 msgid "Seizure name" msgstr "Nom de la saisie" -#: forms.py:976 models.py:846 +#: forms.py:976 models.py:851 msgid "Official report number" msgstr "Numéro de procès-verbal" -#: forms.py:979 models.py:848 +#: forms.py:979 models.py:853 msgid "Name of the protagonist" msgstr "Nom du protagoniste" -#: forms.py:984 forms.py:991 models.py:747 +#: forms.py:984 forms.py:991 forms.py:1342 models.py:233 models.py:752 msgid "Collaborators" msgstr "Collaborateurs" @@ -470,20 +470,20 @@ msgstr "Information archéologie préventive - fouille" msgid "Operation - 033 - Preventive - Excavation" msgstr "Opération - 033 - Préventif - Fouille" -#: forms.py:1004 models.py:764 +#: forms.py:1004 models.py:769 #: templates/ishtar/dashboards/dashboard_operation.html:701 msgid "Cost (euros)" msgstr "Coût (euros)" -#: forms.py:1005 models.py:769 +#: forms.py:1005 models.py:774 msgid "Scheduled man-days" msgstr "Jours-hommes prévus" -#: forms.py:1007 models.py:772 +#: forms.py:1007 models.py:777 msgid "Optional man-days" msgstr "Jours-hommes optionnels" -#: forms.py:1009 models.py:775 +#: forms.py:1009 models.py:780 msgid "Effective man-days" msgstr "Jours-hommes effectifs" @@ -495,20 +495,20 @@ msgstr "Information archéologie préventive - diagnostic" msgid "Operation - 037 - Preventive - Diagnostic" msgstr "Opération - 037 - Préventif - Diagnostic" -#: forms.py:1025 models.py:795 +#: forms.py:1025 models.py:800 msgid "Prescription on zoning" msgstr "Prescription sur zonage" -#: forms.py:1027 models.py:798 +#: forms.py:1027 models.py:803 msgid "Prescription on large area" msgstr "Prescription sur une vaste surface" -#: forms.py:1030 models.py:800 +#: forms.py:1030 models.py:805 msgid "Prescription on geoarchaeological context" msgstr "Prescription sur un contexte géoarchéologique" -#: forms.py:1034 forms.py:1050 forms.py:1055 forms.py:1359 models.py:129 -#: models.py:220 models.py:522 models.py:762 models.py:1730 +#: forms.py:1034 forms.py:1050 forms.py:1055 forms.py:1367 models.py:129 +#: models.py:220 models.py:527 models.py:767 models.py:1739 msgid "Towns" msgstr "Communes" @@ -549,15 +549,15 @@ msgstr "Opération - 070 - Périodes" msgid "Period" msgstr "Période" -#: forms.py:1147 forms.py:1239 forms.py:1324 models.py:213 +#: forms.py:1147 forms.py:1239 forms.py:1325 models.py:213 msgid "Reference" msgstr "Référence" -#: forms.py:1171 forms.py:1353 +#: forms.py:1171 forms.py:1361 msgid "This reference already exists." msgstr "Cette référence existe déjà." -#: forms.py:1203 models.py:259 models.py:823 +#: forms.py:1203 models.py:263 models.py:828 #: templates/ishtar/sheet_operation.html:194 msgid "Archaeological sites" msgstr "Entités archéologiques" @@ -586,31 +586,31 @@ msgstr "Voulez-vous supprimer cette opération ?" msgid "Top operation" msgstr "Opération chapeau" -#: forms.py:1260 forms.py:1333 models.py:227 +#: forms.py:1260 forms.py:1334 models.py:227 msgid "National Geographic Institute locality" msgstr "Lieu-dit IGN" -#: forms.py:1263 forms.py:1337 models.py:230 +#: forms.py:1263 forms.py:1338 models.py:230 msgid "Cadastral locality" msgstr "Lieu-dit cadastre" -#: forms.py:1266 forms.py:1374 models.py:234 +#: forms.py:1266 forms.py:1382 models.py:238 msgid "Shipwreck name" msgstr "Nom de l'épave" -#: forms.py:1269 forms.py:1382 models.py:236 +#: forms.py:1269 forms.py:1390 models.py:240 msgid "Oceanographic service localisation" msgstr "Localisation SHOM" -#: forms.py:1272 forms.py:1376 models.py:238 +#: forms.py:1272 forms.py:1384 models.py:242 msgid "Shipwreck code" msgstr "Code épave" -#: forms.py:1274 forms.py:1378 models.py:240 +#: forms.py:1274 forms.py:1386 models.py:244 msgid "Sinking date" msgstr "Date de naufrage" -#: forms.py:1276 forms.py:1380 models.py:242 +#: forms.py:1276 forms.py:1388 models.py:246 msgid "Discovery area" msgstr "Zone de découverte" @@ -622,52 +622,52 @@ msgstr "Vous devez sélectionner un élément." msgid "Archaeological site - 010 - General" msgstr "Site archéologique - 010 - Général" -#: forms.py:1360 +#: forms.py:1368 msgid "Archaeological site - 020 - Towns" msgstr "Site archéologique - 020 - Villes" -#: forms.py:1369 templates/ishtar/sheet_site.html:52 +#: forms.py:1377 templates/ishtar/sheet_site.html:53 msgid "Underwater" msgstr "Sous-marin / subaquatique" -#: forms.py:1370 +#: forms.py:1378 msgid "Archaeological site - 030 - Underwater" msgstr "Site archéologique - 030 - Sous-marin / subaquatique" -#: forms.py:1401 forms.py:1535 models.py:1687 +#: forms.py:1409 forms.py:1543 models.py:1696 msgid "Index" msgstr "Index" -#: forms.py:1409 forms.py:1469 models.py:1442 models.py:1681 +#: forms.py:1417 forms.py:1477 models.py:1451 models.py:1690 msgid "Act type" msgstr "Type d'acte" -#: forms.py:1410 forms.py:1605 +#: forms.py:1418 forms.py:1613 msgid "Indexed?" msgstr "Indexé ?" -#: forms.py:1416 forms.py:1474 models.py:1721 +#: forms.py:1424 forms.py:1482 models.py:1730 #: templates/ishtar/blocks/window_tables/administrativacts.html:9 msgid "Object" msgstr "Objet" -#: forms.py:1446 views.py:412 +#: forms.py:1454 views.py:412 msgid "Administrative act search" msgstr "Rechercher un acte administratif" -#: forms.py:1461 forms.py:1563 forms.py:1630 +#: forms.py:1469 forms.py:1571 forms.py:1638 msgid "You should select an administrative act." msgstr "Vous devez sélectionner un acte administratif." -#: forms.py:1477 models.py:1718 +#: forms.py:1485 models.py:1727 msgid "Signature date" msgstr "Date de signature" -#: forms.py:1489 +#: forms.py:1497 msgid "Operation - Administrative act - General" msgstr "Opération - Acte administratif - Général" -#: forms.py:1523 +#: forms.py:1531 #, python-format msgid "" "This index already exists for year: %(year)d - use a value bigger than " @@ -676,31 +676,31 @@ msgstr "" "Cet index existe déjà pour l'année : %(year)d, utilisez une valeur plus " "grande que %(last_val)d" -#: forms.py:1527 +#: forms.py:1535 msgid "Bad index" msgstr "Mauvais index" -#: forms.py:1540 +#: forms.py:1548 msgid "Would you like to delete this administrative act?" msgstr "Voulez-vous supprimer cet acte administratif ?" -#: forms.py:1545 +#: forms.py:1553 msgid "Template" msgstr "Patron" -#: forms.py:1569 forms.py:1573 +#: forms.py:1577 forms.py:1581 msgid "This document is not intended for this type of act." msgstr "Ce document n'est pas destiné à ce type d'acte." -#: forms.py:1591 +#: forms.py:1599 msgid "Doc generation" msgstr "Génération de document" -#: forms.py:1593 +#: forms.py:1601 msgid "Generate the associated doc?" msgstr "Générer le document associé ?" -#: forms.py:1614 ishtar_menu.py:101 views.py:465 +#: forms.py:1622 ishtar_menu.py:101 views.py:465 msgctxt "admin act register" msgid "Register" msgstr "Registre" @@ -721,12 +721,12 @@ msgstr "Clôture" msgid "Deletion" msgstr "Suppression" -#: ishtar_menu.py:61 models.py:1737 +#: ishtar_menu.py:61 models.py:1746 #: templates/ishtar/sheet_administrativeact.html:4 msgid "Administrative act" msgstr "Acte administratif" -#: ishtar_menu.py:87 models.py:250 models.py:818 +#: ishtar_menu.py:87 models.py:254 models.py:823 msgid "Documents" msgstr "Documents" @@ -742,17 +742,17 @@ msgstr "Tableau de bord" msgid "General informations" msgstr "Informations générales" -#: ishtar_menu.py:143 models.py:859 +#: ishtar_menu.py:143 models.py:864 #: templates/ishtar/dashboards/dashboard_operation.html:8 -#: templates/ishtar/sheet_site.html:65 +#: templates/ishtar/sheet_site.html:66 msgid "Operations" msgstr "Opérations" -#: models.py:56 models.py:76 models.py:94 models.py:2646 +#: models.py:56 models.py:76 models.py:94 models.py:2655 msgid "Order" msgstr "Ordre" -#: models.py:58 models.py:2169 +#: models.py:58 models.py:2178 msgid "End date" msgstr "Date de fin" @@ -789,27 +789,27 @@ msgctxt "key for text search" msgid "reference" msgstr "reference" -#: models.py:140 models.py:585 +#: models.py:140 models.py:590 msgctxt "key for text search" msgid "name" msgstr "nom" -#: models.py:144 models.py:617 tests.py:1625 +#: models.py:144 models.py:622 tests.py:1625 msgctxt "key for text search" msgid "period" msgstr "periode" -#: models.py:148 models.py:613 tests.py:1656 +#: models.py:148 models.py:618 tests.py:1656 msgctxt "key for text search" msgid "remain" msgstr "vestige" -#: models.py:152 models.py:573 tests.py:1633 +#: models.py:152 models.py:578 tests.py:1633 msgctxt "key for text search" msgid "town" msgstr "commune" -#: models.py:156 models.py:641 +#: models.py:156 models.py:646 msgctxt "key for text search" msgid "comment" msgstr "commentaire" @@ -859,586 +859,586 @@ msgctxt "key for text search" msgid "top-operation" msgstr "operation-chapeau" -#: models.py:252 models.py:820 models.py:1950 +#: models.py:256 models.py:825 models.py:1959 msgid "Cached name" msgstr "Nom en cache" -#: models.py:281 +#: models.py:285 msgid "SITE" msgstr "SITE" -#: models.py:361 +#: models.py:366 msgid "Unknown" msgstr "Inconnu" -#: models.py:364 +#: models.py:369 msgid "Virtual operation of site: {}" msgstr "Opération virtuelle du site : {}" -#: models.py:504 +#: models.py:509 msgid "Associated file (label)" msgstr "Dossier associé (nom)" -#: models.py:505 +#: models.py:510 msgid "Operator name" msgstr "Nom de l'opérateur" -#: models.py:506 +#: models.py:511 msgid "Scientist (full name)" msgstr "Responsable scientifique (nom complet)" -#: models.py:507 +#: models.py:512 msgid "Associated file (external ID)" msgstr "Dossier associé (identifiant)" -#: models.py:508 +#: models.py:513 msgid "Scientist (title)" msgstr "Responsable scientifique (titre)" -#: models.py:509 +#: models.py:514 msgid "Scientist (surname)" msgstr "Responsable scientifique (nom)" -#: models.py:510 +#: models.py:515 msgid "Scientist (name)" msgstr "Scientifique (nom)" -#: models.py:511 +#: models.py:516 msgid "Scientist - Organization (name)" msgstr "Scientifique - Organisation (nom)" -#: models.py:512 +#: models.py:517 msgid "In charge (title)" msgstr "Responsable du suivi scientifique (titre)" -#: models.py:513 +#: models.py:518 msgid "In charge (surname)" msgstr "Responsable du suivi scientifique (prénom)" -#: models.py:514 +#: models.py:519 msgid "In charge (name)" msgstr "Responsable du suivi scientifique (nom)" -#: models.py:515 +#: models.py:520 msgid "In charge - Organization (name)" msgstr "Responsable du suivi scientifique - Organisation (nom)" -#: models.py:520 +#: models.py:525 msgid "Archaeological sites (reference)" msgstr "Entités archéologiques (référence)" -#: models.py:561 models.py:1526 tests.py:1628 tests.py:1673 +#: models.py:566 models.py:1535 tests.py:1628 tests.py:1673 msgctxt "key for text search" msgid "year" msgstr "annee" -#: models.py:565 +#: models.py:570 msgctxt "key for text search" msgid "operation-code" msgstr "code-operation" -#: models.py:569 models.py:1538 +#: models.py:574 models.py:1547 msgctxt "key for text search" msgid "patriarche" msgstr "patriarche" -#: models.py:577 models.py:1558 +#: models.py:582 models.py:1567 msgctxt "key for text search" msgid "parcel" msgstr "parcelle" -#: models.py:581 +#: models.py:586 msgctxt "key for text search" msgid "department" msgstr "departement" -#: models.py:589 +#: models.py:594 msgctxt "key for text search" msgid "address" msgstr "adresse" -#: models.py:593 models.py:1542 +#: models.py:598 models.py:1551 msgctxt "key for text search" msgid "type" msgstr "type" -#: models.py:597 tests.py:1661 +#: models.py:602 tests.py:1661 msgctxt "key for text search" msgid "is-open" msgstr "est-ouvert" -#: models.py:601 +#: models.py:606 msgctxt "key for text search" msgid "in-charge" msgstr "responsable-suivi" -#: models.py:605 +#: models.py:610 msgctxt "key for text search" msgid "scientist" msgstr "scientifique" -#: models.py:609 +#: models.py:614 msgctxt "key for text search" msgid "operator" msgstr "operateur" -#: models.py:621 +#: models.py:626 msgctxt "key for text search" msgid "start-before" msgstr "commence-avant" -#: models.py:625 +#: models.py:630 msgctxt "key for text search" msgid "start-after" msgstr "commence-apres" -#: models.py:629 +#: models.py:634 msgctxt "key for text search" msgid "end-before" msgstr "fini-apres" -#: models.py:633 +#: models.py:638 msgctxt "key for text search" msgid "end-after" msgstr "fini-avant" -#: models.py:637 +#: models.py:642 msgctxt "key for text search" msgid "relation-types" msgstr "type-relation" -#: models.py:645 +#: models.py:650 msgctxt "key for text search" msgid "abstract" msgstr "resume" -#: models.py:650 +#: models.py:655 msgctxt "key for text search" msgid "scientific-documentation-comment" msgstr "commentaire-documentation-scientifique" -#: models.py:654 +#: models.py:659 msgctxt "key for text search" msgid "record-quality" msgstr "qualite-enregistrement" -#: models.py:659 +#: models.py:664 msgctxt "key for text search" msgid "report-processing" msgstr "traitement-rapport" -#: models.py:664 +#: models.py:669 msgctxt "key for text search" msgid "virtual-operation" msgstr "operation-virtuelle" -#: models.py:669 models.py:712 +#: models.py:674 models.py:717 msgctxt "key for text search" msgid "site" msgstr "site" -#: models.py:673 models.py:1576 +#: models.py:678 models.py:1585 msgctxt "key for text search" msgid "created-by" msgstr "cree-par" -#: models.py:677 models.py:1580 +#: models.py:682 models.py:1589 msgctxt "key for text search" msgid "modified-by" msgstr "modifie-par" -#: models.py:681 +#: models.py:686 msgctxt "key for text search" msgid "documentation-received" msgstr "documentation-recue" -#: models.py:685 +#: models.py:690 msgctxt "key for text search" msgid "documentation-deadline-before" msgstr "documentation-date-limite-avant" -#: models.py:689 +#: models.py:694 msgctxt "key for text search" msgid "documentation-deadline-after" msgstr "documentation-date-limite-après" -#: models.py:693 +#: models.py:698 msgctxt "key for text search" msgid "finds-received" msgstr "mobilier-recu" -#: models.py:697 +#: models.py:702 msgctxt "key for text search" msgid "finds-deadline-before" msgstr "mobilier-date-limite-avant" -#: models.py:701 +#: models.py:706 msgctxt "key for text search" msgid "finds-deadline-after" msgstr "mobilier-date-limite-apres" -#: models.py:714 +#: models.py:719 msgctxt "key for text search" msgid "file" msgstr "dossier" -#: models.py:729 templates/ishtar/sheet_operation.html:60 +#: models.py:734 templates/ishtar/sheet_operation.html:60 msgid "Closing date" msgstr "Date de clôture" -#: models.py:736 +#: models.py:741 msgid "In charge scientist" msgstr "Responsable du suivi scientifique" -#: models.py:755 models.py:1932 +#: models.py:760 models.py:1941 msgid "File" msgstr "Dossier" -#: models.py:759 +#: models.py:764 msgid "Surface (m2)" msgstr "Surface (m2)" -#: models.py:828 +#: models.py:833 msgid "" "If checked, it means that this operation have not been officialy registered." msgstr "" "Si coché, cela signifie que cette opération n'a pas été officiellement " "enregistrée." -#: models.py:907 +#: models.py:912 msgid "OPE" msgstr "OPE" -#: models.py:1004 +#: models.py:1009 msgid "Intercommunal" msgstr "Intercommunal" -#: models.py:1040 +#: models.py:1045 msgid "Code patriarche" msgstr "Code patriarche" -#: models.py:1082 +#: models.py:1087 msgid "This operation code already exists for this year" msgstr "Ce code d'opération existe déjà pour cette année." -#: models.py:1135 +#: models.py:1144 msgid "Number of parcels" msgstr "Nombre de parcelles" -#: models.py:1145 +#: models.py:1154 msgid "Number of administrative acts" msgstr "Nombre d'actes administratifs" -#: models.py:1153 +#: models.py:1162 msgid "Number of indexed administrative acts" msgstr "Nombre d'actes administratifs indexés" -#: models.py:1161 +#: models.py:1170 msgid "Number of context records" msgstr "Nombre d'Unités d'Enregistrement" -#: models.py:1197 +#: models.py:1206 msgid "Number of finds" msgstr "Nombre d'éléments de mobilier" -#: models.py:1242 +#: models.py:1251 msgid "No type" msgstr "Pas de type" -#: models.py:1273 +#: models.py:1282 msgid "Number of sources" msgstr "Nombre de documents" -#: models.py:1311 templates/ishtar/dashboards/dashboard_operation.html:309 +#: models.py:1320 templates/ishtar/dashboards/dashboard_operation.html:309 #: templates/ishtar/dashboards/dashboard_operation.html:575 #: templates/ishtar/dashboards/dashboard_operation.html:611 msgid "Mean" msgstr "Moyenne" -#: models.py:1373 +#: models.py:1382 msgid "Operation relation type" msgstr "Type de relation entre opérations" -#: models.py:1374 +#: models.py:1383 msgid "Operation relation types" msgstr "Types de relation entre opérations" -#: models.py:1387 +#: models.py:1396 msgid "Operation record relation" msgstr "Relation entre opérations" -#: models.py:1388 +#: models.py:1397 msgid "Operation record relations" msgstr "Relations entre opérations" -#: models.py:1430 models.py:1712 +#: models.py:1439 models.py:1721 msgid "Treatment request" msgstr "Demande de traitement" -#: models.py:1431 models.py:1717 +#: models.py:1440 models.py:1726 msgid "Treatment" msgstr "Traitement" -#: models.py:1433 +#: models.py:1442 msgid "Intended to" msgstr "Destiné à" -#: models.py:1435 +#: models.py:1444 msgid "Code" msgstr "Code" -#: models.py:1438 +#: models.py:1447 msgid "Associated template" msgstr "Patron associé" -#: models.py:1439 +#: models.py:1448 msgid "Indexed" msgstr "Indexé" -#: models.py:1443 +#: models.py:1452 msgid "Act types" msgstr "Types d'acte" -#: models.py:1513 models.py:1758 +#: models.py:1522 models.py:1767 #: templates/ishtar/blocks/window_tables/administrativacts.html:6 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:6 msgid "Ref." msgstr "Réf." -#: models.py:1530 +#: models.py:1539 msgctxt "key for text search" msgid "index" msgstr "index" -#: models.py:1534 +#: models.py:1543 msgctxt "key for text search" msgid "other-ref" msgstr "autre-ref" -#: models.py:1546 +#: models.py:1555 msgctxt "key for text search" msgid "indexed" msgstr "indexe" -#: models.py:1550 +#: models.py:1559 msgctxt "key for text search" msgid "operation-town" msgstr "operation-commune" -#: models.py:1554 +#: models.py:1563 msgctxt "key for text search" msgid "file-town" msgstr "dossier-commune" -#: models.py:1564 +#: models.py:1573 msgctxt "key for text search" msgid "operation-department" msgstr "operation-departement" -#: models.py:1568 +#: models.py:1577 msgctxt "key for text search" msgid "file-department" msgstr "dossier-departement" -#: models.py:1572 +#: models.py:1581 msgctxt "key for text search" msgid "object" msgstr "objet" -#: models.py:1584 +#: models.py:1593 msgctxt "key for text search" msgid "signature-before" msgstr "signature-avant" -#: models.py:1588 +#: models.py:1597 msgctxt "key for text search" msgid "signature-after" msgstr "signature-apres" -#: models.py:1592 +#: models.py:1601 msgctxt "key for text search" msgid "file-name" msgstr "dossier-nom" -#: models.py:1596 +#: models.py:1605 msgctxt "key for text search" msgid "general-contractor" msgstr "amenageur" -#: models.py:1601 +#: models.py:1610 msgctxt "key for text search" msgid "general-contractor-organization" msgstr "amenageur-organisation" -#: models.py:1606 +#: models.py:1615 msgctxt "key for text search" msgid "file-reference" msgstr "dossier-reference" -#: models.py:1610 +#: models.py:1619 msgctxt "key for text search" msgid "file-year" msgstr "dossier-annee" -#: models.py:1614 +#: models.py:1623 msgctxt "key for text search" msgid "file-other-reference" msgstr "dossier-autre-reference" -#: models.py:1618 +#: models.py:1627 msgctxt "key for text search" msgid "file-in-charge" msgstr "dossier-responsable" -#: models.py:1622 +#: models.py:1631 msgctxt "key for text search" msgid "file-permit-reference" msgstr "dossier-ref-permis" -#: models.py:1626 +#: models.py:1635 msgctxt "key for text search" msgid "treatment-name" msgstr "traitement-nom" -#: models.py:1630 +#: models.py:1639 msgctxt "key for text search" msgid "treatment-reference" msgstr "traitement-reference" -#: models.py:1634 +#: models.py:1643 msgctxt "key for text search" msgid "treatment-year" msgstr "traitement-annee" -#: models.py:1638 +#: models.py:1647 msgctxt "key for text search" msgid "treatment-index" msgstr "traitement-index" -#: models.py:1642 +#: models.py:1651 msgctxt "key for text search" msgid "treatment-type" msgstr "traitement-type" -#: models.py:1646 +#: models.py:1655 msgctxt "key for text search" msgid "treatment-file-name" msgstr "dossier-traitement-nom" -#: models.py:1650 +#: models.py:1659 msgctxt "key for text search" msgid "treatment-file-reference" msgstr "dossier-traitement-reference" -#: models.py:1654 +#: models.py:1663 msgctxt "key for text search" msgid "treatment-file-year" msgstr "dossier-traitement-annee" -#: models.py:1658 +#: models.py:1667 msgctxt "key for text search" msgid "treatment-file-index" msgstr "dossier-traitement-index" -#: models.py:1662 +#: models.py:1671 msgctxt "key for text search" msgid "treatment-file-type" msgstr "dossier-traitement-type" -#: models.py:1685 +#: models.py:1694 msgid "Person in charge of the operation" msgstr "Responsable d'opération" -#: models.py:1691 +#: models.py:1700 msgid "Archaeological preventive operator" msgstr "Opérateur d'archéologie préventive" -#: models.py:1699 +#: models.py:1708 msgid "Signatory" msgstr "Signataire" -#: models.py:1727 +#: models.py:1736 msgid "Departments" msgstr "Départements" -#: models.py:1728 +#: models.py:1737 msgid "Cached values get from associated departments" msgstr "Valeur en cache des départements associés" -#: models.py:1731 +#: models.py:1740 msgid "Cached values get from associated towns" msgstr "Valeur en cache des communes associées" -#: models.py:1738 templates/ishtar/sheet_operation.html:202 +#: models.py:1747 templates/ishtar/sheet_operation.html:202 #: templates/ishtar/sheet_operation.html:248 msgid "Administrative acts" msgstr "Actes administratifs" -#: models.py:1861 +#: models.py:1870 msgid "This index already exists for this year" msgstr "Cet index existe déjà pour cette année." -#: models.py:1945 +#: models.py:1954 msgid "External ID" msgstr "Identifiant" -#: models.py:1948 +#: models.py:1957 msgid "External ID is set automatically" msgstr "L'identifiant est attribué automatiquement" -#: models.py:1949 +#: models.py:1958 msgid "Address - Locality" msgstr "Adresse - Lieu-dit" -#: models.py:2164 +#: models.py:2173 msgid "Owner" msgstr "Propriétaire" -#: models.py:2172 +#: models.py:2181 msgid "Parcel owner" msgstr "Propriétaire de parcelle" -#: models.py:2173 +#: models.py:2182 msgid "Parcel owners" msgstr "Propriétaires de parcelle" -#: models.py:2207 +#: models.py:2216 msgid "Recorded" msgstr "Enregistré" -#: models.py:2208 +#: models.py:2217 msgid "Effective" msgstr "Effectif" -#: models.py:2209 +#: models.py:2218 msgid "Active" msgstr "Actif" -#: models.py:2210 +#: models.py:2219 msgid "Field completed" msgstr "Terrain achevé" -#: models.py:2211 +#: models.py:2220 msgid "Associated report" msgstr "Rapport associé" -#: models.py:2212 +#: models.py:2221 msgid "Closed" msgstr "Clos" -#: models.py:2213 +#: models.py:2222 msgid "Documented and closed" msgstr "Documenté et clos" -#: models.py:2647 +#: models.py:2656 msgid "Is preventive" msgstr "Préventif" -#: models.py:2650 +#: models.py:2659 msgid "Operation type old" msgstr "Type d'opération - ancien" -#: models.py:2651 +#: models.py:2660 msgid "Operation types old" msgstr "Types d'opération - ancien" @@ -1742,7 +1742,7 @@ msgid "Patriarche OA code not yet recorded!" msgstr "Code d'opération Patriarche non renseigné !" #: templates/ishtar/sheet_operation.html:159 -#: templates/ishtar/sheet_site.html:43 +#: templates/ishtar/sheet_site.html:44 msgid "Localisation" msgstr "Localisation" @@ -1769,7 +1769,7 @@ msgstr "Documents des Unités d'Enregistrement associées" #: templates/ishtar/sheet_operation.html:229 #: templates/ishtar/sheet_operation.html:286 -#: templates/ishtar/sheet_site.html:70 +#: templates/ishtar/sheet_site.html:71 msgid "Finds" msgstr "Mobilier" diff --git a/translations/fr/ishtar_common.po b/translations/fr/ishtar_common.po index 51e5776be..2d4b92f9b 100644 --- a/translations/fr/ishtar_common.po +++ b/translations/fr/ishtar_common.po @@ -12,7 +12,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Content-Type: text/plain; charset=UTF-8\n" -"PO-Revision-Date: 2018-11-21 09:53+0000\n" +"PO-Revision-Date: 2018-11-28 05:57+0000\n" "Last-Translator: Étienne Loks \n" "Language-Team: \n" "Language: fr\n" @@ -2116,8 +2116,8 @@ msgid "Leave blank for no restrictions" msgstr "Laissez vide pour aucune restriction" #: models_imports.py:136 -msgid "Is template" -msgstr "Est un patron" +msgid "Can be exported" +msgstr "Peut être exporté" #: models_imports.py:137 msgid "Unicity keys (separator \";\")" @@ -2228,11 +2228,11 @@ msgstr "Importeur - Cible" msgid "Importer - Targets" msgstr "Importeur - Cibles" -#: models_imports.py:525 views_item.py:867 +#: models_imports.py:525 views_item.py:869 msgid "True" msgstr "Oui" -#: models_imports.py:526 views_item.py:869 +#: models_imports.py:526 views_item.py:871 msgid "False" msgstr "Non" @@ -3466,12 +3466,12 @@ msgstr "Aménageur des dossiers" msgid "Responsible for planning service of archaeological files" msgstr "Responsable pour le service instructeur des dossiers" -#: templates/ishtar/wizard/confirm_wizard.html:12 +#: templates/ishtar/wizard/confirm_wizard.html:14 #: templates/ishtar/wizard/wizard_done_summary.html:6 msgid "You have entered the following informations:" msgstr "Vous avez entré les informations suivantes :" -#: templates/ishtar/wizard/confirm_wizard.html:50 +#: templates/ishtar/wizard/confirm_wizard.html:56 msgid "Would you like to save them?" msgstr "Voulez-vous sauvegarder ces informations ?" -- cgit v1.2.3 From 052d3fac04d20d4e282822b6a67f3587aa19b263 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 29 Nov 2018 16:55:31 +0100 Subject: Fix merge images --- ishtar_common/management/commands/reassociate_similar_images.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ishtar_common/management/commands/reassociate_similar_images.py b/ishtar_common/management/commands/reassociate_similar_images.py index f6d432327..a0483ed3a 100644 --- a/ishtar_common/management/commands/reassociate_similar_images.py +++ b/ishtar_common/management/commands/reassociate_similar_images.py @@ -169,7 +169,7 @@ class Command(BaseCommand): for m2m in m2ms: for m2 in getattr(item, m2m).all(): - if m2 not in getattr(ref_item, m2m): + if m2 not in getattr(ref_item, m2m).all(): getattr(ref_item, m2m).add(m2) for rel_attr in Document.RELATED_MODELS: -- cgit v1.2.3 From d55d1326e67635ba9cef04e6423fe5070bad0009 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 29 Nov 2018 19:31:51 +0100 Subject: Bootstrap compilation --- ishtar_common/static/bootstrap/bootstrap.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ishtar_common/static/bootstrap/bootstrap.css b/ishtar_common/static/bootstrap/bootstrap.css index fe9026694..3026e8f4f 100644 --- a/ishtar_common/static/bootstrap/bootstrap.css +++ b/ishtar_common/static/bootstrap/bootstrap.css @@ -3,4 +3,4 @@ * Copyright 2011-2018 The Bootstrap Authors * Copyright 2011-2018 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */:root{--blue: #007bff;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #dc3545;--orange: #fd7e14;--yellow: #ffc107;--green: #28a745;--teal: #20c997;--cyan: #17a2b8;--white: #fff;--gray: #6c757d;--gray-dark: #343a40;--primary: #007bff;--secondary: #6c757d;--success: #28a745;--info: #17a2b8;--warning: #ffc107;--danger: #dc3545;--light: #f8f9fa;--dark: #343a40;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#6f3b93;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#542c6f;text-decoration:none}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:monospace, monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm,.col-sm-auto,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md,.col-md-auto,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg,.col-lg-auto,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:none}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:none}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:none}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:none}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:none}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:rgba(0,0,0,0)}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>th,.table-success>td{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark th,.table-dark td,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.form-control-plaintext.form-control-lg,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}select.form-control-sm:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control-lg:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled ~ .form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,0.8);border-radius:.2rem}.was-validated .form-control:valid,.form-control.is-valid,.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745}.was-validated .form-control:valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .form-control:valid ~ .valid-feedback,.was-validated .form-control:valid ~ .valid-tooltip,.form-control.is-valid ~ .valid-feedback,.form-control.is-valid ~ .valid-tooltip,.was-validated .custom-select:valid ~ .valid-feedback,.was-validated .custom-select:valid ~ .valid-tooltip,.custom-select.is-valid ~ .valid-feedback,.custom-select.is-valid ~ .valid-tooltip{display:block}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#28a745}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#28a745}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{background-color:#71dd8a}.was-validated .custom-control-input:valid ~ .valid-feedback,.was-validated .custom-control-input:valid ~ .valid-tooltip,.custom-control-input.is-valid ~ .valid-feedback,.custom-control-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{background-color:#34ce57}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid ~ .custom-file-label::before,.custom-file-input.is-valid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:valid ~ .valid-feedback,.was-validated .custom-file-input:valid ~ .valid-tooltip,.custom-file-input.is-valid ~ .valid-feedback,.custom-file-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,0.8);border-radius:.2rem}.was-validated .form-control:invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .form-control:invalid ~ .invalid-feedback,.was-validated .form-control:invalid ~ .invalid-tooltip,.form-control.is-invalid ~ .invalid-feedback,.form-control.is-invalid ~ .invalid-tooltip,.was-validated .custom-select:invalid ~ .invalid-feedback,.was-validated .custom-select:invalid ~ .invalid-tooltip,.custom-select.is-invalid ~ .invalid-feedback,.custom-select.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#dc3545}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{background-color:#efa2a9}.was-validated .custom-control-input:invalid ~ .invalid-feedback,.was-validated .custom-control-input:invalid ~ .invalid-tooltip,.custom-control-input.is-invalid ~ .invalid-feedback,.custom-control-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{background-color:#e4606d}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid ~ .custom-file-label::before,.custom-file-input.is-invalid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:invalid ~ .invalid-feedback,.was-validated .custom-file-input:invalid ~ .invalid-tooltip,.custom-file-input.is-invalid ~ .invalid-feedback,.custom-file-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled):active,.btn:not(:disabled):not(.disabled).active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary:focus,.btn-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-link{font-weight:400;color:#6f3b93;background-color:transparent}.btn-link:hover{color:#542c6f;text-decoration:none;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:none;border-color:transparent;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;transition:opacity 0.15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height 0.35s ease}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:0 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file:focus{z-index:3}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,0.25)}.custom-control-input:active ~ .custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled ~ .custom-control-label{color:#6c757d}.custom-control-input:disabled ~ .custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(128,189,255,0.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.custom-file-input:focus ~ .custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en) ~ .custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,0.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0,0,0,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#6f3b93;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#542c6f;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:hover,.badge-info[href]:focus{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:hover,.badge-light[href]:focus{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width 0.6s ease}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:hover,.list-group-item:focus{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.close:focus{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -25%)}.modal.show .modal-dialog{transform:translate(0, 0)}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:.5rem}.bs-popover-top .arrow,.bs-popover-auto[x-placement^="top"] .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{border-width:.5rem .5rem 0}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before{bottom:0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:.5rem}.bs-popover-right .arrow,.bs-popover-auto[x-placement^="right"] .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{border-width:.5rem .5rem .5rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before{left:0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{left:1px;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:.5rem}.bs-popover-bottom .arrow,.bs-popover-auto[x-placement^="bottom"] .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{border-width:0 .5rem .5rem .5rem}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before{top:0;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:.5rem}.bs-popover-left .arrow,.bs-popover-auto[x-placement^="left"] .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{border-width:.5rem 0 .5rem .5rem}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before{right:0;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;align-items:center;width:100%;transition:transform 0.6s ease;backface-visibility:hidden;perspective:1000px}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translate3d(0, 0, 0)}}.carousel-item-next,.active.carousel-item-right{transform:translateX(100%)}@supports (transform-style: preserve-3d){.carousel-item-next,.active.carousel-item-right{transform:translate3d(100%, 0, 0)}}.carousel-item-prev,.active.carousel-item-left{transform:translateX(-100%)}@supports (transform-style: preserve-3d){.carousel-item-prev,.active.carousel-item-left{transform:translate3d(-100%, 0, 0)}}.carousel-fade .carousel-item{opacity:0;transition-duration:.6s;transition-property:opacity}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{opacity:0}.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translate3d(0, 0, 0)}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,0.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-primary{background-color:#007bff !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#0062cc !important}.bg-secondary{background-color:#6c757d !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62 !important}.bg-success{background-color:#28a745 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34 !important}.bg-info{background-color:#17a2b8 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#ffc107 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00 !important}.bg-danger{background-color:#dc3545 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130 !important}.bg-light{background-color:#f8f9fa !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#343a40 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#007bff !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#28a745 !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#343a40 !important}.border-white{border-color:#fff !important}.rounded{border-radius:.25rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-right{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-left{border-top-left-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-circle{border-radius:50% !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.85714%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-fill{flex:1 1 auto !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-sm-fill{flex:1 1 auto !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-md-fill{flex:1 1 auto !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-lg-fill{flex:1 1 auto !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-xl-fill{flex:1 1 auto !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media (min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;clip-path:none}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:.25rem !important}.mt-sm-1,.my-sm-1{margin-top:.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:.25rem !important}.m-sm-2{margin:.5rem !important}.mt-sm-2,.my-sm-2{margin-top:.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:.25rem !important}.pt-sm-1,.py-sm-1{padding-top:.25rem !important}.pr-sm-1,.px-sm-1{padding-right:.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem !important}.pl-sm-1,.px-sm-1{padding-left:.25rem !important}.p-sm-2{padding:.5rem !important}.pt-sm-2,.py-sm-2{padding-top:.5rem !important}.pr-sm-2,.px-sm-2{padding-right:.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem !important}.pl-sm-2,.px-sm-2{padding-left:.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:.25rem !important}.mt-md-1,.my-md-1{margin-top:.25rem !important}.mr-md-1,.mx-md-1{margin-right:.25rem !important}.mb-md-1,.my-md-1{margin-bottom:.25rem !important}.ml-md-1,.mx-md-1{margin-left:.25rem !important}.m-md-2{margin:.5rem !important}.mt-md-2,.my-md-2{margin-top:.5rem !important}.mr-md-2,.mx-md-2{margin-right:.5rem !important}.mb-md-2,.my-md-2{margin-bottom:.5rem !important}.ml-md-2,.mx-md-2{margin-left:.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:.25rem !important}.pt-md-1,.py-md-1{padding-top:.25rem !important}.pr-md-1,.px-md-1{padding-right:.25rem !important}.pb-md-1,.py-md-1{padding-bottom:.25rem !important}.pl-md-1,.px-md-1{padding-left:.25rem !important}.p-md-2{padding:.5rem !important}.pt-md-2,.py-md-2{padding-top:.5rem !important}.pr-md-2,.px-md-2{padding-right:.5rem !important}.pb-md-2,.py-md-2{padding-bottom:.5rem !important}.pl-md-2,.px-md-2{padding-left:.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:.25rem !important}.mt-lg-1,.my-lg-1{margin-top:.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:.25rem !important}.m-lg-2{margin:.5rem !important}.mt-lg-2,.my-lg-2{margin-top:.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:.25rem !important}.pt-lg-1,.py-lg-1{padding-top:.25rem !important}.pr-lg-1,.px-lg-1{padding-right:.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem !important}.pl-lg-1,.px-lg-1{padding-left:.25rem !important}.p-lg-2{padding:.5rem !important}.pt-lg-2,.py-lg-2{padding-top:.5rem !important}.pr-lg-2,.px-lg-2{padding-right:.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem !important}.pl-lg-2,.px-lg-2{padding-left:.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:.25rem !important}.mt-xl-1,.my-xl-1{margin-top:.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:.25rem !important}.m-xl-2{margin:.5rem !important}.mt-xl-2,.my-xl-2{margin-top:.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:.25rem !important}.pt-xl-1,.py-xl-1{padding-top:.25rem !important}.pr-xl-1,.px-xl-1{padding-right:.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem !important}.pl-xl-1,.px-xl-1{padding-left:.25rem !important}.p-xl-2{padding:.5rem !important}.pt-xl-2,.py-xl-2{padding-top:.5rem !important}.pr-xl-2,.px-xl-2{padding-right:.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem !important}.pl-xl-2,.px-xl-2{padding-left:.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-justify{text-align:justify !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media (min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#007bff !important}a.text-primary:hover,a.text-primary:focus{color:#0062cc !important}.text-secondary{color:#6c757d !important}a.text-secondary:hover,a.text-secondary:focus{color:#545b62 !important}.text-success{color:#28a745 !important}a.text-success:hover,a.text-success:focus{color:#1e7e34 !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#117a8b !important}.text-warning{color:#ffc107 !important}a.text-warning:hover,a.text-warning:focus{color:#d39e00 !important}.text-danger{color:#dc3545 !important}a.text-danger:hover,a.text-danger:focus{color:#bd2130 !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#dae0e5 !important}.text-dark{color:#343a40 !important}a.text-dark:hover,a.text-dark:focus{color:#1d2124 !important}.text-muted{color:#6c757d !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}.switch{font-size:1rem;position:relative}.switch input{position:absolute;height:1px;width:1px;background:none;border:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;padding:0}.switch input+label{position:relative;min-width:calc(calc(2.375rem * .8) * 2);border-radius:calc(2.375rem * .8);height:calc(2.375rem * .8);line-height:calc(2.375rem * .8);display:inline-block;cursor:pointer;outline:none;user-select:none;vertical-align:middle;text-indent:calc(calc(calc(2.375rem * .8) * 2) + .5rem)}.switch input+label::before,.switch input+label::after{content:'';position:absolute;top:0;left:0;width:calc(calc(2.375rem * .8) * 2);bottom:0;display:block}.switch input+label::before{right:0;background-color:#dee2e6;border-radius:calc(2.375rem * .8);transition:0.2s all}.switch input+label::after{top:2px;left:2px;width:calc(calc(2.375rem * .8) - calc(2px * 2));height:calc(calc(2.375rem * .8) - calc(2px * 2));border-radius:50%;background-color:#fff;transition:0.2s all}.switch input:checked+label::before{background-color:#08d}.switch input:checked+label::after{margin-left:calc(2.375rem * .8)}.switch input:focus+label::before{outline:none;box-shadow:0 0 0 .2rem rgba(0,136,221,0.25)}.switch input:disabled+label{color:#868e96;cursor:not-allowed}.switch input:disabled+label::before{background-color:#e9ecef}.switch.switch-sm{font-size:.875rem}.switch.switch-sm input+label{min-width:calc(calc(1.9375rem * .8) * 2);height:calc(1.9375rem * .8);line-height:calc(1.9375rem * .8);text-indent:calc(calc(calc(1.9375rem * .8) * 2) + .5rem)}.switch.switch-sm input+label::before{width:calc(calc(1.9375rem * .8) * 2)}.switch.switch-sm input+label::after{width:calc(calc(1.9375rem * .8) - calc(2px * 2));height:calc(calc(1.9375rem * .8) - calc(2px * 2))}.switch.switch-sm input:checked+label::after{margin-left:calc(1.9375rem * .8)}.switch.switch-lg{font-size:1.25rem}.switch.switch-lg input+label{min-width:calc(calc(3rem * .8) * 2);height:calc(3rem * .8);line-height:calc(3rem * .8);text-indent:calc(calc(calc(3rem * .8) * 2) + .5rem)}.switch.switch-lg input+label::before{width:calc(calc(3rem * .8) * 2)}.switch.switch-lg input+label::after{width:calc(calc(3rem * .8) - calc(2px * 2));height:calc(calc(3rem * .8) - calc(2px * 2))}.switch.switch-lg input:checked+label::after{margin-left:calc(3rem * .8)}.switch+.switch{margin-left:1rem}.switch.danger input:checked+label::before{background-color:#dc3545}.switch.danger input:focus+label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}html{font-size:0.8em;background-color:#f8f9fa}body{background-color:transparent;position:relative}label{margin-bottom:.2rem;min-height:1.5rem}.form-group span label{display:inline-block}.form-group label{display:block}.form-group li label{display:inline-block}.form-group li .form-control{width:auto}.form-group li input[type="radio"].form-control,.form-group li input[type="checkbox"].form-control{display:inline}pre{white-space:pre-wrap}.raw-description{white-space:pre-line}.form-control.small-input,.input-group>.form-control.small-input{width:110px;flex:none}.input-group>input[type=checkbox]{margin:0.5em 1em}.form-row.odd{background-color:#e9ecef}.form-row-modal{padding:0.5rem 2rem}.field-tip{position:absolute;right:10px;top:5px;opacity:0.7}.form-group .select2-container--default .select2-selection--multiple{border:1px solid #ced4da}.page-link.imported-page{color:#aa8fda}.page-link.imported-page.current-page,.page-link.current-page{color:black;font-weight:bold}#modal-advanced-search .modal-header{flex-wrap:wrap;padding-bottom:0}#modal-advanced-search .modal-header .alert-secondary{background-color:#fff}.modal-header,.modal-footer{background-color:#e9ecef}.modal-body.body-scroll{max-height:calc(100vh - 200px);overflow-y:auto}.modal-dialog.full{width:98%;height:98%;max-width:none;padding:1%}.modal-dialog.full .display.dataTable{width:100% !important}.modal-dialog.full .modal-content{height:auto;min-height:100%;border-radius:0}.table{background-color:white}.tab-content{padding-top:1em}.input-progress.form-control:focus,.input-progress{background-color:#dee2e6}.card-header,.input-progress,.table-striped tbody tr:nth-of-type(2n+1),.dt-bootstrap4 table.dataTable.stripe tbody tr.odd,.dt-bootstrap4 table.dataTable.display tbody tr.odd{background-color:#e9ecef}.dropdown-item:hover,.dropdown-item:focus,.dt-bootstrap4 table.dataTable.hover tbody tr:hover,.dt-bootstrap4 table.dataTable.display tbody tr:hover{background-color:#f6f6f6;background-color:#dee2e6}table.dataTable{font-size:0.8em}.table-modal-lg table.dataTable{font-size:1em}div.dt-buttons{float:right}.dt-button{color:#fff;background-color:#007bff;border-color:#007bff;display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;border:1px solid transparent;color:#fff;background-color:#6c757d;border-color:#6c757d;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.dt-button:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.dt-button:focus,.dt-button.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.disabled,.dt-button:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.dt-button:not(:disabled):not(.disabled):active,.dt-button:not(:disabled):not(.disabled).active,.show>.dt-button.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.dt-button:not(:disabled):not(.disabled):active:focus,.dt-button:not(:disabled):not(.disabled).active:focus,.show>.dt-button.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.dt-button.btn-success:focus,.dt-button.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.btn-success.disabled,.dt-button.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:not(:disabled):not(.disabled):active,.dt-button.btn-success:not(:disabled):not(.disabled).active,.show>.dt-button.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.dt-button.btn-success:not(:disabled):not(.disabled):active:focus,.dt-button.btn-success:not(:disabled):not(.disabled).active:focus,.show>.dt-button.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.disabled{background-color:#f8f9fa;border-color:#f8f9fa;color:#adb5bd;cursor:not-allowed}.small-button{padding:0.1em 0.2em}.previous-value{margin:0.4em 0;display:block}h3,.h3{font-size:1.5rem}h4,.h4{font-size:1.1rem}textarea{height:90px}.sheet h4{color:#6c757d}#bookmark-list .input-link{width:100%;padding-right:5px}#window-fixed-menu{background-color:#e9ecef;position:fixed;right:0;margin-top:100px;z-index:50;width:200px}#window-fixed-menu-list li{padding-bottom:0.5em}#window-fixed-menu-list li a.nav-link{background-color:white}#window-fixed-menu-list li a.nav-link.active{background-color:#007bff}#window-menu-title{font-size:1.3em}#window-menu-control{font-size:0.6em;padding-top:0.2em}#window-fixed-menu.hidden{transform:rotate(270deg);transform-origin:right bottom 0}#window-fixed-menu.hidden i.fa-times{transform:rotate(45deg);transform-origin:10px 10px 0;padding-left:0.1em}.form h4,.form h3,.collapse-form .card-header,#window h3{background-color:#ced4da}.collapse-form .card,.collapse-form .card-header{border-radius:0;border:0 solid}.collapse-form .card-header{padding:0;text-align:center}.collapse-form .card-header h4{margin-bottom:0}.collapse-form .card-header .btn.btn-link{color:#212529;width:100%}.collapse-form .card-body{border:1px solid #ced4da}.collapse-form .fa-expand,.collapse-form .collapsed .fa-compress{display:none}.collapse-form .collapsed .fa-expand,.collapse-form .fa-compress{display:inline-block}.clean-table h4,.form h4,.form h3,.collapse-form .card-header h4 .btn,.sheet h4,.sheet h3,.sheet h2{text-align:center;text-shadow:2px 2px 2px rgba(150,150,150,0.7)}.sheet .subsection{background-color:#e9ecef}.sheet .row.toolbar{padding:0.5em 0.75em}.sheet .row{padding:0 0.75em;margin:0}.clean-table h4{margin-top:1em}.container{margin-top:1em;margin-bottom:8em}.bg-dark{background-color:#432776 !important}.navbar{padding:0 0.5rem}.navbar-dark .navbar-nav.action-menu .nav-link{color:#ffe484;border:1px solid #ffe484;border-radius:4px;margin:0.2em;padding:0.3em 0.6em}.navbar-dark .navbar-nav.action-menu .d-none .nav-link{border:0px solid transparent}.navbar-dark .navbar-nav.action-menu .d-none .nav-link:hover{background-color:transparent;color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link:hover{background-color:#ffe484;color:#343a40}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle::after{color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle:hover::after{color:#343a40}#context-menu,#reminder,.confirm-message,div#validation-bar{background-color:#6f42c1;color:rgba(255,255,255,0.8)}#reminder{padding:0.6em 1em 0.1em 1em}#alert-list{padding:0.6em 0}#alert-list a{font-size:1.1rem}.confirm-message{text-align:center;margin:0;padding:0.5rem;font-weight:bold}.is-invalid input{border-color:#f99}.errorlist{color:#900}#shortcut-menu{width:700px;padding:1em}#context-menu a.nav-link{color:rgba(255,255,255,0.8);padding:0.8rem 0.5rem 0.7rem 0.5rem}#context-menu .breadcrumb{margin-bottom:0;background-color:transparent}#current_items{width:100%}div#foot{background-color:#432776;color:rgba(255,255,255,0.5)}div#foot a{color:#ddd}div#foot a:hover{color:#fff}.breadcrumb button{border:0 transparent;background-color:transparent}.breadcrumb a:hover{text-decoration:none}.breadcrumb button:hover{cursor:pointer;color:#0062cc}.input-group.date input{border:1px solid #dee2e6;border-radius:.25rem;padding:.375rem .75rem;font-size:1rem;line-height:1.5}.input-group.date .input-group-text:hover{cursor:pointer}.input-group>ul{padding:0.5em;border:1px solid #dee2e6;border-radius:.25rem;margin:0;list-style:none}ul.compact{padding:0;margin:0}.help-text{max-height:250px;overflow:auto}.input-link{color:#6c757d}.input-link.disabled{color:#adb5bd}.input-link:hover{color:#343a40;cursor:pointer}.input-link.disabled:hover{color:#adb5bd;cursor:not-allowed}.input-sep{background-color:#fff;padding:0.3rem}.search_button{display:none}.lightgallery-captions{display:none}.lightgallery-subimage{display:inline-block;width:80px;padding:0.2em}.lightgallery-subimage img{width:100%}.lg .lg-sub-html{text-align:left}.lg .lg-sub-html .close{color:#fff}.lg .lg-sub-html .close:hover{opacity:0.9}#basket-manage #foot_pk{display:none}#basket-manage #grid_pk_meta_wrapper{width:50%;float:left;padding-bottom:80px}#basket-add-button{width:8%;float:left;margin:20vh 1% 0 1%}#basket-content-wrapper{width:40%;float:left}#basket-content{text-align:left;overflow:auto;max-height:60vh}.ui-widget-content{border:1px solid #dee2e6;background-color:#fff}.ui-menu-item{padding:0.2em 0.4em;border:1px solid #fff}.ui-menu-item:hover{color:#6f3b93;border:1px solid #6f3b93;cursor:pointer}.ui-autocomplete{font-size:0.7em;z-index:10000 !important;width:350px;border:5px solid #dee2e6;outline:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px} + */:root{--blue: #007bff;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #dc3545;--orange: #fd7e14;--yellow: #ffc107;--green: #28a745;--teal: #20c997;--cyan: #17a2b8;--white: #fff;--gray: #6c757d;--gray-dark: #343a40;--primary: #007bff;--secondary: #6c757d;--success: #28a745;--info: #17a2b8;--warning: #ffc107;--danger: #dc3545;--light: #f8f9fa;--dark: #343a40;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#6f3b93;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#542c6f;text-decoration:none}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:monospace, monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm,.col-sm-auto,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md,.col-md-auto,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg,.col-lg-auto,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:none}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:none}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:none}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:none}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:none}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:rgba(0,0,0,0)}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>th,.table-success>td{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark th,.table-dark td,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.form-control-plaintext.form-control-lg,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}select.form-control-sm:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control-lg:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled ~ .form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,0.8);border-radius:.2rem}.was-validated .form-control:valid,.form-control.is-valid,.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745}.was-validated .form-control:valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .form-control:valid ~ .valid-feedback,.was-validated .form-control:valid ~ .valid-tooltip,.form-control.is-valid ~ .valid-feedback,.form-control.is-valid ~ .valid-tooltip,.was-validated .custom-select:valid ~ .valid-feedback,.was-validated .custom-select:valid ~ .valid-tooltip,.custom-select.is-valid ~ .valid-feedback,.custom-select.is-valid ~ .valid-tooltip{display:block}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#28a745}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#28a745}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{background-color:#71dd8a}.was-validated .custom-control-input:valid ~ .valid-feedback,.was-validated .custom-control-input:valid ~ .valid-tooltip,.custom-control-input.is-valid ~ .valid-feedback,.custom-control-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{background-color:#34ce57}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid ~ .custom-file-label::before,.custom-file-input.is-valid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:valid ~ .valid-feedback,.was-validated .custom-file-input:valid ~ .valid-tooltip,.custom-file-input.is-valid ~ .valid-feedback,.custom-file-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,0.8);border-radius:.2rem}.was-validated .form-control:invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .form-control:invalid ~ .invalid-feedback,.was-validated .form-control:invalid ~ .invalid-tooltip,.form-control.is-invalid ~ .invalid-feedback,.form-control.is-invalid ~ .invalid-tooltip,.was-validated .custom-select:invalid ~ .invalid-feedback,.was-validated .custom-select:invalid ~ .invalid-tooltip,.custom-select.is-invalid ~ .invalid-feedback,.custom-select.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#dc3545}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{background-color:#efa2a9}.was-validated .custom-control-input:invalid ~ .invalid-feedback,.was-validated .custom-control-input:invalid ~ .invalid-tooltip,.custom-control-input.is-invalid ~ .invalid-feedback,.custom-control-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{background-color:#e4606d}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid ~ .custom-file-label::before,.custom-file-input.is-invalid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:invalid ~ .invalid-feedback,.was-validated .custom-file-input:invalid ~ .invalid-tooltip,.custom-file-input.is-invalid ~ .invalid-feedback,.custom-file-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled):active,.btn:not(:disabled):not(.disabled).active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary:focus,.btn-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-link{font-weight:400;color:#6f3b93;background-color:transparent}.btn-link:hover{color:#542c6f;text-decoration:none;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:none;border-color:transparent;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;transition:opacity 0.15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height 0.35s ease}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:0 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file:focus{z-index:3}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,0.25)}.custom-control-input:active ~ .custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled ~ .custom-control-label{color:#6c757d}.custom-control-input:disabled ~ .custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(128,189,255,0.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.custom-file-input:focus ~ .custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en) ~ .custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,0.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0,0,0,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#6f3b93;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#542c6f;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:hover,.badge-info[href]:focus{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:hover,.badge-light[href]:focus{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width 0.6s ease}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:hover,.list-group-item:focus{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.close:focus{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -25%)}.modal.show .modal-dialog{transform:translate(0, 0)}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:.5rem}.bs-popover-top .arrow,.bs-popover-auto[x-placement^="top"] .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{border-width:.5rem .5rem 0}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before{bottom:0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:.5rem}.bs-popover-right .arrow,.bs-popover-auto[x-placement^="right"] .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{border-width:.5rem .5rem .5rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before{left:0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{left:1px;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:.5rem}.bs-popover-bottom .arrow,.bs-popover-auto[x-placement^="bottom"] .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{border-width:0 .5rem .5rem .5rem}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before{top:0;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:.5rem}.bs-popover-left .arrow,.bs-popover-auto[x-placement^="left"] .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{border-width:.5rem 0 .5rem .5rem}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before{right:0;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;align-items:center;width:100%;transition:transform 0.6s ease;backface-visibility:hidden;perspective:1000px}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translate3d(0, 0, 0)}}.carousel-item-next,.active.carousel-item-right{transform:translateX(100%)}@supports (transform-style: preserve-3d){.carousel-item-next,.active.carousel-item-right{transform:translate3d(100%, 0, 0)}}.carousel-item-prev,.active.carousel-item-left{transform:translateX(-100%)}@supports (transform-style: preserve-3d){.carousel-item-prev,.active.carousel-item-left{transform:translate3d(-100%, 0, 0)}}.carousel-fade .carousel-item{opacity:0;transition-duration:.6s;transition-property:opacity}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{opacity:0}.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translate3d(0, 0, 0)}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,0.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-primary{background-color:#007bff !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#0062cc !important}.bg-secondary{background-color:#6c757d !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62 !important}.bg-success{background-color:#28a745 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34 !important}.bg-info{background-color:#17a2b8 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#ffc107 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00 !important}.bg-danger{background-color:#dc3545 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130 !important}.bg-light{background-color:#f8f9fa !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#343a40 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#007bff !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#28a745 !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#343a40 !important}.border-white{border-color:#fff !important}.rounded{border-radius:.25rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-right{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-left{border-top-left-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-circle{border-radius:50% !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.85714%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-fill{flex:1 1 auto !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-sm-fill{flex:1 1 auto !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-md-fill{flex:1 1 auto !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-lg-fill{flex:1 1 auto !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-xl-fill{flex:1 1 auto !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media (min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;clip-path:none}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:.25rem !important}.mt-sm-1,.my-sm-1{margin-top:.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:.25rem !important}.m-sm-2{margin:.5rem !important}.mt-sm-2,.my-sm-2{margin-top:.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:.25rem !important}.pt-sm-1,.py-sm-1{padding-top:.25rem !important}.pr-sm-1,.px-sm-1{padding-right:.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem !important}.pl-sm-1,.px-sm-1{padding-left:.25rem !important}.p-sm-2{padding:.5rem !important}.pt-sm-2,.py-sm-2{padding-top:.5rem !important}.pr-sm-2,.px-sm-2{padding-right:.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem !important}.pl-sm-2,.px-sm-2{padding-left:.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:.25rem !important}.mt-md-1,.my-md-1{margin-top:.25rem !important}.mr-md-1,.mx-md-1{margin-right:.25rem !important}.mb-md-1,.my-md-1{margin-bottom:.25rem !important}.ml-md-1,.mx-md-1{margin-left:.25rem !important}.m-md-2{margin:.5rem !important}.mt-md-2,.my-md-2{margin-top:.5rem !important}.mr-md-2,.mx-md-2{margin-right:.5rem !important}.mb-md-2,.my-md-2{margin-bottom:.5rem !important}.ml-md-2,.mx-md-2{margin-left:.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:.25rem !important}.pt-md-1,.py-md-1{padding-top:.25rem !important}.pr-md-1,.px-md-1{padding-right:.25rem !important}.pb-md-1,.py-md-1{padding-bottom:.25rem !important}.pl-md-1,.px-md-1{padding-left:.25rem !important}.p-md-2{padding:.5rem !important}.pt-md-2,.py-md-2{padding-top:.5rem !important}.pr-md-2,.px-md-2{padding-right:.5rem !important}.pb-md-2,.py-md-2{padding-bottom:.5rem !important}.pl-md-2,.px-md-2{padding-left:.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:.25rem !important}.mt-lg-1,.my-lg-1{margin-top:.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:.25rem !important}.m-lg-2{margin:.5rem !important}.mt-lg-2,.my-lg-2{margin-top:.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:.25rem !important}.pt-lg-1,.py-lg-1{padding-top:.25rem !important}.pr-lg-1,.px-lg-1{padding-right:.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem !important}.pl-lg-1,.px-lg-1{padding-left:.25rem !important}.p-lg-2{padding:.5rem !important}.pt-lg-2,.py-lg-2{padding-top:.5rem !important}.pr-lg-2,.px-lg-2{padding-right:.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem !important}.pl-lg-2,.px-lg-2{padding-left:.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:.25rem !important}.mt-xl-1,.my-xl-1{margin-top:.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:.25rem !important}.m-xl-2{margin:.5rem !important}.mt-xl-2,.my-xl-2{margin-top:.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:.25rem !important}.pt-xl-1,.py-xl-1{padding-top:.25rem !important}.pr-xl-1,.px-xl-1{padding-right:.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem !important}.pl-xl-1,.px-xl-1{padding-left:.25rem !important}.p-xl-2{padding:.5rem !important}.pt-xl-2,.py-xl-2{padding-top:.5rem !important}.pr-xl-2,.px-xl-2{padding-right:.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem !important}.pl-xl-2,.px-xl-2{padding-left:.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-justify{text-align:justify !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media (min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#007bff !important}a.text-primary:hover,a.text-primary:focus{color:#0062cc !important}.text-secondary{color:#6c757d !important}a.text-secondary:hover,a.text-secondary:focus{color:#545b62 !important}.text-success{color:#28a745 !important}a.text-success:hover,a.text-success:focus{color:#1e7e34 !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#117a8b !important}.text-warning{color:#ffc107 !important}a.text-warning:hover,a.text-warning:focus{color:#d39e00 !important}.text-danger{color:#dc3545 !important}a.text-danger:hover,a.text-danger:focus{color:#bd2130 !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#dae0e5 !important}.text-dark{color:#343a40 !important}a.text-dark:hover,a.text-dark:focus{color:#1d2124 !important}.text-muted{color:#6c757d !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}.switch{font-size:1rem;position:relative}.switch input{position:absolute;height:1px;width:1px;background:none;border:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;padding:0}.switch input+label{position:relative;min-width:calc(calc(2.375rem * .8) * 2);border-radius:calc(2.375rem * .8);height:calc(2.375rem * .8);line-height:calc(2.375rem * .8);display:inline-block;cursor:pointer;outline:none;user-select:none;vertical-align:middle;text-indent:calc(calc(calc(2.375rem * .8) * 2) + .5rem)}.switch input+label::before,.switch input+label::after{content:'';position:absolute;top:0;left:0;width:calc(calc(2.375rem * .8) * 2);bottom:0;display:block}.switch input+label::before{right:0;background-color:#dee2e6;border-radius:calc(2.375rem * .8);transition:0.2s all}.switch input+label::after{top:2px;left:2px;width:calc(calc(2.375rem * .8) - calc(2px * 2));height:calc(calc(2.375rem * .8) - calc(2px * 2));border-radius:50%;background-color:#fff;transition:0.2s all}.switch input:checked+label::before{background-color:#08d}.switch input:checked+label::after{margin-left:calc(2.375rem * .8)}.switch input:focus+label::before{outline:none;box-shadow:0 0 0 .2rem rgba(0,136,221,0.25)}.switch input:disabled+label{color:#868e96;cursor:not-allowed}.switch input:disabled+label::before{background-color:#e9ecef}.switch.switch-sm{font-size:.875rem}.switch.switch-sm input+label{min-width:calc(calc(1.9375rem * .8) * 2);height:calc(1.9375rem * .8);line-height:calc(1.9375rem * .8);text-indent:calc(calc(calc(1.9375rem * .8) * 2) + .5rem)}.switch.switch-sm input+label::before{width:calc(calc(1.9375rem * .8) * 2)}.switch.switch-sm input+label::after{width:calc(calc(1.9375rem * .8) - calc(2px * 2));height:calc(calc(1.9375rem * .8) - calc(2px * 2))}.switch.switch-sm input:checked+label::after{margin-left:calc(1.9375rem * .8)}.switch.switch-lg{font-size:1.25rem}.switch.switch-lg input+label{min-width:calc(calc(3rem * .8) * 2);height:calc(3rem * .8);line-height:calc(3rem * .8);text-indent:calc(calc(calc(3rem * .8) * 2) + .5rem)}.switch.switch-lg input+label::before{width:calc(calc(3rem * .8) * 2)}.switch.switch-lg input+label::after{width:calc(calc(3rem * .8) - calc(2px * 2));height:calc(calc(3rem * .8) - calc(2px * 2))}.switch.switch-lg input:checked+label::after{margin-left:calc(3rem * .8)}.switch+.switch{margin-left:1rem}.switch.danger input:checked+label::before{background-color:#dc3545}.switch.danger input:focus+label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}html{font-size:0.8em;background-color:#f8f9fa}body{background-color:transparent;position:relative}label{margin-bottom:.2rem;min-height:1.5rem}.form-group span label{display:inline-block}.form-group label{display:block}.form-group li label{display:inline-block}.form-group li .form-control{width:auto}.form-group li input[type="radio"].form-control,.form-group li input[type="checkbox"].form-control{display:inline}pre{white-space:pre-wrap}.raw-description{white-space:pre-line}.form-control.small-input,.input-group>.form-control.small-input{width:110px;flex:none}.input-group>input[type=checkbox]{margin:0.5em 1em}.form-row.odd{background-color:#e9ecef}.form-row-modal{padding:0.5rem 2rem}.field-tip{position:absolute;right:10px;top:5px;opacity:0.7}.form-group .select2-container--default .select2-selection--multiple{border:1px solid #ced4da}.page-link.imported-page{color:#aa8fda}.page-link.imported-page.current-page,.page-link.current-page{color:black;font-weight:bold}#modal-advanced-search .modal-header{flex-wrap:wrap;padding-bottom:0}#modal-advanced-search .modal-header .alert-secondary{background-color:#fff}.modal-header,.modal-footer{background-color:#e9ecef}.modal-body.body-scroll{max-height:calc(100vh - 200px);overflow-y:auto}.modal-dialog.full{width:98%;height:98%;max-width:none;padding:1%}.modal-dialog.full .display.dataTable{width:100% !important}.modal-dialog.full .modal-content{height:auto;min-height:100%;border-radius:0}.table{background-color:white}.tab-content{padding-top:1em}.input-progress.form-control:focus,.input-progress{background-color:#dee2e6}.card-header,.input-progress,.table-striped tbody tr:nth-of-type(2n+1),.dt-bootstrap4 table.dataTable.stripe tbody tr.odd,.dt-bootstrap4 table.dataTable.display tbody tr.odd{background-color:#e9ecef}.dropdown-item:hover,.dropdown-item:focus,.dt-bootstrap4 table.dataTable.hover tbody tr:hover,.dt-bootstrap4 table.dataTable.display tbody tr:hover{background-color:#f6f6f6;background-color:#dee2e6}table.dataTable{font-size:0.8em}.table-modal-lg table.dataTable{font-size:1em}div.dt-buttons{float:right}.dt-button{color:#fff;background-color:#007bff;border-color:#007bff;display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;border:1px solid transparent;color:#fff;background-color:#6c757d;border-color:#6c757d;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.dt-button:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.dt-button:focus,.dt-button.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.disabled,.dt-button:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.dt-button:not(:disabled):not(.disabled):active,.dt-button:not(:disabled):not(.disabled).active,.show>.dt-button.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.dt-button:not(:disabled):not(.disabled):active:focus,.dt-button:not(:disabled):not(.disabled).active:focus,.show>.dt-button.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.dt-button.btn-success:focus,.dt-button.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.btn-success.disabled,.dt-button.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:not(:disabled):not(.disabled):active,.dt-button.btn-success:not(:disabled):not(.disabled).active,.show>.dt-button.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.dt-button.btn-success:not(:disabled):not(.disabled):active:focus,.dt-button.btn-success:not(:disabled):not(.disabled).active:focus,.show>.dt-button.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.disabled{background-color:#f8f9fa;border-color:#f8f9fa;color:#adb5bd;cursor:not-allowed}.small-button{padding:0.1em 0.2em}.previous-value{margin:0.4em 0;display:block}h3,.h3{font-size:1.5rem}h4,.h4{font-size:1.1rem}textarea{height:90px}.sheet h4{color:#6c757d}#bookmark-list .input-link{width:100%;padding-right:5px}#window-fixed-menu{background-color:#e9ecef;position:fixed;right:0;margin-top:100px;z-index:50;width:200px}#window-fixed-menu-list li{padding-bottom:0.5em}#window-fixed-menu-list li a.nav-link{background-color:white}#window-fixed-menu-list li a.nav-link.active{background-color:#007bff}#window-menu-title{font-size:1.3em}#window-menu-control{font-size:0.6em;padding-top:0.2em}#window-fixed-menu.hidden{transform:rotate(270deg);transform-origin:right bottom 0}#window-fixed-menu.hidden i.fa-times{transform:rotate(45deg);transform-origin:10px 10px 0;padding-left:0.1em}.form h4,.form h3,.collapse-form .card-header,#window h3{background-color:#ced4da}.collapse-form .card,.collapse-form .card-header{border-radius:0;border:0 solid}.collapse-form .card-header{padding:0;text-align:center}.collapse-form .card-header h4{margin-bottom:0}.collapse-form .card-header .btn.btn-link{color:#212529;width:100%}.collapse-form .card-body{border:1px solid #ced4da}.collapse-form .fa-expand,.collapse-form .collapsed .fa-compress{display:none}.collapse-form .collapsed .fa-expand,.collapse-form .fa-compress{display:inline-block}.clean-table h4,.form h4,.form h3,.collapse-form .card-header h4 .btn,.sheet h4,.sheet h3,.sheet h2{text-align:center;text-shadow:2px 2px 2px rgba(150,150,150,0.7)}.sheet .subsection{background-color:#e9ecef}.sheet .row.toolbar{padding:0.5em 0.75em}.sheet .row{padding:0 0.75em;margin:0}.clean-table h4{margin-top:1em}.container{margin-top:1em;margin-bottom:8em}.bg-dark{background-color:#432776 !important}.navbar{padding:0 0.5rem}.navbar-dark .navbar-nav.action-menu .nav-link{color:#ffe484;border:1px solid #ffe484;border-radius:4px;margin:0.2em;padding:0.3em 0.6em}.navbar-dark .navbar-nav.action-menu .d-none .nav-link{border:0px solid transparent}.navbar-dark .navbar-nav.action-menu .d-none .nav-link:hover{background-color:transparent;color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link:hover{background-color:#ffe484;color:#343a40}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle::after{color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle:hover::after{color:#343a40}#context-menu,#reminder,.confirm-message,div#validation-bar{background-color:#6f42c1;color:rgba(255,255,255,0.8)}#reminder{padding:0.6em 1em 0.1em 1em}#alert-list{padding:0.6em 0}#alert-list a{font-size:1.1rem}.confirm-message{text-align:center;margin:0;padding:0.5rem;font-weight:bold}.is-invalid input{border-color:#f99}.errorlist{color:#900}#shortcut-menu{width:700px;padding:1em}#context-menu a.nav-link{color:rgba(255,255,255,0.8);padding:0.8rem 0.5rem 0.7rem 0.5rem}#context-menu .breadcrumb{margin-bottom:0;background-color:transparent}#current_items{width:100%}div#foot{background-color:#432776;color:rgba(255,255,255,0.5)}div#foot a{color:#ddd}div#foot a:hover{color:#fff}.breadcrumb button{border:0 transparent;background-color:transparent}.breadcrumb a:hover{text-decoration:none}.breadcrumb button:hover{cursor:pointer;color:#0062cc}.input-group.date input{border:1px solid #dee2e6;border-radius:.25rem;padding:.375rem .75rem;font-size:1rem;line-height:1.5}.input-group.date .input-group-text:hover{cursor:pointer}.input-group>ul{padding:0.5em;border:1px solid #dee2e6;border-radius:.25rem;margin:0;list-style:none}ul.compact{padding:0;margin:0}.help-text{max-height:250px;overflow:auto}.input-link{color:#6c757d}.input-link.disabled{color:#adb5bd}.input-link:hover{color:#343a40;cursor:pointer}.input-link.disabled:hover{color:#adb5bd;cursor:not-allowed}.input-sep{background-color:#fff;padding:0.3rem}.search_button{display:none}.lightgallery-captions{display:none}.lightgallery-subimage{display:inline-block;width:80px;padding:0.2em}.lightgallery-subimage img{width:100%}.lg .lg-sub-html{text-align:left}.lg .lg-sub-html .close{color:#fff}.lg .lg-sub-html .close:hover{opacity:0.9}#basket-manage #foot_pk{display:none}#basket-manage #grid_pk_meta_wrapper{width:50%;float:left;padding-bottom:80px}#basket-add-button{width:8%;float:left;margin:20vh 1% 0 1%}#basket-content-wrapper{width:40%;float:left}#basket-content{text-align:left;overflow:auto;max-height:60vh}.ui-widget-content{border:1px solid #dee2e6;background-color:#fff}.ui-menu-item{padding:0.2em 0.4em;border:1px solid #fff}.ui-menu-item:hover{color:#6f3b93;border:1px solid #6f3b93;cursor:pointer}.ui-autocomplete{font-size:0.7em;z-index:10000 !important;width:350px;border:5px solid #dee2e6;outline:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none;font-size:1.1em}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px} -- cgit v1.2.3 From 0493613840e21a9b72ea6d9d5eaa90968dc7f472 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 29 Nov 2018 19:34:31 +0100 Subject: Basket: manage basket share (ro and edit) - manage alt query own --- archaeological_finds/forms.py | 72 +++++++++++++++++++--- .../migrations/0042_auto_20181129_1755.py | 30 +++++++++ archaeological_finds/models_finds.py | 24 +++++--- .../templates/ishtar/sheet_findbasket.html | 3 +- archaeological_finds/urls.py | 2 + archaeological_finds/views.py | 17 +++-- archaeological_finds/wizards.py | 1 + .../migrations/0077_auto_20181129_1755.py | 20 ++++++ ishtar_common/models.py | 17 +++-- .../blocks/window_field_flex_multiple_full.html | 8 +++ ishtar_common/templates/ishtar/form.html | 3 + ishtar_common/templatetags/window_field.py | 8 +++ ishtar_common/urls.py | 2 + ishtar_common/views.py | 23 +++++++ ishtar_common/views_item.py | 60 +++++++++++------- ishtar_common/wizards.py | 18 ++++-- scss/custom.scss | 1 + 17 files changed, 256 insertions(+), 53 deletions(-) create mode 100644 archaeological_finds/migrations/0042_auto_20181129_1755.py create mode 100644 ishtar_common/migrations/0077_auto_20181129_1755.py create mode 100644 ishtar_common/templates/ishtar/blocks/window_field_flex_multiple_full.html diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 90e1390bf..811e71a60 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -57,7 +57,7 @@ from ishtar_common.forms import CustomForm, CustomFormSearch, FormSet, \ PkWizardSearch from ishtar_common.forms_common import get_town_field from ishtar_common.models import valid_id, valid_ids, get_current_profile, \ - SpatialReferenceSystem, Area, OperationType + SpatialReferenceSystem, Area, OperationType, IshtarUser from ishtar_common.utils import convert_coordinates_to_point __all__ = [ @@ -74,6 +74,7 @@ __all__ = [ 'DashboardTreatmentForm', 'DashboardTreatmentFileForm', 'RecordFormSelection', 'FindForm', 'SimpleFindForm', 'DateForm', 'DatingFormSet', 'PreservationForm', 'FindBasketFormSelection', + 'FindBasketForWriteFormSelection', 'FindBasketForm', 'FindSelect', 'FindFormSelection', 'FindFormSelectionWarehouseModule', 'MultipleFindFormSelection', 'MultipleFindFormSelectionWarehouseModule', 'FindMultipleFormSelection', @@ -883,7 +884,8 @@ class FindSelect(HistorySelect): if self.current_user: self.fields['basket'].choices += [ (b.pk, b.label) for b in models.FindBasket.objects.filter( - user=self.current_user).all()] + models.FindBasket.get_query_owns(self.current_user) + ).all()] def get_input_ids(self): ids = super(FindSelect, self).get_input_ids() @@ -1169,19 +1171,57 @@ class FindBasketFormSelection(CustomFormSearch): validators=[valid_id(models.FindBasket)]) +class FindBasketForWriteFormSelection(CustomFormSearch): + SEARCH_AND_SELECT = True + form_label = _("Basket search") + associated_models = {'pk': models.FindBasket} + currents = {'pk': models.FindBasket} + + pk = forms.IntegerField( + label="", required=False, + widget=widgets.DataTable( + reverse_lazy('get-findbasket-write'), + FindBasketSelect, models.FindBasket, + ), + validators=[valid_id(models.FindBasket)]) + + class FindBasketForm(IshtarForm): form_label = _(u"Find basket") + associated_models = {"shared_with": IshtarUser, + "shared_write_with": IshtarUser} label = forms.CharField( label=_(u"Label"), validators=[validators.MaxLengthValidator(1000)]) comment = forms.CharField(label=_(u"Comment"), widget=forms.Textarea, required=False) + shared_with = widgets.Select2MultipleField( + model=IshtarUser, remote=True, + label=_(u"Shared (read) with"), + required=False, long_widget=True + ) + shared_write_with = widgets.Select2MultipleField( + model=IshtarUser, remote=True, + label=_(u"Shared (read/edit) with"), + required=False, long_widget=True + ) -class NewFindBasketForm(forms.ModelForm): +class NewFindBasketForm(forms.ModelForm, IshtarForm): + shared_with = widgets.Select2MultipleField( + model=IshtarUser, remote=True, + label=_(u"Shared (read) with"), + required=False, long_widget=True + ) + shared_write_with = widgets.Select2MultipleField( + model=IshtarUser, remote=True, + label=_(u"Shared (read/edit) with"), + required=False, long_widget=True + ) + class Meta: model = models.FindBasket - fields = ('label', 'comment') + fields = ('label', 'comment', 'shared_with', 'shared_write_with') def __init__(self, *args, **kwargs): self.user = kwargs.pop('user') @@ -1217,14 +1257,26 @@ class SelectFindBasketForm(IshtarForm): super(SelectFindBasketForm, self).__init__(*args, **kwargs) if not self.user: return - self.fields['basket'].choices = [('', '--')] + [ - (b.pk, unicode(b)) + self.fields['basket'].choices = self.get_basket_choices() + + def get_basket_choices(self): + return [('', u'--')] + [ + (str(b.pk), unicode(b)) for b in models.FindBasket.objects.filter( - Q(user=self.user) | Q(shared_with=self.user) - )] + Q(user=self.user) | Q(shared_write_with=self.user) + ) + ] class DeleteFindBasketForm(SelectFindBasketForm): + def get_basket_choices(self): + return [('', u'--')] + [ + (str(b.pk), unicode(b)) + for b in models.FindBasket.objects.filter( + Q(user=self.user) + ) + ] + def save(self): try: models.FindBasket.objects.get(pk=self.cleaned_data['basket'], @@ -1242,8 +1294,8 @@ class FindBasketAddItemForm(forms.Form): def save(self, user): try: basket = models.FindBasket.objects.filter( - Q(user=user) | Q(shared_with=user) - ).get(pk=self.cleaned_data['basket_id']) + Q(user=user) | Q(shared_with=user) | Q(shared_write_with=user) + ).distinct().get(pk=self.cleaned_data['basket_id']) item = models.Find.objects.get( pk=self.cleaned_data['item_id']) except models.FindBasket.DoesNotExist or\ diff --git a/archaeological_finds/migrations/0042_auto_20181129_1755.py b/archaeological_finds/migrations/0042_auto_20181129_1755.py new file mode 100644 index 000000000..42d732cf2 --- /dev/null +++ b/archaeological_finds/migrations/0042_auto_20181129_1755.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-11-29 17:55 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ishtar_common', '0077_auto_20181129_1755'), + ('archaeological_finds', '0041_auto_20181121_1225'), + ] + + operations = [ + migrations.AlterModelOptions( + name='treatmentfile', + options={'ordering': ('cached_label',), 'permissions': (('view_treatmentfile', 'Can view all Treatment requests'), ('view_own_treatmentfile', 'Can view own Treatment request'), ('add_own_treatmentfile', 'Can add own Treatment request'), ('change_own_treatmentfile', 'Can change own Treatment request'), ('delete_own_treatmentfile', 'Can delete own Treatment request')), 'verbose_name': 'Treatment request', 'verbose_name_plural': 'Treatment requests'}, + ), + migrations.AddField( + model_name='findbasket', + name='shared_write_with', + field=models.ManyToManyField(blank=True, related_name='shared_write_findbaskets', to='ishtar_common.IshtarUser', verbose_name='Shared (read/edit) with'), + ), + migrations.AlterField( + model_name='findbasket', + name='shared_with', + field=models.ManyToManyField(blank=True, related_name='shared_findbaskets', to='ishtar_common.IshtarUser', verbose_name='Shared (read) with'), + ), + ] diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 9baced4e0..0c9770186 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -591,6 +591,11 @@ class FindBasket(Basket, OwnPerms): @classmethod def get_query_owns(cls, ishtaruser): + return Q(user=ishtaruser) | Q(shared_with=ishtaruser) | Q( + shared_write_with=ishtaruser) + + @classmethod + def get_write_query_owns(cls, ishtaruser): return Q(user=ishtaruser) def get_extra_actions(self, request): @@ -599,13 +604,18 @@ class FindBasket(Basket, OwnPerms): """ # url, base_text, icon, extra_text, extra css class, is a quick action - # no particular rights: if you can view an itm you can add it to your - # own basket - actions = [ - (reverse("select_itemsinbasket", args=[self.pk]), - _(u"Manage basket"), - "fa fa-shopping-basket", "", "", False), - ] + if not request.user or not request.user.ishtaruser: + return [] + + ishtaruser = request.user.ishtaruser + actions = [] + if self.user == ishtaruser or ishtaruser.pk in [ + user.pk for user in self.shared_write_with.all()]: + actions = [ + (reverse("select_itemsinbasket", args=[self.pk]), + _(u"Manage basket"), + "fa fa-shopping-basket", "", "", False), + ] return actions diff --git a/archaeological_finds/templates/ishtar/sheet_findbasket.html b/archaeological_finds/templates/ishtar/sheet_findbasket.html index 3c3ca1d3f..4a101d8f2 100644 --- a/archaeological_finds/templates/ishtar/sheet_findbasket.html +++ b/archaeological_finds/templates/ishtar/sheet_findbasket.html @@ -12,8 +12,9 @@
{% field_flex "Label" item.label %} {% field_flex_detail "Owned by" item.user.person %} - {% field_flex_multiple "Shared_with" item.shared_with %} {% field_flex "Comment" item.comment %} + {% field_flex_multiple_full "Shared (read) with" item.shared_with %} + {% field_flex_multiple_full "Shared (read/edit) with" item.shared_write_with %}

{% trans "Content" %}

diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py index 6e9f59b8c..0ef3bac89 100644 --- a/archaeological_finds/urls.py +++ b/archaeological_finds/urls.py @@ -45,6 +45,8 @@ urlpatterns = [ views.find_modify, name='find_modify'), url(r'get-findbasket/$', views.get_find_basket, name='get-findbasket'), + url(r'get-findbasket-write/$', views.get_find_basket_for_write, + name='get-findbasket-write'), url(r'find_basket_search/(?P.+)?$', check_rights(['view_find', 'view_own_find'])( views.basket_search_wizard), name='find_basket_search'), diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index 29f0f75af..125567044 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -109,12 +109,19 @@ show_find = show_item(models.Find, 'find') display_find = display_item(models.Find) revert_find = revert_item(models.Find) -show_findbasket = show_item(models.FindBasket, 'findbasket') +show_findbasket = show_item(models.FindBasket, 'findbasket', + model_for_perms=models.Find) display_findbasket = display_item(models.FindBasket, show_url='show-find/basket-') get_find_basket = get_item( models.FindBasket, 'get_findbasket', 'findbasket', + model_for_perms=models.Find +) + +get_find_basket_for_write = get_item( + models.FindBasket, 'get_findbasket', 'findbasket', + model_for_perms=models.Find, alt_query_own='get_write_query_owns' ) basket_search_wizard = FindBasketSearch.as_view( @@ -125,10 +132,10 @@ basket_search_wizard = FindBasketSearch.as_view( basket_modify_wizard = FindBasketEditWizard.as_view( [ - ('selec-find_basket_modification', FindBasketFormSelection), + ('selec-find_basket_modification', FindBasketForWriteFormSelection), ('basket-find_basket_modification', FindBasketForm), ('final-find_basket_modification', FinalForm) - ], + ], label=_(u"Basket modify"), url_name='find_basket_modification', ) @@ -290,8 +297,8 @@ class OwnBasket(object): def get_basket(self, user, pk): try: return models.FindBasket.objects.filter( - Q(user=user) | Q(shared_with=user) - ).get(pk=pk) + Q(user=user) | Q(shared_with=user) | Q(shared_write_with=user) + ).distinct().get(pk=pk) except models.FindBasket.DoesNotExist: raise PermissionDenied diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py index 43f48ab59..6d4fd2d95 100644 --- a/archaeological_finds/wizards.py +++ b/archaeological_finds/wizards.py @@ -500,3 +500,4 @@ class FindBasketWizard(Wizard): class FindBasketEditWizard(FindBasketWizard): edit = True + alt_is_own_method = 'get_write_query_owns' diff --git a/ishtar_common/migrations/0077_auto_20181129_1755.py b/ishtar_common/migrations/0077_auto_20181129_1755.py new file mode 100644 index 000000000..bd9003946 --- /dev/null +++ b/ishtar_common/migrations/0077_auto_20181129_1755.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-11-29 17:55 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ishtar_common', '0076_migrate_treatmentfile_permissions'), + ] + + operations = [ + migrations.AlterField( + model_name='importertype', + name='is_template', + field=models.BooleanField(default=False, verbose_name='Can be exported'), + ), + ] diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 1aa94836f..1a0d80ac3 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -254,7 +254,7 @@ class OwnPerms(object): action_own_name, request.session) and self.is_own(request.user.ishtaruser)) - def is_own(self, user): + def is_own(self, user, alt_query_own=None): """ Check if the current object is owned by the user """ @@ -264,7 +264,10 @@ class OwnPerms(object): ishtaruser = user.ishtaruser else: return False - query = self.get_query_owns(ishtaruser) + if not alt_query_own: + query = self.get_query_owns(ishtaruser) + else: + query = getattr(self, alt_query_own)(ishtaruser) if not query: return False query &= Q(pk=self.pk) @@ -3293,6 +3296,7 @@ post_save.connect(post_save_userprofile, sender=UserProfile) class IshtarUser(FullSearch): + SLUG = "ishtaruser" TABLE_COLS = ('username', 'person__name', 'person__surname', 'person__email', 'person__person_types_list', 'person__attached_to__name') @@ -3441,9 +3445,13 @@ class Basket(FullSearch): verbose_name=_(u"Owner")) available = models.BooleanField(_(u"Available"), default=True) shared_with = models.ManyToManyField( - IshtarUser, verbose_name=_(u"Shared with"), blank=True, + IshtarUser, verbose_name=_(u"Shared (read) with"), blank=True, related_name='shared_%(class)ss' ) + shared_write_with = models.ManyToManyField( + IshtarUser, verbose_name=_(u"Shared (read/edit) with"), blank=True, + related_name='shared_write_%(class)ss' + ) TABLE_COLS = ['label', 'user'] @@ -3462,7 +3470,8 @@ class Basket(FullSearch): if not request.user or not getattr(request.user, 'ishtaruser', None): return Q(pk=None) ishtaruser = request.user.ishtaruser - return Q(user=ishtaruser) | Q(shared_with=ishtaruser) + return Q(user=ishtaruser) | Q(shared_with=ishtaruser) | Q( + shared_write_with=ishtaruser) @property def cached_label(self): diff --git a/ishtar_common/templates/ishtar/blocks/window_field_flex_multiple_full.html b/ishtar_common/templates/ishtar/blocks/window_field_flex_multiple_full.html new file mode 100644 index 000000000..b70c1d2fc --- /dev/null +++ b/ishtar_common/templates/ishtar/blocks/window_field_flex_multiple_full.html @@ -0,0 +1,8 @@ +{% load i18n %}{% if data.count %} +
+
{% trans caption %}
+
{% for d in data.distinct.all %} + {% if forloop.counter0 %} ; {% endif %}{{ d }} + {% endfor %}
+
+{% endif %} diff --git a/ishtar_common/templates/ishtar/form.html b/ishtar_common/templates/ishtar/form.html index b99d504a0..bcd69959e 100644 --- a/ishtar_common/templates/ishtar/form.html +++ b/ishtar_common/templates/ishtar/form.html @@ -1,5 +1,8 @@ {% extends "base.html" %} {% load i18n inline_formset table_form %} +{% block extra_head %} +{{form.media}} +{% endblock %} {% block pre_container %} {% csrf_token %} diff --git a/ishtar_common/templatetags/window_field.py b/ishtar_common/templatetags/window_field.py index 46329a3fa..a5bae3b72 100644 --- a/ishtar_common/templatetags/window_field.py +++ b/ishtar_common/templatetags/window_field.py @@ -108,6 +108,14 @@ def field_flex_multiple(caption, data, small=False): return field_multiple(caption, data, size=size) +@register.inclusion_tag('ishtar/blocks/window_field_flex_multiple_full.html') +def field_flex_multiple_full(caption, data, small=False): + size = None + if small: + size = 2 + return field_multiple(caption, data, size=size) + + @register.inclusion_tag('ishtar/blocks/window_field_detail.html') def field_detail(caption, item, li=False, size=None): return {'caption': caption, 'item': item, 'link': link_to_window(item), diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py index 8d06b6862..aea419d08 100644 --- a/ishtar_common/urls.py +++ b/ishtar_common/urls.py @@ -174,6 +174,8 @@ urlpatterns += [ views.new_person_noorga, name='new-person-noorga'), url(r'autocomplete-user/$', views.autocomplete_user, name='autocomplete-user'), + url(r'autocomplete-ishtaruser/$', + views.autocomplete_ishtaruser, name='autocomplete-ishtaruser'), url(r'autocomplete-person(?:/([0-9_]+))?(?:/([0-9_]*))?/(user)?$', views.autocomplete_person, name='autocomplete-person'), url(r'autocomplete-person-permissive(?:/([0-9_]+))?(?:/([0-9_]*))?' diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 3d64535d4..bc9c9432a 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -527,6 +527,29 @@ def autocomplete_user(request): return HttpResponse(data, content_type='text/plain') +def autocomplete_ishtaruser(request): + if not request.user.has_perm('ishtar_common.view_person', models.Person): + return HttpResponse('[]', content_type='text/plain') + q = request.GET.get('term') + limit = request.GET.get('limit', 20) + try: + limit = int(limit) + except ValueError: + return HttpResponseBadRequest() + query = Q() + for q in q.split(' '): + qu = (Q(person__name__icontains=q) | + Q(person__surname__icontains=q) | + Q(person__raw_name__icontains=q)) + query = query & qu + users = models.IshtarUser.objects.filter(query)[:limit] + data = json.dumps([ + {'id': user.pk, + 'value': unicode(user)} + for user in users]) + return HttpResponse(data, content_type='text/plain') + + def autocomplete_person(request, person_types=None, attached_to=None, is_ishtar_user=None, permissive=False): all_items = request.user.has_perm('ishtar_common.view_person', diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index 71890fa6e..f34b2357f 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -133,22 +133,25 @@ def display_item(model, extra_dct=None, show_url=None): return func -def show_item(model, name, extra_dct=None): +def show_item(model, name, extra_dct=None, model_for_perms=None): def func(request, pk, **dct): - allowed, own = check_model_access_control(request, model) + check_model = model + if model_for_perms: + check_model = model_for_perms + allowed, own = check_model_access_control(request, check_model) if not allowed: return HttpResponse('', content_type="application/xhtml") q = model.objects if own: if not hasattr(request.user, 'ishtaruser'): - return HttpResponse('NOK') + return HttpResponse('') query_own = model.get_query_owns(request.user.ishtaruser) if query_own: q = q.filter(query_own).distinct() try: item = q.get(pk=pk) except ObjectDoesNotExist: - return HttpResponse('NOK') + return HttpResponse('') doc_type = 'type' in dct and dct.pop('type') url_name = u"/".join(reverse('show-' + name, args=['0', ''] ).split('/')[:-2]) + u"/" @@ -879,11 +882,13 @@ DEFAULT_ROW_NUMBER = 10 EXCLUDED_FIELDS = ['length'] -def get_item(model, func_name, default_name, extra_request_keys=[], - base_request=None, bool_fields=[], reversed_bool_fields=[], - dated_fields=[], associated_models=[], relative_session_names=[], - specific_perms=[], own_table_cols=None, relation_types_prefix={}, - do_not_deduplicate=False): +def get_item(model, func_name, default_name, extra_request_keys=None, + base_request=None, bool_fields=None, reversed_bool_fields=None, + dated_fields=None, associated_models=None, + relative_session_names=None, specific_perms=None, + own_table_cols=None, relation_types_prefix=None, + do_not_deduplicate=False, model_for_perms=None, + alt_query_own=None): """ Generic treatment of tables @@ -903,6 +908,8 @@ def get_item(model, func_name, default_name, extra_request_keys=[], :param do_not_deduplicate: duplication of id can occurs on large queryset a mecanism of deduplication is used. But duplicate ids can be normal (for instance for record_relations view). + :param model_for_perms: use another model to check permission + :param alt_query_own: name of alternate method to get query_own :return: """ def func(request, data_type='json', full=False, force_own=False, @@ -914,10 +921,15 @@ def get_item(model, func_name, default_name, extra_request_keys=[], if 'type' in dct: data_type = dct.pop('type') if not data_type: - EMPTY = '[]' data_type = 'json' + if data_type == "json": + EMPTY = '[]' - allowed, own = check_model_access_control(request, model, + model_to_check = model + if model_for_perms: + model_to_check = model_for_perms + + allowed, own = check_model_access_control(request, model_to_check, available_perms) if not allowed: return HttpResponse(EMPTY, content_type='text/plain') @@ -933,13 +945,16 @@ def get_item(model, func_name, default_name, extra_request_keys=[], q = models.IshtarUser.objects.filter(user_ptr=request.user) if not q.count(): return HttpResponse(EMPTY, content_type='text/plain') - query_own = model.get_query_owns(q.all()[0]) + if alt_query_own: + query_own = getattr(model, alt_query_own)(q.all()[0]) + else: + query_own = model.get_query_owns(q.all()[0]) # get defaults from model if not extra_request_keys and hasattr(model, 'EXTRA_REQUEST_KEYS'): my_extra_request_keys = copy(model.EXTRA_REQUEST_KEYS) else: - my_extra_request_keys = copy(extra_request_keys) + my_extra_request_keys = copy(extra_request_keys or []) if base_request is None and hasattr(model, 'BASE_REQUEST'): if callable(model.BASE_REQUEST): my_base_request = model.BASE_REQUEST(request) @@ -952,32 +967,35 @@ def get_item(model, func_name, default_name, extra_request_keys=[], if not bool_fields and hasattr(model, 'BOOL_FIELDS'): my_bool_fields = model.BOOL_FIELDS[:] else: - my_bool_fields = bool_fields[:] + my_bool_fields = bool_fields[:] if bool_fields else [] if not reversed_bool_fields and hasattr(model, 'REVERSED_BOOL_FIELDS'): my_reversed_bool_fields = model.REVERSED_BOOL_FIELDS[:] else: - my_reversed_bool_fields = reversed_bool_fields[:] + my_reversed_bool_fields = reversed_bool_fields[:] \ + if reversed_bool_fields else [] if not dated_fields and hasattr(model, 'DATED_FIELDS'): my_dated_fields = model.DATED_FIELDS[:] else: - my_dated_fields = dated_fields[:] + my_dated_fields = dated_fields[:] if dated_fields else [] if not associated_models and hasattr(model, 'ASSOCIATED_MODELS'): my_associated_models = model.ASSOCIATED_MODELS[:] else: - my_associated_models = associated_models[:] + my_associated_models = associated_models[:] \ + if associated_models else [] if not relative_session_names and hasattr(model, 'RELATIVE_SESSION_NAMES'): my_relative_session_names = model.RELATIVE_SESSION_NAMES[:] else: - my_relative_session_names = relative_session_names[:] + my_relative_session_names = relative_session_names[:] \ + if relative_session_names else [] if not relation_types_prefix and hasattr(model, 'RELATION_TYPES_PREFIX'): my_relation_types_prefix = copy(model.RELATION_TYPES_PREFIX) else: - my_relation_types_prefix = copy(relation_types_prefix) + my_relation_types_prefix = copy(relation_types_prefix) \ + if relation_types_prefix else {} - fields = [model._meta.get_field(k) - for k in get_all_field_names(model)] + fields = [model._meta.get_field(k) for k in get_all_field_names(model)] request_keys = dict([ (field.name, diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index b3fc4b55a..19eb312e1 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -23,6 +23,7 @@ import os # from functools import wraps from django.conf import settings +from django.contrib import messages from formtools.wizard.views import NamedUrlWizardView, normalize_name, \ get_storage, StepsHelper @@ -115,6 +116,7 @@ class Wizard(IshtarWizard): ) main_item_select_keys = ('selec-',) formset_pop_deleted = True + alt_is_own_method = None # alternate method name for "is_own" check saved_args = {} # argument to pass on object save @@ -164,11 +166,17 @@ class Wizard(IshtarWizard): ishtaruser = request.user.ishtaruser \ if hasattr(request.user, 'ishtaruser') else None - # not the fisrt step and current object is not owned - if self.steps and self.steps.first != step and\ - current_object and not current_object.is_own(ishtaruser): - self.session_reset(request, self.url_name) - return HttpResponseRedirect('/') + # not the first step and current object is not owned + if self.steps and self.steps.first != step and current_object: + is_own = current_object.is_own( + ishtaruser, alt_query_own=self.alt_is_own_method) + if not is_own: + messages.add_message( + request, messages.WARNING, + _(u"Permission error: you cannot do this action.") + ) + self.session_reset(request, self.url_name) + return HttpResponseRedirect('/') # extra filter on forms self.filter_owns_items = True else: diff --git a/scss/custom.scss b/scss/custom.scss index 09074de0b..56dbffab6 100644 --- a/scss/custom.scss +++ b/scss/custom.scss @@ -610,6 +610,7 @@ ul.compact{ margin: 0; display: block; outline: none; + font-size: 1.1em; } .ui-helper-hidden { -- cgit v1.2.3 From f5f97fb1d89a4ccfc0219c17aa3e8bac6f7fd357 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 30 Nov 2018 18:47:14 +0100 Subject: Manage basket to treatment file association --- archaeological_finds/forms.py | 21 +------ archaeological_finds/forms_treatments.py | 12 +++- .../migrations/0043_auto_20181130_1310.py | 34 +++++++++++ archaeological_finds/models_finds.py | 12 +--- archaeological_finds/models_treatments.py | 6 +- .../templates/ishtar/sheet_treatmentfile.html | 1 + .../ishtar/wizard/wizard_findbasket_deletion.html | 18 ++++++ .../ishtar/wizard/wizard_treatement_deletion.html | 4 +- archaeological_finds/tests.py | 3 +- archaeological_finds/urls.py | 10 +++- archaeological_finds/views.py | 67 ++++++++++------------ archaeological_finds/wizards.py | 5 ++ ishtar_common/forms_common.py | 2 +- ishtar_common/models.py | 31 +++++++++- ishtar_common/views_item.py | 24 ++++++-- 15 files changed, 164 insertions(+), 86 deletions(-) create mode 100644 archaeological_finds/migrations/0043_auto_20181130_1310.py create mode 100644 archaeological_finds/templates/ishtar/wizard/wizard_findbasket_deletion.html diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 811e71a60..f78b4a5f3 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -82,7 +82,7 @@ __all__ = [ 'check_value', 'check_type_field', 'check_type_not_field', 'check_treatment', 'ResultFindForm', 'ResultFindFormSet', 'FindDeletionForm', 'UpstreamFindFormSelection', 'NewFindBasketForm', - 'SelectFindBasketForm', 'DeleteFindBasketForm', 'FindBasketAddItemForm', + 'SelectFindBasketForm', 'FindBasketAddItemForm', 'QAFindFormSingle', 'QAFindFormMulti', 'QAFindBasketForm', 'QAFindTreatmentForm', 'N1TreatmentForm', 'OneNTreatmentForm', 'ResultingFindForm', @@ -1268,25 +1268,6 @@ class SelectFindBasketForm(IshtarForm): ] -class DeleteFindBasketForm(SelectFindBasketForm): - def get_basket_choices(self): - return [('', u'--')] + [ - (str(b.pk), unicode(b)) - for b in models.FindBasket.objects.filter( - Q(user=self.user) - ) - ] - - def save(self): - try: - models.FindBasket.objects.get(pk=self.cleaned_data['basket'], - user=self.user).delete() - except models.FindBasket.DoesNotExist: - # something strange... TODO: log it - pass - return - - class FindBasketAddItemForm(forms.Form): basket_id = forms.IntegerField(required=True) item_id = forms.IntegerField(required=True) diff --git a/archaeological_finds/forms_treatments.py b/archaeological_finds/forms_treatments.py index be53dd418..4f120adbf 100644 --- a/archaeological_finds/forms_treatments.py +++ b/archaeological_finds/forms_treatments.py @@ -26,7 +26,7 @@ from django.core import validators from django.forms.formsets import formset_factory from django.utils.translation import ugettext_lazy as _ -import models +from archaeological_finds import models from archaeological_operations.forms import AdministrativeActForm, \ AdministrativeActOpeFormSelection, AdministrativeActModifForm from archaeological_operations.models import ActType, AdministrativeAct @@ -125,7 +125,6 @@ class BaseTreatmentForm(CustomForm, ManageOldType): max_length=200, required=False) other_reference = forms.CharField( label=_(u"Other ref."), max_length=200, required=False) - # target_is_basket = forms.NullBooleanField(label=_(u"Target")) # external_id = forms.CharField( # label=_(u"External ref."), max_length=200, required=False) start_date = forms.DateField(label=_(u"Start date"), required=False, @@ -570,7 +569,9 @@ class TreatmentFileForm(ManageOldType): base_models = ['treatment_type_type'] associated_models = { 'type': models.TreatmentFileType, 'in_charge': Person, - 'applicant': Person, 'applicant_organisation': Organization} + 'applicant': Person, 'applicant_organisation': Organization, + 'associated_basket': models.FindBasket + } need_user_for_initialization = True name = forms.CharField(label=_(u"Name"), @@ -603,6 +604,11 @@ class TreatmentFileForm(ManageOldType): reverse_lazy('autocomplete-organization'), associated_model=Organization, new=True), validators=[valid_id(Organization)], required=False) + associated_basket = forms.IntegerField( + _(u"Associated basket"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-findbasket'), + associated_model=models.FindBasket), required=False) comment = forms.CharField(label=_(u"Comment"), widget=forms.Textarea, required=False) creation_date = forms.DateField(label=_(u"Start date"), required=False, diff --git a/archaeological_finds/migrations/0043_auto_20181130_1310.py b/archaeological_finds/migrations/0043_auto_20181130_1310.py new file mode 100644 index 000000000..e8881e45d --- /dev/null +++ b/archaeological_finds/migrations/0043_auto_20181130_1310.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-11-30 13:10 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_finds', '0042_auto_20181129_1755'), + ] + + operations = [ + migrations.RemoveField( + model_name='historicaltreatment', + name='target_is_basket', + ), + migrations.RemoveField( + model_name='treatment', + name='target_is_basket', + ), + migrations.AddField( + model_name='historicaltreatmentfile', + name='associated_basket', + field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='archaeological_finds.FindBasket'), + ), + migrations.AddField( + model_name='treatmentfile', + name='associated_basket', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_finds.FindBasket'), + ), + ] diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 0c9770186..75ea69ac1 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -580,7 +580,8 @@ WEIGHT_UNIT = (('g', _(u"g")), ('kg', _(u"kg")),) -class FindBasket(Basket, OwnPerms): +class FindBasket(Basket): + SHOW_URL = 'show-findbasket' items = models.ManyToManyField('Find', blank=True, related_name='basket') class Meta: @@ -589,15 +590,6 @@ class FindBasket(Basket, OwnPerms): ("view_own_find", u"Can view own Find"), ) - @classmethod - def get_query_owns(cls, ishtaruser): - return Q(user=ishtaruser) | Q(shared_with=ishtaruser) | Q( - shared_write_with=ishtaruser) - - @classmethod - def get_write_query_owns(cls, ishtaruser): - return Q(user=ishtaruser) - def get_extra_actions(self, request): """ For sheet template: return "Manage basket" action diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index 29afc94e3..cc0d17dd0 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -162,8 +162,6 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, blank=True, null=True) insurance_cost = models.FloatField(_(u"Insurance cost"), blank=True, null=True) - target_is_basket = models.BooleanField(_(u"Target a basket"), - default=False) documents = models.ManyToManyField( Document, related_name='treatments', verbose_name=_(u"Documents"), blank=True) @@ -766,6 +764,10 @@ class TreatmentFile(DashboardFormItem, ClosedItem, BaseHistorizedItem, documents = models.ManyToManyField( Document, related_name='treatment_files', verbose_name=_(u"Documents"), blank=True) + associated_basket = models.ForeignKey( + FindBasket, null=True, blank=True, on_delete=models.SET_NULL, + related_name='treatment_files' + ) cached_label = models.TextField(_(u"Cached name"), null=True, blank=True, db_index=True) history = HistoricalRecords() diff --git a/archaeological_finds/templates/ishtar/sheet_treatmentfile.html b/archaeological_finds/templates/ishtar/sheet_treatmentfile.html index 08398a6c2..072285262 100644 --- a/archaeological_finds/templates/ishtar/sheet_treatmentfile.html +++ b/archaeological_finds/templates/ishtar/sheet_treatmentfile.html @@ -34,6 +34,7 @@
{% field_flex "Type" item.type %} {% field_flex_detail "Responsible" item.in_charge %} + {% field_flex_detail "Associated basket" item.associated_basket %} {% field_flex "Creation date" item.creation_date %} {% field_flex "Reception date" item.reception_date %} {% field_flex "Closing date" item.end_date %} diff --git a/archaeological_finds/templates/ishtar/wizard/wizard_findbasket_deletion.html b/archaeological_finds/templates/ishtar/wizard/wizard_findbasket_deletion.html new file mode 100644 index 000000000..02f7253d7 --- /dev/null +++ b/archaeological_finds/templates/ishtar/wizard/wizard_findbasket_deletion.html @@ -0,0 +1,18 @@ +{% extends "ishtar/wizard/confirm_wizard.html" %} +{% load i18n link_to_window %} + +{% block "warning_message" %} +{% if current_object.treatment_files.count %} +
+ + {% trans "This basket is attached to treatments requests:" %} +
    {% for tf in current_object.treatment_files.all %} +
  • {{ tf }} {{tf|link_to_window}}
  • + {% endfor %}
+ {% trans "Are you sure you want to delete this basket?" %} +
+{% endif %} +
+ {% trans "Basket informations:" %} +
+{% endblock %} diff --git a/archaeological_finds/templates/ishtar/wizard/wizard_treatement_deletion.html b/archaeological_finds/templates/ishtar/wizard/wizard_treatement_deletion.html index b0ebe7409..be46bfd05 100644 --- a/archaeological_finds/templates/ishtar/wizard/wizard_treatement_deletion.html +++ b/archaeological_finds/templates/ishtar/wizard/wizard_treatement_deletion.html @@ -1,5 +1,5 @@ {% extends "ishtar/wizard/confirm_wizard.html" %} -{% load i18n %} +{% load i18n link_to_window %} {% block "warning_message" %} {% with has_downstream=current_object.downstream.count %} @@ -10,7 +10,7 @@ {% trans "The following finds will be deleted and restored to a previous version."%}
    {% for item in current_object.downstream.all %}
  • - {{item}} + {{item}} {{item|link_to_window}}
  • {% endfor %}
{% trans "All changes made to the associated finds since this treatment record will be lost!" %} diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py index 8d1ffe91d..1f26463ca 100644 --- a/archaeological_finds/tests.py +++ b/archaeological_finds/tests.py @@ -215,8 +215,7 @@ class TreatmentWizardCreationTest(WizardTest, FindInit, TestCase): 'treatment_type': None, 'person': 1, # doer 'location': 1, # associated warehouse - 'year': 2016, - 'target_is_basket': False + 'year': 2016 }, 'selecfind': { 'pk': 1, diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py index 0ef3bac89..9f8776e62 100644 --- a/archaeological_finds/urls.py +++ b/archaeological_finds/urls.py @@ -80,10 +80,10 @@ urlpatterns = [ check_rights(['view_find', 'view_own_find'])( views.FindBasketListView.as_view()), name='list_iteminbasket'), - url(r'^find_basket_deletion/$', + url(r'^find_basket_deletion/(?P.+)?$', check_rights(['view_find', 'view_own_find'])( - views.DeleteFindBasketView.as_view()), name='delete_findbasket'), - + views.basket_delete_wizard), + name='find_basket_deletion'), url(r'^find-qa-bulk-update/(?P[0-9-]+)?/$', check_rights(['change_find', 'change_own_find'])( views.QAFindForm.as_view()), @@ -256,6 +256,10 @@ urlpatterns = [ administrativeactfile_document, name='treatmentfle-administrativeact-document', kwargs={'treatment_file': True}), + url(r'autocomplete-findbasket/$', + check_rights(['change_find', 'change_own_find'])( + views.autocomplete_findbasket), + name='autocomplete-findbasket'), ] urlpatterns += get_urls_for_model(models.Find, views, own=True, diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index 125567044..28c9495a3 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -37,7 +37,7 @@ from ishtar_common.models import IshtarUser, get_current_profile from ishtar_common.views import get_autocomplete_generic, IshtarMixin, \ LoginRequiredMixin, QAItemEditForm, QAItemForm from ishtar_common.views_item import display_item, get_item, show_item, \ - revert_item, get_autocomplete_item + revert_item, get_autocomplete_item, get_autocomplete_query from wizards import * get_find = get_item(models.Find, 'get_find', 'find') @@ -114,6 +114,23 @@ show_findbasket = show_item(models.FindBasket, 'findbasket', display_findbasket = display_item(models.FindBasket, show_url='show-find/basket-') + +def autocomplete_findbasket(request, current_right=None): + if not request.GET.get('term'): + return HttpResponse(content_type='text/plain') + + query = get_autocomplete_query(request, ['label']) + limit = 20 + query = query & models.FindBasket.get_write_query_owns( + request.user.ishtaruser) + items = models.FindBasket.objects.filter(query).order_by('label')[:limit] + data = json.dumps( + [{'id': item.pk, + 'value': u"{} - {}".format(item.label, item.user)[:60]} + for item in items] + ) + return HttpResponse(data, content_type='text/plain') + get_find_basket = get_item( models.FindBasket, 'get_findbasket', 'findbasket', model_for_perms=models.Find @@ -151,6 +168,19 @@ def find_basket_modify(request, pk): kwargs={'step': 'basket-find_basket_modification'})) +findbasket_deletion_steps = [ + ('selec-find_basket_deletion', FindBasketForWriteFormSelection), + ('final-find_basket_deletion', FinalForm) +] + + +basket_delete_wizard = FindBasketDeletionWizard.as_view( + findbasket_deletion_steps, + label=_(u"Basket deletion"), + url_name='find_basket_deletion', +) + + def check_preservation_module(self): return get_current_profile().preservation @@ -410,22 +440,6 @@ class FindBasketDeleteItemView(OwnBasket, IshtarMixin, LoginRequiredMixin, basket.items.remove(find) return HttpResponseRedirect(self.get_success_url(basket)) - -class DeleteFindBasketView(IshtarMixin, LoginRequiredMixin, FormView): - template_name = 'ishtar/form_delete.html' - form_class = DeleteFindBasketForm - success_url = '/' - page_name = _(u"Delete basket") - - def get_form_kwargs(self): - kwargs = super(DeleteFindBasketView, self).get_form_kwargs() - kwargs['user'] = IshtarUser.objects.get(pk=self.request.user.pk) - return kwargs - - def form_valid(self, form): - form.save() - return HttpResponseRedirect(self.get_success_url()) - get_upstreamtreatment = get_item( models.FindUpstreamTreatments, 'get_upstreamtreatment', 'uptreatment') @@ -446,25 +460,6 @@ treatment_search_wizard = TreatmentSearch.as_view([ label=_(u"Treatment search"), url_name='treatment_search',) -""" - condition_dict={ - 'selecfind-treatment_creation': - check_value('basetreatment-treatment_creation', - 'target_is_basket', False), - 'selecbasket-treatment_creation': - check_value('basetreatment-treatment_creation', - 'target_is_basket', True), - # 'resultfinds-treatment_creation': - # check_type_field('basetreatment-treatment_creation', - # 'treatment_type', models.TreatmentType, - # 'downstream_is_many'), - # 'resultfind-treatment_creation': - # check_type_field('basetreatment-treatment_creation', - # 'treatment_type', models.TreatmentType, - # 'upstream_is_many') - }, -""" - treatment_creation_wizard = TreatmentWizard.as_view( treatment_wizard_steps, label=_(u"New treatment"), diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py index 6d4fd2d95..31881fe74 100644 --- a/archaeological_finds/wizards.py +++ b/archaeological_finds/wizards.py @@ -501,3 +501,8 @@ class FindBasketWizard(Wizard): class FindBasketEditWizard(FindBasketWizard): edit = True alt_is_own_method = 'get_write_query_owns' + + +class FindBasketDeletionWizard(DeletionWizard): + wizard_confirm = 'ishtar/wizard/wizard_findbasket_deletion.html' + model = models.FindBasket diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index 4cc0ca024..e5246d9bb 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -1176,7 +1176,7 @@ class DocumentForm(forms.ModelForm, CustomForm, ManageOldType): for rel in models.Document.RELATED_MODELS: if cleaned_data.get(rel, None): return cleaned_data - raise forms.ValidationError(_(u"A document have to attached at least " + raise forms.ValidationError(_(u"A document has to be attached at least " u"to one item")) def save(self, commit=True): diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 1a0d80ac3..219b6b266 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -3432,7 +3432,7 @@ class IshtarUser(FullSearch): return self.person.full_label() -class Basket(FullSearch): +class Basket(FullSearch, OwnPerms): """ Abstract class for a basket Subclass must be defined with an "items" ManyToManyField @@ -3486,6 +3486,35 @@ class Basket(FullSearch): return "{}-{}".format(datetime.date.today().strftime( "%Y-%m-%d"), slugify(self.label)) + @classmethod + def get_query_owns(cls, ishtaruser): + return Q(user=ishtaruser) | Q(shared_with=ishtaruser) | Q( + shared_write_with=ishtaruser) + + @classmethod + def get_write_query_owns(cls, ishtaruser): + return Q(user=ishtaruser) + + def duplicate(self, ishtaruser=None): + """ + Duplicate the basket. Items in basket are copied but not shared users + :param ishtaruser: if provided an alternate user is used + :return: the new basket + """ + items = list(self.items.all()) + new_item = self + new_item.pk = None + if ishtaruser: + new_item.user = ishtaruser + label = new_item.label + while self.__class__.objects.filter( + label=label, user=new_item.user).count(): + label += unicode(_(u" - duplicate")) + new_item.save() + for item in items: + new_item.add(item) + return new_item + class AuthorType(GeneralType): order = models.IntegerField(_(u"Order"), default=1) diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index f34b2357f..2d8b6b828 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -65,17 +65,29 @@ CURRENT_ITEM_KEYS = ( CURRENT_ITEM_KEYS_DICT = dict(CURRENT_ITEM_KEYS) +def get_autocomplete_query(request, label_attributes, extra=None): + q = request.GET.get('term') or "" + if not label_attributes: + return Q(pk__isnull=True) + query = Q() + if extra: + query = Q(**extra) + for q in q.split(' '): + if not q: + continue + sub_q = Q(**{label_attributes[0] + "__icontains": q}) + for other_label in label_attributes[1:]: + sub_q = sub_q | Q(**{other_label + "__icontains": q}) + query = query & sub_q + return query + + def get_autocomplete_item(model, extra=None): if not extra: extra = {} def func(request, current_right=None): - q = request.GET.get('term') or "" - query = Q(**extra) - for q in q.split(' '): - if not q: - continue - query = query & Q(cached_label__icontains=q) + query = get_autocomplete_query(request, ['cached_label'], extra=extra) limit = 20 objects = model.objects.filter(query)[:limit] data = json.dumps([{'id': obj.pk, 'value': obj.cached_label} -- cgit v1.2.3 From 6c1de61895bea26c3c219bbd57976396721dc073 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 30 Nov 2018 19:59:16 +0100 Subject: Basket: duplicate QA --- archaeological_finds/forms.py | 31 +++++++++++++++++++++- archaeological_finds/models_finds.py | 17 +++++++++++- .../ishtar/forms/qa_findbasket_duplicate.html | 22 +++++++++++++++ .../ishtar/wizard/wizard_findbasket_deletion.html | 7 +++++ archaeological_finds/urls.py | 5 ++++ archaeological_finds/views.py | 26 ++++++++++++++++++ ishtar_common/models.py | 9 ++++--- ishtar_common/templates/ishtar/forms/qa_base.html | 3 +-- 8 files changed, 113 insertions(+), 7 deletions(-) create mode 100644 archaeological_finds/templates/ishtar/forms/qa_findbasket_duplicate.html diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index f78b4a5f3..e896b310d 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -84,7 +84,7 @@ __all__ = [ 'FindDeletionForm', 'UpstreamFindFormSelection', 'NewFindBasketForm', 'SelectFindBasketForm', 'FindBasketAddItemForm', 'QAFindFormSingle', 'QAFindFormMulti', 'QAFindBasketForm', - 'QAFindTreatmentForm', + 'QAFindTreatmentForm', 'QAFindbasketDuplicateForm', 'N1TreatmentForm', 'OneNTreatmentForm', 'ResultingFindForm', 'ResultingFindsForm', 'SingleUpstreamFindFormSelection' ] @@ -695,6 +695,35 @@ class QAFindBasketForm(IshtarForm): basket.items.add(item) +class QAFindbasketDuplicateForm(IshtarForm): + label = forms.CharField(label="", max_length=None, required=True) + + def __init__(self, *args, **kwargs): + self.user = None + if 'user' in kwargs: + self.user = kwargs.pop('user') + if hasattr(self.user, 'ishtaruser'): + self.user = self.user.ishtaruser + self.basket = kwargs.pop('items')[0] + super(QAFindbasketDuplicateForm, self).__init__(*args, **kwargs) + self.fields['label'].initial = self.basket.label + unicode( + _(u" - duplicate")) + + def clean(self): + label = self.cleaned_data['label'].strip() + if not label: + raise forms.ValidationError(_(u"A label is required.")) + if models.FindBasket.objects.filter(user=self.user, + label=label).count(): + raise forms.ValidationError(_(u"A basket with this label already " + u"exists.")) + return self.cleaned_data + + def save(self): + self.basket.duplicate(label=self.cleaned_data['label'], + ishtaruser=self.user) + + class PreservationForm(CustomForm, ManageOldType): form_label = _("Preservation") form_admin_name = _(u"Find - 030 - Preservation") diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 75ea69ac1..b1dfdba29 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -580,11 +580,19 @@ WEIGHT_UNIT = (('g', _(u"g")), ('kg', _(u"kg")),) -class FindBasket(Basket): +class FindBasket(Basket, MainItem): SHOW_URL = 'show-findbasket' items = models.ManyToManyField('Find', blank=True, related_name='basket') + QUICK_ACTIONS = [ + QuickAction( + url="findbasket-qa-duplicate", icon_class="fa fa-clone", + text=_(u"Duplicate"), target="one", + rights=['view_find', 'view_own_find']), + ] + class Meta: + verbose_name = _(u"Basket") permissions = ( ("view_find", u"Can view all Finds"), ("view_own_find", u"Can view own Find"), @@ -608,6 +616,13 @@ class FindBasket(Basket): _(u"Manage basket"), "fa fa-shopping-basket", "", "", False), ] + + duplicate = self.QUICK_ACTIONS[0] + actions += [ + (reverse(duplicate.url, args=[self.pk]), + duplicate.text, duplicate.icon_class, + "", "", True), + ] return actions diff --git a/archaeological_finds/templates/ishtar/forms/qa_findbasket_duplicate.html b/archaeological_finds/templates/ishtar/forms/qa_findbasket_duplicate.html new file mode 100644 index 000000000..b9ec50f22 --- /dev/null +++ b/archaeological_finds/templates/ishtar/forms/qa_findbasket_duplicate.html @@ -0,0 +1,22 @@ +{% extends "ishtar/forms/qa_base.html" %} +{% load i18n inline_formset table_form %} + +{% block main_form %} +
+ {% trans "Items of the basket will be attached to the new basket but not the shares." %} +
+{% if form.non_field_errors %} + +{% endif %} +
+
+ +
+ {% with form.label as field %} + {% include "blocks/bs_field_snippet.html" %} + {% endwith %} +
+{% endblock %} + diff --git a/archaeological_finds/templates/ishtar/wizard/wizard_findbasket_deletion.html b/archaeological_finds/templates/ishtar/wizard/wizard_findbasket_deletion.html index 02f7253d7..ffd5f0398 100644 --- a/archaeological_finds/templates/ishtar/wizard/wizard_findbasket_deletion.html +++ b/archaeological_finds/templates/ishtar/wizard/wizard_findbasket_deletion.html @@ -12,6 +12,13 @@ {% trans "Are you sure you want to delete this basket?" %}
{% endif %} +
+ {% trans "Items inside the basket (these items will not be deleted):" %} +
+
    {% for item in current_object.items.all %} +
  • {{item}} {{item|link_to_window}}
  • +{% endfor %}
+
{% trans "Basket informations:" %}
diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py index 9f8776e62..c5a0f7aa2 100644 --- a/archaeological_finds/urls.py +++ b/archaeological_finds/urls.py @@ -84,6 +84,11 @@ urlpatterns = [ check_rights(['view_find', 'view_own_find'])( views.basket_delete_wizard), name='find_basket_deletion'), + url(r'^findbasket-qa-duplicate/(?P[0-9-]+)?/$', + check_rights(['view_find', 'view_own_find'])( + views.QAFindbasketDuplicateFormView.as_view()), + name='findbasket-qa-duplicate'), + url(r'^find-qa-bulk-update/(?P[0-9-]+)?/$', check_rights(['change_find', 'change_own_find'])( views.QAFindForm.as_view()), diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index 28c9495a3..81b032d0b 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -727,3 +727,29 @@ class QAFindTreatmentFormView(QAItemForm): def form_valid(self, form): form.save(self.items, self.request.user) return HttpResponseRedirect(reverse("success")) + + +class QAFindbasketDuplicateFormView(QAItemForm): + template_name = 'ishtar/forms/qa_findbasket_duplicate.html' + model = models.FindBasket + page_name = _(u"Duplicate") + modal_size = "small" + form_class = QAFindbasketDuplicateForm + + def get_quick_action(self): + return models.FindBasket.QUICK_ACTIONS[0] + + def get_form_kwargs(self): + kwargs = super(QAFindbasketDuplicateFormView, self).get_form_kwargs() + kwargs['user'] = self.request.user + return kwargs + + def form_valid(self, form): + form.save() + return HttpResponseRedirect(reverse("success")) + + def get_context_data(self, **kwargs): + data = super(QAFindbasketDuplicateFormView, self).get_context_data( + **kwargs) + data['action_name'] = _(u"Duplicate") + return data diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 219b6b266..b6c8fbb3d 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -3495,9 +3495,10 @@ class Basket(FullSearch, OwnPerms): def get_write_query_owns(cls, ishtaruser): return Q(user=ishtaruser) - def duplicate(self, ishtaruser=None): + def duplicate(self, label=None, ishtaruser=None): """ Duplicate the basket. Items in basket are copied but not shared users + :param label: if provided use the name :param ishtaruser: if provided an alternate user is used :return: the new basket """ @@ -3506,13 +3507,15 @@ class Basket(FullSearch, OwnPerms): new_item.pk = None if ishtaruser: new_item.user = ishtaruser - label = new_item.label + if not label: + label = new_item.label while self.__class__.objects.filter( label=label, user=new_item.user).count(): label += unicode(_(u" - duplicate")) + new_item.label = label new_item.save() for item in items: - new_item.add(item) + new_item.items.add(item) return new_item diff --git a/ishtar_common/templates/ishtar/forms/qa_base.html b/ishtar_common/templates/ishtar/forms/qa_base.html index 70fe70e65..367acfcd8 100644 --- a/ishtar_common/templates/ishtar/forms/qa_base.html +++ b/ishtar_common/templates/ishtar/forms/qa_base.html @@ -1,7 +1,6 @@ {% load i18n inline_formset table_form %} - {% endif %} +{# trick to set to null non existing variable #} +{% with permission_view_document=permission_view_document %} +{% with permission_view_own_document=permission_view_own_document %} + {% with display_identification=item.integrities.count|or_:item.remarkabilities.count|or_:item.conservatory_state|or_:item.conservatory_comment|or_:item.alterations.count|or_:item.alteration_causes.count|or_:item.preservation_to_considers.count|or_:item.appraisal_date|or_:item.treatment_emergency|or_:item.insurance_value|or_:item.estimated_value|or_:item.datings.count|or_:item.dating_comment %} {% with display_warehouse_treatments=item.container|or_:item.container_ref|or_:item.upstream_treatment|or_:item.downstream_treatment|or_:item.treatments.count %} {% with can_view_documents=permission_view_own_document|or_:permission_view_document %} @@ -391,7 +395,7 @@ {% endif %}
-{% endwith %}{% endwith %}{% endwith %}{% endwith %} +{% endwith %}{% endwith %}{% endwith %}{% endwith %}{% endwith %}{% endwith %} {% endblock %} -- cgit v1.2.3 From daeeeb175835559724c8520f4f5a8dcd5957a469 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 10 Jan 2019 17:30:03 +0100 Subject: Formset: delete empty forms --- ishtar_common/forms.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index 18e32cd76..91e9fb3e9 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -436,6 +436,22 @@ class FormSet(CustomForm, BaseFormSet): form.fields[DELETION_FIELD_NAME].label = '' form.fields[DELETION_FIELD_NAME].widget = self.delete_widget() + def _should_delete_form(self, form): + """ + Returns whether or not the form was marked for deletion. + If no data, set deletion to True + """ + if form.cleaned_data.get(DELETION_FIELD_NAME, False): + return True + if not form.cleaned_data or not [ + __ for __ in form.cleaned_data + if __ != DELETION_FIELD_NAME and + form.cleaned_data[__] is not None and + form.cleaned_data[__] != '']: + form.cleaned_data[DELETION_FIELD_NAME] = True + return True + return False + class FormSetWithDeleteSwitches(FormSet): delete_widget = widgets.DeleteSwitchWidget -- cgit v1.2.3